基于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 # 创建新的配置文件
$ karton list -s # 列出当前绑定
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 # 开始流式输出所有系统日志
$ karton delete karton.something # 移除未使用的绑定(系统将在下次操作时通过垃圾回收处理)
有些Karton系统是通用的,对每个人都很有用。我们决定将其与社区共享。
本仓库。包含karton.system服务——负责任务调度的主服务。也包含karton.core模块,作为库被其他系统使用。
一个用于任务和队列管理及监控的小型Flask仪表板。
“路由器”。它识别样本/文件,并根据文件格式生成各种任务类型。这样,其他系统可以只监听特定格式的任务(例如,仅zip归档)。
通用归档解包器。上传到系统中的归档文件将被解压,每个文件会被单独处理。
恶意软件提取器。它使用Yara规则和Python模块从恶意软件样本中提取静态配置。我们分享的是渔竿,不是鱼——我们不分享模块本身。但编写自己的模块很容易!
流水线中非常重要的一个部分。报告器将分析过程中生成的所有文件、标签、评论和其他情报提交到MWDB。如果你尚未使用MWDB,或者更偏好其他后端,编写自己的报告器也很容易。
自动在流水线的所有文件上运行Yara规则,并相应地标记样本。规则不包含在内 ;)。
Karton系统,用于解码使用常见方法(如hex、base64等)编码的文件。(你不会相信这种情况有多常见。)
一个围绕AutoIt-Ripper的小型封装,用于从编译的AutoIt可执行文件中提取嵌入的AutoIt脚本和资源。
自动化黑盒恶意软件分析系统,底层使用DRAKVUF引擎,无需在客户操作系统中安装Agent。
一个模块化的Karton框架服务,使用Qiling框架解包常见加壳程序(如UPX等)。
用于MalDuck的、功能丰富的模块化恶意软件配置提取工具
适用于Karton框架的Detect-It-Easy分类器
适用于Karton框架的RetDec解包模块
以模块化思维设计的恶意软件相似性平台。
一个可伸缩的Windows驱动程序漏洞分析器流水线。
