网络常用探测命令:nmap / ncat / tcpdump

网络常用探测命令:nmap / netcat / tcpdump

  • nmap
    • 1、概述
    • 2、语法
      • 2.1 OPTIONS
      • 2.2 ARGUMENTS
    • 3、使用示例
  • nc / ncat
    • 1、概述
    • 2、语法
      • 2.1 OPTIONS
      • 2.2 ARGUMENTS
      • 2.3 PORTS
  • netcat
    • 1、编译安装netcat
      • 1.1 下载
      • 1.2 解压至相关目录
      • 1.3 目录改名(改为 netcat)
      • 1.4 安装
      • 1.5 修改配置文件
    • 2、nc/netcat 和 ncat/nmap 的区别
      • 解决办法
      • 示例进行验证
    • 3、示例
      • 3.1 Port Scanning(端口扫描)
      • 3.2 Chat Server
      • 3.3 File transfer
  • tcpdump
    • 1、概述
    • 2、语法
      • 2.1 OPTIONS
      • 2.2 ARGUMENTS
    • 3、示例
      • 3.1 监视指定网络接口的数据包
      • 3.2 监视指定主机的数据包
      • 3.3 监视指定主机和端口的数据包
      • 3.4 监视指定网络或协议的数据包
      • 3.5 解析数据包
      • 3.6 监测主机上所有接口的主机地址是 11.75.0.90 的报文
      • 3.7 解决tcpdump抓包丢包的问题
    • 4、现网中常用的组合
      • 4.1 列出可用于抓包的接口
      • 4.2 抓指定接口的icmp报文(常用检测链路通道)
      • 4.3 抓指定主机的报文
      • 4.4 抓指定源地址主机的报文
      • 4.5 指定协议(和端口)的报文
      • 4.6 抓指定主机和指定协议(和端口)的报文
      • 4.7 监视指定主机和端口的数据包
      • 4.8 解析抓到的报文
      • 4.9 保存抓到的报文,可使用wireshark进行查看

nmap

用于网络探测和安全审核。

1、概述

nmap命令 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

2、语法

nmap [OPTIONS] {ARGUMENTS} 

2.1 OPTIONS

-O                        # 激活操作探测
-P0                       # 只进行扫描,不ping主机
-PT                       # 是同TCP的ping
-sV                       # 探测服务版本信息
-sP                       # ping扫描,仅发现目标主机是否存活
-ps                       # 发送同步(SYN)报文
-PU                       # 发送udp ping
-PE                       # 强制执行直接的ICMPping
-PB                       # 默认模式,可以使用ICMPping和TCPping
-6                        # 使用IPv6地址
-v                        # 得到更多选项信息
-d                        # 增加调试信息地输出
-oN                       # 以人们可阅读的格式输出
-oX                       # 以xml格式向指定文件输出信息
-oM                       # 以机器可阅读的格式输出
-A                        # 使用所有高级扫描选项
--resume                  # 继续上次执行完的扫描
-P # 指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围
-e                        # 在多网络接口Linux系统中,指定扫描使用的网络接口
-g                        # 将指定的端口作为源端口进行扫描
--ttl                     # 指定发送的扫描报文的生存期
--packet-trace            # 显示扫描过程中收发报文统计
--scanflags               # 设置在扫描报文中的TCP标志
--send-eth/--send-ip      # 使用原始以太网发送/构造指定IP发送

2.2 ARGUMENTS

参数一般为IP地址,需要探测的IP地址

3、使用示例

安装:
# yum install nmap  
扫描网址 www.magedu.com的开放端口:
# nmap www.magedu.com
[root@neo ~]# nmap 220.172.107.204

Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-10 02:04 EDT
Nmap scan report for 220.172.107.204
Host is up (0.061s latency).
Not shown: 989 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   open     ssh
23/tcp   filtered telnet
80/tcp   filtered http
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
443/tcp  filtered https
445/tcp  filtered microsoft-ds
4444/tcp filtered krb524
8080/tcp filtered http-proxy
8443/tcp filtered https-alt

Nmap done: 1 IP address (1 host up) scanned in 9.21 seconds

nc / ncat

