tcpump
tcpdump是一个著名的网络嗅探工具,它可以捕捉到发往本机、本地网络广播的数据报文。并支持指定表达式对报文进行分析过滤,保留所期望的数据包信息。
用法
tcpdump OPTION EXPRESSION
选项:
-i INTERFACE 指定网络接口
-w /FILE 将捕捉的数据报文信息保存于文件
-r /FILE 从指定文件读取抓取的数据包,常用于分析
-c # 指定抓取数据包数量
-n:将地址显示为数字格式,-nn表示地址、端口显示为数字格式
-v:显示详细信息,-vv表示更详细的信息
表达式:
表达式根据划分依据不同又分为三类:type、dir、proto
type:
host HOSTNAME 根据主机名过滤
net NETWORK 根据网络地址过滤
port PORT 根据端口
portrange RANGE 根据端口范围
dir:根据数据流向
src IP 依据源地址
dst IP 根据目标地址
proto:根据协议
ether
wlan
ip
arp
rarp
tcp
udp
注:tcpdump支持组合条件,可使用and、or、not逻辑关键字组合
例 1:
# tcpdump -i eth0 host 192.168.1.210 and 192.168.1.101
抓取192.168.1.210与192.168.1.101之间的通信数据包
例2:
# tcpdump -i eth0 host 192.168.1.210 or 192.168.1.101 port 8080 or 80
抓取192.168.1.210或192.168.1.101与其他主机且与8080或80端口相关的通信数据包
nc
nc全称netcat,是一款功能强大而小巧的网络工具,可以实现浏览器、文本文件传输、端口扫描、远程控制等等功能。
用法
1、文件传输功能
nc [OPTION] HOST PORT
-l PORT:指明监听的端口
-p PORT:指明连接监听服务器自己使用的端口
方案1:接收者监听在自身某个端口上,发送者主动建立连接并发送文件
接收者:# nc -l PORT
发送者:# nc RECEIVER_IP RECEIVER_PORT </FILE
方案2:发送者监听在自身某个端口上,有人建立连接后发送者发送内容
发送者:# nc -l PORT </SEND/FILE
接收者:# nc SENDER_IP SENDER_PORT >/SAVE/FILE
注:发送内容可以通过管道符从前面命令获取,也可以使用输入重定向从文件读取
接收的内容默认以文本形式显示在终端,可以使用管道符送给后面命令或者输出重定向保存
多个文件或目录需归档后传输
2、web客户端功能:
# nc HOST PORT 回车后提供输入界面,请求内容格式如下:
METHOD URI PROTOCOL Host:HOST Referer:REFERER User-Agent:AGENT ...
<两次回车后发送请求>
注:除METHOD,URI,PROTOCOL与Host为必须项目外,其他可自定义,其内容可分行输入
例:
# nc www.baidu.com 80
GET / HTTP/1.1
Host:www.baidu.com
3、端口扫描功能:
nc -z [-w # | -v] IP PORT|PORTRANGE
选项:
-z:使用端口扫描,不送任何数据
-w #:指定超时时长
-v:显示未开放的端口,不指定仅显示已开发的端口
PORT|PORTRANGE:单个端口或端口范围
PORT:单个端口扫描
PORT1-PORT2:对指定端口范围进行扫描
例:
# nc -z 172.27.100.1 10-10000
4、实时文本交互功能:
其中一主机监听在某端口,另一主机与之建立连接,类聊天器功能,使用方法如下:
主机1:# nc -l PORT
主机2:# nc HOST1_IP HOST1_PORT
nmap
nmap是一个开源的网络探测和安全审核工具,用于发现网络上的主机,探测这些主机开放的服务、端口,主机操作系统,防火墙等等信息。
用法:
nmap SCAN_TYPE [OPTIONS] DESTINATION
通用选项:
-p PORT|PORTS 对于带端口的主机扫描或端口扫描类型指定扫描的端口,
例 -p 22,-p 22,80,-p 20-100
-n 不对目标主机使用反向域名解析
-R 对所有主机进行反向域名解析,使用nmap主机指定的DNS服务器
-r 使用非随机顺序端口扫描,默认优先扫描常用端口
-F:快速扫描,不可与与-p合用
-v 显示更详细的输出信息
扫描类型和选项:
主机发现:
-O 操作系统探测
-A 操作系统探测,信息更为丰富
--osscan-limit 与-O,-A配合使用,仅对已确定目标某TCP端口状态的主机进行操作系统探测
-sL 使用列表扫描形式扫描指定主机或指定网段的活跃主机
-sP 使用ping扫描
-P0 无ping扫描,带端口扫描的主机发现,下同
-PS 带TCP/SYN标志位的扫描
-PA 带TCP/ACK标志位的的扫描
-PU 发送UDP空报文的方式扫描
-PE 通过发送ICMP协议的echo请求报文方式扫描
-PR 对未知硬件地址的局域网主机进行扫描时,使用优化算法管理ARP请求,速度更快
端口扫描:
-sT TCP连接扫描,通过connect() API与目标建立TCP连接并获取目标返回的连接尝试状态信息,效率较低
-sU 发送UDP空报文并获取响应报文来收集信息
-sS 带TCP/SYN标志位的扫描
-sF 带TCP/FIN标志位的扫描
-sA 带TCP/ACK标志位的扫描
-sN 不带任何标志位的TCP扫描,与Xmas扫描一样仅针对于Linux和Unix系统
-sX Xmas扫描
--scanflags FLAGS 自定义标志位扫描,组合可以是SYNFIN;SYN,FIN,SYN FIN三种形式
标志位:SYN,URG, ACK,PSH, RST,FIN
-sO 扫描目标主机支持哪些IP协议,使用-p选项指定协议号(0-255,非端口扫描)
服务探测:
-sV 探测目标开放的各个服务及版本
--allports 探测所有端口,默认会掠过一些端口
--version-intensity # 设置版本扫描轻度,值0-9,默认7,常用2,7,9
--version-trace 显示扫描过程信息
--packet-trace 显示更详细的扫描过程信息
其他选项:
--scan-delay # 设定nmap发送报文间隔,单位ms;
更少的带宽消耗;
对于回应报文 速率较低/回复速率固定 的主机,不会造成性能浪费;
可以躲避一些基于阈值判断的IDS/IPS
-T TEMPLATE 套用预设的时间模板,时间模板有6个,用户可不必自行定制性能控制参数
0,paranoid:
1,sneaky
2,polite
3,normal
4,aggressive
5,insane
注:可使用数字调用,也可使用模板名称。默认为3
0、1适用于有IDS/IPS的系统,随后级别扫描速度逐渐加快,带宽消耗增加,准确性也随之降低
-f 报文分段,将报文拆分发送,更容易躲避IDS,Filter检测
-D DECOY|DECOYS 使用诱饵主机对目标进行扫描,诱饵主机为多个时逗号分隔
-S SOURCE_IP 指明使用的源IP地址
-e INTERFACE 指明发送报文的接口
--source-port PORT 源端口欺骗,等同于 -g PORT
--ttl # 设定TTL值
--spool-mac "MAC" 使用指定MAC地址发送原以太网帧,,使用“0”,nmap将自动填入随机地址。不需要额外指定--send-eth选项
-oN /FILE 将结果输出至文件
-oG /FILE 格式化输出,便于grep等工具分析
目标格式:
主机名,主机IP,网络地址(如172.27.100.0/16)
-iL /FILE 从文件中读取扫描主机
--exclude HOST|HOSTS|NETWORK|NETWORKS 排除主机或网络,多个主机或网络逗号隔开
--excludefile HOST|HOSTS|NETWORK|NETWORKS 从文件读取要排除的主机或网络
例:扫描172.27.0.1-172.27.0.31区间的主机开放端口
# nmap -sS -F 172.27.0.0/24 --exclude 172.27.0.128/25,172.27.0.64/26,172.27.0.32/27