⚠️ 本文仅供安全研究与学习使用,严禁用于非法用途。中间人攻击属于高度敏感的攻击方式,若未经授权实施,将可能违反法律法规,请在合法授权范围内进行测试与实践。
关于中间人攻击
Stereotype
在很多人印象中中间人攻击是一种非常古老的手段, 在当时https还未普及的情况下使用.
确实, 在https出来以后, 端到端加密的可信传输已经非常容易实现, 这来自于密码学的发展和CA信任体系的建立, 现在基本是个网站都用https, 所以中间人攻击就消逝了
但其实这个信任体系没有照顾到的地方是内网, 因为签发证书都需要一个域名或者公网ip, 而并不是所有情况都满足这个条件, 事实上, 我们通过fofa观察, 可以发现很大一部分设备都在使用自签证书
内网渗透中的痛点
相较于主动攻击,中间人攻击属于“被动监控 + 伪装通信”方式,对目标系统无爆破行为,也不会触发弱口令策略或高频请求策略,因此特别适合用在具有高防护等级但证书部署不规范的核心资产上。
大型内网渗透中我们常常会有很多设备或服务, 比如有一些EDR, Vcenter, 集群管理或者其他安全设备。这些设备通常是非常重要的角色, 爆破一般都会报警或者锁死, 而0day/nday要是打不通, 那么就只能看着这些设备干瞪眼
但是这些设备通常使用HTTPS加密, 但是实际上内网中的绝大部分这种设备 (个人感觉超过90%) 都是自签证书. 这也就为我们提供了攻击面.
实际上部分设备或服务, 提供了下载TLS证书的接口, 但除非是管理员有非常高的安全意识, 一般不会主动去安装证书
假如我们能够控制部分设备(例如iptables或者某些前置负载均衡), 或者入口设备(比如堡垒机等) , 或者可以修改路由(例如核心路由器), 那么我们就可以部署一个中间人陷阱, 即我们也使用自签证书, 来架设在系统管理员和设备中间, 从而实现窃听管理员的操作和身份等等
mitmproxy的使用
抓包
这里我以esxi为例, 因为最近在研究vmware系列产品, 也注意到esxi使用的是明文传输, 这极大地减少了后期工作量, 我们抓到密码后即可直接使用
要使用mitmproxy, 可以在这里下载: mitmproxy 官方
对比使用包管理器安装的好处是, 这里提供的是一个打包好的elf, 对比python脚本配置环境要更方便, 十分适合一些没有办法出网的机器环境
1 |
|
下载完成以后使用mitmdump来抓流量, 抓之前我们需要先配置一个合适TLS证书, 然后启动即可
1 |
|
1 |
|
这里面'~u "/sdj/"'
表示过滤只保留/sdk/的请求, 因为esxi的api交互也是在/sdk/下, 没必要抓取一些静态资源
--certs这里有一个坑点, 即mitmdump需要采用一个合并后的证书, 否则会报出Invalid certificate format for esxi.pem
的错误, 要合并证书也很简单, 直接cat esxi.crt >> esxi.key
即可
block_global=false
可以抓取公网流量, 不设置这一项的话只能抓内网流量. 抓到流量后的截图如下:
查看流量
查看流量很简单, 只需要使用mitmproxy恢复即可, 带有简单的ui方便查看
1 |
|
光标移动到需要查看到请求然后按回车即可
这样就抓到了密码
总结
中间人攻击虽然看似“过时”,但在内网自签证书和弱 TLS 部署的现实面前,依然拥有极强的实战价值。红队在面对高防护目标时,往往需要从“边界浅沟壕”中寻找击穿点,而中间人技术恰恰提供了这样一种低噪声、高潜力的突破视角。