如何使用ARP欺騙技術(ARP spoofing)進行中間人攻擊

戴致禮 Travis Tai

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:網路管理與通訊應用

 

 

中間人攻擊是屬於比較複雜的攻擊,通常在這類攻擊中,駭客使用各種技巧對IP路由或ARP、DNS或DHCP等協定進行攻擊,使通訊的雙方都誤認為他們真的是在與對方直接對話,然而事實上駭客已控制整個交談過程,並攔截介於其間的通信封包,進而竊取或竄改密碼等重要的機密資料。

例如,基於ARP的中間人攻擊(ARP-based man-in-the-middle attack)便是其中最常見的攻擊手法-這是利用ARP欺騙(ARP spoofing)的技術,駭客使用自己網卡的MAC地址來 ”毒害(或竄改)” 通訊雙方主機的ARP快取區,因此又稱為ARP快取區中毒(ARP cache poisoning)。 一旦ARP快取區被成功地毒害(或竄改),受害主機在與其他主機進行通訊時,就會將其所有的數據封包發送給駭客。 這會使得駭客成為中間人,可以輕鬆地監視受害主機之間的所有通信,目的在於攔截和查看在兩個受害主機之間傳遞的信息,並因此竊取機密信息,這就是所謂的 ”被動式” 的中間人攻擊;此外在所謂的 ”主動式” 的中間人攻擊中,駭客則會進一步修改傳輸中的數據或自行注入數據於其中;攻擊者亦可將ARP封包導引到不存在的MAC地址以達到阻斷服務攻擊(Denial of Service Attack)的效果,例如netcut軟體。

ARP欺騙(ARP spoofing)的運作機制:

ARP欺騙,又稱為ARP快取區中毒(ARP cache poisoning),通常是針對某受害主機與其預設閘道來進行攻擊,這會使得攻擊者成為中間人(man-in-the-middle)。 在下圖中,Win-PC代表受害主機,Kali-PC則代表駭客主機。 Kali-PC上的駭客同時欺騙了Win-PC及其預設閘道,因此Win-PC便會將流量發送給駭客主機Kali-PC而不是發送給預設閘道,同時預設閘道也會將流量返回到駭客主機Kali-PC而不會返回到原發送主機Win-PC。 Kali-PC上的駭客便可以從中被動收集到數據包,然後再將其轉發回去給原發送主機Win-PC。

ARP欺騙攻擊的關鍵是在於攻擊者會偽造gratuitous ARP封包,並主動將這些偽造的封包發送給受害主機與其預設閘道,其中發送給受害主機Win-PC的偽造ARP封包是將攻擊者Kali-PC的MAC地址與預設閘道的IP地址相關聯,而發送給預設閘道的偽造ARP封包則是將攻擊者Kali-PC的MAC地址關聯到受害主機Win-PC的IP地址。 因此攻擊者便可以成為受害主機與其預設閘道之間的中間人。

ARP欺騙攻擊的案例分析與實驗步驟:

簡單案例分析:

在這裡使用一個最簡單的案例來說明ARP欺騙攻擊的核心步驟。
假設在一個LAN裡,只有兩台主機(Win-PC、Kali-PC),與一台路由器充當這兩台主機的預設閘道。 底下是這些設備主機的IP與MAC地址資訊。

  • 受害主機Win-PC:10.10.11.11 (0:0:a:a:b:b)
  • 駭客主機Kali-PC:10.10.11.10 (0:0:a:a:b:a)
  • 預設閘道:10.10.11.1 (ac:f2:c5:0d:dd:42)

在下列的實驗中,您將使用dsniff工具套件,並在Kali Linux裡成功演示Win-PC上的ARP快取區中毒攻擊,成功攔截到登入用戶名與密碼。 底下是ARP欺騙攻擊的詳細實驗步驟:

【步驟一】
訪問主機Win-PC的桌面,並打開命令提示視窗,執行下列兩道指令:ping 預設閘道(10.10.11.1)與ping Kali-PC(10.10.11.10),然後再使用arp –a指令顯示更新的ARP快取區。 請記下預設閘道和Kali-PC的實際MAC地址。

注意:
以上輸出信息顯示出此時Win-PC快取區的ARP表格,具有兩筆地址對應記錄:第一筆記錄是預設閘道的IP地址10.10.11.1對應到它自己實際的MAC地址(ac:f2:c5:0d:dd:42),第二筆記錄則是Kali-PC的IP地址10.10.11.10對應到它自己實際的MAC地址(0:0:a:a:b:a)。

【步驟二】
訪問駭客主機Kali-PC的桌面,在终端視窗中使用arpspoof指令,將Win-PC(10.10.11.11)設定為攻擊目標的IP地址,將預設閘道(10.10.11.1)的MAC地址偽造成攻擊者Kali-PC的MAC地址。(註:arpspoof語法為arpspoof –t <target IP> <spoofed IP>)

注意:
以上輸出信息顯示出駭客Kali-PC向目標主機Win-PC(target IP地址為10.10.11.11,target MAC地址為0:0:a:a:b:b)發動攻擊,使用arpspoof指令連續發送大量偽造的ARP回復封包(unsolicited gratuitous ARP replies),該偽造的ARP回復封包內容是以預設閘道的IP地址(10.10.11.1)對應到駭客Kali-PC的MAC地址(0:0:a:a:b:a),而不是以預設閘道的IP地址來對應其原來實際的MAC地址。 所以被攻擊的主機Win-PC快取區內的ARP表格也會因此而被 ”毒害(或竄改)”,以該偽造的封包內容覆蓋掉原先正確的對應記錄(所以稱之為ARP快取區中毒)。

【步驟三】
此時返回到Win-PC的桌面,使用arp –a指令再度檢視其ARP快取區的內容。

注意:
在受害主機Win-PC的ARP快取區內,會看到駭客主機Kali-PC的MAC地址(0:0:a:a:b:a)同時對應到10.10.11.10(這是合法的地址對應記錄)與10.10.11.1(這是因為ARP快取區的中毒而遭毒害的地址對應記錄)。

【步驟四】
訪問駭客主機Kali-PC的桌面,打開第二個終端機視窗執行dsniff –c的指令;再另行打開第三個終端機視窗啟動IP轉發的功能。

【步驟五】
在受害主機Win-PC的桌面啟動PuTTY應用程式以遠程登錄(telnet)到不同IP網段的目標路由器(10.10.2.1)上,輸入用戶名admin與密碼Cisco123!來進行身份驗證。

【步驟六】
返回到駭客主機Kali-PC的桌面,在原先執行dsniff指令的終端機視窗裡進行觀察,估計要等上數分鐘後,就會顯示出在剛剛的Telnet會話中所輸入的用戶名與密碼。

基於篇幅限制,以上只是扼要的介紹,您可到思科官方網站查詢相關技術文件或是在下列的IINS課程中了解更多滲透測試(Penetration testing)的技巧喔!另外值得一提的是,思科在IINS的Lab實驗課程中,特別設計以Kali Linux(號稱為駭客級的Linux版本)裡的多種滲透測試的資安工具程式來進行駭客的模擬攻擊,歡迎大家到本課程來親身體驗攻防之間的樂趣!