1、概述

nc / ncat - Concatenate and redirect sockets(连接并重定向套接字)

nc / ncat 在CentOS 上是同一个命令工具,是一个功能丰富的网络实用程序,可通过命令行在网络上读写数据。 它旨在成为一种可靠的后端工具,可立即为其他应用程序和用户提供网络连接。

使用 ncat 时,尽量不要使用 nc,避免与 netcat 冲突。

2、语法

ncat [OPTIONS] {ARGUMENTS} {PORTS}
nc  [-hlnruz]
				[-g<网管>]
				[-G<指向器数目>]
				[-i<延迟秒数>]
				[-o<输出文件>]
				[-p<通信端口>]
				[-s<来源地址>]
				[-v…]
				[-w<超时秒数>]
								[主机名称]	[通信端口…]

2.1 OPTIONS

-h 查看帮助信息
-g hop1[,hop2,...]        # 松散源路由跳点(最多8个)
-G <n>                    # 指向器数目 (4812...-d, --delay <time>        # 同时建立的最大连接数
-o, --output <filename>   # 输出文件
-x, --hex-dump <filename> # 十六进制输出文件
-i, --idle-timeout <time> # 空闲读/写超时时间
-p, --source-port port    # 指定特定的源端口
-s, --source addr         # 指定特定的源ip
-l, --listen              # 绑定并监听传入的连接
-k, --keep-open           # 在监听模式下接受多个连接
-t, --telnet              # 应答Telnet握手协议
-u, --udp                 # 使用udp代替默认的tcp
    --sctp                # 使用sctp代替默认的tcp
-w, --wait <time>         # 连接超时时间

2.2 ARGUMENTS

参数一般为IP地址,需要探测的IP地址

2.3 PORTS

需要探测的端口

netcat

1、编译安装netcat

1.1 下载

http://sourceforge.net/projects/netcat/files/netcat/0.7.1/

1.2 解压至相关目录

[root@neo home]# ll netcat-0.7.1.tar.gz 
-rw-r--r--. 1 root root 398872 Sep 10 02:22 netcat-0.7.1.tar.gz
[root@neo home]# tar -zxvf netcat-0.7.1.tar.gz -C /usr/local/
netcat-0.7.1/
netcat-0.7.1/m4/
netcat-0.7.1/m4/lib-link.m4

1.3 目录改名(改为 netcat)

[root@neo home]# cd /usr/local/netcat-0.7.1/
[root@neo netcat-0.7.1]# ls
ABOUT-NLS   ChangeLog     config.rpath  configure.ac  INSTALL     m4           missing        po      TODO
aclocal.m4  config.guess  config.sub    COPYING       install-sh  Makefile.am  mkinstalldirs  README
AUTHORS     config.h.in   configure     doc           lib         Makefile.in  NEWS           src
[root@neo netcat-0.7.1]# cd ..
[root@neo local]# pwd
/usr/local
[root@neo local]# mv netcat-0.7.1/ netcat
[root@neo local]# ll netcat/
total 676
-rw-r--r--. 1 100 users  24687 Aug 17  2002 ABOUT-NLS
-rw-r--r--. 1 100 users 109116 Jan 11  2004 aclocal.m4
... ...
drwxrwxrwx. 2 100 users    216 Jan 11  2004 src
-rw-r--r--. 1 100 users   2197 Aug 28  2003 TODO
[root@neo local]# cd netcat/
[root@neo netcat]# ll
total 676
-rw-r--r--. 1 100 users  24687 Aug 17  2002 ABOUT-NLS
-rw-r--r--. 1 100 users 109116 Jan 11  2004 aclocal.m4
-rw-r--r--. 1 100 users    473 Nov  4  2003 AUTHORS
... ...
-rw-r--r--. 1 100 users   2197 Aug 28  2003 TODO

1.4 安装

在目录(cd /usr/local/netcat)下进行编译安装,把文件存放在/opt/netcat下,删除时,卸载软件时,只要删除这个文件就行了。

./configure --prefix=/opt/netcat

make && make install
[root@neo netcat]# ./configure --prefix=/opt/netcat
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
... ...
[root@neo netcat]# make && make install
make  all-recursive
... ...

