PC端恶意代码的混淆与加壳对抗( 二 )


文章插图
 
这里面的修补都差不多 , 最后的结果图

PC端恶意代码的混淆与加壳对抗

文章插图
 
接着分析修复好后的程序 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
先获取了主机名 , 然后这里经过+1和替换变成了agent头 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
这里可以看到访问的网站 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
从网站中取出Bamboo::和::之间的内容 , 作为下载的网址
PC端恶意代码的混淆与加壳对抗

文章插图
 
下载并运行 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
Lab15-3
放到IDA中查看 。
看到了异常处
PC端恶意代码的混淆与加壳对抗

文章插图
 
修复
PC端恶意代码的混淆与加壳对抗

文章插图
 
继续修复 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
PC端恶意代码的混淆与加壳对抗

文章插图
 
继续修复
PC端恶意代码的混淆与加壳对抗

文章插图
 
修补后
PC端恶意代码的混淆与加壳对抗

文章插图
 
分析修补后的网站
看到传入url函数的进行了异或
PC端恶意代码的混淆与加壳对抗

文章插图
 
写个idc脚本进行解密
PC端恶意代码的混淆与加壳对抗

文章插图
 
之后下载运行 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
Lab16:反调试
进程运行时 , 位置fs:[30h]指向PEB的基地址 。为了实现反调试技术 , 恶意代码通过这个位置的BeingDebugged标志检测 , 这个标志标识进程是否正在被调试
Reserved4数组中一个未公开的位置叫做ProcessHeap , 它被设置为加载器为进程分配的第一个堆的位置 。ProcessHeap位于PEB结构的0x18处 。第一个堆头部有一个属性字段 , 它告诉内核这个堆是否在调试器中创建 。这些属性叫做ForceFlags和Flags
windows XP系统中 , ForceFlags属性位于堆头部偏移量0x10处;但是在Windows7系统中 , 对于32位应用程序来说它位于偏移量0x44处
由于调试器中启动进程与正常模式下启动进程有些不同 , 所以它们创建内存堆的方式也不同 。系统使用PEB结构偏移量0x68处的一个未公开设置 , 来决定如何创建堆结构 。如果这个位置的值为0x70,我们就知道进程正在调试器中


推荐阅读