逆向随笔——对可以过TP的注入驱动的一次逆向
前言:
逆一些东西,有点收获,就写篇随笔记录一下。因为写的随便,就不发看雪了。
今天一个朋友给我发了一个说是可以过TP的注入驱动,希望我逆一下看看是什么套路。
正文:
接收过来压缩包,看了一下
loadddll32和64分别是用在32和64的驱动,MemOpe和dnf.exe都是测试用例(不过我是用自己写的123.exe进行测试)。
先跑起来,看看线程和模块上有没有什么特别的地方
有一个线程Pchunter标红,而且“模块”那里没有,很可疑,先记下。
进程模块这里出现了注入的MemOpe.dll,看来不是内存加载。
为了减小干扰,先试试把“驱动级别的dll注入器.exe”进程强关了,看驱动还有没有效果。
测试了下仍可以正常注入。说明整个注入过程全由驱动完成,其加载驱动的exe不参与。
由于是x86sys程序,x64dbg用不上,只好拿IDA
(顺便吐槽一下,之前尝试用windbg动态调试看看。那用的叫一个难受,单步1步,windbg的反汇编窗口卡1秒。watch窗口也看不了一些[ebp-xx]之类的变量数据,可能是我还不会用)
代码很干净,函数很少。先看看输入表。
注意框起来的API,看到这几个api。我想到了ssdt,attach进程,创建线程,设置模块加载回调,申请r3内存空间。
接下来看看都有什么操作。
1.和加载驱动的exe通信,获取目标进程名和要注入的dll路径
2.设置模块加载回调
再看看回调里面有什么东西
3.判断LoadImage的进程是不是目标进程>>判断加载的模块是不是ntdll.dll>>开一个内核线程
注意这个ntdll
再来看看内核线程执行的函数里面有什么
4.Attach到目标进程(之前Pchunter看到的标红线程应该就是这个原因)
取R3和R0的ZwProtectVirtualMemory,ZwWriteVirtualMemory,ZwReadVirtualMemory,ZwQueryVirtualMemory,LdrLoadDll(无R0),ZwTestAlert(无R0) 地址
5.往目标进程申请一片full_access内存放shellcode,并对其用到的API地址进行重定位,同时对ntdll!ZwTestAlert下了一个HOOK,用来跳转到自己的shellcode
(一个进程被Create,ntdll最先加载,再由其加载kernel,user等其他系统DLL。由于ntdll上的线程会经过ntdll!ZwTestAlert这个API,所以对其下Hook来跳转执行自己的shellcode实现DLL加载)
效果图:
总结一下大致流程:
1.目标进程创建>>
2.驱动通过Load_Image回调发现目标进程及其Ntdll>>
3.对其Ntdll线程必经的ntdll!ZwTestAlert下Hook,同时写入shellcode>>
4.Ntdll线程经过ntdll!ZwTestAlert并跳转到shellcode>>
5.执行LdrLoadDll加载目标DLL>>
6.DLL注入完成
尾声:
感谢xjun前辈的指点
(小声bb一句,这全是破绽的驱动注入能过TP,我觉得TP真是放水了。。。)
说实话,一开始逆的时候。逆到那个Shellcode操作的地方,怎么都看不明白,还以为注入是靠的内核线程attach了目标进程,然后亲自调用了什么API才注入的。这里看不懂,就只能先看其他函数,全部看遍了也没有相关的API和操作。没办法,试试windbg,动态看看对shellcode的操作。。。结果怎么样,前面也吐槽了。
最后还是配合着看线程环境(看到注入dll的是ntdll模块上的线程),看目标进程里的shellcode才分析出来具体原理。
虽然很想发到看雪,不过拙文一篇,就不去献丑了。权当是自娱自乐了
逆向随笔——对可以过TP的注入驱动的一次逆向相关推荐
- 【逆向】【Part 3】DLL注入
目录 一.通过自制调试器来理解其原理 1.调试器的工作原理 实现反汇编功能(重点) 重点分析exception_debug_event 重点:1.对调试器程序增加异常处理操作功能,核心API, CON ...
- 171031 逆向-以CM41为例进行Dll注入(下)
1625-5 王子昂 总结<2017年10月31日> [连续第396天总结] A. Dll注入收尾 B. 今天主要需要完成的是根据进程名自动搜索pid.错误检查和注出Dll的功能 首先是P ...
- 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向
文章目录 声明 逆向目标 逆向过程 绕过无限 debugger 1.Never pause here 2. Add conditional breakpoint 3.中间人拦截替换无限 debug 函 ...
- 【JS 逆向百例】复杂的登录过程,最新微博登录逆向
文章目录 声明 逆向目标 登录流程 1.预登陆 2.获取加密后的密码 3.获取 token 4.获取加密后的账号 5.发送验证码 6.校验验证码 7.访问 redirect url 8.访问 cros ...
- TP屏幕适配--驱动篇
文章目录 前言 硬件构成 TP原理 主要硬件组成 通讯流程 引脚配置 通讯方式(IIC) 中断初始化 TP屏幕逻辑主线程 TP触屏信息进行记录和上报 读取TP触屏信息并解析 TP触屏信息进行分析处理 ...
- 高通平台TP和LCD 驱动Porting流程
ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/inpu ...
- 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
文章目录 一.编译注入工具 二.编译结果文件说明 三.注入过程说明 一.编译注入工具 在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注 ...
- 【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )
文章目录 一.SO 进程注入环境及 root 权限获取 二.进程注入时序分析 一.SO 进程注入环境及 root 权限获取 SO 注入的前提必须有 root 权限 , 有了 root 权限后 , 才能 ...
- [免费专栏] Android安全之静态逆向APK应用浅析「手动注入smali」+「IDA Pro静态分析so文件」+「IDA Pro基础使用讲解」
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...
最新文章
- 前端每周清单第 50 期: AngularJS and Long Term Support, Web 安全二三论
- Intellij IDEA 2018.2 搭建Spring Boot 应用
- 《税务登记管理办法》
- python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
- JAVA开发工具整理
- 0与1世界的初级编程篇之C语言
- 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
- 这个温州人,是中国开店最多的炸鸡王者
- Firefox 和 Chrome 性能测试对比
- Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)
- HBase-TDG Architecture
- display:inline-block间隙产生的原因以及解决方案
- python mysql到处excel
- 数字序列中某一位的数字
- .NET破解之谷歌地图下载助手-睿智版
- Base64编码及应用
- c语言蠕虫病毒源码,蠕虫病毒源码!附带解毒源码!
- creator贴图纹理压缩(creator2.4.x 实现ETC2和ASTC)
- unity vr是加一个摄像机就行吗_梦工厂和皮克斯员工创办的Baobab谈互动叙事:传统动画与VR动画的探索...
- win7 破解后找不到活动分区以及bootmsr missing