本文为看雪论坛精华文章
看雪论坛作者ID:HadesW
exp: https://github.com/HadesW/mhy_exp注:《借坡下驴》凭借有利的地势下驴。比喻利用有利条件行事。之前有介绍《借刀杀人》,指的是利用高权限的系统进程。这次《借坡下驴》,是利用了某游戏本身的驱动保护程序。
此文主要是记录分析某款游戏驱动保护的r3-r0通讯算法。因为文章整理于作者2020年10月份左右的笔记,有点流水账,分析和利用的样本大概是2020年8月-9月份左右的。修改时间: 2020年9月29日, 12:27:38最开始,作者只是简单的关注了此驱动读写任意进程的功能。所以这里自底向上分析,通过基本的内核API分析其参数,然后查看其调用方如何把IoBuffer解析传入。// 使用以下内核函数跨进程读写
NTSTATUS
MmCopyVirtualMemory(
IN PEPROCESS FromProcess,
IN CONST VOID *FromAddress,
IN PEPROCESS ToProcess,
OUT PVOID ToAddress,
IN SIZE_T BufferSize,
IN KPROCESSOR_MODE PreviousMode,
OUT PSIZE_T NumberOfBytesCopied
)
// read write process memory
typedef struct _rwpm_data
{
uint32_t is_write;
uint32_t padding;
uint64_t pid;
uint64_t dst;
uint64_t src;
uint64_t size;
}rwpm_data, * p_rwpm_data;
当时我有了读写结构之后,去做了demo调用,发现其通讯的数据是有加解密的,并且很多函数是有VMP过的。所以这里用动静结合的方式来还原算法。1. 双机调试,下断其入口处,patch掉其反调试。
2. 定位其加解密Key初始化,下断单步,结合IDA观察传入数据的变化。6. 用std::mt19937_64()重写加解密。1. 检测调试信息
2. 遍历进程模块信息
3. 强制结束进程
4. 获取线程信息
5. 获取进程信息
6. 获取驱动信息
7. 读取内核内存
8. 保护自身回调
9. 自保护(访问权限)
1. 干掉杀毒软件后,运行RAT
2. 读写系统进程 和 Hook检测(csrss.exe / lsass.exe / explorer.exe)
3. 读写保护进程(透视)
注:图中数据取自20220517日,游戏版本号6.0.4。看雪ID:HadesW
https://bbs.pediy.com/user-home-766647.htm
*本文由看雪论坛 HadesW 原创,转载请注明来自看雪社区
文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458454249&idx=1&sn=07279453ab2e5807c7548972a7769b52&chksm=b18e386386f9b175e72c07315131a311527604e1a9074352c3fdb1a5408458b039c76e440a3c#rd
如有侵权请联系:admin#unsafe.sh