Windows抓包与⽹络分析⼯具总结
以下对Windows中抓包与⽹络分析相关的netstat、Get-NetTCPConnection、TCPView、Process Monitor、Wireshark、RawCap命令与⼯具进⾏了说明,并说明了Windows本地回环地址⽆法抓包的解决⽅法。
以下主要对Windows环境、Linux环境及Java程序的⽹络分析相关⼯具进⾏分析,主要包括⽹络连接查看、⽹络包捕获等。
相关内容如下:
2.  环境
Windows的netstat命令⽤于显⽰协议统计和当前 TCP/IP ⽹络连接。
在cmd命令窗⼝中执⾏netstat -?查看选项如下:
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-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。
-r            显⽰路由表。
-s            显⽰每个协议的统计。默认情况下,显⽰
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6
的统计;-p 选项可⽤于指定默认的⼦⽹。
-t            显⽰当前连接卸载状态。
interval      重新显⽰选定的统计,各个显⽰间暂停的间隔秒数。
按 CTRL+C 停⽌重新显⽰统计。如果省略,则 netstat
将打印当前的配置信息⼀次。
l  -a
-a选项显⽰所有连接和侦听端⼝,当不指定-a选项时,不会显⽰状态为LISTENING及协议为UDP的连接信息。
l  -b
使⽤-b选项可以显⽰每个连接对应的进程信息,可能需要⾜够的权限。
l  -n
-n选项使⽤数字形式显⽰连接对应的地址与端⼝。
当不使⽤-n选项时,地址可能以主机名形式显⽰,端⼝可能以协议名称形式显⽰,如“localtest:http”。
当使⽤-n选项时,地址会显⽰为数字形式的IP,端⼝也以数字形式显⽰,如“127.0.0.1:80”。
l  -o
-o选项可以显⽰连接对应的进程PID。
在cmd命令窗⼝中执⾏“netstat -abno”,结果如下:
活动连接
协议  本地地址          外部地址        状态          PID
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING      932
RpcSs
[]
TCP    0.0.0.0:5985          0.0.0.0:0              LISTENING      4
⽆法获取所有权信息
TCP    0.0.0.0:6781          0.0.0.0:0              LISTENING      4
⽆法获取所有权信息
TCP    0.0.0.0:8064          0.0.0.0:0              LISTENING      7760
[]
TCP    0.0.0.0:28511          0.0.0.0:0              LISTENING      1584
[]
TCP    0.0.0.0:28521          0.0.0.0:0              LISTENING      4
可使⽤findstr命令对netstat命令的执⾏结果进⾏过滤。
例如只显⽰ESTABLISHED状态的连接,执⾏“netstat -ano|findstr ESTABLISHED”,执⾏结果⽰例:
TCP    127.0.0.1:28511      192.168.0.1:45884      ESTABLISHED    1584
Windows PowerShell 是专门为系统管理员设计的 Windows 命令⾏ Shell。 Windows PowerShell 包括可以单独或组合使⽤的交互提⽰和脚本编写环境。
在“运⾏”中输⼊powershell可打开PowerShell命令窗⼝;或在进⼊cmd命令窗⼝后,执⾏powershell命令进⼊。
在cmd命令窗⼝中执⾏“powershell [powershell命令]”,可以执⾏PowerShell中的命令。
执⾏PowerShell命令时,⽀持使⽤TAB提⽰命令⾃动补全。
Get-NetTCPConnection是PowerShell中的命令,可以查看TCP连接属性,例如本地或远程IP地址,本地或远程端⼝以及连接状态。
使⽤说明:
Get-NetTCPConnection
[[-LocalAddress] <String[]>]
[[-LocalPort] <UInt16[]>]
[-RemoteAddress <String[]>]
[-RemotePort <UInt16[]>]
[-State <State[]>]
[-AppliedSetting <AppliedSetting[]>]
[-OwningProcess <UInt32[]>]
[-CreationTime <DateTime[]>]
[-OffloadState <OffloadState[]>]
[-CimSession <CimSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[<CommonParameters>]
可在PowerShell命令窗⼝中执⾏Get-NetTCPConnection命令,或在cmd命令窗⼝中执⾏“powershell Get-NetTCPConnection”。
在PowerShell版本为5.1.15063.786的Windows 10操作系统中,可以执⾏Get-NetTCPConnection命令;在PowerShell版本为2.0的Windows 7操作系统中,不存在Get-NetTCPConnection命令。
在PowerShell命令窗⼝中执⾏Get-NetTCPConnection,结果如下(与netstat结果类似):
LocalAddress LocalPort RemoteAddress RemotePort State      AppliedSetting
------------ --------- ------------- ---------- -----      --------------
::1          49898    ::            0          Listen
0.0.0.0      59023    0.0.0.0      0          Bound
127.0.0.1    59023    192.168.0.1  80        Established Internet
127.0.0.1    59008    192.168.0.1  8080      TimeWait
在执⾏Get-NetTCPConnection命令时,使⽤-LocalAddress、-LocalPort、-RemoteAddress、-RemotePort、-State参数,可根据本地地址、本地端⼝、远程地址、远程端⼝、状态对输出结果进⾏过滤,详情见Get-NetTCPConnection说明。
⽰例如下:
命令说明
网站流量统计分析工具
Get-NetTCPConnection -LocalAddress "0.0.0.0"只查看本地地址符合的连接
Get-NetTCPConnection -LocalPort 135只查看本地端⼝符合的连接
Get-NetTCPConnection -RemoteAddress "0.0.0.0"只查看远程地址符合的连接
Get-NetTCPConnection -RemotePort 80只查看远程端⼝符合的连接
Get-NetTCPConnection -State listen只查看连接状态符合的连接
Get-NetTCPConnection -OwningProcess 4只查看特定进程(PID)的连接
Windows Sysinternals是⼀个提供技术资源和实⽤⼯具的⽹站,⽤于管理,诊断,排除故障和监视Microsoft Windows环境。由Winternals公司开发,Winternals公司已被微软收购。
可从以下地址下载Sysinternals⼯具:
TCPView是⼀个Windows程序,它显⽰系统上所有TCP和UDP端点的详细列表,包括本地和远程地址以及TCP连接的状态。
TCPView类似图形化版本的netstat,截图如下所⽰:
启动TCPView时,它将枚举所有活动的TCP和UDP端点,将所有IP地址解析为其域名版本。 您可以使⽤⼯具栏按钮或菜单项来切换解析名称的显⽰。
默认情况下,TCPView会将IP地址以主机名显⽰,将端⼝以协议名称显⽰。当关闭解析地址功能时,会将IP地址及端⼝以数字形式显⽰。点击“Options”“Resolve Addresses”菜单可关闭解析地址功能,如下所⽰:
默认情况下,TCPView每秒更新⼀次,可以使⽤“View”“Update Speed”菜单项来更改速率,如下所⽰。
状态有改变的的端点会以黄⾊突出显⽰;被删除的会以红⾊显⽰,新产⽣的会以绿⾊显⽰。
可以通过选择“File”“Close Connection”,或右键单击连接并从弹出的菜单中选择“Close Connection”来关闭已建⽴的TCP/IP连接(标记为ESTABLISHED状态的连接)。
可以使⽤“File”“Save”菜单项将TCPView的输出窗⼝保存到⽂件中。
TCPView下载中还包含了Tcpvcon⼯具,为命令⾏⼯具,与TCPView具有等同的功能。
说明如下:
Tcpvcon usage is similar to that of the built-in Windows netstat utility:
Usage: tcpvcon [-a] [-c] [-n] [process name or PID]
Parameter      Description
-a    Show all endpoints (default is to show established TCP connections).
-c    Print output as CSV.
-n  Don't resolve addresses.
Process Monitor是Windows的⾼级监视⼯具,可实时显⽰各进程的⽂件、注册表、⽹络和进程/线程⾏为。
点击Process Monitor中的按钮,可以分别启⽤或关闭对于注册表、⽂件、⽹络及进程/线程操作的监控。当某个按钮处于点击状态时,启⽤对应操作的监控;当某个按钮牌未点击状态时,关闭对应操作的监控。如下图所⽰,全部功能的监控均为关闭状态。
打开Process Monitor时,会⾃动打开过滤器窗⼝。也可通过点击图标,或“Filter”“Filter”菜单打开过滤器窗⼝。
打开过滤器窗⼝,如下所⽰。
过滤器中包含4个下拉框,分别为Column、Relation、Value、Action。
Column为需要过滤的属性,如进程PID、进程名等;
Relation为过滤的⽅式,如Value等于或不等于设置的值时,则执⾏Action对应的操作;
Value为过滤的内容,如Column选择通过进程PID进⾏过滤时,Value需要设置为进程PID;Action为过滤的操作,即对于满⾜过滤条件的记录,包含还是排除。
如下图所⽰,以下过滤规则代表对于进程名为“”的进程,监控其⾏为。
可以设置多个过滤规则同时⽣效。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。