系统监控+流量监控+抓包分析

Linux服务器系统资源+公网流量实时监控

以下命令安装方式:

Linux:yum install xxx

MacOS:brew install xxx

系统资源类监控命令

实时监控系统的硬件资源信息,如:CPU、内存、硬盘、NFS等相关信息

推荐:htop

htop

可查看:/PIDCPU/内存/服务启动时间/服务启动路径/启动参数

image-20220308150944829

free

实时查看:内存使用/剩余/可用量

[root@h156 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        5.0G        2.7G         22M        7.8G         10G
Swap:            0B          0B          0B

lsblk

查看所有硬盘大小即使用率

[root@h156 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
vda    253:0    0  150G  0 disk
└─vda1 253:1    0  150G  0 part /

df

查看硬盘使用/剩余/可用率、挂载信息

[root@h156 ~]# df -H
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  8.4G     0  8.4G   0% /dev
tmpfs                     8.4G     0  8.4G   0% /dev/shm
tmpfs                     8.4G  1.4M  8.4G   1% /run
tmpfs                     8.4G     0  8.4G   0% /sys/fs/cgroup
/dev/vda1                 159G  103G   50G  68% /
tmpfs                     1.7G     0  1.7G   0% /run/user/0
overlay                   159G  103G   50G  68% /var/lib/docker/overlay2/a87b68445e855be0f52e5d1/merged
shm                        68M     0   68M   0% /var/lib/docker/containers/714e57ddcde574253263bad8/mounts/shm
overlay                   159G  103G   50G  68% /var/lib/docker/overlay2/86e632de3f6f7c9fc2f4d84c0da4/merged
shm                        68M     0   68M   0% /var/lib/docker/containers/3d6e5b9dc632b1ae864b2d50750f4b99e0/mounts/shm
overlay                   159G  103G   50G  68% /var/lib/docker/overlay2/8c202ed12d8077fe27c47/merged

du

计算指定目录/文件的大小,不指定文件/目录默认计算当前目录下所有

-s	仅显示每个参数的总计
-h	人性化方式显示,默认自带后缀单位(K/M/G)

# 计算当前目录下所有
[root@h156 ~]# du -sh
4.8G	.

# 计算指定目录大小
[root@h156 ~]# du -sh /var/log
4.2G	/var/log

# 计算指定文件大小
[root@h156 ~]# du -sh packages/nginx-1.16.1.tar.gz
1012K	packages/nginx-1.16.1.tar.gz

mount

查看已挂载目录/文件信息

MacBook-Pro:~ Peng$ mount
/dev/disk1s5s1 on / (apfs, sealed, local, read-only, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s4 on /System/Volumes/VM (apfs, local, noexec, journaled, noatime, nobrowse)
/dev/disk1s2 on /System/Volumes/Preboot (apfs, local, journaled, nobrowse)
/dev/disk1s6 on /System/Volumes/Update (apfs, local, journaled, nobrowse)
/dev/disk1s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)

网络流量类监控

针对于某些应用户服务在后台实时消耗流量,直接定位到该消耗流量的应用名或端口号,方便定位问题。

推荐nethogs

nethogs

可以显示进程的PIDname及其对应的进出流量

命令用法:
#5秒刷新一次数据
nethogs -d 5

#监控网卡eth0数据
nethogs eth0

#同时监视eth0和eth1接口
nethogs eth0 eth1

#将监控日志写入日志文件
nethogs >>test.log

image-20220308150445764

ifconfig

RX:累计接收流量:(304.8 MiB)

TX:累计发送流量:(1010.3 MiB)

[root@h169 ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.29.46.54  netmask 255.255.252.0  broadcast 10.29.47.255
        ether 00:16:3e:1c:ac:c4  txqueuelen 1000  (Ethernet)
        RX packets 1124181  bytes 319702713 (304.8 MiB)		# 累计接收流量
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 792698  bytes 1059472478 (1010.3 MiB)	# 累计发送流量
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

iptraf

图形化界面,输入iptraf-ng回车,选择General interface statistics即通用接口统计,即可查看实时流量消耗大小

命令行输入:iptraf回车

image-20220308143330989

image-20220308143256051

iftop

常用参数:-bBnN

可以看到服务器与每个ip、端口的通信数据量

# 界面说明:
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

# 参数说明
-i	设定监测的网卡,如:# iftop -i eth1
-B 	以bytes为单位显示流量(默认是bits),如:# iftop -B
-n	使host信息默认直接都显示IP,如:# iftop -n
-N	使端口信息默认直接都显示端口号,如: # iftop -N
-F	显示特定网段的进出流量,如# iftop -F 172.30.1.0/24或# iftop -F 172.30.1.0/255.255.255.0
-h	帮助,显示参数信息
-p	使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b	使流量图形条默认就显示;
-f	这个暂时还不太会用,过滤计算包用的;
-P	使host信息及端口信息默认就都显示;
-m	设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

# 输入命令查看
[root@h156 ~]# iftop -bBnN -i eth1 -P

image-20220308153730108

nload

以文字图形的方式显示当前实时流量

命令行输入:nload -m回车

image-20220308144947833

nmon

可以显示系统CPU、网络、内存、磁盘等信息

输入:nmon回车会让你继续按下按键选择对应功能

  • 主界面

    image-20220308145426333

  • CPU

    image-20220308145734554

  • 内存

    image-20220308145844541

  • 网络

    image-20220308145950163

tcpdump抓包

常用选项

-i       #监听哪一个网卡 any为所有网卡
-n  	 #不把ip解析成主机名
-nn 	 #不把端口解析成应用层协议
-c  	 #指定抓包的数量
-S  	 #不把随机序列和确认序列解析成绝对值
-w       #将流量保存到文件中,文件中的信息是无法直接查看的
-r       #读取文件中的内容
-v 		 #输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv 	 #输出详细的报文信息

抓包解释

# Flags标识符
[S]		# SYN(开始连接)
[P]		# PSH(推送数据)
[F]		# FIN(结束连接)
[R]		# RST(重置连接)
[.]		# 可以用来表示ACK标志位1

# 输出内容结构
时间
协议
发送方IP+端口号
数据流向
接收方IP+端口号
冒号
数据包内容:包含Flags标识符,seq号,ack号,win窗口,数据长度length

基础案例

Docker部署的应用为例,进行如下方式测试

# 过滤出ip、端口
[root@h11 tcpdump]# docker exec -it ehu-c2c bash -c "hostname -I"
192.168.1.1

[root@h11 tcpdump]# netstat -lntp | grep 40042
tcp        0      0 0.0.0.0:40042           0.0.0.0:*               LISTEN      21930/docker-proxy

默认启动

tcpdump -vv		#普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包

指定Host

tcpdump -i eth1 host 192.168.1.1	    #抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据
tcpdump -i eth1 src host 192.168.1.1	#指定源地址,192.168.1.1
tcpdump -i eth1 dst host 192.168.1.1	#指定目的地址,192.168.1.1

指定Port

tcpdump -i eth1 port 40042	    #抓取所有经过eth1,目的或源端口是80的网络数据
tcpdump -i eth1 src port 40042	#指定源端口
tcpdump -i eth1 dst port 40042	#指定目的端口

指定协议

tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp

指定协议端口

tcpdump -i eth0 tcp port 21 -nn # 协议+端口

表达式

! or not  # 非
&& or and # 且
|| or or  # 或

# 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

# 抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据
tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

# 抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

高级案例

下面给出一些具体的例子,每个例子都可以使用多种方法来获得相同的输出,你使用的方法取决于所需的输出和网络上的流量。我们在排障时,通常只想获取自己想要的内容,可以通过过滤器和 ASCII 输出并结合管道与 grep、cut、awk 等工具来实现此目的

提取 HTTP 用户代理

  • 从 HTTP 请求头中提取 HTTP 用户代理:

    tcpdump -nn -A -s1500 -l | grep "User-Agent:"
    
  • 通过 egrep 可以同时提取用户代理和主机名(或其他头文件):

    tcpdump -nn -A -s1500 -l | egrep -i 'User-Agent:|Host:'
    

只抓取 HTTP GET 和 POST 流量

PS:该方法不能保证抓取到 HTTP POST 有效数据流量,因为一个 POST 请求会被分割为多个 TCP 数据包

下述两个表达式中的十六进制将会与 GETPOST 请求的 ASCII 字符串匹配。例如,tcp[((tcp[12:1] & 0xf0) >> 2):4] 首先会确定我们感兴趣的字节的位置(在 TCP header 之后),然后选择我们希望匹配的 4 个字节

  • 抓取 HTTP GET 流量:

    tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
    
  • 也可以抓取 HTTP POST 请求流量:

    tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
    

提取 HTTP 请求的 URL

  • 提取 HTTP 请求的主机名和路径:

    tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
    # 输出内容:
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
        POST /wp-login.php HTTP/1.1
        Host: dev.example.com
        GET /wp-login.php HTTP/1.1
        Host: dev.example.com
        GET /favicon.ico HTTP/1.1
        Host: dev.example.com
        GET / HTTP/1.1
        Host: dev.example.com
    

提取 HTTP POST 请求中的密码

  • HTTP POST 请求中提取密码和主机名:

    tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"
    # 输出内容:
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    11:25:54.799014 IP 10.10.1.30.39224 > 10.10.1.125.80: Flags [P.], seq 1458768667:1458770008, ack 2440130792, win 704, options [nop,nop,TS val 461552632 ecr 208900561], length 1341: HTTP: POST /wp-login.php HTTP/1.1
    .....s..POST /wp-login.php HTTP/1.1
    Host: dev.example.com
    .....s..log=admin&pwd=notmypassword&wp-submit=Log+In&redirect_to=http%3A%2F%2Fdev.example.com%2Fwp-admin%2F&testcookie=1
    

提取 Cookies

  • 提取 Set-Cookie(服务端的 Cookie)和 Cookie(客户端的 Cookie):

    tcpdump -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
    # 输出内容:
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    Host: dev.example.com
    Cookie: wordpress_86be02xxxxxxxxxxxxxxxxxxxc43=admin%7C152xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb3e15c744fdd6; _ga=GA1.2.21343434343421934; _gid=GA1.2.927343434349426; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_86be654654645645645654645653fc43=admin%7C15275102testtesttesttestab7a61e; wp-settings-time-1=1527337439
    

抓取 ICMP 数据包

  • 查看网络上的所有 ICMP 数据包:

    tcpdump -n icmp
    # 输出内容:
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    11:34:21.590380 IP 10.10.1.217 > 10.10.1.30: ICMP echo request, id 27948, seq 1, length 64
    11:34:21.590434 IP 10.10.1.30 > 10.10.1.217: ICMP echo reply, id 27948, seq 1, length 64
    11:34:27.680307 IP 10.10.1.159 > 10.10.1.1: ICMP 10.10.1.189 udp port 59619 unreachable, length 115
    

抓取非 ECHO/REPLY 类型的 ICMP 数据包

  • 通过排除 echoreply 类型的数据包使抓取到的数据包不包括标准的 ping 包:

    tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
    # 输出内容:
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    11:37:04.041037 IP 10.10.1.189 > 10.10.1.20: ICMP 10.10.1.189 udp port 36078 unreachable, length 156
    

抓取 SMTP/POP3 协议的邮件

  • 可以提取电子邮件的正文和其他数据。例如,只提取电子邮件的收件人:

    tcpdump -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'
    

抓取 NTP 服务的查询和响应

tcpdump dst port 123
# 输出内容:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
21:02:19.112502 IP test33.ntp > 199.30.140.74.ntp: NTPv4, Client, length 48
21:02:19.113888 IP 216.239.35.0.ntp > test33.ntp: NTPv4, Server, length 48
21:02:20.150347 IP test33.ntp > 216.239.35.0.ntp: NTPv4, Client, length 48
21:02:20.150991 IP 216.239.35.0.ntp > test33.ntp: NTPv4, Server, length 48

抓取 SNMP 服务的查询和响应

  • 通过 SNMP 服务,渗透测试人员可以获取大量的设备和系统信息。在这些信息中,系统信息最为关键,如操作系统版本、内核版本等。使用 SNMP 协议快速扫描程序 onesixtyone,可以看到目标系统的信息:

    onesixtyone 10.10.1.10 public
    # 输出内容:
    Scanning 1 hosts, 1 communities
    10.10.1.10 [public] Linux test33 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64
    
  • 可以通过 tcpdump 抓取 GetRequestGetResponse

    tcpdump -n -s0  port 161 and udp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    23:39:13.725522 IP 10.10.1.159.36826 > 10.10.1.20.161:  GetRequest(28)  .1.3.6.1.2.1.1.1.0
    23:39:13.728789 IP 10.10.1.20.161 > 10.10.1.159.36826:  GetResponse(109)  .1.3.6.1.2.1.1.1.0="Linux testmachine 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64"
    

切割 pcap 文件

当抓取大量数据并写入文件时,可以自动切割为多个大小相同的文件。例如,下面的命令表示每 3600 秒创建一个新文件 capture-(hour).pcap,每个文件大小不超过 200*1000000 字节;

PS:这些文件的命名为 capture-{1-24}.pcap24 小时之后,之前的文件就会被覆盖

tcpdump  -w /tmp/capture-%H.pcap -G 3600 -C 200

抓取 IPv6 流量

  • 可以通过过滤器 ip6 来抓取 IPv6 流量,同时可以指定协议如 TCP:

    tcpdump -nn ip6 proto 6
    
  • 从之前保存的文件中读取 IPv6 UDP 数据报文:

    tcpdump -nr ipv6-test.pcap ip6 proto 17
    

检测端口扫描

在下面的例子中,你会发现抓取到的报文的源和目的一直不变,且带有标志位 [S][R],它们与一系列看似随机的目标端口进行匹配。当发送 SYN 之后,如果目标主机的端口没有打开,就会返回一个 RESET。这是 Nmap 等端口扫描工具的标准做法。

tcpdump -nn
# 输出内容:
21:46:19.693601 IP 10.10.1.10.60460 > 10.10.1.199.5432: Flags [S], seq 116466344, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
21:46:19.693626 IP 10.10.1.10.35470 > 10.10.1.199.513: Flags [S], seq 3400074709, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
21:46:19.693762 IP 10.10.1.10.44244 > 10.10.1.199.389: Flags [S], seq 2214070267, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.693772 IP 10.10.1.199.389 > 10.10.1.10.44244: Flags [R.], seq 0, ack 2214070268, win 0, length 0
21:46:19.693783 IP 10.10.1.10.35172 > 10.10.1.199.1433: Flags [S], seq 2358257571, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.693826 IP 10.10.1.10.33022 > 10.10.1.199.49153: Flags [S], seq 2406028551, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.695567 IP 10.10.1.10.55130 > 10.10.1.199.49154: Flags [S], seq 3230403372, win 29200, options [mss 1460,sackOK,TS val 3547090334 ecr 0,nop,wscale 7], length 0
21:46:19.695590 IP 10.10.1.199.49154 > 10.10.1.10.55130: Flags [R.], seq 0, ack 3230403373, win 0, length 0
21:46:19.695608 IP 10.10.1.10.33460 > 10.10.1.199.49152: Flags [S], seq 3289070068, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695622 IP 10.10.1.199.49152 > 10.10.1.10.33460: Flags [R.], seq 0, ack 3289070069, win 0, length 0
21:46:19.695637 IP 10.10.1.10.34940 > 10.10.1.199.1029: Flags [S], seq 140319147, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695650 IP 10.10.1.199.1029 > 10.10.1.10.34940: Flags [R.], seq 0, ack 140319148, win 0, length 0
21:46:19.695664 IP 10.10.1.10.45648 > 10.10.1.199.5060: Flags [S], seq 2203629201, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695775 IP 10.10.1.10.49028 > 10.10.1.199.2000: Flags [S], seq 635990431, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695790 IP 10.10.1.199.2000 > 10.10.1.10.49028: Flags [R.], seq 0, ack 635990432, win 0, length 0

过滤 Nmap NSE 脚本测试结果

本例中 Nmap NSE 测试脚本 http-enum.nse 用来检测 HTTP 服务的合法 URL。

  • 在执行脚本测试的主机上:

    nmap -p 80 --script=http-enum.nse targetip
    
  • 在目标主机上:

    tcpdump -nn port 80 | grep "GET /"
    # 输出内容:
    GET /w3perl/ HTTP/1.1
    GET /w-agora/ HTTP/1.1
    GET /way-board/ HTTP/1.1
    GET /web800fo/ HTTP/1.1
    GET /webaccess/ HTTP/1.1
    GET /webadmin/ HTTP/1.1
    GET /webAdmin/ HTTP/1.1
    

抓取 DNS 请求和响应

Google 公共 DNS 发起的出站 DNS 请求和 A 记录响应可以通过 tcpdump 抓取到:

tcpdump -i wlp58s0 -s0 port 53

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:19:06.879799 IP test.53852 > google-public-dns-a.google.com.domain: 26977+ [1au] A? play.google.com. (44)
14:19:07.022618 IP google-public-dns-a.google.com.domain > test.53852: 26977 1/0/1 A 216.58.203.110 (60)

抓取 HTTP 有效数据包

抓取 80 端口的 HTTP 有效数据包,排除 TCP 连接建立过程的数据包(SYN / FIN / ACK)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

将输出内容重定向到 Wireshark

通常Wireshark(或 tshark)比 tcpdump更容易分析应用层协议。一般的做法是在远程服务器上先使用 tcpdump 抓取数据并写入文件,然后再将文件拷贝到本地工作站上用 Wireshark 分析。

还有一种更高效的方法,可以通过 ssh 连接将抓取到的数据实时发送给 Wireshark 进行分析。以 MacOS 系统为例,可以通过 brew cask install wireshark 来安装

  • 通过下面的命令来分析:

    ssh root@remotesystem 'tcpdump -s0 -c 1000 -nn -w - not port 22' | /Applications/Wireshark.app/Contents/MacOS/Wireshark -k -i - 
    
  • 分析 DNS 协议,可以使用下面的命令:

    ssh root@remotesystem 'tcpdump -s0 -c 1000 -nn -w - port 53' | /Applications/Wireshark.app/Contents/MacOS/Wireshark -k -i -
    
  • 抓取到的数据:

-c:用来限制抓取数据的大小。如果不限制大小,就只能通过 ctrl-c 来停止抓取,这样一来不仅关闭了 tcpdump,也关闭了 wireshark

image-20220608111318940

找出发包最多的 IP

找出一段时间内发包最多的 IP,或者从一堆报文中找出发包最多的 IP,可以使用下面的命令:

cut -f 1,2,3,4 -d '.': 以 . 为分隔符,打印出每行的前四列。即 IP 地址。

sort | uniq -c :排序并计数

sort -nr :按照数值大小逆向排序

tcpdump -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20
# 输出内容:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
200 packets captured
261 packets received by filter
0 packets dropped by kernel
    108 IP 10.10.211.181
     91 IP 10.10.1.30
      1 IP 10.10.1.50

抓取用户名和密码

本例将重点放在标准纯文本协议上,过滤出于用户名和密码相关的报文:

tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

抓取 DHCP 报文

最后一个例子,抓取 DHCP 服务的请求和响应报文,67DHCP 端口,68 为客户机端口

tcpdump -v -n port 67 or 68
# 输出内容:
tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:37:50.059662 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:xx:xx:xx:d5, length 300, xid 0xc9779c2a, Flags [none]
      Client-Ethernet-Address 00:0c:xx:xx:xx:d5
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: Request
        Requested-IP Option 50, length 4: 10.10.1.163
        Hostname Option 12, length 14: "test-ubuntu"
        Parameter-Request Option 55, length 16: 
          Subnet-Mask, BR, Time-Zone, Default-Gateway
          Domain-Name, Domain-Name-Server, Option 119, Hostname
          Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
          NTP, Classless-Static-Route-Microsoft, Static-Route, Option 252
14:37:50.059667 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:xx:xx:xx:d5, length 300, xid 0xc9779c2a, Flags [none]
      Client-Ethernet-Address 00:0c:xx:xx:xx:d5
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: Request
        Requested-IP Option 50, length 4: 10.10.1.163
        Hostname Option 12, length 14: "test-ubuntu"
        Parameter-Request Option 55, length 16: 
          Subnet-Mask, BR, Time-Zone, Default-Gateway
          Domain-Name, Domain-Name-Server, Option 119, Hostname
          Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
          NTP, Classless-Static-Route-Microsoft, Static-Route, Option 252
14:37:50.060780 IP (tos 0x0, ttl 64, id 53564, offset 0, flags [none], proto UDP (17), length 339)
    10.10.1.1.67 > 10.10.1.163.68: BOOTP/DHCP, Reply, length 311, xid 0xc9779c2a, Flags [none]
      Your-IP 10.10.1.163
      Server-IP 10.10.1.1
      Client-Ethernet-Address 00:0c:xx:xx:xx:d5
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 10.10.1.1
        Lease-Time Option 51, length 4: 86400
        RN Option 58, length 4: 43200
        RB Option 59, length 4: 75600
        Subnet-Mask Option 1, length 4: 255.255.255.0
        BR Option 28, length 4: 10.10.1.255
        Domain-Name-Server Option 6, length 4: 10.10.1.1
        Hostname Option 12, length 14: "test-ubuntu"
        T252 Option 252, length 1: 10
        Default-Gateway Option 3, length 4: 10.10.1.1
posted @ 2022-06-09 18:33  秋风お亦冷  阅读(461)  评论(0编辑  收藏  举报