Network-Traffic-Analysis

前言

流量分析,重点在于对流量数据的提取,工具基本就是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

1572584591707

然后从这条icmp报文以后的内容中包含flag的一个字符。

1572584666124

全部拼完,会得到flag

进阶题

抓住一只苍蝇

题目给的hint是抓住一只苍蝇…..

过滤

1
http contains "苍蝇"

猜测是在发送邮件,并且发送了压缩包 fly.rar

过滤数据包

1
http.requests.post

第一个数据包调用了函数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.既然是盲注.那么最后黑客总是要注出点东西的.直接看到最后面

1573717977085

发现他在注数据库中的passwd还有url

passwd:bkis

url:t.cn/Ai8PhqSb

访问这个百度网盘,获得flag.zip压缩包,并且我们导出HTTP对象,发现一个readme.7z,解压后有一个readme.txt

1573718847926

而且flag.zip中有一个readme.txt,尝试使用明文攻击.

使用7z对readme.txt进行压缩

1573719256684

(2) 360复赛流量分析题

第19 条数据

1
2
3
<?php

?>

这段代码,是传了一个木马上去,然后通过一个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

image-20200427080617114

跟踪一下

image-20200427080734369

1
根据这个awdshell.php可以看到用户通过$ant经POST传入的内容一定是经过加密的密文

awdshell.php在上传后更名为如下:

image-20200427081453102

于是我们继续跟踪流,找到这个用户后期上传到awdshell.php的内容

在流32

image-20200427081608528

经过解密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;
}

//eval($cmd);

image-20200427081713478

image-20200427081851255

解密后的代码中关键的主要是这两个函数

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

image-20200427083134821

这里除了上传代码,害传入其他的内容,base64解密后:

1
2
3
4
5
L2Jpbi9zaA==
/bin/sh

Y2QgIi92YXIvd3d3L2h0bWwvYWRtaW4vdXBsb2FkIjtscztlY2hvIFtTXTtwd2Q7ZWNobyBbRV0=
cd "/var/www/html/admin/upload";ls;echo [S];pwd;echo [E]

上面的代码密文解密后,关键代码如下:

image-20200427083452145

所有根据上述分析,返回的密文内容为91ca55dc+密文+ab213e

所以除去前后的无用字符

image-20200427083907739

而密文就是服务器返回给我们的内容

根据

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

image-20200427084737854

1
cd "/var/www/html/admin/upload";cat flag;echo [S];pwd;echo [E]

流38返回的结果,是flag

像分析流36一样,去解密加密的代码,找到无用字符,截取其中的密文,然后使用exp解密

image-20200427085119845

image-20200427085746945

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);

image-20200427090240028

(4) 强网杯-miscStudy

image-20200823221245848

image-20200823221649029

在这里得到flag1:flag{level1_begin_and_level2_is_come

并且这里给出的其他内容是TLS对称密钥

然后将这个密钥文件导入wireshark,然后再打开流量文件

image-20200823230742716

这里会抓取到一个图片文件,跟踪TLS流查看一下

image-20200823230513326

http://www.qiangwangbei.com/images/4e5d47b2db53654959295bba216858932.png

image-20200823232021195

根据这里的地址,去下载这个图片

然后分析一波

image-20200823232932975

1
bGV2ZWwzX3N0YXJ0X2l0

image-20200823232910626

得到flag2:level3_start_it

三大串的

image-20200823234343152

解码的结果是3600个0或1

img

image-20200823234858958

扫描得到一个网盘链接,下载level4

这里有jphide隐写,并且有密码

image-20200824000434461

爆破得到密码power123

使用工具提取一下

image-20200824002544270

得到flag:level4_here_all

下载网盘文件,level5.zip,该网盘文件无法正常解压,使用bandizip

image-20200824003309359

获得第五部分flag:level5_is_aaa

level6 是 3个加密文档

image-20200824003521649

CRC解密后得到

1.TXT:level

2.TXT:6_is

3.TXT:ready

合起来获得flag部分 level6_isready

下一层

image-20200824004243164

直接上明文攻击,得到里面三张图片

image-20200824004459612

盲水印

image-20200824004530524

获得flag部分; level7ishere

并获得网址 http://39.99.247.28/final_level/

下一层

image-20200824004610584

假的百度,看源码,snow隐写

image-20200824004723756

image-20200824005031946

1
the_misc_examaaaaaaa_!!!}

所有的flag

1
flag{level1_begin_and_level2_is_comelevel3_start_itlevel4_here_alllevel5_is_aaalevel6_isreadylevel7isherethe_misc_examaaaaaaa_!!!}
Author: 我是小吴啦
Link: http://yoursite.com/2020/03/26/Network-Traffic-Analysis/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.