前言:前几天突然发现移动硬盘内的exe文件全部被“打包”了,幸好我是在winpe下工作且无内置硬盘损失不是很大。在网上用TXP1atform.exe搜索了一下,发现受害者很多。遂决定写篇分析笔记以消除受害者的恐惧。
一、主要症状是:我在pe下打开exe文件很慢,出现一个*.exe.exe的文件马上又变成了*.exe,而后才弹出程序界面。立刻察看进程管理器发现多了TXP1atform.exe、IEXPLORE.EXE、cmd.exe这几个进程。
二、病毒感染的具体实现
染毒程序运行时首先将尾部的备份程序以后缀为*.exe.exe的形式释放出来,接着生成一个类似20$$.bat的批处理文件并执行,与此同时病毒体将自身拷贝到SYSTEM32\DRIVERS目录中并运行,程序随即退出。此时DRIVERS目录中的病毒体遍历所有分区,找出可以感染的可执行文件如exe、scr、com以及网页文件htm、html、asp、php、jsp、aspx(写入挂马代码好像没有感染我的htm文件),搜索的同时另一个线程进行感染这样效率较高。屏幕保护程序一旦感染,屏保时病毒就会被激活。感染可执行文件时,先把被感染文件读入内存并修改病毒程序图标与其相同,而后将自身从SYSTEM32\DRIVERS下拷贝到被感染程序所在文件夹替换掉原来的程序,接着再将内存中的原程序备份到病毒文件尾部,最后做个标记纪录下备份的数据大小,便于以后运行染毒程序时将其释放执行。
:try1
del "X:\Documents and Settings\Default User\桌面\notepad.exe"
if exist "X:\Documents and Settings\Default User\桌面\notepad.exe" goto try1
ren "X:\Documents and Settings\Default User\桌面\notepad.exe.exe" "notepad.exe"
if exist "X:\Documents and Settings\Default User\桌面\notepad.exe.exe" goto try2
"X:\Documents and Settings\Default User\桌面\notepad.exe"
:t
以上是在桌面上运行染毒的notepad.exe时调试中生成的20$$.bat,其实现的功能:先删除带毒的程序,再将解压出来的程序改回原来的名字并执行最后删除批处理文件自身;如果改名不成功就直接删除批处理文件自身。该批处理文件的前面两位数字是随机的,在调试时如果将0012F90C处该为00000001,你将会看到一个dos窗口在执行该批处理文件。
以下是调试中堆栈中的一些情形,用到这些断点:
执行生成的批处理文件:
0012F904 0041EF57 /CALL 到 WinExec 来自 notepad.0041EF52
0012F908 00E05D54 |CmdLine = "X:\Temp\20$$.bat"
0012F90C 00000000 \ShowState = SW_HIDE
搜索可感染程序:
011FFBF4 0041E6AC /CALL 到 FindNextFileA 来自 TXP1atfo.0041E6A7
011FFBF8 00E00DA8 |FileName = "D:\dump.exe"
011FFBFC 011FFE2C \pFindFileData = 011FFE2C
病毒体替换掉被感染程序
011FE720 0041F57B /CALL 到 CopyFileA 来自 TXP1atfo.0041F576
011FE724 00E19018 |ExistingFileName = "X:\WXPE\SYSTEM32\DRIVERS\TXP1atform.exe"
011FE728 00E0E81C |NewFileName = "D:\dump.exe" //感染D:根目录下的dump.exe
对注册表的操作:
1、隐藏文件:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue
2、对付杀毒软件:感染时在C盘根目录下生成一个临时文件GK.TMP,其中是加密了的注册表相关数据。 染毒程序先解密该文件而后再写入注册 表。见图registry
3、修改启动项:\Documents and Settings\All Users\「开始」菜单\程序\启动\
\Documents and Settings\All Users\Start Menu\Programs\Startup\
\WINDOWS\Start Menu\Programs\Startup\
\WINNT\Profiles\All Users\Start Menu\Programs\Startup\
Software\Microsoft\Windows\CurrentVersion\Run
注册服务并启动:NET START DMusic (注:JM.sys在附件压缩包中,它是病毒从资源中临时释放的,只能在调试过程中获得)
实现屏蔽几十种杀软和隐藏自身不被查杀的功能是一款驱动级病毒。幸亏我是在pe下运行的,该驱动没有启动成功,惨遭我的蹂躏。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmusic]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"ImagePath"="system32\\DRIVERS\\JM.sys"
"DisplayName"="Microsoft Kernel DLS Syntheiszer"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DMusic\Enum]
"Count"=dword:00000001
"NextInstance"=dword:00000001
"0"="Root\\LEGACY_DMUSIC\\0000"
下面是病毒启动服务的过程,启动完后改写注册表隐藏真实驱动的名称并删除sys文件。
00426F68 55 PUSH EBP
..................
00426F7D 6A 00 PUSH 0
00426F7F 68 40704200 PUSH TXP1atfo.00427040 ; net stop dmusic
00426F84 E8 BFFEFDFF CALL TXP1atfo.00406E48 ; JMP 到 kernel32.WinExec
00426F89 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00426F8C E8 BB08FEFF CALL TXP1atfo.0040784C
00426F91 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00426F94 BA 58704200 MOV EDX,TXP1atfo.00427058 ; drivers\jm.sys
00426F99 E8 4EDDFDFF CALL TXP1atfo.00404CEC
00426F9E 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00426FA1 E8 3EDFFDFF CALL TXP1atfo.00404EE4
00426FA6 8BC8 MOV ECX,EAX
00426FA8 BA 68704200 MOV EDX,TXP1atfo.00427068 ; qd2
00426FAD B8 0A000000 MOV EAX,0A
00426FB2 E8 250AFEFF CALL TXP1atfo.004079DC
00426FB7 B9 74704200 MOV ECX,TXP1atfo.00427074 ; system32\DRIVERS\JM.sys
00426FBC BA 94704200 MOV EDX,TXP1atfo.00427094 ; SYSTEM\CurrentControlSet\Services\DMusic\ImagePath
00426FC1 B8 02000080 MOV EAX,80000002
00426FC6 E8 11FBFEFF CALL TXP1atfo.00416ADC ;写注册表
00426FCB 6A 00 PUSH 0
00426FCD 68 C8704200 PUSH TXP1atfo.004270C8 ; NET START DMusic
00426FD2 E8 71FEFDFF CALL TXP1atfo.00406E48 ; WinExeC
00426FD7 68 A00F0000 PUSH 0FA0
00426FDC E8 47FEFDFF CALL TXP1atfo.00406E28 ; Sleep等待启动完成
00426FE1 B9 E4704200 MOV ECX,TXP1atfo.004270E4 ; system32\DRIVERS\DMusic.sys
00426FE6 BA 94704200 MOV EDX,TXP1atfo.00427094 ; SYSTEM\CurrentControlSet\Services\DMusic\ImagePath
00426FEB B8 02000080 MOV EAX,80000002
00426FF0 E8 E7FAFEFF CALL TXP1atfo.00416ADC ;改写注册表中驱动名称为DMusic.sys原来是JM.sys
00426FF5 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00426FF8 E8 4F08FEFF CALL TXP1atfo.0040784C
00426FFD 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00427000 BA 58704200 MOV EDX,TXP1atfo.00427058 ; DRIVERS\JM.sys
00427005 E8 E2DCFDFF CALL TXP1atfo.00404CEC
0042700A 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0042700D E8 D2DEFDFF CALL TXP1atfo.00404EE4
00427012 50 PUSH EAX ;system32\DRIVERS\JM.sys
00427013 E8 38FCFDFF CALL TXP1atfo.00406C50 ;调用DeleteFileA,删除掉JM.sys
................
0042703D C3 retn
其他的一些操作:
删除系统的默认共享,可以独享这台肉鸡。
cmd.exe /c net share admin$ /del /y
cmd.exe /c net share C$ /del /y
用命令行实现解压缩下载的木马rar文件到指定的目录并执行,或者打包你的敏感文件后改名并上传。
如C:\Program Files\WinRAR\myrar.txt 将打包的资料改为txt后缀用于上传,避免被人发现
"C:\Program Files\WinRAR\winrar.exe" x -inul -p- " //解压木马到指定目录
"C:\Program Files\WinRAR\winrar.exe" u -as -ep1 -inul " //快速打包所需的文件
x 带绝对路径解压
u 更新压缩文件中的文件
-as 同步压缩文件内容
-ep1 从文件名中删除底层目录,压缩后文件内不含底层目录信息
-inul Disable all messages
-p- Do not query password
命令rar a -u -as -ep1 backup sources\*.cpp将只压缩目录sources下的*.cpp文件,这个操作比创建新的压缩文件执行得快。
三、修复方法:
先搜索染毒程序中的病毒体结束标志“1235c”,这样就找到了备份程序的头,然后在染毒程序的尾部找到备份数据的字节大小,把这段提取即可,编程实现也不复杂,哪位朋友有兴趣就实现一下吧!备注:*.exe.exe文件就是我们原来的的程序,只是名字有所变化,需要从染毒后的程序中提取出来。通过调试发现下面一段代码就是释放备份的原程序且还未执行其他感染行为,所以可以直接用脚本实现。
00403900 66:8178 04 B2D7 CMP WORD PTR DS:[EAX+4],0D7B2 //是否释放*.exe.exe文件的标志
00403906 74 0F JE SHORT shed.00403917 //跳去生成*.exe.exe
................................
00403917 8B78 14 MOV EDI,DWORD PTR DS:[EAX+14]
0040391A 0378 0C ADD EDI,DWORD PTR DS:[EAX+C]
0040391D 8B50 08 MOV EDX,DWORD PTR DS:[EAX+8]
00403920 2B50 0C SUB EDX,DWORD PTR DS:[EAX+C]
00403923 39CA CMP EDX,ECX
00403925 7F 20 JG SHORT shed.00403947 //生成*.exe.exe完毕就跳
00403927 0150 0C ADD DWORD PTR DS:[EAX+C],EDX
0040392A 29D1 SUB ECX,EDX
0040392C 50 PUSH EAX
0040392D 51 PUSH ECX
0040392E 89D1 MOV ECX,EDX
00403930 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
00403932 FF50 1C CALL DWORD PTR DS:[EAX+1C] //WriteFile 每次写80h字节
00403935 85C0 TEST EAX,EAX
00403937 75 04 JNZ SHORT shed.0040393D
00403939 59 POP ECX
0040393A 58 POP EAX
0040393B ^ EB DA JMP SHORT shed.00403917 //返回继续
.........................
00403947 0148 0C ADD DWORD PTR DS:[EAX+C],ECX
0040394A F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0040394C 5F POP EDI
0040394D 5E POP ESI
0040394E C3 RETN
脚本内容:
var addr
sto
mov addr,esp //ESP定律
bphws addr,"r"
run
bphwc addr //清除硬件访问断点
sto //单步一下来到oep
mov addr,eip
and addr, 0f00000
add addr,3900
bp addr
run //来到00403900
bc addr
MSG "You get back it!"
add addr,47
bp addr
run //来到00403947
bc addr
gpa "ExitProcess","kernel32.dll" //获取ExitProcess的地址
mov eax,$RESULT
asm eip, "push 0"
asm eip+5, "call eax"
run //执行ExitProcess强行退出,这时得到的*.exe.exe文件就是我们原来的程序。
四、总结
感染该病毒的机器必须将扩展分区和移动硬盘中的染毒文件全部进行修复处理,系统盘ghost恢复一下就安全了。这个病毒的可恶之处就是把我辛辛苦苦从看雪论坛下载的exe文件都打包了,还好没有对rar文件下手,不幸中的万幸。大家得小心啊!(附件:修复脚本和病毒样本)
天易love
2009-10-4
- 标 题:病毒TXP1atform.exe分析笔记
- 作 者:天易love
- 时 间:2009-10-05 11:23
- 链 接:http://bbs.pediy.com/showthread.php?t=98960