吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18476|回复: 30
收起左侧

[PC样本分析] 游戏盗号木马分析

  [复制链接]
凌厉星光 发表于 2019-8-2 10:05
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 凌厉星光 于 2019-8-2 11:05 编辑

一、基本信息
样本来源:未知
样本类型:游戏盗号木马
样本文件和大小:s1.exe(40.0KB)/ 91C7DF6D.dll(44.2 KB)
加壳类型:UPX
样本文件MD5 值:s1.exe        MD5:5488DE3DF644F391CFDA120DEA6126E5
91C7DF6D.dll  MD5:D022CD4BA70A105B81E31AE30D21F979

二、简介
此程序为盗号木马,开机自启动,母体运行后会释放木马dll文件然后注入到目标进程中,然后捕获游戏界面输入的帐号密码发送到指定的URL,实现盗号功能,由于采用dll注入方式同时母体会被删除,其行为比较隐秘不易发现。

1、文件系统变化
木马释放文件:
C:\WINDOWS\system32\91C7DF6D.cfg
C:\WINDOWS\system32\91C7DF6D.dll
%temp%目录下创建前缀是live的临时文件
木马删除文件:
C:\WINDOWS\system32\VErCLSiD.exe

2、注册表变化
创建键值:
hKey = HKEY_CURRENT_USER
Subkey = "CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32"
Value date=”C:\WINDOWS\system32\91C7DF6D.dll”

hKey = HKEY_LOCAL_MACHINE
Subkey =”Software\microsoft\windows\currentversion\Explorer\shellexecutehooks”
Value name=”{91C7DF6D-AEF5-4136-9252-AF030D7A5931}”

hKey = HKEY_CLASSES_ROOT
Subkey = "CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32"
Value date=”91C7DF6D.dll”

hKey = HKEY_CLASSES_ROOT
Subkey = "CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32"
Value name=”ThreadingModel”
Value date=”Apartment”

3、网络行为
访问URL:http://www.y0uku1.com/cia/bike.asp

三、技术分析
【母体分析】
1、创建进程同步事件对象和线程
1.png
创建的子线程是病毒核心功能,在线程退出时释放事件对象。
2、创建91C7DF6D.cfg文件并且写入数据
构造“C:\WINDOWS\system32\91C7DF6D.cfg”字符串,然后创建91C7DF6D.cfg文件,申请堆内存空间,读取母体文件内容写入生成的配置文件中,在源文件offset=9fc4处读出92B大小的数据,定位到最末两字节0D 0A相减指针得到数据大小,去掉0D 0A得到数据如下:
2DB2C93C09AD60F3BC9A2C35EDF1D148220000002200000072F18A7B04B578B3FCDA357BEAB38D0A2BAB9D6453B534ADEA82796BB1A3C81E69F572F18A7B04B578B3FCDA357BEAB38D0A2BAB9D6453B534ADEA82796BB1A3C81E69F5
3、创建91C7DF6D.dll文件并且写入数据
构造“C:\WINDOWS\system32\91C7DF6D.dll”字符串,申请堆内存并把母体文件读入其中,创建91C7DF6D.dll文件并且首先写入offset=67c0处3800大小的数据,接着写入offset=9fc4处90大小的数据,计算如下:
FileEnd = (DWORD)((char )FileStart + NumberOfBytesRead);
size1 = (DWORD)((char
)FileStart + NumberOfBytesRead - 4);
size2 = (DWORD)((char )FileStart + NumberOfBytesRead - 8);
CreateNewFile(lpFileNameOfDll, (FileEnd -
(_DWORD )size1 - 4), (_DWORD )size1 - (_DWORD )size2 - 8);//第一部分内容
CreateNewFile(lpFileNameOfDll, (FileEnd -
(_DWORD )size2 - 8), (_DWORD *)size2 + 4);//第二部分内容
如下图:
2.png
4、加载91C7DF6D.dll并且调用s200函数
调用LoadLibrary函数获得dll文件句柄,然后调用GetProcAddress函数获得s200函数地址,最后调用此函数。如下图:
3.png
5、查找指定注册表键值并且结束指定进程
检索HKLM\Software\microsoft\windows\currentversion\Explorer\ShellExecuteHooks\键下
Value name={91C7DF6D-AEF5-4136-9252-AF030D7A5931}的键是否存在,如不存在,下面创建键值。如下图:

