鄙人现今是一名研究生, 研究方向为样本分析自动化, cuckoo 沙箱项目是一个非常不错的例子, 给大家分享一下.
使用pip安装cuckoo之后, 可以使用cuckoo命令.查看一下cuckoo命令的位置:
可以看到cuckoo命令其实是一个python脚本, 最后执行代码是cuckoo模块中main函数
main函数中使用了click模块, 可以很方便的构建命令行程序.
main函数中核心就是调用了下列的两个函数:
功能: 进行cuckoo的初始化,包括:
创建CWD文件夹
CWD(Current Working Directory)文件夹包含了除了运行代码以外的其余文件,非常重要.
连接数据库
cuckoo支持三种数据库: mysql, sqlite3, postgres, 可以在配置文件中进行配置.其中最常用的是mysql, 一般用作web模块存储数据.
init_modules
init_tasks
init_yara
init_binaries
SIGTERM信号
关键代码
主要用于与client主机进行数据传输.
构造函数
create_server
del_task
add_task
Scheduler类cuckoo沙箱的一个任务调度类,
initialize函数
start函数
os: Ubuntu 18.04
python: python2
link: https://www.jianshu.com/p/ac009f6c2710(这个链接是我试过最靠谱的)
cuckoo总体架构如下图, host接收分析任务,然后开启虚拟机client, 将样本和一些必要的分析代码通过http协议传输给client端. 必要的分析代码通过会包括一些hook代码和内核模块,以及一些其他与这些模块交互的Python代码, 以Windows系统为例:monitor.dll(hook), zer0m0n.sys(内核模块), inject.exe(控制monitor),execsc.exe(执行shellcode)等. cuckoo通过这些分析代码来获取样本的行为, 然后待分析时间耗尽, 将分析结果通过tcp传输给host端, 将client回复到样本执行的状态.
cuckoo community --> 获取一些恶意样本的特征库
cuckoo init --> 初始化cucko
cuckoo web --> 开启web服务, 可以使用浏览器上传样本,查看报告
cuckoo -d --> 开启分析样本服务,
cuckoo submit --> 提交样本
cuckoo clean --> 清空分析结果
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课