C/C++教程

tcpdump抓包与nmap扫描

本文主要是介绍tcpdump抓包与nmap扫描,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

tcpdump

过滤条件
类型:host、net、port、portange
方向:src、dst
协议:tcp、dup、ip、wlan、arp…
多条件组合:and、or、not…

tcpdump过滤语句介绍

可以给tcpdump传送“过滤表达式”来起到网络包过滤的作用,而且可以支持传入单个或多个过滤表达式。

可以通过命令 man pcap-filter 来参考过滤表达式的帮助文档过滤表达式大体可以分成三种过滤条件,“类型”、“方向”和“协议”,这三种条件的搭配组合就构成了我们的过滤表达式。

关于类型的关键字,主要包括host,net,port, 例如 host 210.45.114.211,指定主机 210.45.114.211,net 210.11.0.0 指明210.11.0.0是一个网络地址,port 21 指明端口号是21。如果没有指定类型,缺省的类型是host.

关于传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,

这些关键字指明了传输的方向。举例说明,src 210.45.114.211 ,指明ip包中源地址是210.45.114.211, dst net 210.11.0.0 指明目的网络地址是210.11.0.0 。如果没有指明方向关键字,则缺省是srcor dst关键字。

关于协议的关键字,主要包括 ether,ip,ip6,arp,rarp,tcp,udp等类型。这几个的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

除了这三种类型的关键字之外,其他重要的关键字如下:

gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ’ ‘! ‘, 与运算是’and’,’&&’;或运算是’or’ ,’||’;

可以利用这些关键字进行组合,从而组合为比较强大的过滤条件。

下面举例说明

(1)只想查目标机器端口是21或80的网络包,其他端口的我不关注:

sudo tcpdump -i eth0 -c 10 ‘dst port 21 or dst port 80’

(2) 想要截获主机172.16.0.11 和主机210.45.123.249或 210.45.123.248的通信,使用命令(注意括号的使用):

sudo tcpdump -i eth0 -c 3 ‘host 172.16.0.11 and (210.45.123.249 or210.45.123.248)’

(3)想获取使用ftp端口和ftp数据端口的网络包

sudo tcpdump ‘port ftp or ftp-data’

这里 ftp、ftp-data到底对应哪个端口? linux系统下 /etc/services这个文件里面,就存储着所有知名服务和传输层端口的对应关系。如果你直接把/etc/services里的ftp对应的端口值从21改为了3333,那么tcpdump就会去抓端口含有3333的网络包了。

(4) 如果想要获取主机172.16.0.11除了和主机210.45.123.249之外所有主机通信的ip包,使用命令:

sudo tcpdump ip ‘host 172.16.0.11 and ! 210.45.123.249’

(5) 抓172.16.0.11的80端口和110和25以外的其他端口的包

sudo tcpdump -i eth0 ‘host 172.16.0.11 and! port 80 and ! port 25 and ! port 110’
[root@www ~]# tcpdump -i eth0 #监视指定网络接口的数据包
[root@www ~]# tcpdump host webserver #打印所有进入或离开webserver的数据包.
[root@www ~]# tcpdump host 172.18.0.67 #也可以指定ip,截获所有172.18.0.67 的主机收到的和发出的所有的数据包
[root@www ~]# tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 ) #截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
[root@www ~]# tcpdump host 172.18.0.67 and ! 172.18.60.129 #获取主机172.18.0.67除了和主机172.18.60.129之外所有主机通信的ip包
[root@www ~]# tcpdump -i eth0 src(源) host webserver #截获主机webserver发送的所有数据
[root@www ~]# tcpdump -i eth0 dst(目标) host webserver #监视所有发送到主机webserver的数据包
[root@www ~]# tcpdump tcp port 23 and host 210.27.48.1 #获取主机210.27.48.1接收或发出的telnet包
[root@www ~]# tcpdump udp port 123 #对本机的udp 123 端口进行监视 123 为ntp的服务端口
[root@www ~]# tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

#(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

#(2)-i eth1 : 只抓经过接口eth1的包

#(3)-t : 不显示时间戳

#(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包

#(5)-c 100 : 只抓取100个数据包

#(6)dst port ! 22 : 不抓取目标端口是22的数据包

#(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24

#(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

nmap

nmap -sP 192.168.1.0/24 #进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测)

nmap -sL 192.168.1.0/24 #仅列出指定网络上的每台主机,不发送任何报文到目标主机

nmap -PS 192.168.1.234 #探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80)
nmap -PS -p 80,3306,22,23,21 172.18.0.69

nmap -sV 172.18.0.69 -p 22 -oN test6.txt //-oN 保存为txt oX保存为xml格式

nmap -PU 192.168.1.0/24 #使用UDP ping探测主机

nmap -sS 192.168.1.0/24 #使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快

nmap -sT 192.168.1.0/24 #当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描

nmap -sU 192.168.1.0/24 #UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口

nmap -sO 192.168.1.19 #确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等)
[root@ecs-62f4 ~]# nmap -sO 172.18.0.69

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-25 19:07 CST
Nmap scan report for 172.18.0.69
Host is up (0.00028s latency).
Not shown: 252 open|filtered protocols
PROTOCOL STATE SERVICE
1 open icmp
6 open tcp
58 closed ipv6-icmp
112 closed vrrp
MAC Address: FA:16:3E:99:A5:D4 (Unknown)
nmap -O 192.168.1.19 #探测目标主机的操作系统
nmap -A 192.168.1.19 #探测目标主机的操作系统

nmap -v scanme.nmap.org #这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口。选项-v启用细节模式。

nmap -sS -O scanme.nmap.org/24 #进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127 #进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

nmap -v -iR 100000 -P0 -p 80 #随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20 #扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

host -l company.com | cut -d -f 4 | nmap -v -iL - #进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux – 其它系统进行区域传输时有不同的命令
这篇关于tcpdump抓包与nmap扫描的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!