十分钟学会恶意样本分析,一眼看透无所遁形
liebian365 2024-10-22 15:31 5 浏览 0 评论
一、关于恶意软件
恶意软件是尝试破坏计算机、搜集敏感信息或者非法访问其他计算机的软件, 它对个人隐私信息、商业机密甚至是国家安全都会造成很大的威胁。
2017年WannaCry勒索病毒的爆发,是迄今为止最严重的勒索病毒事件,至少150个国家、30万名用户中招,造成损失达80亿美元;Conficker蠕虫病毒感染数千万台电脑,史上袭击范围最广的Conficker蠕虫病毒曾感染了全球200多个国家的数千万台Windows个人电脑。
本期“安仔课堂”,ISEC实验室的老师跟大家一起针对恶意软件进行分析,了解其行为特征,十分钟学会恶意样本分析,一眼看透无所遁形。
Cuckoo sandbox是一个开源的恶意文件自动化分析系统,采用Python和C/C++开发,跨越Windows、Android、Linux和Darwin四种操作系统平台,支持二进制的PE文件(exe、dll、com)、PDF文档、Office文档、URL、HTML文件、各种脚本(PHP、VB、Python)、JAR包、Zip文件等等几乎所有的文件格式,能分析恶意文件的静态二进制数据和动态运行后的进程、网络、文件等行为,对于恶意文件的初步分析定性具有很大帮助。
Cuckoo的分析结果包含如下内容:
(1)函数以及API调用的Call Trace;
(2)应用拷贝和删除的文件;
(3)选定进程的内存镜像;
(4)分析机的full memory dump;
(5)恶意软件执行时的截屏;
(6)分析机产生的网络流量。
二、Cuckoo的部署
下图是Cuckoo的部署,分为host和guests。
1.Host(管理机)
负责管理guests、启动分析工作、网络流量收集等。
host依赖一些开源软件,例如tcpdump用于Guest网络拦截、Volatility用于内存的dump。
2.Guest(虚拟机)
Guest是通用的虚拟机,Xen、VirtualBox等。它运行Cuckoo的Agent,接收Host发过来的任务(文件)运行后获取信息。
Agent是跨平台的Python脚本,可以在Windows、Linux和MAC OS上运行。它实际是一个XMLRPC server,等待连接。
三、Host环境搭建
1.安装Cuckoo
$ sudo pip install -U pip setuptools
$ sudo pip install -U cuckoo
2.数据库依赖库
(1)如要使用Cuckoo sandbox自带web程序,需安装mongodb;
(2)Cuckoo sandbox默认使用sqlite数据库,如要使用mysql,需安装mysql和MySQL-python。
3.网络数据包捕获
Host使用tcpdump捕获网络数据包
(1)安装tcpdump
$ sudo apt-get install tcpdump
(2)启用root账户
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
(3)验证启用是否成功
$ getcap /usr/sbin/tcpdump /usr/sbin/tcpdump=cap_net_admin,cap_net_raw+eip
4.虚拟机软件
Cuckoo sandbox支持多种虚拟机,包括vmware、virtualbox、esx、kvm、vsphere、xenserver,选择一种你最熟悉的。
此处简单介绍virtualbox的安装:
Virtualbox是开源软件,功能可满足Cuckoo sandbox的使用。
安装命令:
$ sudo apt-get install virtualbox
四、Guest环境搭建
本文主要讲Windows恶意文件分析环境,所以Guest为Windows操作系统。
Guest支持winxp和win7,使用win7时,需关闭User Access(用户账户控制)。
下面以win7为例,讲述安装过程:
1.win7虚拟机安装
使用Host中已安装的虚拟机软件,安装win7虚拟机。
注:win7虚拟机无需打补丁,无需安装杀毒软件、安全卫士
2.Python运行环境
(1)2.7.6以上任何一个稳定的2.7版本都可以,
(2)PIL(Python Image Library)用于恶意文件运行过程中对桌面进行截屏,安装版本需与Python库版本一致。
3.win7环境配置
(1)关闭Windows自动更新;
(2)关闭Windwos防火墙;
(3)关闭用户账户控制。
4.网络环境配置
(1)使用Host-Only(仅主机模式)上网方式;
注: virtualbox需手动新建Host-Only模式,如下图:
(2)将win7网络地址配置到Host-Only模式网段;
(3)保证Host和Guest能正常通信,可使用ping命令测试 ;
(4)现在许多恶意文件都需要网络环境才能运行,所以还需将win7配置到能访问外部网络环境。Cuckoo sandbox使用iptables配置转发规则,假如:eth0为ubuntu连接外部网络的网卡,vboxnet0虚拟机选择Host-Only的虚拟网卡(virtualbox为vboxnet0)。
5.win7伪装环境
(1)安装基础的运行库,如java、python、.net等;
(2)安装2005-2015的vc运行库;
(3)安装MS-Office套件(office 2007/office 2010)、PDF阅读器等文档软件 (Adobe Reader);
(4)安装生活常用的聊天(QQ/微信)、听歌(QQ音乐/酷狗/酷我)软件。
6.安装agent.py
(1)将agent目录下的agent.py拷贝至win7文件系统,位置无严格要求;
(2)将agent.py修改成agent.pyw,并添加至开机启动项,agent.pyw为无界面模式;
(3)运行agent.pyw。
7.保存win7快照
(1)在agent.pyw运行的状态下,保存win7快照,记录win7的ip地址和快照名称;
(2)确认agent.pyw:在进程列表查看进程名为pythonw的进程。
五、样本分析
1.启动Cuckoo服务
$cuckoo
2.开启web服务
另开一个指令窗口运行
$cuckoo web runserver
打开浏览器,输入网址127.0.0.1:8000进入web操作界面。
网页服务器运行起来后界面如下:
上传测试样本,操作如下图:
跳转到样本分析设置界面,左侧是分析参数设置,可以默认或修改参数;中间是要测试的样本,需要选中;然后点击右侧“Analyze”按钮,开始分析。
提交测试后,有pending、running、completed、reported等多种状态。运行完,会显示reported状态。
点击样本,进入测试报告。红框1,显示可测试后样本的行为,有数字的部分表示样本有对应的行为;红框2,展示样本的基本信息;红框3,样本运行的基本信息;红框4,样本运行时的屏幕截图。
左侧选择“Dropped Files”,显示如下图。右侧红框2,显示样本释放的文件。
左侧选择“Process Memory”,显示如下图。右侧红框2,显示样本中所包含的URL链接。
左侧选择“Behavioral Analysis”,显示如下图。红框2展示了具体的行为,可通过红框3中的搜索功能或红框4进行筛选。
恶意样本一般包含创建文件和修改注册表的行为。先试着查找创建文件的行为。在搜索框输入“NtCreateFile”,搜索,如下图。图中有两个明显的可疑行为,红框1中对自身样本进行复制,红框2中,释放了一个beep.sys的驱动。
尝试搜索修改注册表信息。在搜索框输入“RegSetValueExA”,搜索,如下图。红框中,可以看到服务的键值指向了刚才释放的exe程序路径。
六、Cuckoo行为监控工作原理
Cuckoo sandbox在样本启动的时候,注入了相关的监控代码。
在process.py文件中,通过Process调用,调用inject-x86.exe或inject-x64.exe完成注入。
这两个工具是inject.c编译的针对32位和64位系统的不同版本。
下面看一下inject.c的具体代码:
在main中给出了可配置参数,需要带参数运行。Pid是必须要包含的参数,其他参数视需要进行配置。
Inj_mode由以下三个参数决定,然后执行相应的函数。
加载完参数完成准备工作,开始DLL注入。
函数write_data,通过VirtualAllocEx和WriteProcessMemory在远程进程中申请空间的方式写入参数,并返回申请的地址。
APC注入,通过write_data向远程进程中写入DLL路径、Loadlibrary()执行函数指针、执行加载函数的指针,然后利用QueueUserAPC()在软中断时向线程的APC队列插入Loadlibrary()执行函数指针,达到注入DLL的目的。当线程再次被唤醒时,此线程会首先执行APC队列中被注册的函数。
注入成功。
另一种CRT注入:
同样通过write_data向远程进程中写入DLL路径、Loadlibrary()执行函数指针、执行加载函数的指针,之后在create_thread_and_wait中调用CreateRemoteThrea。当目标进程中执行load_library_woker(已事先写入进程空间)加载DLL,之后调用free_data清理现场,释放空间。
注入的DLL在加载时执行初始化和Hook动作。
在monitor_init中
在monitor_hook中,通过sig_hooks获取到需要hook的函数信息,调用hook函数进行hook。
Hook完之后,样本调用系统函数时,会先跳到事先准备好的API中,记录好API的相关信息后,再正常调用原API,保证样本正常运行。
相关推荐
- 快递查询教程,批量查询物流,一键管理快递
-
作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...
- 一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递
-
对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...
- 快递查询单号查询,怎么查物流到哪了
-
输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...
- 3分钟查询物流,教你一键批量查询全部物流信息
-
很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...
- 快递单号查询,一次性查询全部物流信息
-
现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...
- 快递查询工具,批量查询多个快递快递单号的物流状态、签收时间
-
最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...
- 快递查询软件,自动识别查询快递单号查询方法
-
当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...
- 教你怎样查询快递查询单号并保存物流信息
-
商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...
- 简单几步骤查询所有快递物流信息
-
在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...
- 物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号
-
最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...
- 连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息
-
快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...
- 快递查询教程,快递单号查询,筛选更新量为1的单号
-
最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...
- 掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析
-
在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...
- 从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息
-
在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...
- 物流单号查询,在哪里查询快递
-
如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)