前言

周末没事参加了一个应急响应比赛,学到了不少东西,尤其是哥斯拉的流量解密,收获满满。

1、日志流量

日志流量-1

新手运维小王的Geoserver遭到了攻击:黑客疑似删除了webshell后门,小王找到了可能是攻击痕迹的文件但不一定是正确的,请帮他排查一下。

这个我和其他人的思路还不一样,别人都是D盾扫描发现了solarwebapache-tomcat-9.0.96workCatalinalocalhostROOTorgapachejspb_jsp.java这个文件,里面可以直接查看,但是我当时没想到用D盾扫,我就直接看了根目录下的b_jsp.class,里面虽然是乱码,但是能看到内容:

ZiFsXmEqZ3tBN2I0X1g5ektfMnY4Tl93TDVxNH0=

把这串base64解码一下,得到flag:f!l^a*g{A7b4_X9zK_2v8N_wL5q4}

日志流量-2

新手运维小王的Geoserver遭到了攻击,小王拿到了当时被入侵时的流量,其中一个IP有访问webshell的流量,已提取部分放在了两个pcapng中了。请帮他解密该流量。

这个比赛时候彻底没办法,没做过加密流量的分析题,结束后和大佬交流才知道哥斯拉的加密流量只要有key和加密方式是可以解密的。

首先查看b_jsp.java文件:

String code='ZiFsXmEqZ3tBN2I0X1g5ektfMnY4Tl93TDVxNH0='; String xc='a2550eeab0724a69'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; }}

这已经很清楚了,AES加密,key也有,直接解密。

先打开test.pcapng,找到HTTP流量包,追踪流:

这时候看到的流量包都是加密的,我们点右下角的ASCII,选择原始数据,把加密的数据复制出来。

找一个AES解密的工具,这里我用的是CyberChef,加密模式默认是ECB,key是前边找到的:a2550eeab0724a69

这里有个大坑,一定要选Gunzip,不然解出来是乱码,这里卡了我很久,后来查了别人的资料知道了:哥斯拉传输数据时使用Gunzip压缩。

test.pcapng看完了,没有什么东西,

然后看wire.pcapng,一个一个分析,最终在7159号包里找到一点端倪:

解密的内容里有个flag.txt

接着往下找,终于到找了7230号包里有:13802ecf6c27bae79280d53af802fa10cdfa869f6ee62a1c4ec91d71e798f9cae2e288a58482e26211814e61e05f5e04868d5dca5edf1fde7370e2ab54cc47e7

解密得到flag:flag{sA4hP_89dFh_x09tY_lL4SI4}

日志流量-3

新手运维小王的Geoserver遭到了攻击:小王拿到了当时被入侵时的流量,黑客疑似通过webshell上传了文件,请看看里面是什么。

同上一个题的方法,一个一个流量包分析,终于在7410号流量包中找到了:

解密看到里面有一个flag.pdf,那么直接点击保存按钮把这个文件保存下来,命个名:

打开flag.pdf文件,即可看到flag:flag{dD7g_jk90_jnVm_aPkcs}

2、内存取证

内存取证-1

请找到rdp连接的跳板地址,flag格式 flag{1.1.1.1}

内存取证我用的是volatility,先用imageinfo查看一下镜像的信息:

那么开始找rdp连接的跳板地址,其实就是找3389端口外联的IP地址:这里用netscan

很清楚了,flag{192.168.60.220}

内存取证-2

请找到攻击者下载黑客工具的IP地址

这个其实有几种方法,我是通过历史命令找到的:cmdscan

2024第一届Solar杯应急响应挑战赛-日志流量和内存取证wp

还有人通过外联地址,好像也能找到这个IP,flag就是flag{155.94.204.67}

内存取证-3

攻击者获取的“FusionManager节点操作系统帐户(业务帐户)”的密码是什么

首先从前面的cmd历史命令中已经看到了攻击者执行了type pass.txt,判断就是从这里获取的密码,那就查看文件列表:filescan,因为输出内容比较长,命令行显示不全,所以直接把结果直接导入到文件中:

然后搜索一下,找到了pass.txt,那就把这个文件导出来:

执行命令:volatility_2.6_win64_standalone.exe -f SERVER-2008-20241220-162057.raw --profil e=Win7SP1x64 dumpfiles -Q 0x000000007e4cedd0 -D ./,导出后查看文件内容:

看到系统帐户(业务帐户)的密码为:GalaxManager_2012,flag就是:flag{GalaxManager_2012}

内存取证-4

请找到攻击者创建的用户

那这个其实查看所有账户的hash就可以了:hashdump


要么是Testuser,要么是ASP.NET,提交后发现是:flag{ASP.NET}

内存取证-5

请找到攻击者利用跳板rdp登录的时间

这个题是真的坑啊,做题时可以肯定找的是对的,但是怎么提交都不对。

首先查看所有进程,pslist,然后就可以锁定rdpclip这个进程了,看看这个进程的创建时间即可:

确定时间就是:2024-12-20 16:15:34,然后怎么提交怎么不对,结束之后才听到别人说,UTC+0000是零时区,我们用的是北京时间,是东八区,就是UTC+08:00。所以要把这个时间加上8小时,也就是:2024-12-20 00:15:34,最后flag就是:flag{2024/12/21 00:15:34}

内存取证-6

请找到攻击者创建的用户的密码哈希值

那这个和第四题是一样的了,hashdump,然后提交用户ASP.NET的密码哈希值:

ASP.NET:1001:aad3b435b51404eeaad3b435b51404ee:5ffe97489cbec1e08d0c6339ec39416d:::

解释一下这几个字段:

用户名称为:ASP.NET
RID为:1001
    RID 是 Windows 安全标识符(SID)的一部分,SID 是用于唯一标识用户、组、计算机账户等安全主体的一个可变长度的数值。
    Administrator 账户:RID 通常为 500,这是系统安装时默认创建的具有最高权限的管理员账户的 RID。
    Guest 账户:RID 一般为 501,是供临时访问系统的用户使用的账户,默认权限较低。
    Domain Admins 组:RID 为 512,该组中的成员在域环境中具有对整个域的管理权限。
    Domain Users 组:RID 为 513,是域中所有普通用户账户所属的组,默认具有基本的用户权限。
LM-HASH值为:aad3b435b51404eeaad3b435b51404ee
NT-HASH值为:5ffe97489cbec1e08d0c6339ec39416d
LM-HASH 和 NT-HASH 都是 Windows 操作系统中用于存储和验证用户密码的哈希机制,但它们在算法、安全性、格式等方面存在诸多不同。

那么这个flag就是:flag{5ffe97489cbec1e08d0c6339ec39416d}