社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Karton:基于Python、Redis和MinIO实现的分布式恶意软件处理框架

FreeBuf • 2 年前 • 322 次点击  

 关于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, Resourceclass 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


精彩推荐








Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147893
 
322 次点击