关于Karton
Karton是一款基于Python、Redis和MinIO实现的分布式恶意软件处理框架,Karton也是一个用于创建灵活轻量级恶意软件分析后端的健壮框架。广大研究人员可以使用Karton来将恶意软件分析系统接入至其他管道中,以实现更强大的恶意软件分析功能。
Karton系统
Karton系统中有一些组件是通用的,并且适用于各种角色的研究人员。下面给出的是Karton系统的架构图,以及各个系统组件的简单介绍。
karton
这个项目库中包含了karton.system服务,这是Karton系统的主服务,负责系统内的任务调度。它还包含karton.core模块,其他系统可以直接将其当作库来使用。
karton-dashboard
一个简单的Flask仪表盘,负责任务和队列的管理以及监控。
karton-classifier
一个“路由”,可以识别样本/文件,并根据文件格式生成各种任务类型。
karton-archive-extractor
通用档案解压工具,负责提取上传至系统的压缩文档。
karton-config-extractor
恶意软件提取工具,它使用了Yara规则和Python模块来提取恶意软件样本中的静态配置,病毒其进行分析。
karton-mwdb-reporter
管道中非常重要的一部分。报告工具需要向MWDB提交分析期间生成的所有文件、标签、注释和其他数据。
karton-yaramatcher
对管道中的所有文件自动运行Yara规则,并对样本进行标记。
karton-asciimagic
负责使用常见的方法对文件进行解码,比如说Base64等等。
karton-autoit-ripper
一个围绕AutoIt-Ripper的小型封装工具,用于从已编译的AutoIt可执行文件中提取嵌入式AutoIt脚本和资源。
DRAKVUF Sandbox
自动黑盒恶意软件分析系统,带有DRAKVUF引擎。
工具安装
由于Karton基于Python开发,因此在使用之前需要确保本地设备已经安装并配置好了Python环境。Karton的安装非常简单,我们可以直接使用“pip install”命令来安装:
pip3 install karton-core
如需安装整个后端环境,我们还需要安装好MinIO和Redis。【参考资料】
工具使用
如需使用Karton,你需要提供一个从Karton继承的类:
from karton.core import Karton, Task, Resource class GenericUnpacker(Karton): """ Performs sample unpacking """ identity = "karton.generic-unpacker" filters = [ { "type": "sample", "kind": "runnable", "platform": "win32" } ] def process(self, task: Task) -> None: # Get sample object packed_sample = task.get_resource('sample') # Log with self.log self.log.info(f"Hi {packed_sample.name}, let me analyze you!") ... # Send our results for further processing or reporting task = Task( { "type": "sample", "kind": "raw" }, payload = { "parent": packed_sample, "sample": Resource(filename, unpacked) }) self.send_task(task) if __name__ == "__main__": # Here comes the main loop GenericUnpacker().loop()
项目地址
Karton:【GitHub传送门】
参考资料
https://karton-core.readthedocs.io/en/latest/getting_started.html#installation
https://github.com/c3rb3ru5d3d53c/karton-unpacker
https://github.com/raw-data/karton-die-classifier