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上运行.那么大家(开发者和企业)为 ...
随机推荐
- 【LCT维护子树信息】uoj207 共价大爷游长沙
这道题思路方面就不多讲了,主要是通过这题学一下lct维护子树信息. lct某节点u的子树信息由其重链的一棵splay上信息和若干轻儿子子树信息合并而成. splay是有子树结构的,可以在rotate, ...
- ztree 数组和树结构互转算法
//树转化为数组transformToArrayFormat: function (setting, nodes) { if (!nodes) return []; var childKey = se ...
- 递归,装饰器,python常用内置方法
**递归** def calc(n): print(n) if int(n / 2) == 0: 条件判断 r ...
- React-Native 使用中的坑
android 1.键盘会在 ScrollView 之上----不知道是不是未给ScrollView 设置高度的问题 2.navigation的标题在android居中显示办法 navigationO ...
- ERROR 1290 (HY000): Unknown error 1290
如有需要可以加我Q群[308742428]大家一起讨论技术,提供有偿服务. 后面会不定时为大家更新文章,敬请期待. 喜欢的朋友可以关注下. 记录一次在连接数据库报的一个错误信息: 原因是MySQL正使 ...
- 2018-8-10-win10-UWP-ListView-
title author date CreateTime categories win10 UWP ListView lindexi 2018-08-10 19:16:53 +0800 2018-2- ...
- texi2dvi - 打印 Texinfo 文档
SYNOPSIS 总览 texi2dvi [OPTION]... FILE... DESCRIPTION 描述 依次从 Tex 系统中运行每个 Texinfo 或者 LaTex 文件 FILE,直到解 ...
- Android编程之Listener侦听的N种写法及实现原理
写下这个题目时突然想起鲁迅笔下的孔乙已,茴香豆的几种写法,颇有些咬文嚼字的味道.虽然从事手机编程多年,但一直使用的是C和C++编程,由于安卓早期只支持JAVA开发,所以对于时下如火如荼的安卓系统,我一 ...
- 例行性工作排程 (crontab)
说白了,就是一些例行工作的日常执行的排序程序 Linux 工作排程的种类: at,cron 鸟叔说,atd并不是在所有版本都是开启的,但是centos7默认是开启的 [root@localhost ...
- 三重循环之break
while(1) { while(1) { while(1) { break; } } } //逻辑堪比绝技啊 脑洞开之注册表循环遍历方法