1.5 修改配置文件

# vim /etc/profile

添加以下内容:
# set  netcat path
export NETCAT_HOME=/opt/netcat
export PATH=$PATH:$NETCAT_HOME/bin

使配置文件生效:
# source /etc/profile

2、nc/netcat 和 ncat/nmap 的区别

nc与netcat是一个组件,ncat是nmap下的一个程序。两者是不一样的。

如果你使用 nc 时,无法使用,提示Ncat: Connection refused.,可能是因为系统将nc/netcat默认指向了ncat,导致使用命令nc,其实使用的是ncat。

解决办法

[root@neo netcat]# whereis nc       # 查找 nc
nc: /usr/bin/nc /opt/netcat/bin/nc /usr/share/man/man1/nc.1.gz
[root@neo netcat]# ll /usr/bin/nc   # 查看 nc,应该是一个连接文件
lrwxrwxrwx. 1 root root 4 Sep 10 02:03 /usr/bin/nc -> ncat
[root@neo netcat]# rm /usr/bin/nc   # 删除软链接
rm: remove symbolic link ‘/usr/bin/nc’? yes
[root@neo netcat]# ln -s /opt/netcat/bin/nc /usr/bin/nc   # 新建软链接
[root@neo netcat]# nc --help        # 查看帮助进行验证,已经是 netcat 了
GNU netcat 0.7.1, a rewrite of the famous networking tool.
Basic usages:
connect to somewhere:  nc [options] hostname port [port] ...
listen for inbound:    nc -l -p port [options] [hostname] [port] ...
tunnel to somewhere:   nc -L hostname:port -p port [options]

示例进行验证

进行了 TCP 全链接端口扫描。

[root@neo ~]# nc -nv -w 1 -z 125.67.67.28 1-500
125.67.67.28 22 (ssh) open
125.67.67.28 53 (domain) open

3、示例

3.1 Port Scanning(端口扫描)

端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞。

# nc -z -v -n 172.31.100.7 21-25
# 打印2125所有开放的端口
# 可以运行在TCP或者UDP模式,默认是TCP-u参数调整为udp

# z option tell netcat to use zero IO .i.e the connection is closed as soon as it opens and no actual data exchange take place.
# v option is used for verbose option.
# n option tell netcat not to use the DNS lookup for the address.
# 一旦你发现开放的端口,你可以容易的使用 netcat 连接服务抓取他们的banner
# nc -v 172.31.100.7 21
# netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息

Banner是一个文本,Banner是一个你连接的服务发送给你的文本信息。当你试图鉴别漏洞或者服务的类型和版本的时候,Banner信息是非常有用的。但是,并不是所有的服务都会发送banner。

3.2 Chat Server

If you want to chat with your friend there are numerous software and messenger services available at your disposal.But what if you do not have that luxury anymore like inside your computer lab, where all outside connections are restricted, how will you communicate to your friend who is sitting in the next room. Don’t worry my friend because netcat has a solution for you just create a chat server and a predetermined port and he can connects to you.

Server
# nc -l 1567

netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。

Client
# nc 172.31.100.7 1567

不管你在机器B上键入什么都会出现在机器A上。

3.3 File transfer

Most of the time we are trying to transfer file over network and stumble upon the problem which tool to use. There are again numerous methods available like FTP, SCP, SMB etc. But is it really worth the effort to install and configure such complicated software and create a sever at your machine when you only need to transfer one file and only once.

Server
# nc -l 1567 < file.txt

Client
# nc -n 172.31.100.7 1567 > file.txt

这里我们创建了一个服务器在A上并且重定向netcat的输入为文件file.txt,那么当任何成功连接到该端口,netcat会发送file的文件内容。
在客户端我们重定向输出到file.txt,当B连接到A,A发送文件内容,B保存文件内容到file.txt。
没有必要创建文件源作为Server,我们也可以相反的方法使用。像下面的我们发送文件从B到A,但是服务器创建在A上,这次我们仅需要重定向netcat的输出并且重定向B的输入文件。

B作为Server

Server
# nc -l 1567 > file.txt

