系统安全攻防战:DLL注入技术详解
DLL注入是一种允许攻击者在另一个进程的地址空间的上下文中运行任意代码的技术。攻击者使用DLL注入的过程中如果被赋予过多的运行特权,那么攻击者就很有可能会在DLL文件中嵌入自己的恶意攻击代码以获取更高的执行权限。
具体而言,该技术遵循以下步骤:
1. 需要将DLL写入磁盘中;
2. “CreateRemoteThread”调用“LoadLibrary”;
3. 反射加载程序功能将尝试使用适当的CPU寄存器找到目标进程的进程环境块(PEB),并从中尝试查找内存中的kernel32dll和任何其他必需库的地址;
4. 发现所需的API函数(如LoadLibraryA,GetProcAddress和VirtualAlloc)的内存地址;
5. 上述功能将用于将DLL正确加载到内存中,并调用其将执行DLL的入口点DllMain。
本文将介绍使用PowerSploit,Metasploit和自定义工具以及使用这些工具执行DLL注入的过程。
手动注入
手动注入可以从头开始创建DLL,也可以通过Metasploitmsfvenom创建DLL,该文件可以生成包含特定有效内容的DLL文件。 应该注意的是,如果DLL被注入的进程是64位,那么应该使用64位有效负载。
下一步是设置metasploit侦听器,以便在将恶意DLL注入进程后接受连接。
有许多可以执行DLL注入的工具,但最可靠的工具之一是出自SecurityXploded技术团队的Remote DLL Injector,该工具在实现上使用的是CreateRemoteThread技术,它可以将DLL注入到启用了ASLR的进程中,工具使用的过程中只需要提供进程ID和DLL路径两个参数:
RemoteDLLInjector在初始运行的时候会展示为了完成dll注入所涉及到的所有步骤, 如下图所示。
如果DLL被成功注入,它将返回一个具有和被注入进程相同权限的meterpreter 会话。因此,具有高权限的进程可能会是攻击者首选要注入的进程以执行提权操作。
Metasploit
Metasploit框架具有执行DLL注入的特定模块。它只需要指定进程的PID和DLL的路径并和meterpreter 成功建立会话。
PowerSploit
也可以通过使用PowerSploit完成dll注入以提升程序执行权限。 msfvenom可以用于生成恶意DLL,然后通过任务管理器可以获得目标进程的PID。 如果目标进程作为SYSTEM运行,则注入的DLL将以相同的权限运行。
Invoke-DLLInjection模块将执行DLL注入,如下所示:
DLL内的有效内容将被执行,并且将获得SYSTEM权限。
系统安全攻防战:DLL注入技术详解的更多相关文章
- HOOK -- DLL的远程注入技术详解(1)
DLL的远程注入技术是目前Win32病毒广泛使用的一种技术.使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运 ...
- <ReversingEngineering>关于windows32位系统下的dll注入技术经验汇
上个学期把自己闷在图书馆一直在看关于逆向工程技术方面的书,从入门到初级,现在也敢说自己一条腿已经迈进了这片知识的大门里,因为该博客刚开通先将一些经验记录下来,也是留给自己一方面做个参照. <逆向 ...
- Dll注入技术之消息钩子
转自:黑客反病毒 DLL注入技术之消息钩子注入 消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个 ...
- Dll注入技术之注册表注入
DLL注入技术之REG注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EX ...
- Dll注入技术之ComRes注入
DLL注入技术之ComRes注入 ComRes注入的原理是利用Windows 系统中C:\WINDOWS\system32目录下的ComRes.dll这个文件,当待注入EXE如果使用CoCreateI ...
- Dll注入技术之远程线程注入
DLL注入技术之远线程注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EX ...
- DLL注入技术之依赖可信进程注入
DLL注入技术之依赖可信进程注入 依赖可信进程注入原理是利用Windows 系统中Services.exe这个权限较高的进程,首先将a.dll远线程注入到Services.exe中,再利用a.dll将 ...
- Dll注入技术之输入法注入
DLL注入技术之输入法注入 输入法注入原理是利用Windows系统中在切换输入法需要输入字符时,系统就会把这个输入法需要的ime文件装载到当前进程中,而由于这个Ime文件本质上只是个存放在C:\WIN ...
- CDN学习笔记二(技术详解)
一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...
随机推荐
- SVM-支持向量机 学习 1
参考 https://zhuanlan.zhihu.com/p/42334376 https://blog.csdn.net/liugan528/article/details/79448379 ht ...
- vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示
vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示 https://cn.vuejs.org/v2/guide/class-and-sty ...
- 多表单异步验证 可以用 Promise validate
https://www.jb51.net/article/140062.htm vue动态绑定组件子父组件多表单验证功能的实现代码 // 加载组件:每次下拉框监听则给changValue新赋值,如果下 ...
- 在CNN网络中roi从原图映射到feature map中的计算方法
在使用fast rcnn以及faster rcnn做检测任务的时候,涉及到从图像的roi区域到feature map中roi的映射,然后再进行roi_pooling之类的操作.比如图像的大小是(600 ...
- Ubuntu的防火墙配置-ufw-iptables
自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸如防火墙.NAT等功能.一般来说, 我们会使用名气 ...
- 第1节 flume:9、flume的多个agent串联(级联)
3.两个agent级联 需求分析: 第一个agent负责收集文件当中的数据,通过网络发送到第二个agent当中去,第二个agent负责接收第一个agent发送的数据,并将数据保存到hdfs上面去 第一 ...
- 微信小程序入口场景的问题整理与相关解决方案
前言 最近一段时间都在做小程序. 虽然是第二次开发小程序,但是上次做小程序已经是一年前的事了,所以最终还是被坑得死去活来. 这次是从零开始开发一个小程序,其实除了一些莫名其妙的兼容性问题,大多数坑点都 ...
- 微信小程序工具真机调试提示page "xxx/xxx/xxx" is not found
解决方法: pages对象添加该页面
- Elasticsearch 索引管理和内核探秘
1. 创建索引,修改索引,删除索引 //创建索引 PUT /my_index { "settings": { , }, "mappings": { " ...
- (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO