前言
流量分析,重点在于对流量数据的提取,工具基本就是wireshark了。
参考:https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/#toc-heading-15
入门题
Cephalopod
hint:我们发现一些奇怪的网络流量,我们怀疑它包含一个flag
根据hint,分组字节流查找flag字段
发现在流量中有flag.png文件。
在 tcp.stream eq 2 中找到了flag.png文件。
以原始数据保存成flag.png,删除掉头部中没有用的信息
如下图:
保存,获得flag。
特殊后门
hint:
这题有点脑洞,在icmp中查找flag
然后从这条icmp报文以后的内容中包含flag的一个字符。
全部拼完,会得到flag
进阶题
抓住一只苍蝇
题目给的hint是抓住一只苍蝇…..
过滤
猜测是在发送邮件,并且发送了压缩包 fly.rar
过滤数据包
第一个数据包调用了函数createFile(),猜测后面的五个数据包为fly.rar的内容。
导出HTTP对象
分别保存成1,2,3,4,5文件,然后由于这是一个tcp包,没一次传输都会带上tcp头文件
一个数据包的大小是525701字节,然后这五个数据包的大小又是 131*1024 * 4+1777 = 527521
那么每个tcp头的大小就是:(527521-525701)/ 4 = 364 字节
然后我们使用dd命令分离这五个数据包的数据部分
1 2 3 4 5 6 7 8 9 10 11
| dd if=1 bs=1 skip=364 of=1.1 dd if=2 bs=1 skip=364 of=2.1 dd if=3 bs=1 skip=364 of=3.1 dd if=4 bs=1 skip=364 of=4.1 dd if=5 bs=1 skip=364 of=5.1
dd命令语法: if 输入文件名 bs 设置每次读写块的大小为1字节 skip 指定从输入文件开头跳过多少个块后再开始复制 of 输出文件名
|
接着
1
| cat 1.1 2.1 3.1 4.1 5.1 > fly.rar
|
获得fly.rar后,伪加密。修改一下二进制文件。解压,binwalk就好了…..
练习
流量分析题的思路,个人认为除非是脑洞题….但是现在脑洞题很少了,所以分析流量数据要想想流量中的数据体现的是什么…….
(1) 360初赛流量分析题
过滤只留下http的数据,我们可以看到这里的数据告诉我们黑客是在进行sql注入,仔细一看,这个实在sql盲注,然后如果盲注的结果为true的话,返回的数据长度就是987,如果盲注的结果为false的话,那返回的数据长度就是1003.既然是盲注.那么最后黑客总是要注出点东西的.直接看到最后面
发现他在注数据库中的passwd还有url
passwd:bkis
url:t.cn/Ai8PhqSb
访问这个百度网盘,获得flag.zip压缩包,并且我们导出HTTP对象,发现一个readme.7z,解压后有一个readme.txt
而且flag.zip中有一个readme.txt,尝试使用明文攻击.
使用7z对readme.txt进行压缩
(2) 360复赛流量分析题
第19 条数据
这段代码,是传了一个木马上去,然后通过一个pass获得一个key.
这里上传pass,获得一个key.
接着我们会看到它,后面就一直在post一些数据上去….
根据它给的密文,以及他上传的shell,编写解码demo
1 2 3 4 5 6 7 8 9 10
| <?php $post=$_POST['post']; $key=d59042be6e437849; $post=openssl_decrypt($post,"AES128", $key); $arr=explode('|',$post); $func=$arr[0]; $params=$arr[1]; var_dump($func); var_dump($params); ?>
|
http数据包320
解码结果:
1
| $path="C:/Users/shadow/Desktop/password.txt";
|
http数据包501
解码结果:
1
| $path="C:/Users/shadow/AppData/Local/Google/Chrome/User Data/Default/Cookies";
|
http数据包653
解码结果:
1
| $path="C:/Users/shadow/AppData/Roaming/Microsoft/Protect/S-1-5-21-2127750816-4215895028-2373289296-1001/6ecf76bd-1803-437e-92e6-28dd36c907aa";
|
http请求返回的数据像这样
看这请求的数据我们也能知道,这个黑客是在读取这个Chrome的cookie.
第一个数据返回的是password:p@ssw0rd
第三个数据返回的masterkey-file
第二个返回的是cookie
我们的目的是解密cookie,使用工具mimikatz可以解密.
参考文章: https://xz.aliyun.com/t/6508
https://bbs.pediy.com/thread-247634-1.htm
我们可以使用masterkey_file和password获得获得masterkey,其中masterkey的位置要和数据包中给的一样.
(3) awdSHELL-2020年安恒四月赛
这道题开题后,是一个用户上传shell,取flag的过程
现在找到用户上传的shell
跟踪一下
1
| 根据这个awdshell.php可以看到用户通过$ant经POST传入的内容一定是经过加密的密文
|
awdshell.php在上传后更名为如下:
于是我们继续跟踪流,找到这个用户后期上传到awdshell.php
的内容
在流32
经过解密exp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php $cmd = <<<EOF BTGSM8GnyYMyhWUZbk8URh+5LlbDF5BJLF+XnAAAl+C9UmZWQXlM6NZrop8EaVIqtREDq2AXijBfKObw6CdXbnrqvxnPA0x3V/h/WOieCNjfiUzNgo2Uzar6rsvlnQmFqDRakh/VZx1EbSIbVr9306Db35WtUQ/m4gIHMDt17Gw=|A6LGjeyvCNVwbWsAxDgTH5v7drLEPdD5/PUpqGwDOq+N+P1ivPL3N/Rm29tvf9XtweWcFFTZaHAorET0fb7usWqEpKdho4dZuRwrymPkaHEJ9x9mJYS146YZuvVlhn+Hdiwk1jhsQw2yQhUki5xfIYVCJKma7u7pNlsgSl7a0ys=|C/EfnM80hLqAMbSCeb8sCIVWrQhEeU8VL5c76OeFTMdiwIKlQ6w1c0TAZrqoRk5VhfFj53ilcmNeZZw0EZENrrZl8Iwr5E9oaalHtAF6NTRT5RocnSHqSgObCWz97I1J8pCGBaiIusDWx1PlUMb/Z0/KzbTSzfCdHj0mXPpBRm0=|gdloKWWMdzUyMlZLIvYGS/ePAd+8Aqqbg8y9fNf22Amt+BfzgPgmlGhJsmjRL1HN+pQ4OHNK1AOIVTmOA/FSqrnMt0FDfweX31peoocxZySu3+Yo9+FyO8idKW0nV//wfvU3UigA+MXXHd2KaDJSr/H3CFxPD5R8sBzu1BxPLBo=|JaV9bxKoXxvaapoLnhNWyQxsmPS2lH/Iz/QNOkJL6zNq+vfuzyA0lZykObOIjoeZy7Hs4E4ZV52rqdz2Kj8u5nEkUeKyB5/TcU+YGlPHzdxCxdF/LeIR5Bdk+OZyXg9lNe41AhC7nB+ILJG5rFXYmHP4MRCL2fQtJxOTLPK+KsI=|e644juHsnSn5Ee3vJytQy0g+DrEUivyhzcUka3FyapNrK+x2rw+wBjilACp7UAgXyqV87ecriIAHiOZRwFVF/PJzPQxVdYjf1UYTD85tA1hW2QXUjJ40PbDVHj7KNcz5mcXfhxf2oKVxEs8VSaV5s/oLY947i/ob9cK5OD7BRLI=|fzghKQChfhqtiF4LNyKTTt0knEpvyvLwmARGrz9/9Nzq8zooK5OL+FfWl8caiXutzEtno/y7R+WZYPIBC4C1Xw1pH2Ddmg9yH0UNeoNFnLQ2NHw/R3FqnyCjHGSa8QWBd9GW6DkvzX2dyASr/VRaO02jmXpIiBj3qH+Jybd1K/g=|FOJF7u+TBO87Qx3M00QcmXfkemu7EyUJIpxseE1/93VFbzewXknHboDDqmh5eLlrqdedw/C2oAuSKNG6nRdgqXO6y6eKAAgohWQrkUO2PHcAd5DE+DwHQvrzAHemHSygbJGp3MkXxt2acD6bRlMpLsurST/f8n8t0j1P9u4YXfA=|Bl9SXQgvZX4/2I/hztQN8fcsMvTSOgrfAmms3+2y2bnMeblIxy1k2Nbie5/A9GFrM5HgxpkoAXEa9nr1rWhVxeGr1z4kP7F7E82dDzXkkTfZYt/2DLSRoOqXVzKVomprIEZYbCeD11dT/i9wKZNDewmP4xAXkRtzgh54exH9IiI=|FujB2nTxNy/rJ8J2iA1mKovFuxFmqP5qUxuq6NQvxReD/AtcW6lNO1mzxPwI/cjPRtxG1qWnMl84DcAAOHjkiPeMHXzGDZkGDmWSChF21IAN0jYU6TPV6Ftg9TJ68x10eVBccAlJnkjyo3189xVkhglgS9cyVQxb9VlxN4oR5lI=|MLxeOXoAXDx5ks22DCxawTxLTAgGkPzL3dFZLM9tGanSTG3MXplU0gBPmiOGIhfHDWKG/a1o2aGSPhkuNGqs3Gpg986MTpPH3l/d8onRFnvKVVGOanir4TZYoYvdPXfXMv60NZrsgrZBvyabS/LixfR9CSxUlyv9ztJxbp56Mmk= EOF;
$pk = <<<EOF -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmXoXBvXeanxgl51HBm2J6HPNh TQtfb8ICioE+n0Ni0DlBFHSBprbsWYKJywVfdhJbLDCCon68uA1UYuy0yteDog3j OdweW2bscEGmeMXLQJfBHpQrg4wWoYJjD3QsKorYT6kdp1LRkuHE3PbpqvRtqO7A LzrcBi88Eu7oZaPANwIDAQAB -----END PUBLIC KEY----- EOF; $cmds = explode("|", $cmd); $pk = openssl_pkey_get_public($pk); $cmd = ''; foreach ($cmds as $value) { if (openssl_public_decrypt(base64_decode($value), $de, $pk)) { $cmd .= $de; } echo $cmd; }
|
解密后的代码中关键的主要是这两个函数
1 2 3 4 5
| function asenc($out) { @session_start(); $key=@substr(str_pad(session_id(),16,'a'),0,16); return @base64_encode(openssl_encrypt(base64_encode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA)); }
|
1 2 3 4 5 6 7 8
| function asoutput() { $output=ob_get_contents(); ob_end_clea@ini_set("display_errors", "0"); @set_time_limit(0); function asenc($out) { @session_start(); $key=@substr(str_pad(session_id(),16,'a'),0,16); return @base64_encode(openssl_encrypt(base64_encode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA));}
|
这两个函数中的$key
是截取session_id
的前16位,其中如果session_id
不够16位则通过字符a
来填充
那可见在获取数据时,返回的数据是密文。
接着我们继续往后跟踪至流36
这里除了上传代码,害传入其他的内容,base64解密后:
1 2 3 4 5
| L2Jpbi9zaA== /bin/sh
Y2QgIi92YXIvd3d3L2h0bWwvYWRtaW4vdXBsb2FkIjtscztlY2hvIFtTXTtwd2Q7ZWNobyBbRV0= cd "/var/www/html/admin/upload";ls;echo [S];pwd;echo [E]
|
上面的代码密文解密后,关键代码如下:
所有根据上述分析,返回的密文内容为91ca55dc+密文+ab213e
所以除去前后的无用字符
而密文就是服务器返回给我们的内容
根据
1
| return @base64_encode(openssl_encrypt(base64_encode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA))
|
编写exp:
1 2 3 4 5 6 7 8
| <?php $sess_id='hm3pq66843bbbrdgphntt8fmc4'; $key=@substr(str_pad($sess_id,16,'a'),0,16); $out=<<<EOF 密文 EOF
echo @base64_decode(openssl_decrypt(base64_decode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA));
|
然后跟到流38
1
| cd "/var/www/html/admin/upload";cat flag;echo [S];pwd;echo [E]
|
流38返回的结果,是flag
像分析流36一样,去解密加密的代码,找到无用字符,截取其中的密文,然后使用exp解密
1 2 3 4 5 6 7 8 9
| <?php $sess_id = 'hm3pq66843bbbrdgphntt8fmc4'; $key = @substr(str_pad($sess_id, 16, 'a'), 0, 16); $out = <<<EOF +L8pc9pJEhqPQ1cmL18eJXX9QGADkKnp8A1j7s4oX2Qo8YJNGNTbuaXu+OfynYgRewqyfLj/Wrg0rgKj/cRdO4zJMmfLfyFVB4pBRYeTetM0G/w/Px6+xI/WPlRrx/+MvK6eQyPr+xDqTX82AqiGrOYDwN94/vuGcLS7NAxhty4= EOF;
$res=@base64_decode(openssl_decrypt(base64_decode($out), 'AES-128-ECB', $key, OPENSSL_RAW_DATA)); echo base64_decode($res);
|
(4) 强网杯-miscStudy
在这里得到flag1:flag{level1_begin_and_level2_is_come
并且这里给出的其他内容是TLS对称密钥
然后将这个密钥文件导入wireshark,然后再打开流量文件
这里会抓取到一个图片文件,跟踪TLS流查看一下
http://www.qiangwangbei.com/images/4e5d47b2db53654959295bba216858932.png
根据这里的地址,去下载这个图片
然后分析一波
得到flag2:level3_start_it
三大串的
解码的结果是3600个0或1
扫描得到一个网盘链接,下载level4
这里有jphide隐写,并且有密码
爆破得到密码power123
使用工具提取一下
得到flag:level4_here_all
下载网盘文件,level5.zip,该网盘文件无法正常解压,使用bandizip
获得第五部分flag:level5_is_aaa
level6 是 3个加密文档
CRC解密后得到
1.TXT:level
2.TXT:6_is
3.TXT:ready
合起来获得flag部分 level6_isready
下一层
直接上明文攻击,得到里面三张图片
盲水印
获得flag部分; level7ishere
并获得网址 http://39.99.247.28/final_level/
下一层
假的百度,看源码,snow隐写
1
| the_misc_examaaaaaaa_!!!}
|
所有的flag
1
| flag{level1_begin_and_level2_is_comelevel3_start_itlevel4_here_alllevel5_is_aaalevel6_isreadylevel7isherethe_misc_examaaaaaaa_!!!}
|