《恶意代码分析实战》lab11-2分析

Lab11-02分析

前言

该实验进行对底层hook来窃取用户信息的恶意代码分析。

详细分析

首先在系统文件夹下打开Lab11-02.ini文件,如果打开失败则不继续运行。如图所示:

[外链图片转存失败(img-5yVHWP0K-1564132375660)(assets/1564036234399.png)]

[外链图片转存失败(img-Byqaa8XS-1564132375661)(assets/1564036294724.png)]

读取Lab11-02.ini文件后,进入一个简单解密函数。如图所示:

[外链图片转存失败(img-0gSgciVV-1564132375665)(assets/1564037172520.png)]

解密前数据,为乱码。

[外链图片转存失败(img-xCKLDIvE-1564132375668)(assets/1564037212000.png)]

解密后数据,为一个电子邮件。

[外链图片转存失败(img-nIoU0ikk-1564132375672)(assets/1564037226577.png)]

进入最后的sub_1000A4B6函数,整体函数流程注释如图所示:

[外链图片转存失败(img-bP6coWz4-1564132375673)(assets/1564039596796.png)]

首先获取当前进程名,如果不是THEBAT.EXE 或者OUTLOOK.EXE 或者MSIMN.EXE 则退出。这些程序都是邮件通信程序。可以看出该DLL想要对这些程序进行hook,进行邮件操作。如图所示:

[外链图片转存失败(img-u3XP4ljA-1564132375675)(assets/1564038187594.png)]

然后获取当前线程ID,并挂起当前进程里除当前线程外的所有线程,如图所示。

[外链图片转存失败(img-BLNzrTbD-1564132375677)(assets/1564038592994.png)]

获取winsock.dll里的send函数API

[外链图片转存失败(img-8oAbs7pM-1564132375681)(assets/1564038805595.png)]

使用VirtualProtect函数修改send函数前五个字节的运行/读/写权限。便于进行之后的hook。如图所示:

[外链图片转存失败(img-DqIkeHJX-1564132375684)(assets/1564039222210.png)]

将send函数的前五个字节拷贝进申请的一个动态内存,为之后正常执行send函数做铺垫。但是对该申请的内存必须要是可执行的内存块,记下该地址为0x324c5。如图所示:

[外链图片转存失败(img-Fz555MWu-1564132375687)(assets/1564040489163.png)]

hook后的send函数开头,进行了一个跳转,跳到当前DLL中的0x1000113D中去。如图所示:

[外链图片转存失败(img-SqkJdjjT-1564132375688)(assets/1564039441110.png)]

收尾时,恢复被send地址的权限,同时在最后的函数里恢复刚刚被挂起的所有线程。

[外链图片转存失败(img-35gaU3C2-1564132375689)(assets/1564039522787.png)]

[外链图片转存失败(img-wCliOYki-1564132375690)(assets/1564039563191.png)]

跟进hook之后要执行的函数0x1000113D。

该函数会将send的内容修改,当要send的字符串以RCPT TO: <开头,以>\r\n结尾时候,中间即为收件人。而该函数会将一开始解码出的邮箱地址添加到其中。即所有发出的邮件都会被该邮箱收到。如图所示:

[外链图片转存失败(img-zMYxPZdd-1564132375692)(assets/1564041208934.png)]

在结尾会跳回刚刚申请的动态内存执行正常的send函数开头。如图所示:

[外链图片转存失败(img-4RfADsXc-1564132375693)(assets/1564040828152.png)]

再看看这个dll的导出函数,installer

首先会修改该注册表,如图所示:

[外链图片转存失败(img-C8ToIMjB-1564132375695)(assets/1564043252299.png)]

添加该键值,该键值可以hook几乎所有文件。如图所示:

[外链图片转存失败(img-IJNNDVGm-1564132375698)(assets/1564043290790.png)]

[外链图片转存失败(img-pjVuirTM-1564132375699)(assets/1564044061336.png)]

然后将该文件拷贝到系统路径,如图所示:

[外链图片转存失败(img-XytKNveL-1564132375701)(assets/1564043385750.png)]

总结

  • 对底层hook技术有了进一步的认知和学习。包括将开头的五字节代码保存并稍后跳转回去再调用。之前没有过细节上的学习。

  • 认识到APPInit_DLLS,几乎会被所有的只要用到USER32.dll的文件加载。所以非常好进行hook,但是在WIN8之后就因为安全限制不再那么好用了。但是在WIN7以及之前都非常好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值