一、抓包软件
配套硬件的软件
TestCenter、Veriwave等仪表。
- 配套软硬件;
- 除了发流,还可以抓包(主要是Rx方向)。
可以说是抓包领域的霸主、长青树,其特点如下:
1. 支持windows、Linux/Unix系统; 2. 拥有类似tcpdump(一个Linux以下网络协议分析工具称为tethereal命令行版本; 3. 除了抓以太网报文外,也可抓802.11的wlan报文(需要系统和硬件支持);
主要用于抓wlan空口报文(802.11格式),依赖于特定的网卡。
tcpdump,dump traffic on a network,Linux/Unix具有以下特点:
1. 支持更多选项、接口、协议等; 2. 可实时在shell打印报文头相关内容; 3. 也可保存为pcap格式,用wireshark打开; 4. 特别适用于嵌入式系统。
Windump是tcpdump的Windows版本。
WinDump is the Windows version of tcpdump, the command line network analyzer for UNIX. WinDump is fully compatible with tcpdump and can be used to watch, diagnose and save to disk network traffic according to various complex rules. It can run under Windows 95, 98, ME, NT, 2000, XP, 2003 and Vista.
WinDump captures using the WinPcap library and drivers, which are freely downloadable from the WinPcap.org website. WinDump supports 802.11b/g wireless capture and troubleshooting through the Riverbed AirPcap adapter.
不仅可用于发包,还可用于抓包;
不仅可用于发包,还可用于抓包;
优点:
1. 不依赖第三方库; 2. 无需安装特殊软件(分析需要安装软件);
缺点:
1. 不支持端口过滤; 2. 参考资料少; 3. 少数老旧操作系统不支持;
操作步骤:
1. 使用netsh抓包:
netsh trace start [OTHER OPTIONS] netsh trace stop 生成etl文件;
2. WMA转成cap文件: windows message analyzer打开 -> 等待加载完成 -> 转换为cap文件; 3. 使用wireshark分析cap文件。
科来网络分析系统是网络故障分析、数字安全取证、协议分析学习等使用场景的利器
Microsoft Network Monitor是Microsoft官方提供的免费网络协议数据分析工具不仅可以抓取包,还可以根据抓取结果进行一些简单的数据分析。Microsoft Network Monitor最新版本是3.同时支持32位和64位系统。
支持802.3和802.11协议。
grep(在文本中搜索字符串的工具)在线版本,他力求更多grep搜索指定数据包的特征。 需要额外安装,默认Linux未安装在系统中。
面向的是HTTP打开谷歌开发者模式, 点击"网络"可查看标签页Resquest和Response的数据。
Fiddler Everywhere is a web debugging proxy for macOS, Windows, and Linux. Capture, inspect, monitor all HTTP(S) traffic between your computer and the Internet, mock requests, and diagnose network issues. Fiddler Everywhere can be used for any browser, application, process. 简而言之,仅针对不同的终端和操作系统http(s)报文。
Charles是HTTP代理/ HTTP监视器/反向代理使开发人员能够查看其计算机和Internet之间的所有HTTP和SSL / HTTPS通信。 这包括请求、响应和HTTP标头(包括在内cookie缓存信息)。
HttpWatch integrates with Chrome, Edge and Internet Explorer browsers to show you the HTTP and HTTPS traffic that is generated when you access a web page. Not Free!
Thor 专注于 HTTP 网络开发调试;
Thor 不是万能的,只在系统中工作 HTTP 层,不支持非 HTTP 流量(TCP, UDP)而通过系统 HTTP 代理流量;
仅适用于手机端,主要用于手机端IOS系统;
the choice of security professionals worldwide 可以配合chrome、firefox等进行http、https的抓包;
二、发流软件
与特定硬件相匹配的软件
1. 主要用于WIFI、路由器等的测试; 2. 配套软硬件; 3. 收费的,受Licence限制。 4. 吞吐量、延迟、丢包等专项测试。
信而泰推出了适合研发测试场景的数通一体化测试软件。该软件配备了适当的信而泰机箱和接口卡,可用于 DUT(被测设备)进行流量测试、协议模拟和性能测试。适用于研发阶段复杂网络设备的测试,如交换机、路由器、防火墙等。
纯软件类
以太网报文支持常见的结构,包括arp、rarp、ipv4、ipv6、icmpv4、icmpv6、igmp、udp、tcp、pim、ospf、rip、snmp、ppp、pppoe、ipsec(ah/esp)以及一些不常用的报纸,如802.3、STP等等,可编辑报文体的内容,几乎所有的字段都可以修改。
支持ARP、PING、UDP、DHCP、PPPOE、IGMP主要关键参数可以通过协议修改。
使用命令行只能修改相关参数(如IP、传输层协议,Port、主要用于测试吞吐量;
IXChariot它是一种应用层性能测试工具,通过端对端评估不同参数下的吞吐量、延迟、丢包等性能参数。
特点:
① 仅可修改IP、四层协议等参数; ② 实时图可以查看速率; ③ 多条流可同时发送; ④ 支持wifi测试发流。
瑞士军刀在网络测试工具中具有以下特点:
① 麻雀虽小,五脏俱全; ② 不仅可用于发包,还可用于抓包; ③ 支持二、三层发送,IGMP、ARP等待报纸,只能修改几个关键参数。
特点:
① 各种常见报文(包括arp ip icmp udp tcp等)编辑发送; ② 控制发包率; ③ 抓包; ④ 修改、编辑和发送抓取的包。
相对简单,主要用于组播功能测试;发送组播协会报文,接收组播数据流。
优点:操作比较简单,填上协议和组播源即可测试组播;缺点:无法构造报文,只能填写组播组相关参数。
一个位于linux内核层的高性能网络测试工具,主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机mac地址、IP地址、UDP端口号的数据包。 可控制 UDP, TCP, ARP, ICMP, GRE, MPLS and Queue-in-Queue等包,pktgen的配置与统计信息查看,都使用/proc文件系统完成。
科来网络分析系统是网络故障分析、数字安全取证、协议分析学习等使用场景的“利器”。既可以用来发流,也可以用于抓包。
复刻smartbits的IP网络性能测试工具,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具。可以通过此以太网测试工具测试任何IP网络设备的端口吞吐率,带宽,并发连接数和最大连接数等诸多参数指标。
与软件Iperf,netperf, dpdk trafficgen相比较,minismb属于专业硬件网络发包测试仪, 具备精准测试速率,高吞吐率,可模拟千万级连接数等特点。类似于Spirent思博伦smartbits,Ixia,北京信而泰网络IP性能测试仪。
dperf是一个百度开源软件,基于DPDK开发,具有千万级HTTP CPS,几十亿并发,几百Gbps带宽的开源压力测试;
官方网站:GitHub - baidu/dperf: dperf is a DPDK based 100Gbps network performance and load testing software.
三、Windows网络诊断
按命令划分
ip相关配置工具,类似于Linux系统里的ifconfig命令;
可能是windows下使用频率TOP3的网络命令了,几乎是众所周知的命令了;
路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径;
功能强大的网络配置工具;
arp相关操作,Linux下也有类似命令;
路由相关配置,Linux下也有类似命令;
域名查询相关,类似于linux系统的dig命令;
常用的是net use命令;
一般用于检验本机各端口的网络连接情况,Linux下也有类似命令。
查看NETBIOS状态的命令;
显示、设置或删除 cmd.exe环境变量,类似于Linux的setenv命令。
按功能划分
查看:
route print
增加路由:
route add 10.44.0.0 mask 255.255.0.0 10.46.40.129 -p
# 10.44.0.0为目的IP;
# 255.255.0.0为掩码;
# 10.46.40.129为网关;
# -p为永久
删除路由:
route delete 10.44.0.0
查看dns:
ipconfig /displaydns
清dns缓存:
ipconfig /flushdns
域名查询:
nslookup #交互式查询
nslookup Domain nslookup domain [dns-server] #如不指定dns-server,则使用默认服务器查询;如指定DNS服务器,则去指定服务器查询域名
nslookup -d Domain #查询更详细的域名信息
nslookup -qt=cname Domain #指定参数,查询其它记录,如CNAME
例子:
C:\Users\qxhgd>nslookup www.baidu.com
服务器: nj.net.zte
Address: 10.40.8.8
非权威应答:
名称: www.wshifen.com
Address: 103.235.46.39
Aliases: www.baidu.com
www.a.shifen.com
C:\Users\qxhgd>nslookup www.baidu.com 114.114.114.114
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: www.a.shifen.com
Addresses: 36.152.44.96
36.152.44.95
Aliases: www.baidu.com```
hosts文件
C:\Windows\System32\drivers\etc\hosts
Hosts 的请求级别比 DNS 高。
常用于屏蔽特定域名、加速域名解析(FQ)、虚拟域名解析等场景。
查看ARP条目:
arp /a
清除ARP条目:
arp /d
添加静态ARP条目:
arp -s 157.55.85.212 00-aa-00-62-c6-09
windows查看邻居缓存,IPv4和IPv6邻居表两种情况:
netsh interface ipv6 show neighbors
netsh interface ipv4 show neighbors
绑定ARP:
netsh interface ipv4 set neighbors 11 "192.168.0.1" "c8-d3-a3-02-97-56" store=persistent
netsh interface ipv4 set neighbors 11 "192.168.0.1" "c8-d3-a3-02-97-56" store=active
这个绑定ARP的操作和之前添加ARP静态条目的作用类似。
MTU查看:
netsh interface ipv4 show subinterfaces
MTU修改:
netsh interface ipv4 set subinterface "WLAN 2" MTU=2000 store=persist
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
例1、不停的ping:
C:\Users\qxhgd>ping 192.168.1.1 -t
正在 Ping 192.168.1.1 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
例2、ping指定长度:
C:\Users\qxhgd>ping 192.168.1.1 -l 128
正在 Ping 192.168.1.1 具有 128 字节的数据:
来自 192.168.1.1 的回复: 字节=128 时间<1ms TTL=64
netstat -a #显示所有socket,常用netstat -an
netstat -n #以网络IP地址代替名称,显示网络连接情况;
netstat -p #按协议查看,如netstat -p tcp/ip
netstat -s #查看正在使用的所有协议使用情况
netstat -an #查看所有被打开的端口列表:
netstat -ano #产看电脑端口占用情况
netstat -ano | findstr "80" #查看具体某个端口被占用的情况
tasklist | findstr "80" #查看某个端口具体被那个应用占用
netstat的选项比较多:
C:\Windows\system32>netstat ?
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的
可执行程序。在某些情况下,已知可执行程序承载
多个独立的组件,这些情况下,
显示创建连接或侦听端口时
涉及的组件序列。在此情况下,可执行程序的
名称位于底部 [] 中,它调用的组件位于顶部,
直至达到 TCP/IP。注意,此选项
可能很耗时,并且在你没有足够
权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项
结合使用。
-f 显示外部地址的完全限定
域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto
可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的
非侦听 TCP 端口。绑定的非侦听端口
不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,
显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享
终结点。
-y 显示所有连接的 TCP 连接模板。
无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的
间隔秒数。按 CTRL+C 停止重新显示
统计信息。如果省略,则 netstat 将打印当前的
配置信息一次。
例:
C:\Users\qxhgd>netstat
活动连接
协议 本地地址 外部地址 状态
TCP 10.40.164.55:2009 10.40.164.9:9053 ESTABLISHED
TCP 10.40.164.55:2026 10.40.164.9:9053 ESTABLISHED
TCP 10.40.164.55:2174 10.41.134.23:8237 ESTABLISHED
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名
net use \\ip /user:user
net use \\ip password /user:user
net use \\ip /del
下面的例子,在不同用户名访问同一IP的samba的时候可能会用到:
net use \\10.40.40.11 /user:Administrator
net use \\10.40.40.11 "password" /user:"Administrator"
net use \\10.40.40.11 "password" /del
和net use命令类似的,还有一个net user命令,不要混淆了。
网卡配置
固定IP和DNS设置:
set netname="以太网" //网卡名
set ip=192.168.90.66 //本机IP地址
set subnetmask=255.255.255.0 //子网掩码
set gateway=192.168.90.1 //网关
set dns1=8.8.8.8 //默认DNS
set dns2=8.8.4.4 //备用DNS
netsh interface ip set address name=%netname% source=static addr=%ip% mask=%subnetmask% gateway=%gateway% gwmetric=1 //默认网关的跃点数
netsh interface ip set dns name=%netname% source=static addr=%dns1% primary //主要的
netsh interface ip add dns name=%netname% addr=%dns2% index=2 //为指定的DNS服务器地址
自动获取(IP和DNS):
set netname="以太网" //网卡名
netsh interface ip set address name=%netname% source=dhcp
netsh interface ip set dns name=%netname% source=dhcp
一般,在自动化测试环境中,使用批处理动态操作网卡时会用到。
抓包
开始抓包:
netsh trace start [OTHER OPTIONS]
netsh trace start capture=YES report=YES persistent=YES #基本的启用持续追踪并生成报告的方式
停止抓包:
netsh trace stop
注:netsh抓到的报文需要经过特定软件(windows message analyzer)才能打开。
四、Linux网络诊断
- Nmap把端口划分为六个状态:
- nmap扫描端口举例:
nmap -F -n -sTU -v 192.168.0.xx #快速扫描一台主机的著名端口
nmap -F -n -sTU -v 192.168.0.130-168 #快速扫描多台主机的著名端口
nmap -n -sTU -v -p 20-200 192.168.0.xx #扫描20-200段的端口
官网:Nmap: the Network Mapper - Free Security Scanner
官方出品的nmap的图形界面版本。
lsof
lsof选项非常多,几乎可替代netstat和ps的全部工作:
usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
[-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
- 根据端口查看进程:
lsof -i:port
- 根据进程ID查看端口:
lsof -i | grep pid
官网:Manpage of LSOF (netadmintools.com)
根据端口查看进程:
netstat -nap | grep port
根据进程ID查看端口:
netstat -nap | grep pid
ss是Socket Statistics的缩写,可以用来获取socket统计信息,它可以显示和netstat类似的内容。
其优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效,因为它利用到了TCP协议栈中tcp_diag这个分析统计的模块,可获得Linux内核中第一手的信息,确保了ss的快捷高效。
ss
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
ss -s 列出当前socket详细信息:
查看本地打开的端口情况:
[qxhgd@promote ~]$ ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:evolution-calen/2865 *
nl UNCONN 0 0 rtnl:packagekitd/2102 *
nl UNCONN 0 0 rtnl:1612
nc与netcat是一回事:
nc -nvz 1.1.1.1 1-65535 #所有端口扫描一遍,默认扫描tcp端口
nc -nvzu 1.1.1.1 1-65535 #所有端口扫描一遍,u表示扫描udp端口
ncat 实际上是 nmap 套件的一部分,号称自己是 nc 的增强版。
一个端口扫描的例子:
nc -v -w 1 192.168.2.10 -z 1-65535 | grep succeeded
socat是一个多功能的网络工具,名字来由是” Socket CAT”,也号称自己是netcat的加强版。
一个对1.1.1.1的1-65535进行端口扫描的例子:
for PORT in {1..65535};
do echo “aaa” | socat - UDP-DATAGRAM:1.1.1.1:$PORT;
sleep .1; done
Dmitry是一个由C语言编写的UNIX/(GNU)Linux命令行工具,它可用于收集主机相关信息,比如子域名、Email地址、系统运行时间信息,也可以进行TCP端口扫描和whois查询等等。
dmitry -p host #对host主机进行tcp端口扫描
号称最快的互联网端口扫描器,一个例子 :
masscan --ports 1-10000 192.168.1.131 --adapter-ip 192.168.1.1
1. AutoRecon是一款信息收集工具,使用方法比较简单,只需要autoreon ip就可以自动联动nmap、 gobuster、nikto,如果有smb服务的话也会顺便联动smbclient之类的工具。 2. 可同时多目标扫描、支持IP地址、IP范围、主机名等,支持多处理器; 3. 可灵活配置端口扫描参数;
其他手段
查看tcp连接情况情况:
[qxhgd@localhost ~]$ cat /proc/net/tcp
6: 017AA8C0:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 25145 1 ffff9e8a58cc6e80 100 0 0 10 0
以53端口为例,查找端口占用的fd:
[qxhgd@localhost]$ for file in /proc/*/fd;do r=$(ls -l $file|grep 53);if [ "$r" != "" ];
> then echo $file && break;fi;done
/proc/1288/fd
配合ps,可查看到具体占用端口的进程了:
ps -aef | grep 1288
root 1288 1 0 21:18 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
如下面的python代码段,用于判断tcp端口占用情况:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
socket.setdefaulttimeout(3) #设置默认超时时间
def socket_port(ip, port):
"""
输入IP和端口号,扫描判断端口是否占用
"""
try:
if port >=65535:
print u'端口扫描结束'
return
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result=s.connect_ex((ip, port))
if result==0:
lock.acquire()
print ip,u':',port,u'端口已占用'
lock.release()
except:
print u'端口扫描异常'
五、Wifi网络诊断
1、WIFI魔盒
2、WIFI测评大师
3、WIFI分析助手
4、WIFI概观 360专业版
5、WIFI Service
6、无线网络分析仪
7、cellular-z
8、speedtest
9、iperf
10、ping
11、monitor
12、ping测试
13、lxchariot EP
14、Magic iPerf
1、iperf
2、lxChariot
3、Veriwave
4、Omnipeek
5、aircrack-ng
6、InSSIDer
7、WirelssMon
8、wireshark