|
|
|
|
移动端

系统安全攻防战:DLL注入技术详解

DLL注入是一种允许攻击者在另一个进程的地址空间的上下文中运行任意代码的技术。本文将介绍使用PowerSploit,Metasploit和自定义工具以及使用这些工具执行DLL注入的过程。

作者:liulang来源:FreeBuf|2017-08-15 23:51

人工智能+区块链的发展趋势及应用调研报告


系统安全攻防战: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注入

有许多可以执行DLL注入的工具,但最可靠的工具之一是出自SecurityXploded技术团队的Remote DLL Injector,该工具在实现上使用的是CreateRemoteThread技术,它可以将DLL注入到启用了ASLR的进程中,工具使用的过程中只需要提供进程ID和DLL路径两个参数:

DLL注入

RemoteDLLInjector在初始运行的时候会展示为了完成dll注入所涉及到的所有步骤, 如下图所示。

如果DLL被成功注入,它将返回一个具有和被注入进程相同权限的meterpreter 会话。因此,具有高权限的进程可能会是攻击者首选要注入的进程以执行提权操作。

Metasploit

Metasploit框架具有执行DLL注入的特定模块。它只需要指定进程的PID和DLL的路径并和meterpreter 成功建立会话。

Metasploit

PowerSploit

也可以通过使用PowerSploit完成dll注入以提升程序执行权限。 msfvenom可以用于生成恶意DLL,然后通过任务管理器可以获得目标进程的PID。 如果目标进程作为SYSTEM运行,则注入的DLL将以相同的权限运行。

PowerSploit

Invoke-DLLInjection模块将执行DLL注入,如下所示:

DLL内的有效内容将被执行,并且将获得SYSTEM权限。

【编辑推荐】

  1. MySQL False注入及技巧总结
  2. MySQL注入攻击与防御
  3. RED_HAWK:基于PHP实现的信息收集与SQL注入漏洞扫描工具
  4. 手机只需发条消息即可开始大规模SQL注入攻击
  5. 利用脚本注入漏洞攻击ReactJS应用程序
【责任编辑:IT疯 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C#和.NET核心技术

本书重点讲解如何用实用的代码来解决具体的实际问题。本书的内容覆盖面很广,从新的C#范型到Web服务,从反射到安全等都有涉及。系统地介绍...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