黑客系列教程之暴力注入Explorer
2012-07-15 21:55
351 查看
向一个运行中的进程注入自己的代码,最自然莫过于使用CreateRemoteThread,如今远线程注入已经是泛滥成灾,同样的监测远线程注 入、防止远线程注入的工具也举不胜举,一个木马或后门启动时向Explorer或IE的注入操作就像在自己脸上写上“我是贼”一样。
用户态代码想要更隐蔽地藏身于别的进程,就应该在注入的环节隐蔽自己的行为。下面就介绍一种非常简单不过比较暴力的方法,给出的示例为在Explorer里加载自己的dll。
首先提到的就是一个API:QueueUserAPC
大 家对这个API应该并不陌生,它直接转入了系统服务NtQueueApcThread从而利用KeInsertQueueApc向给出的目标线程的APC 队列插入一APC对象。倘若KiDeliverApc顺利的去构造apc环境并执行我们的代码那一切就OK了,只可惜没有那么顺利的事,ApcState 中UserApcPending是否为TRUE有重要的影响,结果往往是你等到花儿都谢了你的代码还是没得到执行。在核心态往往不成问题,自己动手赋值, 可是用户态程序可不好做,怎么办?其实最简单的,不好做就不做啰,让系统去干。
实际上应用程序在请求“alertable”的等待时系统 就会置UserApcPending为TRUE(当KeDelayExecutionThread/KeWaitForMultipleObjects /KeWaitForSingleObject 使用TestForAlertPending时就有可能,此外还有KeTestAlertThread等,机会还是有的),最简单的例子,目标线程调用 SleepEx(***, TRUE)后我们插入APC代码就会乖乖执行了。
比较幸运的是Explorer进程中一般情况下总有合我们意的线程,于是最简单但并不优美的办法就是枚举Explorer中所有线程,全数插入,示意如下:
用户态代码想要更隐蔽地藏身于别的进程,就应该在注入的环节隐蔽自己的行为。下面就介绍一种非常简单不过比较暴力的方法,给出的示例为在Explorer里加载自己的dll。
首先提到的就是一个API:QueueUserAPC
大 家对这个API应该并不陌生,它直接转入了系统服务NtQueueApcThread从而利用KeInsertQueueApc向给出的目标线程的APC 队列插入一APC对象。倘若KiDeliverApc顺利的去构造apc环境并执行我们的代码那一切就OK了,只可惜没有那么顺利的事,ApcState 中UserApcPending是否为TRUE有重要的影响,结果往往是你等到花儿都谢了你的代码还是没得到执行。在核心态往往不成问题,自己动手赋值, 可是用户态程序可不好做,怎么办?其实最简单的,不好做就不做啰,让系统去干。
实际上应用程序在请求“alertable”的等待时系统 就会置UserApcPending为TRUE(当KeDelayExecutionThread/KeWaitForMultipleObjects /KeWaitForSingleObject 使用TestForAlertPending时就有可能,此外还有KeTestAlertThread等,机会还是有的),最简单的例子,目标线程调用 SleepEx(***, TRUE)后我们插入APC代码就会乖乖执行了。
比较幸运的是Explorer进程中一般情况下总有合我们意的线程,于是最简单但并不优美的办法就是枚举Explorer中所有线程,全数插入,示意如下:
相关文章推荐
- 黑客系列教程之暴力注入Explorer
- "暴力"注入Explorer
- 暴力”注入Explorer
- 暴力”注入Explorer
- 暴力注入Explorer的apc方法
- Autodesk Vault API系列培训教程第三讲-Vault Explorer定制
- [转]coolfire黑客入门教程系列之(一)
- 黑客教程系列-简明批处理第一章
- 黑客教程系列-简明批处理第五章
- 暴力注入Explorer详细解析
- Web攻防系列教程之 Cookie注入攻防实战
- 黑客教程系列-简明批处理第二章
- 黑客攻防之SQL注入原理解析入门教程
- 暴力注入Explorer详细解析
- Web攻防系列教程之 PHP + Mysql注入攻防实战
- [转]coolfire黑客入门教程系列之(一)
- 黑客教程系列-简明批处理第六章
- 黑客教程十:数据库注入(上)
- [转]coolfire黑客入门教程系列之(二)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置