数据集抓取整体思路

datacon21比赛的实验服务器使用了阿里云,访问界面和主机之间的ssh信道通过websocket建立,通过抓包分析即可得到在web ssh终端的数据。通过这种方式可以把所有数据集中的数据打印到终端,再抓包还原。

提权

https://vk9-sec.com/apt-get-privilege-escalation/

制作数据

为了解决二进制不能打印的问题,使用了base64编码的方式打印。

思路是分文件夹压缩,之后base64编码为可打印字符,并在base64编码后文本文件的头尾添加标识。

标识符包括分隔符”:”,定界符F0F0F0,文件名,行号。添加标识的原因是ssh传输中还需要打印控制字符,以及文件传输过大可能会遇到各种网络问题,添加标识会方便数据还原和调试。

for f in ls /home/datacon/supplychain/dataset ; do tar -czvf /home/datacon/disk/sc/$f.tar.gz /home/datacon/supplychain/dataset/$f ;done

for f in ls /home/datacon/supplychain/dataset ; do base64 sc/$f.tar.gz -w 1000 | nl -s “:” -w 10 -n “rz” | sed “s/^/:F0F0F0:$f:/“ | sed “s/$/:/“ > sct/$f.txt ;done

image2021-10-12_22-25-18

Fiddle

设置代理抓Websocket的包。

添加自定义规则

static function OnWebSocketMessage(oMsg: WebSocketMessage) {
// Log Message to the LOG tab
Utilities.WriteArrayToFile(“E:\TEMP\datacon21\“+oMsg.ID,oMsg.PayloadAsBytes());

​ //把传输的内容存储到E:\TEMP\datacon21{消息ID}。
}

危险函数处理

脚本:

idapython批量脚本危险函数扫描

首先用ida命令行模式实现ida差距批量跑二进制文件

image-20211027151956014

危险函数扫描,用ida-python数据交叉和和代码交叉去遍历搜索全文的危险函数调用

image-20211027152154471

跑完后的结果:

image-20211027152321164

对结果进行清洗脚本(还需要手动在txt中替换掉一些):

image-20211027152516855

改进:用SaTC去跑不同的固件

image-20211027154052745

得到部分命令注入有关的危险函数地址

image-20211027154300951

image-20211027154557847

用SaTC跑的过程

image-20211027155715171