tuimaochang 发表于 2011-2-19 14:28

LSG见习成员 样本分析 by tuimaochang[LSG]

本帖最后由 是昔流芳 于 2011-2-21 22:30 编辑

环境配置:
家里不能上网,去网吧下了东东回来再弄……郁闷的吐血了。
分析期间去网吧下载了WhiteSmokeTranslator_rev1.exe和whitesmoke-silent.exe。在win2003中添加,模拟真实网络环境。
http://www.reg-booster.com/L10n/geo-ws-597-di.php打不开,倒是有个www.regbooster.com,是个注册表清理软件。
1.VMware:XPsp3+52OD,win2003+DNS+PHP环境。
2.虚拟机网络均为 自定义:vmnet1(host-only)。
XPsp3的IP:192.168.153.3,DNS:192.168.153.4
win2003的IP:192.168.153.4,DNS:192.168.153.4
在win2003的DNS中添加www.reg-booster.com和get.whitesmoke.com的记录,在XPsp3中访问成功。
--------------------------------------------------------------------------------------------------------------------------------------------------------
样本分析:
我之前看了论坛LSG版块里诸位高手的分析,不过自己动手分析倒是第一次,有错误的地方请不吝指出,感激不尽!
查壳,upx的。ESP定律搞定,脱完壳后显示Microsoft Visual C++ 8。
查看参考字符串:
00426564    http://get.whitesmoke.com/Transl ... Translator_rev1.exe
004265F4    http://get.whitesmoke.com/TranslatorTools/whitesmoke-silent.exe
明天去网吧把这两个下回来看看,今天先用NOTEPAD.EXE和regedit.exe来替代看看会发生什么。
我的思路是查看程序的调用模块,在可疑的API上下断,看看程序干了什么。
00403474   FF15 50404100       call dword ptr ds:[<&kernel32.GetTem>; kernel32.GetTempPathW
堆栈地址=00DCFC50, (UNICODE "C:\temp\")
我把%temp%设置在C:\temp\这里方便查看
00403495   FF15 4C404100       call dword ptr ds:[<&kernel32.Create>; kernel32.CreateDirectoryW
00DCFC30   00DCFC50|Path = "C:\temp\~nsu.tmp"
在%temp%里创建目录\~nsu.tmp
00402106   FF15 2C404100       call dword ptr ds:[<&kernel32.Create>; kernel32.CreateFileW
00DCFE38   00064350|FileName = "C:\temp\~nsu.tmp\wsget.exe"   
在%temp%里创建\~nsu.tmp\wsget.exe,往上翻,可以看到LoadResource等函数,调用了自身资源
00402124   FF15 28404100       call dword ptr ds:[<&kernel32.WriteF>; kernel32.WriteFile
把自身资源107写入\~nsu.tmp\wsget.exe
004027B3   FF15 00424100       call dword ptr ds:         ; ole32.CoCreateInstance
004027E2   FF15 8C414100       call dword ptr ds:         ; SHELL32.SHGetSpecialFolderPathW
004027E8   68 84464100         push virus.00414684                  ; UNICODE "Improve Your PC.lnk"
004027F4   FF15 9C414100       call dword ptr ds:         ; SHLWAPI.PathAppendW
00DCFA2C   00DCFC64|Path = "C:\Documents and Settings\Administrator\桌面"
在桌面创建快捷方式,图标为 C:\temp\~nsu.tmp\boost.ico,指向http://www.reg-booster.com/L10n/geo-ws-597-di.php
00402106   FF15 2C404100       call dword ptr ds:[<&kernel32.Create>; kernel32.CreateFileW
00DCF9F4   00DCFA58|FileName = "C:\temp\~nsu.tmp\boost.ico"   
00402124   FF15 28404100       call dword ptr ds:[<&kernel32.WriteF>; kernel32.WriteFile
在%temp%里创建\~nsu.tmp\boost.ico
00402D55   FF15 44404100       call dword ptr ds:[<&kernel32.Create>; kernel32.CreateProcessW
00DCFDB8   00075000|CommandLine = ""C:\temp\~nsu.tmp\wsget.exe" "C:\Program Files\WhiteSmoke Translator""
为wsget..exe创建进程,参数是"C:\Program Files\WhiteSmoke Translator"
00402026   FF15 04404100       call dword ptr ds:[<&advapi32.RegCre>; advapi32.RegCreateKeyExW
00DCFDF0   80000002|hKey = HKEY_LOCAL_MACHINE   
00DCFDF4   0041458C|Subkey = "SOFTWARE\WhiteSmokeTranslator"   
创建注册表……
004022CB   FF15 10404100       call dword ptr ds:[<&advapi32.RegSet>; advapi32.RegSetValueExW
00DCFE30   004145C8|ValueName = "InstallOption"   
00DCFE2C   0041457C|ValueName = "DistID"
设定键值……
00402026   FF15 04404100       call dword ptr ds:[<&advapi32.RegCre>; advapi32.RegCreateKeyExW
00DCFDE8   80000001|hKey = HKEY_CURRENT_USER   
00DCFDEC   0041458C|Subkey = "SOFTWARE\WhiteSmokeTranslator"   
创建注册表……
0040225B   FF15 10404100       call dword ptr ds:[<&advapi32.RegSet>; advapi32.RegSetValueExW
00DCFE28   0041457C|ValueName = "DistID"   
设定键值……
0040CAC4   FF15 68414100       call dword ptr ds:[<&kernel32.ExitPr>; kernel32.ExitProcess
退出了?

    下面是对wsget..exe的分析,一样在可疑的调用函数上下断。先分析下,下好断点,待会附加的时候可以断下来了。
这个附加的批处理是在看雪http://bbs.pediy.com/showthread.php?t=67852的forgot的基础上加了2行,实现不断检测附加。若手慢不能及时终止,容易把机子卡死……可是由于批处理的速度问题,每次附加的位置都不一样……这个wsget..exe分析也是好几次才凑起来的。
004013B9   |.FF15 1CB04000   call dword ptr ds:[<&KERNEL32.Create>; \CreateFileW
01B4C06C   01B4FB58|FileName = "C:\temp\~nsu.tmp\whitesmoke-silent.exe"
把这货创建了……
0040147C   |.FF15 A8B14000   |call dword ptr ds:[<&WININET.Intern>;WININET.InternetReadFile
004014B1   |.FF15 18B04000   |call dword ptr ds:[<&KERNEL32.Write>; \WriteFile
01B4C07C   00002800|nBytesToWrite = 2800 (10240.)
这有个循环,不断的从http://get.whitesmoke.com/TranslatorTools/whitesmoke-silent.exe读数据,写到whitesmoke-silent.exe里面,一次10K,一共245K
00402155   |.FF15 1CB04000   call dword ptr ds:[<&KERNEL32.Create>; \CreateFileW
01B4BE20   01B4BE50|FileName = "C:\temp\~nsu.tmp\whitesmoke-silent.exe.part"
这算不算临时文件?
00401BB1   |.FF15 28B04000   call dword ptr ds:[<&KERNEL32.CreateProcessW>; \CreateProcessW
01B4F2B4   01B4FB70|ModuleFileName = "C:\temp\~nsu.tmp\whitesmoke-silent.exe"
01B4F2B8   01B4F964|CommandLine = ""C:\temp\~nsu.tmp\whitesmoke-silent.exe" /DEFAULTSEARCH /TOOLBAR /DEFAULTS>
下载完了,就创建进程whitesmoke-silent.exe
004013B9   |.FF15 1CB04000   call dword ptr ds:[<&KERNEL32.Create>; \CreateFileW
024DC06C   024DFB58|FileName = "C:\temp\~nsu.tmp\WhiteSmokeTranslator_rev1.exe"
创建WhiteSmokeTranslator_rev1.exe
0040147C   |.FF15 A8B14000   |call dword ptr ds:[<&WININET.Intern>;WININET.InternetReadFile
循环,从http://get.whitesmoke.com/Transl ... Translator_rev1.exe读数据,现在是写入WhiteSmokeTranslator_rev1.exe,一共4.84M
00402155   |.FF15 1CB04000   call dword ptr ds:[<&KERNEL32.Create>; \CreateFileW
024DBE20   024DBE50|FileName = "C:\temp\~nsu.tmp\WhiteSmokeTranslator_rev1.exe.part"
这也是临时文件?
00401BB1   |.FF15 28B04000   call dword ptr ds:[<&KERNEL32.Create>; \CreateProcessW
024DF2B4   024DFB70|ModuleFileName = "C:\temp\~nsu.tmp\WhiteSmokeTranslator_rev1.exe"
024DF2B8   024DF964|CommandLine = ""C:\temp\~nsu.tmp\WhiteSmokeTranslator_rev1.exe" "C:\Program Files\WhiteSmoke Translator""
下载完了,就创建进程WhiteSmokeTranslator_rev1.exe,参数为"C:\Program Files\WhiteSmoke Translator",这货是个安装包,参数就是安装路径?
------------------------------------------------------------------------------------------------------------------------------------------------------------
总结一下:
这个样本运行后在临时目录%temp%里创建目录~nsu.tmp,调用自身资源生成wsget.exe。样本在桌面创建快捷方式,图标为 boost.ico,指向http://www.reg-booster.com/L10n/geo-ws-597-di.php。在临时目录%temp%里创建boost.ico。样本为wsget..exe创建进程,参数是"C:\Program Files\WhiteSmoke Translator"。样本创建注册表位于"HKEY_LOCAL_MACHINE\SOFTWARE\WhiteSmokeTranslator",键值分别为ValueName = "InstallOption"和ValueName = "DistID"。样本创建注册表位于HKEY_CURRENT_USER\SOFTWARE\WhiteSmokeTranslator,键值为ValueName = "DistID"。样本程序结束。
Wsget.exe从http://get.whitesmoke.com/TranslatorTools/whitesmoke-silent.exe读数据写入%temp%\~nsu.tmp\whitesmoke-silent.exe,下载完成后,就创建进程whitesmoke-silent.exe。从http://get.whitesmoke.com/Transl ... Translator_rev1.exe读数据写入%temp%\~nsu.tmp\WhiteSmokeTranslator_rev1.exe,下载完成后,就创建进程WhiteSmokeTranslator_rev1.exe,安装在"C:\Program Files\WhiteSmoke Translator"。
由上述过程判断样本为下载者。

是昔流芳 发表于 2011-2-20 21:55

本帖最后由 是昔流芳 于 2011-2-21 22:31 编辑

附件为楼主分析样本

tuimaochang 发表于 2011-2-19 14:30

本帖最后由 tuimaochang 于 2011-9-6 14:20 编辑

下载地址:
LSG见习成员考核样本分析动画_by_tuimaochang.7z
http://115.com/file/bla1bp05#

Hmily 发表于 2011-2-28 11:11

代码看起来有点乱,好好排版下就好了,代码使用代码框会好看很多.

tuimaochang 发表于 2011-2-28 12:52

本帖最后由 tuimaochang 于 2011-2-28 12:55 编辑

好吧,我下次试试

zhouyixieyi 发表于 2011-3-21 18:25

学习一下。。。一点点看

danyanpi 发表于 2011-4-18 19:59

很不错的东东

zhaokang 发表于 2011-5-28 15:01

呵呵,有机会好好看下

zhaokang 发表于 2011-5-29 10:12

自身行为分析包括
1.文件:exe lnk
2.注册表:
3.进程:

当然更底层的还有驱动分析,一些技巧,原理,驱动逆向等..好好学习...

izc 发表于 2011-9-5 21:18

回复 tuimaochang 的帖子

链接过期,麻烦更新下。
页: [1] 2
查看完整版本: LSG见习成员 样本分析 by tuimaochang[LSG]