Karton是一款基于Python、Redis和MinIO实现的分布式恶意软件处理框架,Karton也是一个用于创建灵活轻量级恶意软件分析后端的健壮框架。广大研究人员可以使用Karton来将恶意软件分析系统接入至其他管道中,以实现更强大的恶意软件分析功能。
Karton系统中有一些组件是通用的,并且适用于各种角色的研究人员。下面给出的是Karton系统的架构图,以及各个系统组件的简单介绍。
这个项目库中包含了karton.system服务,这是Karton系统的主服务,负责系统内的任务调度。它还包含karton.core模块,其他系统可以直接将其当作库来使用。
一个简单的Flask仪表盘,负责任务和队列的管理以及监控。
一个“路由”,可以识别样本/文件,并根据文件格式生成各种任务类型。
通用档案解压工具,负责提取上传至系统的压缩文档。
恶意软件提取工具,它使用了Yara规则和Python模块来提取恶意软件样本中的静态配置,病毒其进行分析。
管道中非常重要的一部分。报告工具需要向MWDB提交分析期间生成的所有文件、标签、注释和其他数据。
对管道中的所有文件自动运行Yara规则,并对样本进行标记。
负责使用常见的方法对文件进行解码,比如说Base64等等。
一个围绕AutoIt-Ripper的小型封装工具,用于从已编译的AutoIt可执行文件中提取嵌入式AutoIt脚本和资源。
自动黑盒恶意软件分析系统,带有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:https://github.com/CERT-Polska/karton
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 https://github.com/raw-data/karton-retdec-unpacker https://github.com/W3ndige/karton-similarity