目录

  • wireshark
  • wireshark的基本使用
  • wireshark过滤器的区别
  • 抓包案例


wireshark

wireshark的基本使用

抓包采用 wireshark,提取特征时,要对 session 进行过滤,找到关键的stream,这里总结了 wireshark 过滤的基本语法,供自己以后参考。

wireshark进行过滤的适合,分为协议过滤和内容过滤。
对标准协议,既支持粗粒度的过滤如HTTP:

tcp.port==53、http.request.method=="GET"

对内容过滤的例子:

http contains "Server"

指的是在http协议中包含Server的这个字段的数据包有哪些。
过滤地址:

ip.addr == 8.8.8.8
ip.src == 8.8.8.8
ip.dst == 8.8.8.8
ip.addr == 10.0.0.0/16

过滤端口:

tcp.port == 9090
tcp.dstport == 9090
tcp.srcport == 9090
tcp.port >=1 and tcp.port <= 80

过滤mac:

eth.dst == A0:00:00:04:C5:84 // 过滤目标mac
eth.src eq A0:00:00:04:C5:84 // 过滤来源mac
eth.dst==A0:00:00:04:C5:84
eth.dst==A0-00-00-04-C5-84
eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

根据长度过滤:

tcp.len >= 7     
ip.len == 88      
tcp.length == 26  
frame.len == 999

http包中的过滤:

http.host == xxx.com
// 过滤 host

http.response == 1
// 过滤所有的 http 响应包

http.response.code == 302
// 过滤状态码 202

http.request.method==POST 
// 过滤 POST 请求包

http.cookie contains xxx
// cookie 包含 xxx

http.request.uri=="/robots.txt"
//过滤请求的uri,取值是域名后的部分

http.request.full_uri=="http://1.com"
// 过滤含域名的整个url

http.server contains "nginx"
//过滤http头中server字段含有nginx字符的数据包

http.content_type == "text/html"
//过滤content_type是text/html

http.content_encoding == "gzip"
//过滤content_encoding是gzip的http包

http.transfer_encoding == "chunked"
//根据transfer_encoding过滤

http.content_length == 279

http.content_length_header == "279"
//根据content_length的数值过滤

http.request.version == "HTTP/1.1"
//过滤HTTP/1.1版本的http包,包括请求和响应

一个最简单的例子。

这里我们请求了一个百度的网址,用我们的wireshark进行抓包。

我们用它的这个过滤器进行过滤协议为http的。

wireshark 过滤某个地址请求 wireshark 过滤目的地址_wireshark


这里过滤我们还可以进行更精细的过滤,比如过滤出你想要的源ip或者是目标ip或者端口,这些都是同理。可以参考我的上面的例子。

如果是过滤协议的话这里可以过滤很多协议。比如:tcp
udp
arp
icmp
http
smtp
ftp
dns
msnms
ip
ssl
oicq
bootp等等。

使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。
这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。

wireshark过滤器的区别

过滤器的区别

捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。
显示过滤器(DisplayFilters):在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。

两种过滤器的目的是不同的。
捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。
显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。

捕捉过滤器

语法:Protocol Direction Host(s) Value Logical Operations Other expression
其中Logical Operations是逻辑运算。

tcp dst port 3128

显示目的TCP端口为3128的封包。

ip src host 10.1.1.1

显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3

显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500

显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

显示过滤器

语法:Protocol. String 1.String 2Comparison
这也是我们最常用的。
snmp || dns || icmp显示SNMP或DNS或ICMP封包。ip.addr == 10.1.1.1

显示来源或目的IP地址为10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。

抓包案例

题目要求:

1.内网主机的mysql用户名和请求连接的密码hash是多少(用户:密码hash)。

2.php代理第一次被使用时最先连接了哪个IP地址。

这里要求我们查找mysql的用户名以及密码,
我们可以直接筛选含有mysql的字段。

tcp contains "mysql" && mysql

wireshark 过滤某个地址请求 wireshark 过滤目的地址_测试工具_02


查找出来就是这个样子。

我们观察这些流量包,我们能够发现,这里都是一直在请求登录我们的数据库的数据包。
我们直接翻到最后这个请求数据库的包,那这个包大概率就是黑客进行爆破成功的包,会含有我们数据库的账号和密码。

用户:admin

密码Hash:4858e7dcb0968daa7b599be4b0edb88a25ad89ac

然后开始继续过滤http请求的数据包。

wireshark 过滤某个地址请求 wireshark 过滤目的地址_测试工具_03


我们发现了一个php文件,这个大概率就是黑客上传的恶意代码。

在下面我们能够看到,这个黑客的请求,能够看到黑客使用连接的地址为4.2.2.2,端口为53端口

答案

1.内网主机的mysql用户名和请求连接的密码hash是多少(用户:密码hash)
admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4
2.php代理第一次被使用时最先连接了哪个IP地址
4.2.2.2

密码为hash,我们可以用解密软件进行解密,就能够清楚看见数据库的密码 了。