通过CreateToolhelp32Snapshot,Process32First和Process32Next查找哈希值为:AF9C01 04867ED2841389167E775B8332的进程,找到终止它,如下图。哈希值的计算通过 CryptAcquireContextA,CryptCreateHash,CryptHashData和CryptGetHashParam等系列函数计算得到。
5.png
6、删除文件和创建注册表键值
删除文件C:\WINDOWS\system32\VErCLSiD.exe,防止自创建CLSID时verclsid.exe认证。创建键值:
1)
HKCR\CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32
Valve Name=””
Valve data= “C:\WINDOWS\system32\91C7DF6D.dll”
Valve Name=”ThreadingModel”
Valve data=”Apartment”
2)
HKLM\Software\microsoft\windows\currentversion\Explorer\ShellExecuteHooks\SOFTWARE
Valve Name=”{91C7DF6D-AEF5-4136-9252-AF030D7A5931}”
Valve data=“”。
设置访问权限为“SeBackupPrivilege”,创建前缀为live_开头的临时文件,调用RegSavaKeyA保存Software\microsoft\windows\currentversion\Explorer\信息。然后设置访问权限为“SeRestorePrivilege”,调用RegRestoreKeyA从临时文件中恢复注册表信息。调用RegFlushKey将修改的注册表信息实际写入磁盘,删除临时文件。重复一次相同操作,确定修改注册表成功。如下图:
6.png

7、线程监视注册表
调用QueryRegKey查看HKLM\Software\microsoft\windows\currentversion\Explorer\
ShellExecuteHooks   Value name={91C7DF6D-AEF5-4136-9252-AF030D7A5931}是否已存在,如不存在再次调用LoadLibraryA加载91C7DF6D.dll,运行S200函数。
生成计数器count=0,当count大于等于3退出线程;调用GetTickCount查看系统历经时间,如果小于30分钟,继续返回第6步,直到count等于3,每次Sleep 3秒钟。为了确保dll加载运行。如下图:
7.png

8、退出线程和自删除
调用ExitThread(0)退出子线程;构造“C:\WINDOWS\system32\cmd.exe /c del [程序短路径] >>NULL”字符串 ,使用ShellExecuteA函数删除母体。其中命令如下:"C:\WINDOWS\system32\cmd.exe /c del C:\DOCUME~1\ADMINI~1\Desktop\s1.exe >> NUL"。如下图:
8.png

【91C7DF6D.dll分析】
1、结束特定MD5的程序路径(杀软进程)
调用 GetModuleFileNameA函数获得宿主进程路径,然后把得到的路径字母转换成小写,去掉路径盘符后计算MD5,跟下列MD5进行比较:
5AC71A9F43720CA7377C7EC543FBFFFA
04D1C083134C2EBECA57A9724B0855D4  (360tray.exe)
AE33A1F2459A12A09EC75D71D14B5E89
3ABD7CD8928FE1F3EB563F43B913CA4B
B9E9786EAC82378D3A6E05FCC1E15D2C  (smartup.exe)
D7DB952BB0FA044F2B9A22FEADB37973
1C085B8E02B137AA4EAFBE38CCF3D199
找到就调用GetCurrentProcessId、OpenProcess和TerminateProcess函数结束掉这个进程。如下图:
9.png
2、判断是否是指定进程MD5
计算宿主进程路径MD5,与CDEO98CEF5FDE1E2EAC52C0F93362B79比较,如果是调用s200函数。
3、s200函数分析
1)提权并创建两个线程
程序提权为SeDebugPrivilege,创建线程1和线程2,线程1注册为无限循环线程如下:
10.png

