Cuckoo架构
cuckoo在部署阶段,只在Guest系统里塞了一个agent,这个agent在运行阶段负责与Host端程序进行通信,从Host端接收sample, 整个客户端程序,以及配置文件。
在Host端主要的源文件为:
./lib/cuckoo/core/scheduler.py
class AnalysisManager(Thread):
def acquire_machine(self):
// 获得虚拟机
def build_options(self):
//生成.conf配置文件
def launch_analysis(self):
//启动分析过程
def process_results(self):
//生成分析结果报告
launch_analysis会调用:
agent/agent.py
def add_malware(self, data, name):
def add_config(self, options):
def add_analyzer(self, data):
def execute(self):
执行analyser.py,由Host上传到Guest上的分析程序包含如下结构:
.
└── windows
├── analyzer.py
├── bin
│ └── execsc.exe
├── dll
│ ├── cuckoomon_bson.dll
│ ├── cuckoomon.dll
│ └── cuckoomon_netlog.dll
├── lib
│ ├── api
│ │ ├── __init__.py
│ │ ├── process.py
│ │ └── screenshot.py
│ ├── common
│ │ ├── abstracts.py
│ │ ├── constants.py
│ │ ├── defines.py
│ │ ├── errors.py
│ │ ├── exceptions.py
│ │ ├── __init__.py
│ │ ├── rand.py
│ │ └── results.py
│ ├── core
│ │ ├── config.py
│ │ ├── __init__.py
│ │ ├── packages.py
│ │ ├── privileges.py
│ │ └── startup.py
│ └── __init__.py
└── modules
├── auxiliary
│ ├── disguise.py
│ ├── human.py
│ ├── __init__.py
│ └── screenshots.py
├── __init__.py
└── packages
├── applet.py
├── bin.py
├── cpl.py
├── dll.py
├── doc.py
├── exe.py
├── generic.py
├── html.py
├── ie.py
├── __init__.py
├── jar.py
├── pdf.py
├── vbs.py
├── xls.py
└── zip.py
具体的inject方法在该包的api/process.py下面
def inject(self, dll=None, apc=False):
inject方法支持两种注入方式:
QueueUserAPC
CreateRemoteThread
这两种方式的原理都是一样的,都是用LoadLibrary来替换回调函数,同时将需要加载的dll名称作为回调的参数传递给回调函数,这样回调函数一执行,相应的dll就被加载到了进行的地址空间中。
在./analyser/windows/modules/packages/下面有对于各个文件格式的sample的启动代码,基本上都是:
p = Process()
p.execute()
p.inject(dll)
p.resume()
p.close()
基本上就是,先找到启动某一类型文件的程序,然后启动它,并且注入dll进行监控。
对于shellcode,使用execsc.exe执行这段shellcode。
execsc.exe的主要源码为:
// jump into shellcode
int (*func)();
func = (int (*)()) buf;
(int)(*func)();
Cuckoo架构的更多相关文章
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- DDD CQRS架构和传统架构的优缺点比较
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- 谈一下关于CQRS架构如何实现高性能
CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
随机推荐
- 简单使用Laravel-admin构建一个功能强大的后台管理
Laravel-admin可以快速构建一个功能强大的后台,方便快速开发. 以下内容记录简单使用Laravel-admin,以及遇到小错误的解决方法. Laravel-admin 依赖以下环境 需要提前 ...
- winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
虚模式填充常用来处理大量数据,某个字段的显示问题. DataGridView是.net 2.0新增的表格数据编辑和显示控件,简单的数据显示和编辑,只需直接和数据源绑定就可以了. 对于 一些特殊情况,我 ...
- Ngrinder简单使用
文章目录 安装 试玩 性能测试 安装 https://github.com/naver/ngrinder/releases 下载对应版本,是一个war包,3.4以上支持jdk1.8 将war包放到to ...
- FPGA前仿真后仿真
前仿真 后仿真 时序(综合后)仿真 时序仿真将时延考虑进去,包括综合后产生的(与.或.非)门时延,还有布局布线产生的时延. 综合(Synthesize),就是将HDL语言设计输入翻译成由与.或.非门和 ...
- python学习笔记:目录结构
"项目目录结构"其实也是属于"可读性和可维护性"的范畴. 目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Sta ...
- Django框架(二十二)—— Django rest_framework-频率组件
目录 频率组件 一.作用 二.自定义频率类 三.内置的访问频率控制类 四.全局.局部使用 1.全局使用 2.局部使用 3.局部禁用 五.源码分析 1.as_view -----> view -- ...
- gitlab+gitlab-ci+docker自动化部署
导言 本次测试用的是gitlab-ci,单纯与gitlab搭配而言,gitlab-ci较jenkins更加一体,顺畅. 主机1:192.168.100.151 gitlab 主机2:192.168.1 ...
- jenkins中的pipeline学习
Jenkins pipeline 升级打怪攻略(二): http://haurqb42j0gnc7zyxam.exp.bcevod.com/mda-jg9eq66184z5manh/mda-jg9eq ...
- 数据概览神器pandas_profiling
安装: pip install pandas_profiling 用法如下: import pandas as pd import pandas_profiling df = pd.read_exce ...
- [已解决]报错:xlrd.compdoc.CompDocError: Workbook: size exceeds expected 17920 bytes; corrupt?
报错代码如下: filePath='test.xls' data=pd.read_excel(filePath) print(data.head()) 报错内容如下: Traceback (most ...