基于 Python、Redis 和 S3 的分布式恶意软件处理框架。
Karton 是一个健壮的框架,用于创建灵活且轻量级的恶意软件分析后端。 它可以以极少的投入将恶意软件*分析系统连接成一个健壮的流水线。
我们长期从事自动化业务。我们面对的威胁越来越多,必须自动化一切才能跟上事件处理的节奏。因此,我们经常最终得到许多用鸭子管道胶带和 WD-40 粘在一起的脚本。这些脚本是分析师在紧急情况下编写的,脆弱而丑陋——但它们能工作,并产生必须存储、进一步处理、发送到其他系统或与其他组织共享的情报。
我们需要一种方法,将我们的 PoC 脚本轻松插入到分析流水线中。我们还希望监控它们的执行、集中日志记录、提高健壮性、减少开发惯性……正是为此目的,我们创建了 Karton。
* 虽然 Karton 的设计初衷是恶意软件分析,但它在任何面向微服务的项目中都能很好地工作。
安装就像一条 pip install 命令一样简单:
pip3 install karton-core
为了搭建完整的后端环境,你还需要兼容 S3 的存储和 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__":
GenericUnpacker.main()
此包还提供了一个名为 "karton" 的命令行工具。你可以用它进行简单的管理任务(但它并非设计为功能完备的管理工具)。
$ karton configure # create a new configuration file
$ karton list -s # list current binds
karton name version karton
------------------------------------------------------------------------
karton.yaramatcher 1.2.0 5.3.0
karton.autoit-ripper 1.2.1 5.3.3
karton.mwdb-reporter 1.3.0 5.3.2
$ karton logs # start streaming all system logs
$ karton delete karton.something # remove unused bind (will be GCed by system during the next operation)
一些 Karton 系统是通用的,对每个人都有用。我们决定与社区分享它们。
本仓库。它包含 karton.system 服务——主服务,负责在系统内分发任务。它还包含 karton.core 模块,该模块被其他系统作为库使用。
一个小型 Flask 仪表板,用于任务和队列的管理与监控。
"路由器"。它识别样本/文件,并根据文件格式产生各种任务类型。因此,其他系统可以只监听特定格式的任务(例如,仅 zip 归档)。
通用归档解包器。上传到系统中的归档将被解压,每个文件将被单独处理。
恶意软件提取器。它使用 Yara 规则和 Python 模块从恶意软件样本和分析中提取静态配置。它是一根鱼竿,而不是鱼——我们不分享模块本身。但编写你自己的模块很容易!
流水线中非常重要的一部分。报告器将分析过程中产生的所有文件、标签、注释和其他情报提交到 MWDB。如果你还没有使用 MWDB,或者只是偏好其他后端,编写你自己的报告器也很容易。
自动对流水线中的所有文件运行 Yara 规则,并适当地标记样本。规则不包含在内 ;)。
Karton 系统,用于解码使用常见方法(如 hex、base64 等)编码的文件。(你不会相信这有多常见)。
一个围绕 AutoIt-Ripper 的小型封装,用于从编译的 AutoIt 可执行文件中提取嵌入的 AutoIt 脚本和资源。
自动化黑盒恶意软件分析系统,底层使用 DRAKVUF 引擎,无需在客户机操作系统上安装代理。
一个模块化的 Karton 框架服务,使用 Qiling 框架解包常见加壳器,如 UPX 等。
一个功能丰富的模块化恶意软件配置提取工具,用于 MalDuck
用于 Karton 框架的 Detect-It-Easy 分类器
用于 Karton 框架的 RetDec 解包模块
注重模块化的恶意软件相似度平台。
一个可扩展的 Windows 驱动程序漏洞分析流水线。