2)线程1 删除杀软托盘图标和进程注入
通过CreateToolhelp32Snapshot创建快照,寻找进程名MD5为上面列举值的进程。然后把访问权限设为SeDebug特权,通过一套函数FindWindowA,FindWindowExA,GetWindowThreadProcessId和SendMessage等来删除托盘。
通过GetProcAddress,WriteProcessMemory,CreateRemoteThread等系列函数,把DLL注入到进程MD5是AF9C0104867ED2841389167E775B8332(应该是游戏)。如下图:
11.png
3)线程2创建全局钩子和监视注册表与文件
调用SetWindowSHookExA设下WH_CBT类型全局钩子,如下图,目的是把自身(91C7DF6D.dll)注入所有进程中去,得以寄生,不易被终止。
12.png
然后查找%systemroot%\system32\VErCLSiD.exe存在的话就删除它。用RegCreateKeyEx检测是否存在HKEY_LOCAL_MACHINE\Software\microsoft\windows\currentversion\
Explorer\shellexecutehoos{91C7DF6D-AEF5-4136-9252-AF030D7A5931}键值。如果不存在,接着创建如下键值(exe主程序一样的做法):
a)
HKCR\CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32
Valve Name=””
Valve data= “C:\WINDOWS\system32\91C7DF6D.dll”
Valve Name=”ThreadingModel”
Valve data=”Apartment”
b)
HKLM\Software\microsoft\windows\currentversion\Explorer\ShellExecuteHooks\SOFTWARE
Valve Name=”{91C7DF6D-AEF5-4136-9252-AF030D7A5931}”
Valve data=“”。
4.查找游戏进程,记录信息然后发送帐号与密码信息。
查看寄主MD5值是否为:AF9C0104867ED2841389167E775B8332(应该为游戏进程名MD5值),如是就结束该游戏进程。然后通过过程、键盘和鼠标钩子监视输入的游戏帐号与密码。
然后读取%systemroot%\system32\91C7DF6D.cfg的数据如下:
2DB2C93C09AD60F3BC9A2C35EDF1D148220000002200000072F18A7B04B578B3FCDA357BEAB38D0A2BAB9D6453B534ADEA82796BB1A3C81E69F572F18A7B04B578B3FCDA357BEAB38D0A2BAB9D6453B534ADEA82796BB1A3C81E69F5
分成两段:Key()=2DB2C93C09AD60F3BC9A 共10个字节
C()=72F18A7B04B578B3FCDA357BEAB38D0A2BAB9D6453B534ADEA82796BB1A3C81E69F5
解密过程:
1)        设i=1;
2)        C(i)=Key( i%10 )  Xor  C(i)
C(i)= C(i)  Xor  37h
3)        i++继续第2步,再到C()解密结束
最后得到明文:P()=http://www.y0uku1.com/cia/bike.asp
通过调用InternetOpen等API以
Re=&s=&A=&P=&MB=&wwwww=v&H=&PIN=&R=&RG=-1&M=-1&M1=-1&mac=&RG1=-1&Z=:格式发送记录到的信息。如下两图。
13.png
14.png

四、手动查杀方法
在安全模式下或PE环境里,删除%system32%\system32\91C7DF6D.dll和91C7DF6D.cfg
删除键值:
hKey = HKEY_LOCAL_MACHINE
Subkey =“Software\microsoft\windows\currentversion\Explorer\shellexecutehooks”
Value name=”{91C7DF6D-AEF5-4136-9252-AF030D7A5931}”

hKey = HKEY_CLASSES_ROOT
Subkey = "CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32"
Value date=”91C7DF6D.dll”

hKey = HKEY_CLASSES_ROOT
Subkey = "CLsID{91C7DF6D-AEF5-4136-9252-AF030D7A5931}\InprocServer32"
Value name=”ThreadingModel”
Value date=”Apartment”

免费评分

参与人数 9威望 +1 吾爱币 +12 热心值 +8 收起 理由
luan666666 + 1 谢谢
zhangyueming + 1 谢谢@Thanks!
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
andaoxu + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fei8255 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xiaofengzi + 1 + 1 用心讨论,共获提升!
hayb + 1 热心回复!
dzj0821 + 1 + 1 热心回复!
Lecoeur + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sber 发表于 2021-1-19 23:09
非和谐之物 发表于 2019-10-21 17:39
事实上现在的验证机制都是手机或者令牌等,光靠账号密码解决不了太多。

有强迫验证机制,修改安全中心登录验证即可,表示网络真神奇。
ahov 发表于 2022-2-27 11:53
根据病毒C&C服务器(http://www.y0uku1.com/cia/bike.asp)查下来貌似是个老毒了,有样本吗
战言灬永不败 发表于 2019-8-2 18:15
RSASS 发表于 2019-8-2 19:18
学到了,感谢指导
跌落的尘埃 发表于 2019-8-2 20:00
谢谢科普
flowtcw 发表于 2019-8-2 20:25
感谢分享!
弦歌知雅意c 发表于 2019-8-3 07:08
感谢大佬科普
xiaofengzi 发表于 2019-8-5 14:02
学习了,感谢楼主分享
奶狗爱阔耐 发表于 2019-8-6 16:00
大佬膜拜,厉害了
yudetao 发表于 2019-8-6 16:53
大佬,这个的防范机制怎么搞
xukang1119 发表于 2019-8-10 17:03
支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 10:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表