中间人攻击(MITM)---常见攻击方法及原理

本文详细探讨了中间人攻击的各种方法,包括ARP投毒、SSL证书伪造、SSL卸载攻击、DNS劫持以及会话劫持等。通过实验展示了如何在有线局域网下实施这些攻击,强调了理解攻击原理和环境限制的重要性,以应对网络安全挑战。
摘要由CSDN通过智能技术生成

相关学习资料

 

http://www.cnblogs.com/LittleHann/p/3733469.html
http://www.cnblogs.com/LittleHann/p/3738141.html
http://www.cnblogs.com/LittleHann/p/3741907.html
http://www.cnblogs.com/LittleHann/p/3708222.html
http://www.icylife.net/blog/?p=371&replytocom=3140
http://www.thoughtcrime.org/software/sslstrip/
http://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf
http://hi.baidu.com/fairex/item/1bc33bda9bd177e5795daacc
http://hi.baidu.com/fooying/item/8198ebd71f86cb4afa576874
http://blog.ivanristic.com/2011/10/mitigating-the-beast-attack-on-tls.html
http://blog.csdn.net/jimmyleeee/article/details/7029435
http://www.butian.org/server/2543.html
http://www.educatedguesswork.org/2011/09/security_impact_of_the_rizzodu.html
http://www.freebuf.com/articles/web/5636.html
https://github.com/trustedsec/social-engineer-toolkit/
http://www.freebuf.com/tools/7841.html
http://security.zdnet.com.cn/security_zone/2009/0812/1429569.shtml

目录

1. 攻击场景介绍
2. 攻击涉及相关技术学习
3. 攻击实验过程
    1) 有线局域网下ARP投毒+中间人伪造SSL证书攻击
    2) 有线局域网下ARP投毒+中间人SSL卸载攻击  
    3) 基于中间人攻击的SSL BEAST攻击 
    4) 基于DNS劫持的SET社会工程钓鱼攻击 
    5) 基于中间人攻击的会话劫持攻击(Session Hajacking)

 

1. 攻击场景介绍

我们常常提到HTTPS使用了SSL/TLS加密协议,是一种非常安全的WEB通信机制,这句话从某种角度来说是对的。我觉得更准备地应该说是针对传统的明文嗅探进行了有效的防御。但同时,我们应该认识到,安全技术、攻击方式往往在不同的场景、组合不同的技术可以形成多种多样的业务架构,而安全问题往往就发生在这些新出现的业务架构中。在一些特定的前提、特定的触发条件下,一些看似传统的攻击方式能够形成新的攻击向量。

今天我们来讨论一下怎么针对GMAIL这种使用SSL/TLS加密算法加密的通信进行流量窃取,单纯就SSL协议本身来说,它使用强劲的加密算法对通信数据进行加密,目前并没有直接的方法对这个协议本身进行攻击,但是,当结合中间人攻击、无线伪AP流量劫持这种攻击方式时,即整个SSL的初始化握手过程都暴露在攻击者面前的时候,SSL就有被攻击利用的可能(类似WPA、WPA2密码破解一样)

接下来,我们逐一学习几种攻击方式、及其它们的相关技术

1) 有线局域网下ARP投毒+中间人伪造SSL证书攻击
2) 有线局域网下ARP投毒+中间人SSL卸载攻击  
3) 基于中间人攻击的SSL BEAST攻击
4) 基于DNS劫持的SET社会工程钓鱼攻击
5) 基于中间人攻击的会话劫持攻击(Session Hajacking)

 

 

2. 攻击涉及相关技术学习

0x1: ARP投毒

关于ARP的原理请参阅另一篇文章

http://www.cnblogs.com/LittleHann/p/3735816.html

ARP欺骗的3种方式:

1. 攻击者仅仅欺骗被攻击主机(单向):
主机C向主机B发送伪造的ARP回应包,声称自己的MAC地址就是网关对应的IP,这样,主机B就会将所有的流量发送主机C(攻击者),主机C开启ip_forward路由转发功能将数据包进行转发

2. 攻击者仅仅欺骗被攻击主机、同时在本地进行Iptable NAT转发(双向)
主机C向主机B发送伪造的ARP回应包,声称自己的MAC地址就是网关对应的IP,这样,主机B就会将所有的流量发送主机C(攻击者),同时,攻击者在本地使用Iptables进行NAT转换,这样就可以
接收到网关返回的数据包,完成双向流量窃取的目的

3. 攻击者同时欺骗被攻击主机和网关(双向)
主机C同时欺骗主机B和网关,实现数据中转,并监听到所有主机B的数据(双向)
主机C向网关发送ARP回应包,声称自己是主机B,同时向主机B发送ARP回应包,声称自己是网关,这样,网关和主机B两边的流量都会发往主机C,主机C并不需要使用Iptables做特殊的转发,只
需要打开ip_forward路由开关(即打开转发功能),是主机C具有数据包转发的功能即可,就可以成功劫持主机B的流量数据

关于这几种ARP欺骗方式的区别,我们接下来分别说明一下

1. 主机C冒充网关欺骗主机B

可以看到,攻击者只污染了受攻击主机的ARP缓存表,所以受攻击主机的原本发往网关的数据包都会发送到攻击者的主机中,但是网关的ARP表是正常的,网关会根据当前数据包的目的IP地址(受攻击主机的IP地址)进行正确的ARP解析,从而将数据包发送到受攻击主机上。

这种方式的直接后果就是我们只能窃取到受攻击主机的"外发数据包",无法接收到从远程服务端返回的"返回数据包",自然也就无法进行流量内容修改、流量注入的目的

