[玄武安全卫士]网吧Steam病毒运行流程分析

[玄武安全卫士]网吧Steam病毒运行流程分析

首页休闲益智病毒研究所游戏更新时间:2024-05-09

标题:网吧STEAM病毒运行流程分析

更新:2024年4月2日

″内容摘要

记录网吧运维在网吧服务器游戏文件夹发现异常文件,怀疑是木马程序,将该文件发给玄武安全卫士,经过工程师分析,确定此文件为木马病毒程序,通过Dll劫持对STEAM、Wegame进行盗号、洗号,网吧安装玄武安全卫士可以有效防御此类病毒攻击;

┃病毒的运行流程

  1. 病毒执行流程


2.盗取steam执行流程

┃执行前期准备

1.运行病毒的执行程序ZuxLe1MHQCGK:

运行ZuxLe1MHQCGK[1].exe的时候会在C盘写下一个名字叫做QdeA4vziB05R.exe的文件。释放文件后会运行QdeA4vziB05R.exe,而

QdeA4vziB05R.exe进行的就是盗号的前期工作。

2.QdeA4vziB05R.exe的运行动作:

查看释放程序动作,发现该程序搜索steam关键字搜索结果如下图所示;

以上可知:该程序针对不同的无盘操作系统,从C到J每个盘符寻找steam的路径并且写入文件。该程序对wegame执行同样的操作;

程序搜索steam\\msacm32.drv。之后查看steam目录里面的msacm32.drv。发现steam目录没有msacm32.drv;

运行QdeA4vziB05R.exe,并找一个关于steam的字符串下断,直接命中字符串;

可以看到所有的字符串都有40666a的执行函数。单步进入函数内部往下走发现一个关键的API<调用的API是CreatefileA>;

目前机器上不存在这个路径,创建失败,所以该程序把参数一改成本地存在的路径 修改成C盘下面的test文件夹,可以看到已经生成了新文件:msacm32.drv。

3.程序自删除:

接着看该程序后面还有什么操作。发现QdeA4vziB05R.exe还会在桌面创建一个名字为kill.bat的批处理文件;

编辑打开批处理文件。简单明了就是删除文件的操作。最后执行kill.bat批处理完成退出操作,程序运行结束。批处理内容如下所示;

通过行为可以看出QdeA4vziB05R.exe在指定的目录下面写下对应的文件。之后创建批处理,运行批处理抹去自己的存在痕迹。

┃盗取steam过程

1.DLL劫持原理:

DLL劫持的原理为系统运行程序会加载程序所依赖的DLL文件。如果本地目录有依赖的DLL文件就会直接加载,如果没有则去系统目录加载。同时DLL劫持之后会直接运行在程序内部,绕过一些常规的驱动保护禁止读写STEAM内存的防御方法。

2.静态分析msacm32.drv

查看msacm32.drv里面有没有可用的信息。使用IDA打开msacm32.drv。显示结果与正常程序不同,因为程序上了壳来防止分析。静态分析图如下图所示。

3.运行STEAM伴随msacm32.drv的DLL劫持

双击运行STEAM,界面没有任何的变化,附加steam看看内存都有什么变化

查看内存发现已经加载msacm32.drv。这时候就明白了,原来这个msacm32.drv就是对steam进行简简单单的dll劫持,让自己加载进去steam。

进入msacm32.drv的内存地址看看有什么有用的信息没。打开msacm32.drv的内存看看汇编代码

汇编代码显示正常,那么在内存中搜索一下字符串看看。

可以看到很多字符串的信息,那么那个壳看来也就是防止静态分析,动态运行的时候直接就把自己的代码展开放在内存中了。从图中可以看到一个关于steam登录信息相关的vdf文件,以及还有其他的信息。

4.对loginusers.vdf的操作

拼接上steam路径获得loginusers.vdf文件的所在位置。之后就是打开文件,如果文件可以打开那么就读取文件的内容。

再往下面执行看看读取文件之后还有什么操作在里面。在函数返回之后判断是否存在读取成功,成功后下面有一个字符串是"AccountName",结合文件信息就可以猜测到这个操作是用来获取当前登录的STEAM的账号信息,并把用户名存在全局变量msacm32.drv的基地址 0x49597的地方。

5.取得需要的steamtoken

5.1搜索steamwebhelp内存获得网页token。在读取账号成功之后程序才会进行下一步操作。 从自身加密的字符串"636475717D3E756875D5984C2A288"中获得"steam.exe"字符串,之后通过进程快照拿到steam的进程句柄。接着从其他的加密字符串中解密"steamwebhelper.exe"字符串 。(在启动STEAM的时候有很多steamwebhelper的进程启动);

使用STEAM的进程句柄调用API CreateToolhelp32Snapshot获得目前全部正在运行的steamwebhelp.exe的进程ID。之后通过 ntdll里面获得ZwReadVirtualMemory函数地址。现在有了全部的进程steamwebhelp.exe的进程ID就可以读取全部的的steamwebhelp.exe进程的内存;

在读取内存的时候会压入"73 74 65 61 6D 4C 6F 67 69 6E 53 65 63 75 72 65 3D"这个字符串,第一感觉像是机器码。写进内存看看是什么样子的汇编 。汇编代码看上去不对劲,再看下内存窗口steamLoginSecure。这个东西是steam登录之后会返回的一个webtoken,使用这个token可以通过发包进行steam市场交易等操作;

既然是字符串再加读取内存,直接就想到搜索内存。使用CE打开steamwebhelp.exe搜索一下看看;

直接就可以看到了token的存放位置。

5.2搜索客户端token。接着往下执行会发现还有一个暴力搜索内存的字符串"eyAidHlwIjogIkpXVCIsICJhbGciOiAiRWREU0EiIH0“通过这个字符串向后取内容取到0x0结尾为止。但是使用这个字符串来搜索的时候会搜索到很多token。病毒会把这些搜索到的字符串的都放在一个数组里面。遍历一个steamwebhelp.exe结束后检测这些搜索到的数据是否有自己需要的那个token;

把搜索到的数据进行base64解码。能够看到可见的字符串。字符串的显示为json格式。之后判断iss对应的数值是否为“steam“;

如果为steam那个就是需要的 token,如果不是返回token错误.拿到正确token停止内存搜索。到这里就已经获得到了需要的token的全部信息。

6.获取本地信息发送数据返回服务器

通过一个URL获得本机的外网IP,把获得到的数据,本地IP以及时间,steam的路径等信息组合成json格式进行发包。

分析到此结束!

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved