简单总结下常用的注入姿势
来源:互联网 发布:2008年网络歌曲大全 编辑:程序博客网 时间:2024/04/29 05:17
简单总结下常用的注入姿势,这里面每一个我之前都做个详细的解释以及上传了实现代码,下面有对应的链接。这里整理下方便以后查找和复习。
1.镜像劫持
镜像劫持(1)(http://blog.csdn.net/u013761036/article/details/53290918)
在注册表的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options]
处新建一个以杀毒软件主程序命名的项,
例如aaa.exe。然后再创建一个键“Debugger=" C:\WINDOWS\system32\bbb.exe”。
在启动名字为aaa.exe的程序的时候bbb.exe会被自动运行。
镜像劫持(2)(http://blog.csdn.net/u013761036/article/details/53527490)
另一个可以镜像劫持的地方:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下面存着一个启动程序路径。
系统登录的时候会先调用它,所以我们可以通过他来劫持。
2.DLL注入-APC注入(http://blog.csdn.net/u013761036/article/details/53338322)
APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下:
1)当EXE里某个线程执行到SleepEx()或者WaitForSingleObjectEx()时,系统就会产生一个软中断(或者是Messagebox弹窗的时候不点OK的时候也能注入)。
2)当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数。
3)利用QueueUserAPC()这个API可以在软中断时向线程的APC队列插入一个函数指针,如果我们插入的是Loadlibrary()执行函数的话,就能达到注入DLL的目的。
3.输入法注入(http://blog.csdn.net/u013761036/article/details/53230610)
IME:输入法相关文件,比如说你安装了输入法A,那么通常是会有两个或者多个IME文件(可以简单理解成是DLL),然后我们自己实现那些常用的导出函数接口,然后把我们自己写的输入法程序(XX.ime)注册成输入法,并且设置成默认输入法,这样之后新启动的程序会尝试自动加载我们的输入法,从而实现注入的目的。
4.通过修改EIP寄存器实现强行跳转并且注入DLL到目标进程里
(http://blog.csdn.net/u013761036/article/details/52885552)
挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器码和数据拷贝到里面去,然后修改目标进程EIP使其强行跳转到我们拷贝进去的相关机器码位置,执行相关,然后跳转回来。
5.LSP注入(http://blog.csdn.net/u013761036/article/details/52563513)
总结起来就是说Windows为了方便扩展,在网络请求出做了接口中转,这样的话我们可以去实现这个中转的接口(对应一个dll,对外提供一些固定的接口),然后再把这个dll注册下(其实就是告诉系统,通过这个dll中转),然后我们在帮忙中转的过程中选择性的做一些事,已达到LSP注入的目的。
6.DLL劫持(HiJack)原理以及实现细节
(http://blog.csdn.net/u013761036/article/details/52268500)
这个技术的原理很简单,就是A.exe想要调用B.dll,并且使用里面的FunC函数,这样的话我们把B.Dll改名BB.Dll(有的不用,直接根据路径劫持),然后我们自己写一个B.Dll里面有一个FunC这个函数,然后我们在这个函数里加载BB.Dll,并且调用里面的FunC函数,之后我们在干一些自己的事,对于A.exe来说通常没什么异常感觉,这样我们的目的就达到了,记住此时的你,也就是B.dll的权限和内存归属都是A的,也即是你和A是一家的了,类似于代码注入之后直接修改内存一样。
windows-DLL注入(远程线程注入)
(http://blog.csdn.net/u013761036/article/details/52205331)
LoadLibrary这个函数所有的进程都是地址一样,我们直接获取LoadLibrary的地址,然后在CreateRemoteThread里面直接把这个地址作为线程地址传过去,然后参数就是我们已经拷贝到对方内存里的那个字符串,这样直接就跑起来了,当这这些动作之前要先在目标进程里开辟一些空间,然后把要用的变量数据什么的都放进去(这里通常指的是dll的路径)。
- 简单总结下常用的注入姿势
- SQL注入的其他姿势
- SQL注入的“冷门姿势”
- Mac下安装artifactory的正确姿势和简单使用
- sql注入插入姿势
- 姿势总结
- DLL注入的几种姿势(一):Windows Hooks
- Dagger2从0基础使用,到单例注入的正确姿势
- 注入的花式绕过姿势--向鸡哥学习
- SQL注入攻击与防御的一些姿势
- SQL黑客注入防御与绕过的多种姿势
- spring常用的一些注解以及注解注入总结
- spring常用的一些注解以及注解注入总结
- spring常用的一些注解以及注解注入总结
- spring常用的一些注解以及注解注入总结
- spring常用的一些注解以及注解注入总结(二)
- Spring常用的一些注解以及注解注入总结
- spring三种常用注入方式的测试与总结
- 单点登录
- 《算法概论》第8章习题8.3题解
- Redbear DUO初体验
- 最简单的商品模块数据库设计
- 447. Number of Boomerangs 难度:easy
- 简单总结下常用的注入姿势
- git快速上手教程
- 关于sscanf函数的使用
- html文件中flash视频格式(flv、swf)文件的嵌入方法
- oracle行转列——游标方式实现
- 【leetcode】99. Recover Binary Search Tree【java】简单又容易理解的中序遍历的方法
- Web--robots.txt协议
- HTTP状态查询
- python得到windows自启动列表