通过MITM修补二进制文件:BackdoorFactory + mitmProxy。
博客:http://secureallthethings.blogspot.com/2017/08/closing-door-end-of-backdoor-factory.html
仅限安全专业人员与研究人员使用。
###现在仅支持 v.0.17 >= MITMPROXY >= v.0.11
Docker:
# sudo echo 1 > /proc/sys/net/ipv4/ip_forward # linux
# sudo sysctl -w net.inet.ip.forwarding=1 # macOS
docker pull secretsquirrel/bdfproxy
docker run -it -p 8080:8080 secretsquirrel/bdfproxy bash
# ./bdf_proxy.py
Kali 安装方式:
apt-get update
apt-get install bdfproxy
Black Hat USA 2015:
视频:https://www.youtube.com/watch?v=OuyLzkG16Uk
论文:https://www.blackhat.com/docs/us-15/materials/us-15-Pitts-Repurposing-OnionDuke-A-Single-Case-Study-Around-Reusing-Nation-State-Malware-wp.pdf
DerbyCon 2014:
视频:http://www.youtube.com/watch?v=LjUN9MACaTs
大约18分钟处开始是 BDFProxy 部分。
联系开发者:
IRC:
irc.freenode.net #BDFactory
Twitter:
@midnite_runr
该脚本使用了两个库:The Backdoor Factory (BDF) 和 mitmProxy。
###概念: 在下载过程中通过 MITM 方式修补二进制文件。
###为什么: 因为许多安全工具网站仍然通过非 SSL/TLS 方式提供二进制文件下载。
以下是一个简短列表:
sysinternals.com
Microsoft - MS Security Essentials
几乎所有杀毒软件公司
Malwarebytes
Sourceforge
gpg4win
Wireshark
等等...
是的,其中一些应用程序具有自我保护机制。我一直在研究如何自动绕过 NSIS 检查,作为概念验证。然而,这并不能解决下载过程中比特翻转以及恶意负载执行的问题。此外,BDF 默认会在下载过程中修补 Windows PE 证书表指针,从而移除二进制文件的签名。
##依赖:
Pefile - 最新版本
ConfigObj
mitmProxy - Kali 构建版 .10
BDF - 最新版本
Capstone(BDF 的一部分)
##支持环境: 已在所有 Kali Linux 构建版上测试,无论是实体高性能笔记本、Raspberry Pi 还是虚拟机,都能运行 BDFProxy。
##安装: BDF 位于 bdf/ 目录下
运行以下命令以拉取最新版本:
./install.sh
或者:
git clone https://github.com/secretsquirrel/the-backdoor-factory bdf/
如果遇到证书错误,请运行以下命令:
mitmproxy
并在 mitmProxy 加载后退出 [Ctrl+C]。
##使用: 每次使用前更新所有内容:
./update.sh
阅读配置文件!!!
-->bdfproxy.cfg
在运行 BDFProxy 之前,您需要配置 C2 主机和端口设置。请不要在不同 payload 之间重叠 C2 端口设置。否则您可能会将 Linux shell 发送到 Windows 机器,导致各种段错误。运行后,会创建一个 Metasploit 资源脚本,帮助您设置 C2 通信。请仔细检查。顺便提一下,[Overall] 部分之外的所有设置都可以动态更新,因此您无需杀死代理即可更改配置以适应您的环境。
但等等!您还需要配置 MITM 机器以进行中间人攻击!如果您使用 WiFi Pineapple,我修改了 Hack5 发布的一个脚本,可帮助您进行配置。运行 ./wpBDF.sh 并输入正确的环境配置。该脚本会配置 iptables,仅将 HTTP(非 SSL)流量通过代理转发,其他所有流量正常转发。
然后:
./bdf_proxy.py
以下是一些可能的代理物理部署场景的 ASCII 示意图:
局域网使用:
<互联网>----<MITM机器>----<用户局域网>
WiFi 使用:
<互联网>----<MITM机器>----<WiFi Pineapple>)))
##测试:
假设您想使用 Firefox 配合 FoxyProxy 连接并测试您的设置。
按如下方式更新配置:
transparentProxy = None
将 FoxyProxy 配置为使用 BDFProxy 作为代理。
配置中的默认端口为 8080。
##日志记录:
我们有日志功能。代理窗口会迅速填满大量 cat 链接,具体取决于您测试的客户端。使用 tail -f proxy.log 查看哪些内容被修补以及被黑名单设置阻止。不过,如果您选择手动修补二进制文件,请留意主代理窗口,因为后台流量是多线程的,但初始的请求和响应会锁定以便您查看。
##攻击场景(均需获目标许可): -邪恶 WiFi 接入点 -ARP 重定向 -物理接入布线柜 -逻辑入侵首选 ISP
##错误报告
错误难免,但如果我无法理解您的问题,就无法帮助您。
在此提交问题:https://github.com/secretsquirrel/BDFProxy/issues
请包含以下命令的输出信息(较长命令请使用 pastebin):
# bdfproxy 仅支持 v11 到 v17
$ mitmproxy --version
$ uname -a
# 如有需要,请使用 pastebin
$ cat bdfproxy.cfg
$ ./bdf_proxy.py
###更新日志:
####2016-07-04
支持 BDF 预处理器和 mitmProxy v17
####2015-12-20
在 bdfproxy.cfg 中添加配置选项,以支持 BDF 的 PE 代码签名 => CODE_SIGN 详情请参见 BDF README
####2015-11-13
移除了 python-magic 依赖,因为有两个库同名,容易造成混淆。
####2015-10-19
增加对 BDF 导入目录修补的支持,将代码注入代码洞穴而非新区段。如需使用,请在 bdfproxy.cfg 中将 IDA_IN_CAVE 设置为 True。实验性功能...
####2015-08-12
增加对 PE 替换方法的支持,用攻击者提供的二进制文件替换下载的二进制文件。如需使用,请将 PATCH_METHOD 设置为 replace,并提供 SUPPLIED_BINARY
####2015-08-06
增加对 onionduke 的支持。如需使用,请将 PATCH_METHOD 设置为 onionduke,并将 SUPPLIED_BINARY 设置为您希望绑定到目标可执行文件的二进制文件。
增加支持,可在 PE 清单中设置 requestedExecutionLevel 为 highestAvailable(适用于 x86 和 x86_64 PE 二进制文件)。将 RUNAS_ADMIN 设置为 True。
增加支持,可通过 XP_MODE 标志设置为 True 来支持旧版 XP 机器。将此标志设置为 False 可能会绕过某些杀毒软件的模拟器。