• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

恶意代码分析实战 课后练习


Recommended Posts

学会动态分析基础

使用ProcessMonitor工具监控目标进程名称Lab03-01.exe,并设置监控注册表与文件写入操作,如果目标写入了数据,则可以监控到写入的具体目录。

1379525-20201012121046634-1561388673.png

使用ProcessExplorer 可用来监控目标程序导入的Dll文件以及头部数据。

1379525-20201012121500931-1467564882.png

例如程序中使用了Mutant互斥量,来保证程序只运行一个实例。

1379525-20201012121717301-807550916.png

使用WireShark工具捕捉目标网络特征,首先找到该进程对应的PID,然后执行CMD netstat -ano

1379525-20201012122028006-1235239.png

得到TCP端口号再根据特定端口,使用Wireshark筛选条件中输入tcp.port == xxx 过滤特定流量

1379525-20201012122131090-1589588180.png

如果恶意程序是一个dll文件,我们需要首先查看导出表中是否存在安装之类的到处函数。

1379525-20201012122913715-310753763.png

一般dll无法自己运行,需要使用svchost.exe -k netsvcs 等命令引导其运行,在其身上会加载很多dll文件,运行。

首先使用Regshot对注册表拍一个快照。

1379525-20201012123403801-1882097745.png

使用rundll32工具加载并安装后在分析,执行命令:rundll32.exe Lab03-02.dll,installA 然后拍摄第次快照,并对比两次的不同,报告中显示,创建了一个IPRIP的服务。

1379525-20201012123826668-1204483134.png

由于是一个服务,则执行命令,让这个服务启动起来。

1379525-20201012123956241-276486197.png

然后可以使用ProcessExplorer工具,find搜索,目标dll实在那个程序中被运行起来的,如下可知,是附着在svchost.exe中进程中运行起来的。

1379525-20201012124104060-929129595.png

如下我们知道了目标进程的PID是1028

1379525-20201012124401323-430284965.png

使用ProcessMonitor设置过滤条件监控PID是,1028即可获取到目标DLL的操作记录。

1379525-20201012124509245-2103385344.png


IDA 的使用技巧总结

1.找到导出表的GetHostBynme函数位置,并查询有多少函数调用了这个地址,通过交叉引用即可获取到,选中地址按下ctrl+x即可查询。

类型type 中p开头代表是一个函数,rw开头代表是可读可写的属性,如下除去重复的与非P类型的,剩下的一共有五个地址调用了。

1379525-20201012151302545-130545404.png

接着跳转到0x10001757位置处的gethostbyname的调用,找出dns请求的域名。

1379525-20201012151845804-434983938.png

1379525-20201012151827130-1340859325.png

将地址跳转到0x10001656处,观察,带有var_的变量为局部变量,正数则代表是函数参数。

1379525-20201012152214161-285029382.png

使用string窗口,在反汇编中定位字符串\cmd.exe /c 它位于什么地方?

选择view ->OpenSubview -> strings 选项,找到字符串位置。

1379525-20201012152418546-127613872.png

双击地址,即可找到引用的变量地址,如下所在:xdoors_d:10095B34

1379525-20201012152524127-900123991.png

在引用\cmd.exe /c的代码所在区域发生了什么?我们直接在最右侧双击上箭头

1379525-20201012152631643-2041741860.png

即可找到引用区域

1379525-20201012152659110-1322118276.png

在同样的区域中,0x100101c8处,dword_1008E5C4 是一个全局变量,那恶意代码是如何设置这个位置的呢,使用交叉引用来解决。

首先双击一下,跳转到全局变量位置。

1379525-20201012153015528-1438698648.png

接着,我们在data地址处按下 ctrl+x 交叉引用地址,只有type为w的是写入了数据,赋值也就是从这里开始的。

1379525-20201012153108258-785950212.png

使用涂抹式来绘制出对sub_10004e79的交叉引用图,当进入这个函数时,那个API函数可能被调用,仅仅基于这些API函数,如何重命名这些函数?

1.首先找到sub_10004e79函数地址,双击跳过去。

1379525-20201012154026807-962791398.png

接着是获取图模式,选择view - > graphs -> user xrefs chart 直接点击ok生成图结构。

1379525-20201012154223252-1599498909.png

接着看一下dllmain直接调用了多少个API函数,多少个在深度为2时被调用?

找到DllMain地址,然后选择 view - > graphs -> user xrefs chart 调用深度为2.

1379525-20201012154504925-328895965.png

在0x10001701处是一个对socket的调用,他的三个参数是什么?我们可以将第一个参数2转换为参数关键常量,选中push 2 然后右键选择,Use stardard symbolic constant找到一个常量然后保存即可。

1379525-20201012155035691-838409970.png

搜索IN指令,(OpCode 0xED)指令在代码中使用位置,点击search -> sequence of bytes 查找ED指令。

1379525-20201012155247409-869719649.png

寻找in指令,双击过去看看。

1379525-20201012155313984-1869794162.png

可以将压缩数,转换为字符串.

1379525-20201012155420054-265439530.png

1379525-20201012155439994-1653433208.png

为了能找到所有引用虚拟机检测的代码,我们可以来到代码头部,然后交叉引用一下,有三处引用了虚拟机检测。

1379525-20201012155602624-1192532208.png

最后将光标跳转到0x1001d988位置,使用IDC脚本进行解密。

1379525-20201012155724174-656261393.png

#include <idc.idc>

static main()
{
	auto ea = ScreenEA(),b,i,decode;
	for(i=0x0;i<0x50;i++)
	{
		b = Byte(ea+i);
		decode = b ^ 0x55;
		PatchByte(ea+i,decode);
	}
}

将光标放到解密的行上,然后运行脚本即可解密。

1379525-20201012160209317-1221496295.png

识别汇编中的C代码结构 第四章

分析恶意windows程序 第五章

使用OD进行动态分析 第六章

恶意代码的特殊行为 第七章

隐藏的恶意代码启动 第八章

恶意代码的数据加密 第九章

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now