2022蓝帽杯初赛取证复现

计算机取证

下载附件 拿到一个dmp内存镜像和一个E01计算机镜像

取证一:在内存镜像中的taqi7开机密码为

 .\volatility.exe -f .\1.dmp imageinfo
 .\volatility.exe -f .\1.dmp --profile=Win7SP1x64 hashdump

拿到taqi7开机密码的哈希值为:7f21caca5685f10d9e849cc84c340528

image-20230709203653105

NSSCTF{anxinqi}

取证二:制作该内存镜像的进程PID号为

通过搜索 我们可以知道 可以制作内存镜像的进程有:

dd命令 
Win32dd
Fmem
LIME
Magnet RAM Capture
.\volatility.exe -f .\1.dmp --profile=Win7SP1x64 pslist

在该内存所有的进程信息中 可以找到Magnet RAM Capture的进程PID为2192

NSSCTF{2192}

取证三:计算机镜像中bitlokcer分区某office文件中存在的flag值为?

首先 有内存镜像 有e01镜像 直接爆破bitlocker密码

image-20230709211136803

得到bitlocker解密密钥:368346-029557-428142-651420-492261-552431-515438-338239

image-20230709211201839

在取证大师中解密bitlocker加密分区 提取出两个加密文件 一个密码本

image-20230709211335882

使用密码本 进行字典爆破

得密码分别为287fuweiuhfiute688561

从渗透看取证.pptx中有flag

NSSCTF{b27867b66866866686866883bb43536}

取证四:TrueCrypt加密中存在的flag值为?

先用取证大师自带的内存镜像解析工具提取出TC加密容器密钥文件

image-20230709213059097

image-20230709213153459

导出密钥文件 在挂载TC加密文件

image-20230709213400070

发现一个加密zip文件 爆破出密码为:991314

image-20230709213645644

解压得flag

NSSCTF{1349934913913991394cacacacacacc}

手机取证

取证一:627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是?

在附件中有一个苹果测试 查看.exe 在里面直接搜索目标图片 并导出

627604C2-C586-48C1-AA16-FF33C3022159

查看图片信息 得到分辨率为360x360

NSSCTF{360x360}

取证二:姜总的快递单号是多少?

在给的取证测试里面直接搜索姜总 在聊天记录里面找到订单号

image-20230711203924882

NSSCTF{SF1142358694796}

网站取证

取证一:请从网站源码中找出木马文件,并提交木马连接的密码。

拿到网站源码和部分数据库文件 在解压网站源码时火绒告警

image-20230711151302327

在虚拟机中打开 找到木马文件 连接密码就是:lanmaobei666

image-20230711151439474

NSSCTF{lanmaobei666}

取证二:请提交数据库连接的明文密码

在WWW/application/database处 找到数据库密码的明文为my_encrypt() 意思是需要经过这个函数计算之后得到明文

image-20230711165231681

在application文件夹下 正好有一个encrypt文件夹 里面正是my_encrypt()函数的解密过程

<?php
function my_encrypt(){
    $str = 'P3LMJ4uCbkFJ/RarywrCvA==';
    $str = str_replace(array("/r/n", "/r", "/n"), "", $str);
    $key = 'PanGuShi';
    $iv = substr(sha1($key),0,16);
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,"",MCRYPT_MODE_CBC,"");
    mcrypt_generic_init($td, "PanGuShi", $iv);
    $decode = base64_decode($str);
    $dencrypted = mdecrypt_generic($td, $decode);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $dencrypted = trim($dencrypted);
    return $dencrypted;
}

解密过程是:

1.总体解密方法为AES解密的CBC模式

2.解密密钥为PanGuShi

3.偏移值是PanGuShi经过SHA1加密后的前16位

由此可以进行在线解密

image-20230711171506060

数据库连接的明文密码为:KBLT123

NSSCTF{KBLT123}

取证三:请提交数据库金额加密混淆使用的盐值

一点点翻源码

WWW\application\admin\model\Channelorderlist中找到盐值

    function decrypt($data, $key = 'jyzg123456')
    {
        header('Content-type:text/html;charset=utf-8');
        $key = md5($key);
        $x = 0;
        $data = base64_decode($data);
        $len = mb_strlen($data);
        $l = mb_strlen($key);
        $char = '';
        $str = '';
        for ($i = 0; $i < $len; $i++) {
            if ($x == $l) {
                $x = 0;
            }
            $char .= mb_substr($key, $x, 1);
            $x++;
        }
        for ($i = 0; $i < $len; $i++) {
            if (ord(mb_substr($data, $i, 1)) < ord(mb_substr($char, $i, 1))) {
                $str .= chr((ord(mb_substr($data, $i, 1)) + 256) - ord(mb_substr($char, $i, 1)));
            } else {
                $str .= chr(ord(mb_substr($data, $i, 1)) - ord(mb_substr($char, $i, 1)));
            }
        }
        return $str;
    }

NSSCTF{jyzg123456}

取证四:请计算张宝在北京时间2022-04-02 00:00:00-2022-04-18 23:59:59累计转账给王子豪多少RMB?

在数据库中提取2到18号的交易记录 2到18号每天GG币和RMB的汇率

翻找数据库 发现 张宝的用户id为3 王子豪的用户id为5

在交易记录的倒数第三位和倒数第二位分别为收款人和付款人 所以匹配含有数据(5,3)的交易记录 再将每天GG币的数量 脱盐解密 乘上汇率 汇总就是转账的RMB

import base64
import hashlib

def decrypt(data):
    key  = hashlib.md5()
    key.update(b'jyzg123456')
    key = key.hexdigest()
    x = 0
    data = base64.b64decode(data)
    Len = len(data)
    l = len(key)
    char = ""
    str = ""
    for i in range(Len):
        if(x==l):
            x = 0
        char+=key[x:x+1]
        x+=1
    i =0
    for i in range(Len):
        if(ord(data[i:i+1])<ord(char[i:i+1])):
            str+=chr(ord(data[i:i+1]+256)-ord(char[i:i+1]))
        else:
            str+=chr(ord(data[i:i+1])-ord(char[i:i+1]))
    return str
data = ""
huilv = [0,0,0.04,0.06,0.05,0.07,0.10,0.15,0.17,0.23,0.22,0.25,0.29,0.20,0.28,0.33,0.35,0.35,0.37]

money = 0
Money = 0
with open("./flag.txt","r",encoding='utf-8') as file:
    data = file.readlines()

for line in data:
    if(int(line.split(',')[5])==5 and int(line.split(',')[6])==3):
        Data = int(line.split(',')[4][10:12])
        money = line.split(',')[7][2:10]
        tmpmoney = huilv[Data]*int(decrypt(money))
        Money += tmpmoney
        print(Data,huilv[Data],decrypt(money),tmpmoney,line.split(',')[5],line.split(',')[6])
print("最后金额",Money)

NSSCTF{15758353.76}

程序取证

取证一:本程序包名是?

image-20230712215022357

NSSCTF{exec.azj.kny.d.c}

取证二:本程序的入口是?

image-20230712220703890

Android程序的入口就是Main Activity函数

package的值就是程序入口 记得后面加上MainActivity

NSSCTF{minmtta.hemjcbm.ahibyws.MainActivity}

取证三:本程序的服务器地址的密文是?

image-20230716125210431

直接找到服务器地址的密文:

NSSCTF{aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6}

取证四:本程序实现安全检测的类的名称是:

全局搜索 “安全”

image-20230716124708919

这里引用了一个d.a.a.c.a.a()函数

image-20230716151334870

找到该函数 发现定义的类就是a

NSSCTF{a}