复制代码

1. 开启端口转发,允许本机像路由器那样转发数据包
echo 1 > /proc/sys/net/ipv4/ip_forward
2. ARP投毒,向主机B声称自己(攻击者)就是网关
arpspoof -h
Usage: arpspoof [-i interface] [-t target] host
arpspoof -i eth0 -t 192.168.159.132 192.168.159.2 
(192.168.159.132是我们的攻击目标、192.168.159.2是网关IP地址)

攻击的原理是攻击者不断向受攻击目标(192.168.159.132)发送"ARP回应包",声称自己就是网关,因为ARP机制没有身份验证,所以受攻击目标会把接收到的ARP回应包保存进自己的ARP缓存中,从而达到ARP污染的目的

00:0c:29:4b:5c:be这个MAC地址是发动ARP投毒的攻击者的MAC地址

受攻击主机(192.168.159.132)的ARP缓存表如下:

可以看到,网关的MAC地址已经被"污染"成了攻击者的MAC地址,单向ARP污染成功。

完成了单向ARP投毒攻击之后,我们可以获取到受攻击主机的外发数据包

2. 攻击者仅仅欺骗被攻击主机、同时在本地进行Iptable NAT转发(双向)

从图中可以看到,由于使用了NAT技术,从服务端返回的数据包也会经过攻击者的主机了,这样,攻击者就可以在本地进行流量内容的修改、流量注入了

 

1. 开启端口转发,允许本机像路由器那样转发数据包
echo 1 > /proc/sys/net/ipv4/ip_forward
2. ARP投毒,向主机B声称自己(攻击者)就是网关 
arpspoof -i eth0 -t 192.168.159.132 192.168.159.2 
(192.168.159.132是我们的攻击目标、192.168.159.2是网关IP地址)
3. 使用Iptables进行NAT数据包转发
iptables -t nat -A POSTROUTING -p tcp -s 192.168.159.0/24 -j SNAT --to-source 192.168.159.254
iptables -t nat -A PREROUTING -p tcp -d 192.168.159.254 -j DNAT --to 192.168.159.132
有关Iptables的原理请参阅另一篇文章:
http://www.cnblogs.com/LittleHann/p/3708222.html

可以看到,受攻击主机将数据包发给了攻击者(假的网关),然后攻击者NAT了这个数据包

3. 攻击者同时欺骗被攻击主机和网关(双向) 

可以看到,在双向ARP欺骗中,攻击者仅仅充当了一个"数据包路由转发"的角色,将两个方向的数据包都进行转发

1. 开启端口转发,允许本机像路由器那样转发数据包
echo 1 > /proc/sys/net/ipv4/ip_forward
2. ARP投毒,向主机B声称自己(攻击者)就是网关 
arpspoof -i eth0 -t 192.168.159.132 192.168.159.2 
(192.168.159.132是我们的攻击目标、192.168.159.2是网关IP地址) 
这个指令翻译为中间即为: 告诉"192.168.159.132"这个人,"192.168.159.2"这个IP的MAC就是攻击者本机的MAC地址
3. ARP投毒,向网关G声称自己(攻击者)就是网关
arpspoof -i eth0 -t 192.168.159.2 192.168.159.132 
(192.168.159.2是网关IP地址、192.168.159.132是我们的攻击目标) 
这个指令翻译为中间即为: 告诉"192.168.159.2"这个人,"192.168.159.132"这个IP的MAC就是攻击者本机的MAC地址

以上3中思路从本质上来看都是一样的,我们在学习的时候要从网络通信的底层原理的角度来理解

1. 网络数据包的通信是通过MAC地址来连接的,数据包只会根据MAC进行点对点的发送和接收
2. 为了解决跨局域网、跨域发送的问题,所以有了IP层,IP负责对数据包进行路由
4. 数据包在发送的过程中,MAC会在不同的"跳"中变化,而源、目的IP地址是不会变的,它负责路由的功能
3. 我们在设置网卡参数的网关GetWay时填写的IP,其实只是为了获取网关的MAC而存在的,默认网关也因此得名,即当我们发送的目的IP不在当前局域网范围内,这个数据包就会被发送网关
(即目的MAC地址填写网关的MAC地址)

0x2: SSL证书伪造

关于SSL的交互、通信原理,请参阅另一篇文章

http://www.cnblogs.com/LittleHann/p/3733469.html

SSL证书中间人伪造攻击的思路如下:

1. 攻击者对目标客户端和网关发送ARP投毒攻击,污染它们的ARP缓存表
2. 客户端在浏览器中输入"https://mail.google.com/"的网址,浏览器会尝试和"https://mail.google.com/"的443端口建立SSL连接,但是因为客户端受到了ARP投毒攻击,原本发往
网关的数据包被发往了攻击者的主机
3. 攻击者在本机使用iptables将接收到的443目的端口的数据包重定向到本机的IP地址
4. 这样,受攻击者客户端的浏览器就只会和攻击者主机进行SSL连接
5. 攻击者在本机使用监听443端口,并且伪造一个假的SSL证书,用于和客户端的连接,同时,提取客户端发送的数据包的原始目的IP地址,用于和客户端原始请求的服务器建立另一个SSL连接
6. 中间人攻击者在双向的SSL Socket通信都建立完成后,对两边的socket进行数据读写同步,将数据通道打通,使客户端的浏览器能够正常访问(受攻击者不会察觉到已经收到SSL中间人攻击)
6. 在数据同步的同时,记录下明文数据,达到SSL中间人攻击的目的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daibaohui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值