Client
# nc 172.31.100.23 1567 < file.txt

更多示例参考:https://www.cnblogs.com/zzPrince/p/6842951.html

tcpdump

一款sniffer工具,是Linux上的抓包工具。

1、概述

tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

2、语法

tcpdump {OPTIONS} {ARGUMENTS}

2.1 OPTIONS

-a         # 尝试将网络和广播地址转换成名称
-c #       # 收到指定的数据包数目后,就停止进行抓包操作
-D         # 列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"-e         # 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC
-f         # 用数字显示网际网络地址
-F FILE    # 指定内含表达方式的文件,从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效
-i INFACE  # 使用指定的网络接口送出数据包
-l         # 使用标准输出列的缓冲区
-n         # 对地址以数字方式显式,否则显式为主机名,也就是说 -n 选项不做主机名解析
-nn        # 除了-n的作用外,还把端口显示为数值,否则显示端口服务名
-N         # 不打印出host的域名部分
-O         # 不将数据包编码最佳化
-p         # 不让网络界面进入混杂模式
-q         # 快速输出,仅列出少数的传输协议信息
-r FILE    # 从指定的文件读取数据包数据
-s SIZE    # 设置每个数据包的大小
-S         # 用绝对而非相对数值列出TCP关联数
-t         # 在每列倾倒资料上不显示时间戳记
-tt        # 在每列倾倒资料上显示未经格式化的时间戳记
-T TYPE    # 强制将表达方式所指定的数据包转译成设置的数据包类型
-v         # 详细显示指令执行过程
-vv        # 更详细显示指令执行过程
-vvv       # 产生比-vv更详细的输出
-X         # 输出包的头部数据,会以16进制和ASCII两种方式同时输出
-w FILE    # 把数据包数据写入指定的文件

-s len设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

2.2 ARGUMENTS

可以对具体的接口进行抓包也可以不指定接口名称

常用组合选项:

tcpdump -D
tcpdump -c num -i int -nn -XX -vvv

3、示例

3.1 监视指定网络接口的数据包

注意:如果不指定网卡,默认tcpdump只会监视第一个网络接口(可通过 ip addr list 进行查看,一般位于第一个的就是第一个网络接口),下面的例子都没有指定网络接口。

# tcpdump -i ens3

3.2 监视指定主机的数据包

打印所有进入或离开 tangtang 的数据包。

# tcpdump host tangtang

也可指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包。

# tcpdump host 210.27.48.1

打印 Lee 与 tangtang 或者与 Neo 之间通信的数据包。

# tcpdump host Lee and \( tangtang or Neo \)

截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信。

# tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包。

# tcpdump ip host ace and not helios

如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包。

# tcpdump ip host 210.27.48.1 and ! 210.27.48.2

抓取eth0网卡上的包。

# tcpdump -i eth0

截获主机hostname发送的所有数据。

# tcpdump -i eth0 src host hostname

监视所有送到主机hostname的数据包。

# tcpdump -i eth0 dst host hostname

3.3 监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包。

# tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口。

# tcpdump udp port 123

3.4 监视指定网络或协议的数据包

抓取80端口的HTTP报文,以文本形式展示。

# sudo tcpdump -i any port 80 -A

打印所有源地址或目标地址是本地主机的IP数据包,如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络。

# tcpdump ip and not net localnet

打印所有通过网关snup的ftp数据包。(注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析。)

# tcpdump 'gateway snup and (port ftp or ftp-data)'

打印本地主机与Berkeley网络上的主机之间的所有通信数据包。(ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包。)

# tcpdump net ucb-ether

3.5 解析数据包

[root@server2 ~]# tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:15:54.788812 IP (tos 0x0, ttl 64, id 19303, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8  .(Kg@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2b62 5010  d>....$&_...+bP.
        0x0030:  0803 7844 0000 0000 0000 0000            ..xD........
