内容简介:恶意软件是尝试破坏计算机、搜集敏感信息或者非法访问其他计算机的软件, 它对个人隐私信息、商业机密甚至是国家安全都会造成很大的威胁。2017年WannaCry勒索病毒的爆发,是迄今为止最严重的勒索病毒事件,至少150个国家、30万名用户中招,造成损失达80亿美元;Conficker蠕虫病毒感染数千万台电脑,史上袭击范围最广的Conficker蠕虫病毒曾感染了全球200多个国家的数千万台Windows个人电脑。
一、关于恶意软件
恶意软件是尝试破坏计算机、搜集敏感信息或者非法访问其他计算机的软件, 它对个人隐私信息、商业机密甚至是国家安全都会造成很大的威胁。
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
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
(2)PIL(Python Image Library)用于恶意文件运行过程中对桌面进行截屏,安装版本需与Python库版本一致。
附下载链接:
图3
3.win7环境配置
(1)关闭Windows自动更新;
(2)关闭Windwos防火墙;
(3)关闭用户账户控制。
4.网络环境配置
(1)使用Host-Only(仅主机模式)上网方式;
注:virtualbox需手动新建Host-Only模式,如下图:
图4
(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操作界面。
网页服务器运行起来后界面如下:
图5
上传测试样本,操作如下图:
图6
跳转到样本分析设置界面,左侧是分析参数设置,可以默认或修改参数;中间是要测试的样本,需要选中;然后点击右侧“Analyze”按钮,开始分析。
图7
提交测试后,有pending、running、completed、reported等多种状态。运行完,会显示reported状态。
图8
点击样本,进入测试报告。红框1,显示可测试后样本的行为,有数字的部分表示样本有对应的行为;红框2,展示样本的基本信息;红框3,样本运行的基本信息;红框4,样本运行时的屏幕截图。
图9
左侧选择“Dropped Files”,显示如下图。右侧红框2,显示样本释放的文件。
图10
左侧选择“Process Memory”,显示如下图。右侧红框2,显示样本中所包含的URL链接。
图11
左侧选择“Behavioral Analysis”,显示如下图。红框2展示了具体的行为,可通过红框3中的搜索功能或红框4进行筛选。
图12
恶意样本一般包含创建文件和修改注册表的行为。先试着查找创建文件的行为。在搜索框输入“NtCreateFile”,搜索,如下图。图中有两个明显的可疑行为,红框1中对自身样本进行复制,红框2中,释放了一个beep.sys的驱动。
图13
尝试搜索修改注册表信息。在搜索框输入“RegSetValueExA”,搜索,如下图。红框中,可以看到服务的键值指向了刚才释放的exe程序路径。
图14
六、Cuckoo行为监控工作原理
Cuckoo sandbox在样本启动的时候,注入了相关的监控代码。
在process.py文件中,通过Process调用,调用inject-x86.exe或inject-x64.exe完成注入。
图15
图16
这两个 工具 是inject.c编译的针对32位和64位系统的不同版本。
下面看一下inject.c的具体代码:
在main中给出了可配置参数,需要带参数运行。Pid是必须要包含的参数,其他参数视需要进行配置。
图17
Inj_mode由以下三个参数决定,然后执行相应的函数。
图18
加载完参数完成准备工作,开始DLL注入。
图19
函数write_data,通过VirtualAllocEx和WriteProcessMemory在远程进程中申请空间的方式写入参数,并返回申请的地址。
图20
APC注入,通过write_data向远程进程中写入DLL路径、Loadlibrary()执行函数指针、执行加载函数的指针,然后利用QueueUserAPC()在软中断时向线程的APC队列插入Loadlibrary()执行函数指针,达到注入DLL的目的。当线程再次被唤醒时,此线程会首先执行APC队列中被注册的函数。
图21
注入成功。
另一种CRT注入:
同样通过write_data向远程进程中写入DLL路径、Loadlibrary()执行函数指针、执行加载函数的指针,之后在create_thread_and_wait中调用CreateRemoteThrea。当目标进程中执行load_library_woker(已事先写入进程空间)加载DLL,之后调用free_data清理现场,释放空间。
图22
图23
注入的DLL在加载时执行初始化和Hook动作。
图24
在monitor_init中
图25
图26
图27
在monitor_hook中,通过sig_hooks获取到需要hook的函数信息,调用hook函数进行hook。
图28
Hook完之后,样本调用系统函数时,会先跳到事先准备好的API中,记录好API的相关信息后,再正常调用原API,保证样本正常运行。
以上所述就是小编给大家介绍的《十分钟学会恶意样本分析,一眼看透无所遁形》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 肺癌无处遁形 谷歌新算法高准度检测肺癌可赶超医生
- TenSec 2019:腾讯安全用安全知识谱图让“地下黑产”无处遁形
- 让以太坊区块链无所遁形?15种数据分析法你需要了解
- UWA GOT (Online) 支持自定义变量和代码段检测—你关注的性能瓶颈无处遁形!
- Check Point 软件公司全新安全分析解决方案让云威胁无所遁形
- python数据分析于实现,单样本体检验、独立样本体检验、相关分析、列联表分析!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Masterminds of Programming
Federico Biancuzzi、Chromatic / O'Reilly Media / 2009-03-27 / USD 39.99
Description Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), Jame......一起来看看 《Masterminds of Programming》 这本书的介绍吧!