Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPcan作为接口,直接与网卡进行数据报文交换。
1). 网络管理员会使用wireshark来检查网络问题
2). 软件测试工程师使用wireshark抓包,来分析自己测试的软件
3). 从事socket编程的工程师会用wireshark来调试
4). 听说,华为,中兴的大部分工程师都会用到wireshark。
总之跟网络相关的东西,都可能会用到wireshark.
winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。wireshark基于winpcap处理网络驱动层。winpcap是底层的,在window上wireshark是依赖于winpcap截包的
过滤器有两种,
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。在Capture -> Capture Filters中设置
1)、tcp报文图解
2)tcp三次握手
捕获的三次握手过程
这里我捕获的是网站http://2017xfd.teamlogs.com/login,一个协作多人共建工作日志的一个网站。
这里我捕获之后通过了初步筛选与IP:198.74.99.90之间的通信发现了其使用明文传送信息。
Nmap是一款网络扫描和主机检测的非常有用的工具。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。可用于:检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本)Nmap是一个非常普遍的工具,它有命令行界面和图形用户界面。
(1)扫描指定的端口
nmap -n --open -p 11211 X.X.X.X/24
(2)扫描指定网段的远程桌面连接端口
nmap -sT -p3389 218.206.112.0/24
(3)使用nmap来扫描端口UDP
nmap -sU 202.96.128.86 -p 53 -Pn
(4)进行安全检测
nmap -v -A 219.129.216.156
(5) 仅列出指定网络上的每台主机,不发送任何报文到目标主机:
nmap -sL192.168.1.0/24
(6) 探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):
nmap -PS192.168.1.234
(7)使用UDP ping探测主机:
nmap -PU192.168.1.0/24
(8)使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:
nmap -sS192.168.1.0/24
(9)当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT192.168.1.0/24
(10)UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU192.168.1.0/24
(11)确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):
nmap -sO192.168.1.19
(12)探测目标主机的操作系统:
nmap -O192.168.1.19
nmap -A 192.168.1.19
其他的常见命令
输出命令
-oN 文件名 输出普通文件
-oX 文件名 输出xml文件
错误调试:
--log-errors 输出错误日志
--packet-trace 获取从当前主机到目标主机的所有节点
1)、TCP扫描(-sT)
这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现
运行的原理:通过建立TCP的三次握手连接来进行信息的传递
① Client端发送SYN;
② Server端返回SYN/ACK,表明端口开放;
③ Client端返回ACK,表明连接已建立;
④ Client端主动断开连接。
2)、SYN扫描(-sS)
这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)
运行的原理图如下:
3)、NULL扫描
NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比前面提及的扫描方法要隐蔽很多,但是这种方法的准确度也是较低的,主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭的都返回RST包
但是虽然NULL具有这样的一些用处,但是
1、NULL方法的精确度不高,端口的状态返回的不是很准确
2、要获取目标主机的运行系统,可以使用参数(-O),来获取对于一些操作系统无法准确判断的,可以加上参数(-osscan-guess)
3、NULL扫描易被过滤
4)、FIN扫描
FIN扫描的原理与NULL扫描的原理基本上是一样
5)、ACK扫描
ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,通过判断RST包中的TTL来判断端口是否开启
运行原理图:
TTL值小于64端口开启,大于64端口关闭
大致上主要的扫描方法就是这些,除了我们可以按照这样些参数去执行扫描外,还可以自己定义一个TCP扫描包
得到的反馈是80和443端口开放
2、 使用wireshark捕包
可以看到大量的包被捕获,说明nmap扫描了多次。
3、 分析
可以看到大量的包是没有得到回应的,说明这些端口都是不开放的。而开放的端口80的来往记录是符合下面图示的过程