預防WEB攻擊之釣魚網(wǎng)站DNS欺騙和ARP攻擊機基礎原理講解.
1.基礎知識
DNS欺騙:
DNS欺騙就是攻擊者冒充域名服務器的一種欺騙行為。 如果可以冒充域名服務器,然后把查詢的IP地址設為攻擊者的IP地址,這樣的話,用戶上網(wǎng)就只能看到攻擊者的主頁,而不是用戶想要取得的網(wǎng)站的主頁了,這就是DNS欺騙的基本原理。DNS欺騙其實并不是真的“黑掉”了對方的網(wǎng)站,而是冒名頂替、招搖撞騙罷了。
網(wǎng)站釣魚:
釣魚者運用黑客(Social Engineering)知識誘騙受害者,以在未授權情況下獲取對方的姓名、年齡、郵箱賬號,甚至是銀行卡密碼等私人信息。釣魚往往和社會工程學相結合進行誘導,黑客的內功能否靈活運用可以體現(xiàn)一個黑客的個人修為,所以說“防人之心不可無”這句話并非沒有道理,凡事不要害人但是總要留個心眼,否則最終受傷的就是自己。
黑客常用伎倆:
電話號碼欺騙
利用壞消息作案
垃圾郵件誘騙
濫用網(wǎng)民對社交網(wǎng)絡的信任
二維碼引誘
惡意APP劫持
…
那么,如何防御社工呢?別占小便宜,沒有充分信任情況下別去點擊任何鏈接或下載任何APP。本文的案例將利用虛假的某購物網(wǎng)站,使用DNS與ARP欺騙手段使用戶輸入真是的用戶名和密碼。該方法還能截獲HTTPS加密信息。
2.實驗基礎
實驗目標:
使用搭建系統(tǒng)模擬攻擊者,利用中間人的攻擊手段來對受害者進行DNS欺騙,使受害者通過訪問假的某購物網(wǎng)站,來獲取用戶登錄的用戶名與密碼。通過三種攻擊來竊取登錄的用戶名和密碼:
中間人攻擊
DNS欺騙
釣魚網(wǎng)站
為什么不直接使用中間人攻擊獲取用戶的賬戶與密碼呢?因為如果信息加密,中間人攻擊就不能截獲了。但是如果訪問假的釣魚網(wǎng)站,就能獲取信息。
注意:本文的實驗絕對禁止在真實環(huán)境中去完成,作者將引用某某站視頻中虛擬機實驗復現(xiàn),未經(jīng)授權的測試或攻擊行為我們一律禁止。
我們這篇文章的目的是為了學會防御,同時多一種安全手段,在授權情況下可以進行釣魚網(wǎng)站攻擊測試。這種方法適合各大網(wǎng)站、銀行、購物、郵箱等。
實驗環(huán)境:
這次實驗會開三臺虛擬機,一臺XP系統(tǒng)、一臺2003系統(tǒng)、一臺Kali攻擊機。
虛擬機軟件:VMware V12.0版本
三臺虛擬機:Windows XP(模擬客戶機)、Windows Server 2003(模擬WEB及FTP服務器)、Kali(模擬攻擊機)
假的某購物網(wǎng)站素材
工具:Ettercap軟件
基本流程:
構建的拓撲圖如下所示,首先開3臺虛擬機,然后有1臺交換機,這3臺虛擬機都連接在這臺交換機上,共同構成一個虛擬的局域網(wǎng),來進行這個實驗。實驗基本流程如下:
**步是構建整個局域網(wǎng),并且配置好IP地址且能相互通訊(ping通)。
第二步是將Windows 2003系統(tǒng)作為服務器(現(xiàn)實中也可以將該系統(tǒng)設置為服務器),接著將Windows XP系統(tǒng)設置為客戶機,它需要去登錄某購物網(wǎng)站。
第三步是搭建Kali攻擊機,之前是客戶機和服務器直接通訊,現(xiàn)在是客戶機發(fā)送的信息流經(jīng)Kali機,再傳至服務器。由于經(jīng)過中間人,Kali機就可以監(jiān)聽客戶機和服務器的通訊內容,甚至篡改數(shù)據(jù)。
3.實驗原理
域名解析:
假設左側電腦是某公司的電腦,比如企業(yè)員工電腦(受害者);右側這個是互聯(lián)網(wǎng),比如某購物官方網(wǎng)站(Web服務器),假設IP地址為2.2.2.2,并按照上節(jié)課講述的內容搭建一個網(wǎng)站,通過IIS或Apache搭建。
域名解析(Domain Name Resolution)
域名解析是把域名指向網(wǎng)站空間IP,讓人們通過注冊的域名可以方便地訪問到網(wǎng)站的一種服務。IP地址是網(wǎng)絡上標識站點的數(shù)字地址,為了方便記憶,采用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。
員工通過 http://6.6.6.6 就能訪問,但是這個地址不好記,我們平時都是輸入“www”上網(wǎng)。所以需要做域名解析,把這個域名地址解析成IP地址再訪問,這里比如綁定域名 http://www.undp.cc。當瀏覽器中訪問“http://www.undp.cc”后,首先我們訪問本地緩存或本地HOST文件(**次訪問會存儲至本地緩存),如果本地都沒有,則會尋找公網(wǎng)上的DNS服務器,它里面會有一個解析文件gw.com,如下圖所示。
問一個問題:這是正向解析還是反向解析呢?
答案是正向解析的過程,即已知域名解析IP地址。那么,DNS又是怎么知道這個記錄的呢?怎么知道“www.undp.cc”就是“2.2.2.2”呢?這是該購物網(wǎng)站花錢購買域名(ncmofei.com),購買之后服務器上會為你創(chuàng)建解析文件,然后該購物網(wǎng)站的相關人員會綁定IP地址并將該記錄添加至DNS服務器上。此時,全世界都能訪問這個域名并解析。
找南昌莫非傳媒可以購買域名地址,比如作者的域名“www.undp.cc”。
正常訪問過程:
當企業(yè)員工電腦訪問該購物網(wǎng)站時,會去DNS服務器進行解析;然后找到地址2.2.2.2,并返回給企業(yè)員工電腦;最后訪問該購物Web服務器,假設是IIS,它會將購物網(wǎng)站的首頁返回給你的瀏覽器。
惡意訪問過程:
假設現(xiàn)在出現(xiàn)了一個壞蛋,地址是3.3.3.3。首先它用了ARP攻擊(中間人攻擊),能截獲數(shù)據(jù)。那么現(xiàn)在企業(yè)員工向服務器(4.4.4.4)發(fā)送請求,要經(jīng)過壞蛋,壞蛋一看是向4.4.4.4發(fā)送請求,是一個DNS服務器,而且要解析ncmofei.com域名,它不進行修改和中斷。接著,DNS回應會發(fā)送2.2.2.2地址,這個過程中壞蛋只是開啟了中間人攻擊,監(jiān)聽數(shù)據(jù)并沒有進行任何操作。
接著壞蛋想:我能不能把自己也偽裝成DNS服務器,并且提供錯誤的DNS解析記錄呢?
他把該購物網(wǎng)站域名(www.undp.cc)解析成3.3.3.3地址。注意,當企業(yè)員工發(fā)送的信息再經(jīng)過壞蛋時,明明是給4.4.4.4發(fā)送請求,但壞蛋會把自己偽裝成DNS服務器,說“我才是那臺DNS服務器”,并且它能控制這個信息終止與真實的DNS服務器通訊,說“我才是4.4.4.4,我通過解析找到記錄了,它是3.3.3.3”。此時,員工被騙了,這種方式稱為——DNS投毒。
為什么叫DNS投毒呢?
員工訪問成功之后,會把這個域名(ncmofei.com)和IP地址存到緩存中,所以它的緩存會記錄一條信息,ncmofei.com對應3.3.3.3。DNS緩存投毒也是非常令人頭疼的一個攻擊。因為它也做驗證,后面將會分享具體實驗,但它的驗證非常差,所以導致除了上節(jié)課講述得ARP投毒外,DNS投毒、DNS欺騙、DNS污染也是非常頭疼的問題。
此時,成功誘騙了企業(yè)員工電腦。IE瀏覽器訪問“www.undp.cc”是向壞蛋發(fā)送請求,和真實的購物網(wǎng)站W(wǎng)eb服務器、DNS服務器就沒有關系了。換句話說,后續(xù)的請求就是企業(yè)員工和壞蛋他們兩個。
釣魚網(wǎng)站搭建:
接著我們開Apache,然后發(fā)布一個假的ncmofei網(wǎng)站。注意,這篇文章對某購物網(wǎng)站沒有任何惡意,我們主要是做一個科普,提高博友們網(wǎng)絡安全的意識和防御措施。
釣魚網(wǎng)站和真實網(wǎng)站盡量相近,而我們實驗僅做簡單的測試,有登錄頁面即可。接著,當受害者輸入真實用戶名和密碼,點擊提交之后,我們會連接后臺數(shù)據(jù)庫收集相關信息即可。表單form中action會指向php,獲取用戶名和密碼,并寫入數(shù)據(jù)庫或TXT文件。我們稱這個網(wǎng)站為——釣魚網(wǎng)站。
注意:銀行門戶網(wǎng)站尤其需要注意該防范。同時,一般提交后數(shù)據(jù)保存,然后網(wǎng)頁跳轉到真正的購物網(wǎng)站,用戶會以為密碼輸入錯誤,重新輸入。信息也被收集,而且不易覺察。
二.DNS投毒實驗環(huán)境搭建
接著開始做這個實驗,左邊是受害人,中間是壞蛋,右邊是模擬某購物官方網(wǎng)站和DNS服務器。在現(xiàn)實中,真實網(wǎng)站和釣魚網(wǎng)站通常會很像。
首先,我們開三臺虛擬機。先還原快照,然后直接開啟虛擬機。
實驗流程:
開啟虛擬機并配置IP
在Win2003中搭建xx購物網(wǎng)站W(wǎng)eb服務器及DNS服務器
客戶機嘗試訪問真正的購物網(wǎng)站
開啟ARP欺騙和DNS欺騙
網(wǎng)站釣魚
**步,通過VMware設置虛擬網(wǎng)絡。
開啟三臺虛擬機(XP、2003、Kali),VMware軟件在安裝時會在電腦上內嵌一個虛擬交換機,理解為虛擬網(wǎng)絡。選擇虛擬機,點擊右鍵,然后點擊“設置”。這里作者使用“還原快照”,讀者可以嘗試自己配置環(huán)境。
第二步,配置虛擬機IP地址并能夠ping通。
將三臺虛擬機(XP、win2003、Kali)橋接到同一個虛擬網(wǎng)絡中去。右鍵設置,點擊“網(wǎng)絡適配器”,選擇“VMnet2”,三臺虛擬機都橋接到該虛擬網(wǎng)絡“VMnet2”中,這樣三臺虛擬機就成功連成了同一個局域網(wǎng)。
配置XP系統(tǒng)(員工電腦)的IP地址需要選中“網(wǎng)上鄰居”,再右鍵“屬性”,點擊“本地連接”右鍵“屬性”。設置IP地址如下“10.1.1.1”,子網(wǎng)掩碼設置為“255.255.255.0”。接著登錄Windows 2003服務器。登錄Kali系統(tǒng)。
在Kali系統(tǒng)中輸入命令配置IP地址,eth表示網(wǎng)卡名稱。
然后嘗試查看是否IP地址建立成功。Linux默認一直ping。
ping 10.1.1.1是連接成功的
接著嘗試連接其它的電腦。
ping 10.1.1.3
到此,我們成功建立了如下圖所示的虛擬局域網(wǎng)。
第三步,在Win2003中搭建某購物網(wǎng)站W(wǎng)eb服務器及DNS服務器。
點擊“管理工具”->“DNS”?,F(xiàn)實中,很多企業(yè)也都是使用該DNS工具軟件來部署DNS服務器。一般中大型公司都有自己的DNS服務器。
點擊之后,如下圖所示,點開DNS,發(fā)現(xiàn)里面有正向查找區(qū)域和反向查找區(qū)域。
DNS(Domain Name Service) 域名解析服務,就是將域名和 ip 之間做相應的轉換。
正向解析:根據(jù)域名查找對應的ip地址
反向解析:根據(jù)ip地址查找對應的域名
選擇“正向查找區(qū)域”,右鍵點擊“新建區(qū)域”。該區(qū)域是建立DNS解析文件。
點擊下一步,區(qū)域名稱填寫“ncmofei.com”。點擊下一步,直至完成。最終創(chuàng)建成功。此時存在了“ncmofei.com”區(qū)域,它表示以后全球范圍內,凡是解析這個域名后綴的權威服務器就是這臺“shimisi”服務器。
什么是權威服務器呢?
假設xx的DNS權威服務器在北京,現(xiàn)在湖南的DNS怎么辦呢?湖南的公網(wǎng)DNS只有部分域名,湖南的員工想訪問xx,他只能請求當?shù)氐姆掌?,如果沒有xx記錄,它又會去請求xx的權威服務器,權威服務器會把記錄傳遞給湖南的服務器并緩存,再發(fā)送給員工。當?shù)氐钠渌麊T工訪問時,它會返回本地緩存記錄,這稱之為非權威應答。
接著我們調用nslookkup命令,查看結果如下圖所示。它是非權威應答,表示真正域名是“www.undp.cc”,還有個別名是“www.undp.cc”,真正地址為“117.169.11.1”。
如果我們想要攻擊該網(wǎng)站,需要獲取xx地址“117.169.11.1”,該地址是“192.168.43.1”解析的。非權威應答表示地址“117.169.11.1”并沒有記錄在“192.168.43.1”服務器上。如果使用nslookup命令發(fā)現(xiàn)解析的應答沒有顯示“非權威應答”這句話,表示是權威應答,但很難看到。
本地nslookup,此時,該實驗域名區(qū)域配置文件是在這臺服務器上寫好了,所以它就是權威服務器。接著點擊“查看”->“高級”??梢钥吹健熬彺娴牟檎摇毙畔⑺?。如果不是xx服務器,就沒有區(qū)域配置文件“xx.com”,員工就會尋找真正的xx服務器并存儲至緩存。所以說,DNS服務器只要有這個區(qū)域配置文件就代表權威。接著搭建一個網(wǎng)站,右鍵“新建主機(A)”,其中A記錄代表正向解析記錄。輸入“www”,它會自動補全,并且指向10.1.1.3Web服務器。此時顯示信息,創(chuàng)建了正向解析記錄。
第四步,點擊“管理工具”->“IIS”,新建Web服務器。右鍵停用默認網(wǎng)站,再選中“網(wǎng)站”點擊“新建”->“網(wǎng)站”。描述隨便填寫,比如“xx”,再點擊“下一步”。網(wǎng)站IP地址選擇“10.1.1.3”。網(wǎng)站路徑選擇本地xx網(wǎng)站。選擇該文件夾并勾選“讀取”,因為它是靜態(tài)網(wǎng)頁,所以這里僅選擇“讀取”權限。
那么,這個網(wǎng)站如何保存下來的呢?
通常黑客不會撰寫大量的HTML代碼,會通過真實網(wǎng)站保存后修改,模擬成釣魚網(wǎng)站。比如在IE瀏覽器中點擊“文件”->“另存為”即可,它會將CSS、圖片、資源等保存至本地。
在添加xx網(wǎng)站之后,右鍵“屬性”設置主頁。
在“文檔”中添加“index.html”主頁。
問題1: 此時通過XP系統(tǒng)訪問我們搭建的服務器,在瀏覽器中輸入“www.xx.com”,為什么訪問失敗呢?在CMD中輸入nslookup解析查看,顯示無法響應。原因是沒有指定DNS?,F(xiàn)在Windows 2003是DNS服務器,而你輸入域名之后為什么解析不成功,你根本不知道誰是DNS服務器。打開網(wǎng)絡連接,選中“本地連接”,右鍵“屬性”。需要將Windows 2003的DNS服務器地址寫到XP系統(tǒng)中,再進行訪問,這里填寫“10.1.1.3”。設置成功之后能成功訪問。
問題2: 此時填寫用戶名和密碼能登錄成功嗎?答案是不能。因為我們只搭建了一個主頁面,該表單不能處理。后續(xù)會制作一個點擊提交后登錄失敗,再跳轉到真實的xx網(wǎng)站的案例。
問題3: 怎么判斷訪問的這個網(wǎng)站是真實的xx網(wǎng)站還是釣魚搭建的網(wǎng)站呢?
三.開啟ARP欺騙和DNS欺騙
接下來需要在Kali系統(tǒng)做一些操作。
配置IP地址
ARP攻擊
偽裝DNS服務器
發(fā)布釣魚網(wǎng)站
這里先做好偽裝DNS服務器,開啟釣魚網(wǎng)站,最后再設置ARP攻擊。當企業(yè)員工訪問時,就會訪問假的網(wǎng)站。
查看之前搭建的局域網(wǎng)是否能夠ping通。
ping 10.1.1.1
ping 10.1.1.3
**步,配置偽裝DNS。
打開一個文件,通過vim命令實現(xiàn)。“etc”目錄一般放置配置文件,設置ettercap軟件的配置文件。
找到下面黑色字體的位置,它表示“解析記錄域名+A記錄+IP地址”,接著進行修改(連續(xù)按兩個字母D+D能刪除一行)。
按下“I”鍵,進入輸入模式,添加內容如下所示。其中A表示正向解析,PTR表示反向解析,補充一個反向解析能增加實驗的成功性,防止瀏覽器的反向驗證。
現(xiàn)實中也可以嘗試修改成“*”,表示任何域名都會解析為“10.1.1.2”。
接著輸入“:wq”保存退出。此時的解析記錄創(chuàng)建成功了,接著后續(xù)會在Ettercap軟件中開啟攻擊閥門。
第二步,打開Apache并配置服務。
開啟服務
systemctl start apache
查看服務端口是否開啟成功
netstat -antpl
此時屬于監(jiān)聽狀態(tài),端口為80,監(jiān)聽號為1985。
服務開啟了,那么我們Apache的網(wǎng)站在哪里呢?
Apache默認站點路徑在根目錄下“/var/www/html”中,其中“var”目錄主要存放可變文件,比如日志、緩存、站點,它們經(jīng)常會被更新。
此時里面雖然有網(wǎng)頁,但與本文的實驗無關。因此我們需要清除當前目錄內容,輸入命令“rm - rf *”。
注意:該命令千萬別錯誤寫成“rm - rf /* ”,它表示刪除根目錄下所有東西。而“rm - rf *” 表示刪除當前目錄,-r表示刪除所有子文件或子文件夾,f表示強制。
第三步,制作假的xx網(wǎng)站并放置Kali系統(tǒng)中。
接下來我們要放置假的xx網(wǎng)站。新建一個“1.txt”記事本,一個“error.php”網(wǎng)站。現(xiàn)在我們希望用戶點擊提交,把提交表單的內容發(fā)送給“error.php”文件,然后把賬號和密碼提取出來放在“1.txt”文件中。同樣,我們可以設置數(shù)據(jù)庫進行實時抓取及存儲。
“error.php”代碼如下,調用stripslashes()函數(shù)獲取POST表單元素,賦值為name和pass變量,最后文件操作存儲至“1.txt”文件中。HTML代碼表示存儲內容之后,然后返回原網(wǎng)頁。
<?php
$name = stripslashes($_POST['name']);
$pass = stripslashes($_POST['pass']);
$content = "您已捕獲xx賬號及密碼1個:" . "用戶名" . $name . "密碼" . $pass;
$filed = @fopen("1.txt", "a+");
@fwrite($filed, "$content\n");
?>
<html>
<head>
<script type="text/javascript">
function goBack() {
window.history.back(); //后退+刷新
}
</script>
</head>
<body onload="goBack()">
<!-- 加載之后立即執(zhí)行一段JavaScript代碼 -->
</body>
</html>
審查元素,定位“name”和“pass”元素。同時修改“index.html”代碼,表單提交給該php文件。接著將制作好的假網(wǎng)站放置到Kali系統(tǒng)的桌面??截愇募拔募A至“/var/www/html”默認站點目錄中。接著需要開啟Linux寫入權限。通過“l(fā)s -l”命令查看權限,以“1.txt”權限為例,**塊“-rwx”代表文件主人root的權限,即管理員權限;第二塊“r–”代表這個文件所在組的其他人的權限;第三塊“r–”代表其他人的權限,Apache屬于其他人權限?!皉”代表讀取權限、“w”達標寫入權限、“x”代表執(zhí)行權限。調用命令“chmod 777 1.txt”修改權限,“chmod”表示change mod修改文件屬性;“1.txt”表示所修改的文件;“777”表示權限列表,每個“7”表示一組,總共三組,“r–”二進制表示“100”,其值為4,而“111”二進制值為7(4+2+1),即所有權限都開啟。再比如,我們嘗試使用“chmod 766 1.txt”命令,可以看到修改權限為“-rwxrw-rw-”。到此,我們的網(wǎng)站就搭建好了,接下來開始攻擊。
第四步,設置ARP欺騙攻擊及Sniff嗅探功能。
Kali中包含了豐富的滲透和安全測試軟件供大家使用。
我們接下來要使用的軟件叫“Ettercap”。該軟件打開,它不僅僅能ARP投毒,還能進行各種DNS投毒等。點擊“Sniff”**個選項“Unified sniffing”。選擇網(wǎng)卡接口“eth0”。選中網(wǎng)卡之后,開始點擊“Host list”,列出所有主機。再點擊第三個按鈕“Scan for hosts”掃描。輸出結果包括“10.1.1.1”和“10.1.1.3”。本實驗只有三臺主機,而現(xiàn)實中員工會通過交換機、路由器去連接互聯(lián)網(wǎng),真正的xx在互聯(lián)網(wǎng)上,而攻擊者如果要截獲你和xx的數(shù)據(jù),需要截獲員工主機和網(wǎng)關的通信數(shù)據(jù)。接下來我要在它們兩個之間做中間人,怎么做呢?
選擇**個,添加目標1“Add to Target 1”;再選擇第二個,添加目標2“Add to Target 2”。
再點擊“Mitm”->“ARP poisoning”,并且勾選“Sniff remote connections”,此時就建立了ARP投毒,把10.1.1.1和10.1.1.3欺騙,并且開始數(shù)據(jù)攔截。
此時,中間人攻擊或ARP欺騙攻擊已經(jīng)搭建完成,我們能截獲員工(XP系統(tǒng))和服務器(2003系統(tǒng))的通信數(shù)據(jù)。但本篇文章是介紹如何實現(xiàn)DNS欺騙攻擊和釣魚,所以我們需要在Kali系統(tǒng)布局誘騙操作,收到員工請求之后不再轉發(fā)至2003服務器,而是主動給你一個假的解析,這就稱為——DNS投毒。
第五步,設置DNS投毒。
選擇“Plugins”->“Manage the plugins”。
可以看到這個軟件非常強大,雙擊“dns_spoof”激活DNS投毒。
此時,我們在XP系統(tǒng)瀏覽器中訪問“www.xx.com”網(wǎng)站,輸入用戶名和密碼點擊登錄,但仍然失敗,這是為什么呢?因為剛剛我們的Windows XP系統(tǒng)訪問過Windows 2003服務器,該記錄被存儲在緩存中,再訪問xx時就不再詢問服務器,所以Kali就無法欺騙。現(xiàn)實中該實驗是在沒有訪問情況下進行,等待緩存消失即可。
打開CMD,輸入“ipconfig /flushdns”清除DNS緩存。
再次訪問xx網(wǎng)站,然后點擊登錄,此時實驗成果。如果hacker將其跳轉回真實的xx網(wǎng)站,其隱藏性會更好。