写在前面
win7:192.168.2.150(00-0c-29-CF-D3-0F)
kali:192.168.2.120(00:0c:29:e7:1c:e5)
(均使用的vmware虚拟机平台)
该系列并不会太关注wireshark的用法,重点关注协议交换时数据包的情况。
需要注意的是,一开始工作时,选好需要捕获流量的网卡。默认情况下会捕获所有网卡(带混杂模式)的流量,数据包会非常多
简单介绍一下混杂模式,混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。简单的讲,混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的。事实上,计算机收到数据包后,由网络层进行判断,确定是递交上层(传输层),还是丢弃,还是递交下层(数据链路层、MAC子层)转发。
网卡的混杂模式是为网络分析而提供的。
另:内网著名协议会简单介绍,而重点的FTP、HTTP、HTTPS
等协议会精确到字节进行详细介绍。部分思路借鉴于《wireshark网络分析就这么简单》–人民邮电出版社
初见
直接对使用网卡进行混杂模式捕获,会有哪些经常出现的协议呢?
SSDP协议
SSDP(Simple Service Discovery Protocol)
简单服务发现协议,用于发现局域网里面的设备和服务。
SSDP消息分为设备查询消息、设备通知消息两种,通常情况下,使用更多地是设备查询消息。
一般格式如下
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 5
ST: ssdp:all
第一行 消息头,固定;
第二行 HOST对应的是广播地址和端口,239.255.255.250是默认SSDP广播ip地址,1900是默认的SSDP端口;
第三行 MAN后面的ssdp:discover为固定
第四行 MX为最长等待时间,
第五行 ST:查询目标,它的值可以是:
upnp:rootdevice 仅搜索网络中的根设备
uuid:device-UUID 查询UUID标识的设备
urn:schemas-upnp-org:device:device-Type:version 查询device-Type字段指定的设备类型,设备类型和版本由UPNP组织定义。
其中,第三种一般可以用来自定义设备,如:ST: urn:schemas-upnp-org:device:Server:1
在设备接收到查询请求并且查询类型(ST字段值)与此设备匹配时,设备必须向多播地址239.255.255.250:1900回应响应消息。一般形如:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = seconds until advertisement expires
DATE: when reponse was generated
EXT:
LOCATION: URL for UPnP description for root device
SERVER: OS/Version UPNP/1.0 product/version
ST: search target
USN: advertisement UUID
详细数据
在这里,ST的目标为 InternatGatewayDevice:1
出现在这里的原因,是因为这台主机在内网中,需要upnp端口映射才能连上公网,这是用于监听网关的流量进入内网的侦测包。(upnp端口映射技术正会用到这个协议,后面还会看见的)
NBNS
NBNS是NetBIOS的一种,全名为NetBIOS Name service。简单来说就是将NetBIOS名称映射到IP地址上,需要一个查询和应答。也是一般在内网工作
这里不做详细展开,并不是这节的重点。
详细数据
直接查看详细数据
这里是在查询名为GOD的域控制器ip,出现这个的原因是因为该win7主机被加入了GOD的域中,所以会查询域控ip
IGMPv2
IGMP是大名鼎鼎的Internet组管理协议,总共有v1、v2、v3三个版本。v2报文格式如下:
分为以下四种报文类型:
1.成员关系查询(membership query)
IGMPv2定义了两种成员关系查询报文的子类型:常规查询(General Query)报文及特定组查询(Group-Specific Query)报文。
常规查询:IGMP查询器使用该报文向直连网段进行查询,以确认该网段中是否存在组播组成员。由于该报文查询的是所有组播组,因此也被称为普遍组查询报文。常规查询报文的目的IP地址为224.0.0.1(标识所有组播节点)。特定组查询:运行IGMPv2的主机在离开其所加入的组播组时,会主动发送一个IGMPv2离组报文,用于宣告自己离开组播组,当网络中的查询器收到这个离组报文后,需要确认该组播组中是否存在其他成员,此时该查询器便会发送特定组查询报文,该报文只针对特定的组播组进行查询,报文的目的IP地址为其所查询的组播组地址,而且报文载荷中的“组地址”字段也记录了这个组播组地址。
2.成员关系报告(membership report)
当主机加入组播组时,或者当其收到查询器发送的常规查询报文时,主机将发送成员关系报告报文,该报文的目的IP地址是主机所加入的组播组地址,而且报文载荷中的“组地址”字段也记录了该组播组地址。
3.离组报文(leave group)
IGMPv2在IGMPv1的基础上增加了离组报文,当主机离开其所加入的组播组时,便会主动发送离组报文。离组报文的目的IP地址为224.0.0.2(标识所有组播路由器),报文载荷中的“组地址”字段记录了主机所要离开的组播组地址。
4.版本1成员关系报告(version1 membership report)
该报文用于兼容IGMPv1,报文中的类型字段值是0x12。
详细数据
这里就是一个主机向路由器报告加入组别,类型值为0x16,源IP地址为自己主机的IP地址(192.168.2.144),目的IP地址为组播地址(224.0.0.252)。