12:15:54.842641 IP (tos 0x0, ttl 64, id 19304, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8  .(Kh@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2d62 5010  d>....$&_...-bP.
        0x0030:  0801 7646 0000 0000 0000 0000            ..vF........
2 packets captured
2 packets received by filter
0 packets dropped by kernel

3.6 监测主机上所有接口的主机地址是 11.75.0.90 的报文

[root@server2 ~]# tcpdump -i any host 11.75.0.90

3.7 解决tcpdump抓包丢包的问题

丢包现象:

[root@neo ~]# tcpdump -i enp1s0 icmp -c 6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:50:36.922146 IP neo > 172.16.141.211: ICMP echo request, id 771, seq 1754, length 64
23:50:36.922457 IP 172.16.141.211 > neo: ICMP echo reply, id 771, seq 1754, length 64
23:50:37.016166 IP 172.16.141.211 > neo: ICMP echo request, id 30692, seq 1613, length 64
23:50:37.016224 IP neo > 172.16.141.211: ICMP echo reply, id 30692, seq 1613, length 64
23:50:37.922210 IP neo > 172.16.141.211: ICMP echo request, id 771, seq 1755, length 64
23:50:37.922593 IP 172.16.141.211 > neo: ICMP echo reply, id 771, seq 1755, length 64
6 packets captured
82 packets received by filter
19 packets dropped by kernel

使用 -n 禁止主机名解析:

[root@neo ~]# tcpdump -i enp1s0 icmp -c 6 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:52:18.392043 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 1712, length 64
23:52:18.392080 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 1712, length 64
23:52:18.922211 IP 172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 1856, length 64
23:52:18.922479 IP 172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 1856, length 64
23:52:19.416042 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 1713, length 64
23:52:19.416108 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 1713, length 64
6 packets captured
6 packets received by filter
0 packets dropped by kernel

丢包原因:
Tcpdump 通过网络接口捕获原始数据包,数据包必须解析和执行过滤条件,执行过滤条件需要耗费一些时间,因此传入数据包必须排队(数据缓存)进行处理,当数据包过多时(处理速度跟不上缓存速度),缓存区就会被撑爆(缓存区大小默认是2M),此时就会丢弃新近的数据包,直到缓存区有空间保存新到数据。
解决方案:
增大缓存区的大小。tcpdump命令可以使用 -B 参数来修改,单位是KiB。

抓包过程中,如果流量过快,包也过大的时候,就会出现 kernel drop packets 的问题,可以用“-nn”, "-n"参数,去掉域名解析操作,也可以用“-s xxxx”放大默认抓包的大小;也可以用 “-B xxxx”

# tcpdump -i ethx -nn -n -B xxxx -s0 -w xxx.pcap

	# -nn: don't convert protocol and port number etc. to names either
	# -n: don not convert host addresses to names.  This can be used to avoid DNS lookups.
	# -s: packet length (0: capture the whole packet; default is 68 bytes)
	# -B: Set the operating system capture buffer size to buffer_size (unit: kilobytes)
		# buffer size根据具体情况可以设置大一些,当然,这个要跟抓包的时长和具体的应用有关
[root@neo ~]# tcpdump -i enp1s0 icmp -c 6 -n -B 10240 -s0 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:53:46.812571 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5314, length 64
00:53:46.812609 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5314, length 64
00:53:46.922216 IP 172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 5544, length 64
00:53:46.922489 IP 172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 5544, length 64
00:53:47.836627 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5315, length 64
00:53:47.836666 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5315, length 64
6 packets captured
6 packets received by filter
0 packets dropped by kernel
[root@neo ~]# tcpdump -i enp1s0 icmp -c 6 -B 10240 -s0 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:53:53.922119 IP neo > 172.16.141.211: ICMP echo request, id 771, seq 5551, length 64
00:53:53.922395 IP 172.16.141.211 > neo: ICMP echo reply, id 771, seq 5551, length 64
00:53:53.980520 IP 172.16.141.211 > neo: ICMP echo request, id 30692, seq 5321, length 64
00:53:53.980578 IP neo > 172.16.141.211: ICMP echo reply, id 30692, seq 5321, length 64
00:53:54.922145 IP neo > 172.16.141.211: ICMP echo request, id 771, seq 5552, length 64
00:53:54.922492 IP 172.16.141.211 > neo: ICMP echo reply, id 771, seq 5552, length 64
6 packets captured
82 packets received by filter
0 packets dropped by kernel

4、现网中常用的组合

4.1 列出可用于抓包的接口

[root@neo ~]# tcpdump -D
1.nflog (Linux netfilter log (NFLOG) interface)
2.nfqueue (Linux netfilter queue (NFQUEUE) interface)
3.enp1s0
4.usbmon1 (USB bus number 1)
5.wlp2s0
6.usbmon2 (USB bus number 2)
7.usbmon3 (USB bus number 3)
8.any (Pseudo-device that captures on all interfaces)
9.lo [Loopback]

4.2 抓指定接口的icmp报文(常用检测链路通道)

[root@neo ~]# tcpdump -i enp1s0 icmp -c 6 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
00:55:42.524131 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5427, length 64
00:55:42.524167 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5427, length 64
00:55:42.922213 IP 172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 5660, length 64
00:55:42.922487 IP 172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 5660, length 64
00:55:43.547952 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5428, length 64
00:55:43.548020 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5428, length 64
6 packets captured
6 packets received by filter
0 packets dropped by kernel

4.3 抓指定主机的报文

[root@neo ~]# tcpdump -i enp1s0 -c 6 -n host 172.16.141.211
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:02:44.410317 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5839, length 64
01:02:44.410355 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5839, length 64
01:02:44.922210 IP 172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 6082, length 64
01:02:44.922481 IP 172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 6082, length 64
01:02:45.434340 IP 172.16.141.211 > 172.16.141.252: ICMP echo request, id 30692, seq 5840, length 64
01:02:45.434407 IP 172.16.141.252 > 172.16.141.211: ICMP echo reply, id 30692, seq 5840, length 64
6 packets captured
6 packets received by filter
0 packets dropped by kernel

4.4 抓指定源地址主机的报文

[root@neo ~]# tcpdump -i enp1s0 -c 4 src host 172.16.141.99 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:09:59.093315 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 682537766, win 16335, options [nop,nop,TS val 1330902 ecr 1045261240], length 0
01:09:59.303207 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 213, win 16652, options [nop,nop,TS val 1330922 ecr 1045261270], length 0
01:09:59.400333 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 619, length 40
01:09:59.401114 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 573, win 16562, options [nop,nop,TS val 1330932 ecr 1045261480], length 0
4 packets captured
4 packets received by filter
0 packets dropped by kernel

4.5 指定协议(和端口)的报文

[root@neo ~]# tcpdump -i enp1s0 -c 4 tcp port 22 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:22:51.962704 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 682636758:682636970, ack 1496672535, win 249, options [nop,nop,TS val 1046034139 ecr 1408185], length 212
01:22:51.962862 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 212:456, ack 1, win 249, options [nop,nop,TS val 1046034139 ecr 1408185], length 244
01:22:51.962979 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 456:684, ack 1, win 249, options [nop,nop,TS val 1046034139 ecr 1408185], length 228
01:22:51.963085 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 684:912, ack 1, win 249, options [nop,nop,TS val 1046034140 ecr 1408185], length 228
4 packets captured
5 packets received by filter
0 packets dropped by kernel
[root@neo ~]# tcpdump -i enp1s0 -c 4 icmp -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:23:03.627097 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 1401, length 40
01:23:03.627166 IP 172.16.141.252 > 172.16.141.99: ICMP echo reply, id 1, seq 1401, length 40
01:23:03.923205 IP 172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 7301, length 64
01:23:03.923499 IP 172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 7301, length 64
4 packets captured
4 packets received by filter
0 packets dropped by kernel

4.6 抓指定主机和指定协议(和端口)的报文

[root@neo ~]# tcpdump -i enp1s0 -c 4 src host 172.16.141.99 -n and icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:13:02.727250 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 802, length 40
01:13:03.729447 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 803, length 40
01:13:04.741124 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 804, length 40
01:13:05.757530 IP 172.16.141.99 > 172.16.141.252: ICMP echo request, id 1, seq 805, length 40
4 packets captured
4 packets received by filter
0 packets dropped by kernel
[root@neo ~]# tcpdump -i enp1s0 -c 4 src host 172.16.141.99 -n and tcp port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:13:12.791687 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 682564362, win 16492, options [nop,nop,TS val 1350271 ecr 1045454936], length 0
01:13:12.923663 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 329, win 16410, options [nop,nop,TS val 1350284 ecr 1045454968], length 0
01:13:13.131765 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 541, win 16357, options [nop,nop,TS val 1350305 ecr 1045455100], length 0
01:13:13.332740 IP 172.16.141.99.51982 > 172.16.141.252.ssh: Flags [.], ack 753, win 16304, options [nop,nop,TS val 1350325 ecr 1045455308], length 0
4 packets captured
4 packets received by filter
0 packets dropped by kernel

4.7 监视指定主机和端口的数据包

[root@neo ~]# tcpdump -i any -n -c 4 host 172.16.141.99 and tcp port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
01:43:07.636686 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 685100222:685100434, ack 1496686495, win 249, options [nop,nop,TS val 1047249813 ecr 1529753], length 212
01:43:07.636832 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 212:456, ack 1, win 249, options [nop,nop,TS val 1047249813 ecr 1529753], length 244
01:43:07.636944 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 456:684, ack 1, win 249, options [nop,nop,TS val 1047249813 ecr 1529753], length 228
01:43:07.637044 IP 172.16.141.252.ssh > 172.16.141.99.51982: Flags [P.], seq 684:912, ack 1, win 249, options [nop,nop,TS val 1047249814 ecr 1529753], length 228
4 packets captured
4 packets received by filter
0 packets dropped by kernel

4.8 解析抓到的报文

[root@neo ~]# tcpdump -i enp1s0 -c 2 -q -XX -vvv -nn icmp
tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:04:49.922154 IP (tos 0x0, ttl 64, id 48250, offset 0, flags [DF], proto ICMP (1), length 84)
    172.16.141.252 > 172.16.141.211: ICMP echo request, id 771, seq 6207, length 64
	0x0000:  68ed a421 d8d4 e43a 6e0a 9b88 0800 4500  h..!...:n.....E.
	0x0010:  0054 bc7a 4000 4001 0a3e ac10 8dfc ac10  .T.z@.@..>......
	0x0020:  8dd3 0800 a035 0303 183f f145 6f5d 0000  .....5...?.Eo]..
	0x0030:  0000 0f12 0e00 0000 0000 1011 1213 1415  ................
	0x0040:  1617 1819 1a1b 1c1d 1e1f 2021 2223 2425  ...........!"#$%
	0x0050:  2627 2829 2a2b 2c2d 2e2f 3031 3233 3435  &'()*+,-./012345
	0x0060:  3637                                     67
01:04:49.922415 IP (tos 0x0, ttl 64, id 60725, offset 0, flags [none], proto ICMP (1), length 84)
    172.16.141.211 > 172.16.141.252: ICMP echo reply, id 771, seq 6207, length 64
	0x0000:  e43a 6e0a 9b88 68ed a421 d8d4 0800 4500  .:n...h..!....E.
	0x0010:  0054 ed35 0000 4001 1983 ac10 8dd3 ac10  .T.5..@.........
	0x0020:  8dfc 0000 a835 0303 183f f145 6f5d 0000  .....5...?.Eo]..
	0x0030:  0000 0f12 0e00 0000 0000 1011 1213 1415  ................
	0x0040:  1617 1819 1a1b 1c1d 1e1f 2021 2223 2425  ...........!"#$%
	0x0050:  2627 2829 2a2b 2c2d 2e2f 3031 3233 3435  &'()*+,-./012345
	0x0060:  3637                                     67
2 packets captured
2 packets received by filter
0 packets dropped by kernel

4.9 保存抓到的报文,可使用wireshark进行查看

[root@neo ~]# tcpdump -i any -n -c 4 host 172.16.141.99 and tcp port 22 -w tcpdumptest.pcap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
4 packets captured
4 packets received by filter
0 packets dropped by kernel
[root@neo ~]# ll tcpdumptest.pcap 
-rw-r--r--. 1 tcpdump tcpdump 688 Sep  4 01:49 tcpdumptest.pcap

你可能感兴趣的:(Linux学习笔记)