2024龙信杯

用到的部分之前没介绍过的小工具可以在WXjzcccc/WXjzc-tool (github.com)中找到

案情

近期,某公安机关接到受害人报案:通过微信添加认识一位相亲中介客服,客服邀约其与“相亲”对象进行选妃,受害人上钩后,整个过程被涉案团伙录音录像,同时,该客服以有更多的对象可供挑选为由,引导受害人下载其事先制作好的木马APP,受害人安装该APP后,嫌疑人利用录制的视频和受害人的通讯录做要挟,从而实施多次诈骗。最终受害人不堪重负,选择报案

手机

1.分析手机检材,请问此手机共通过adb连接过几个设备?[标准格式:3]

文件里一行一个,xml文件里还会有上次连接时间,但是文件名是temp,还是不去看了

结果为2

2.分析手机检材,机主参加考试的时间是什么时候?[标准格式:2024-06-17]

小米便签数据库/data/com.miui.notes/databases/note.db

当天是周一,下周五就是8月23,不过从创建时间来看的话,时间就差得很多了,但是你又不知道他一开始写的啥,还是按修改时间算吧

结果为2024-08-23

3.分析手机检材,请问手机的蓝牙Mac地址是多少?[标准格式:12:12:12:12:12:12]

/misc/bluedroid/bt_config.conf

结果为48:87:59:76:21:0f

4.分析手机检材,请问压缩包加密软件共加密过几份文件?[标准格式:3]

手机中有一个FileCompress软件,data目录和Android/data目录都没有东西,sdcard目录下有一个FileCompress目录

都是需要密码的

找一下软件目录

反编译拿到密码1!8Da9Re5it2b3a.

结果为6

5.分析手机检材,请问机主的另外一个155的手机号码是多少?[标准格式:15555000555]

在上述的mm.txt中,解压后可以得到手机号

结果为15599555555

6.分析手机检材,其手机存在一个加密容器,请问其容器密码是多少。[标准格式:abc123]

重要.txt中。解压后可以得到容器密码d7Avsd!Y]u}J8i(1bnDD@<-o和服务器密码M6gNFerD8YYu3lq

结果为d7Avsd!Y]u}J8i(1bnDD@<-o

7.分析手机检材,接上问,其容器中存在一份成员名单,嫌疑人曾经误触导致表格中的一个成员姓名被错误修改,请确认这个成员的原始正确姓名?[标准格式:张三]

简单找一下容器

图片里有一个表格

import pandas as pd

df = pd.read_excel(r"名单数据.xlsx",sheet_name='Worksheet')

names = df['姓名'].tolist()
agents = df['邀请人'].tolist()
for agent in agents:
    if agent not in names:
        print(agent)
#陆陆

找到对应手机号

结果为陆俊梅

8.分析手机检材,接上题,请确认该成员的对应的最高代理人是谁(不考虑总部)?[标准格式:张三]

总部没有上级,上级是空,这样是多树结构,我们给这些总部设置上级为0,然后再添加一行数据,用来计算层级

结果为刘珏兰

9.分析手机检材,请确认在该组织中,最高层级的层次是多少?(从总部开始算第一级)[标准格式:10]

结果为12

10.分析手机检材,请问第二层级(从总部开始算第一级)人员最多的人是多少人?[标准格式:100]

问的应该是第二层的人,下线人数最多的是多少人,不知道包不包含第二层的

或者就是单纯问第二层级的直接下线?那样最多的是13503429521这个账号,有60

结果为106460

11.分析手机检材,机主共开启了几款APP应用分身?[标准格式:3]

手机里1个分身应用

查看其数据库fenshen.db

结果为2

12.分析手机检材,请问机主现在安装了几款即时通讯软件(微博除外)?[标准格式:1]

虚拟机里2个,qq和连信,手机里2个,微信和默往

结果为4

13.分析手机检材,请问勒索机主的账号是多少(非微信ID)?[标准格式:AB123CD45]

微信解密,这个一眼就是默认的1234567890ABCDEF,具体看之前的文章

但是这里没有sp目录让你去找uin,其实在files/mmkv/system_config_prefs中是有的

如果这些文件里都没有,那么可以花些时间爆破uin,数据目录哈希是由mm+uin计算出来的

from hashlib import md5


def compute_md5(text):
    _md5 = md5()
    _md5.update(("mm"+text).encode('utf-8'))
    return _md5.hexdigest()
target_md5 = "a0b534ccdb7db6ab0acbec2945cb2748"
for i in range(100000000,2147483647):
    if compute_md5(str(i)) == target_md5:
        print(i)
        break
    if i % 100000000 == 0:
        print(str(i)+'...')
#100000000...
#200000000...
#300000000...
#326674411

换个地方后到了默往里

找到userid

解密数据库

找到聊天记录,只是不知道到底要哪个

结果为183604266445413171212233444555

14.分析手机检材,接上问,请问机主通过此应用共删除了多少条聊天记录 ?[标准格式:2]

这是软删除,实际没删,app不显示

结果为1

15.分析手机检材,请问会盗取手机信息的APP应用包名是什么?[标准格式:com.lx.tt]

微信中发送了一个app,过滤一下拿到文件

结果为com.lxlxlx.luoliao

16.接上题,请问该软件作者预留的座机号码是多少?[标准格式:40088855555]

需要解密

结果为40085222666

17.接上题,恶意程序偷取数据的收件邮箱地址的gmail邮箱是多少?[标准格式:lx@gmail.com]

这边定义了邮件的目标地址

之前一堆里可以解出gmail邮箱

结果为1304567895@gmail.com

18.接上题,恶意程序偷取数据的发件邮箱地址是多少?[标准格式:lx@gmail.com]

结果为temp1234@gmail.com

19.接上题,恶意程序偷取数据的发件邮箱密码是多少?[标准格式:abc123]

结果为qwer123456

20.接上题,恶意程序定义收发件的地址函数是什么?[标准格式:a]

结果为b

计算机

1.分析计算机检材,嫌疑人在将其侵公数据出售前在Pycharm中进行了AES加密,用于加密的key是多少?[标准格式:1A23456ABCD]

efs加密了,仿真

结果为65B2564BG89F16G9

2.分析计算机检材,身份证为"371963195112051505"这个人的手机号码是多少?[标准格式:13013524420]

解密部分代码

with open(input_file, "r") as f_in, open(output_file, "w") as f_out:
    lines = f_in.readlines()
    for line in lines:
        parts = line.strip().split(',')
        index = parts[0]
        f_out.write(index + ",")
        decrypted_parts = []
        for part in parts[1:]:
            encrypted_part = bytes.fromhex(part)
            decrypted_part = aes_decrypt(encrypted_part, key, iv)
            decrypted_parts.append(decrypted_part)
        f_out.write(",".join(decrypted_parts) + "\n")

结果为15075547510

3.分析计算机检材,对解密后的身份证数据列进行单列去重操作,重复的身份证号码数量是多少?(身份证不甄别真假)[标准格式:100]

没看到重复的

import pandas as pd

df = pd.read_csv('decrypted_data.txt',header=None,names=['序号','姓名','身份证','手机号','性别'],encoding='gbk')
print(len(df['身份证'])-len(df['身份证'].unique()))
男性数量 = 0
异常数量 = 0
for index,row in df.iterrows():
    if int(str(row['身份证'])[-2]) % 2 == 1:
        男性数量 += 1
    if row['性别'] == '男' and int(str(row['身份证'])[-2]) % 2 == 0:
        异常数量 += 1
    elif row['性别'] == '女' and int(str(row['身份证'])[-2]) % 2 == 1:
        异常数量 += 1
print(男性数量,异常数量)

结果为0

4.分析计算机检材,接上题,根据身份证号码(第17位)分析性别,男性的数据是多少条?[标准格式:100]

int(str(row['身份证'])[-2]) % 2 == 1

结果为5001714

5.分析计算机检材,接上题,对解密后的数据文件进行分析,甄别身份证号码性别值与标识性别不一致的数量是多少?[标准格式:100]

if row['性别'] == '男' and int(str(row['身份证'])[-2]) % 2 == 0:
        异常数量 += 1
    elif row['性别'] == '女' and int(str(row['身份证'])[-2]) % 2 == 1:
        异常数量 += 1

结果为5001185

6.分析计算机检材,计算机中存在的“VPN”工具版本是多少?[标准格式:1.1]

结果为4.4

7.分析计算机检材,计算机中存在的“VPN”节点订阅地址是什么?标准格式:[http://xxx.xx/x/xxx]

结果为https://paste.ee/d/4eIzU

8.分析计算机检材,eduwcry压缩包文件的解压密码是什么?[标准格式:abcabc]

输入法记录里。。唉手工找一辈子

就在这些bin里面,后续看看能不能写个脚本解析一下

结果为yasuomima

9.分析计算机检材,接上题,请问恶意程序释放压缩包的md5值是多少。[标准格式:全小写]

7z可以直接打开,那么里面就是含了一个压缩包的

wsl突然挂了,foremost提取的话会找不到文件尾,导致多提数据,还是上52拿了resourcehacker

结果为b576ada3366908875e5ce4cb3da6153a

10.分析计算机检材,接上题,请问恶意程序记录的洋葱浏览器下载地址是多少?标准格式:[http://xxx.xxx/xxx/xxx.zip]

本体exe中是没找到,想在压缩包里找,但是压缩包有密码

虚拟机跑一下把资源弄出来,在c.wnry中找到地址

结果为https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip

*11.分析计算机检材,接上题,请问恶意程序解密了t.wnry后该dll的md5值是多少。[标准格式:全小写]

在这里处理t.wnry,这个函数应该就是解密文件并将解密后的dll加载到内存当中的

但是呢看不太懂,也没有搞专门的逆向虚拟机,先不动调了

*12.分析计算机检材,接上题,恶意程序运行起来后第一个循环调用了几次taskkill.exe。[标准格式:2]

应该是这边开始搞的,但是应该要先拿到上面的dll

*13.分析计算机检材,接上题,请问@WanaDecryptor@.exe.lnk文件是通过什么函数创建的。[标准格式:Aabcdef]

 

*14.分析计算机检材,接上题,恶意程序修改系统桌面壁纸是在哪个函数实现的[标准格式:sub_xxx]

 

15.分析计算机检材,VeraCrypt加密容器的密码是什么?[标准格式:abc]

有个dd文件,实际是压缩包

结果为qwertyuiop1

16.分析计算机检材,其中存在一个苹果手机备份包,手机备份包的密码是什么?[标准格式:12345]

结果为75966

17.分析计算机检材,接上题,机主实际篡改多少条微信数据?[标准格式:1]

根据火眼解析消息碎片和聊天记录

结果为3

18.分析计算机检材,接上题,机主共存款了多少金额?[标准格式:10万]

小西米语音APP的im5db数据库

结果为98万

19.分析计算机检材,在手机模拟器中勒索apk软件的sha256值是什么?[标准格式:全小写]

夜神备份

找到app,很明显是中间那个,另外两个是城信和b站

结果为340BD211955996C5D62BBDE94A0BED4EB3A7965B23AF52114991BCA02346928E

20.分析计算机检材,接上题,请问勒索apk软件的解锁密码是什么?[标准格式:qwer.com]

结果为anzhuo.com

流量分析

1.分析流量包检材,给出管理员对web环境进行管理的工具名。(标准格式:小皮)

后面的webshell做完后可以发现是宝塔面板/www/wwwroot/www/server这样的特征,个人觉得应该不是WordPress这种,给的答案格式应该也是暗示

结果为宝塔

2.分析流量包检材,给出攻击者的ip地址是多少。(标准格式:127.0.0.1)

目录扫描

结果为192.168.209.135

3.分析流量包检材,给出攻击者爆破出的网站非管理员用户名是。(标准格式:admin)

登录的太多,看进行操作的流量

然后去验证一下,确实是存在的账号

结果为saber

4.分析流量包检材,攻击者进行目录扫描得到的具有后门的页面url路径为。(标准格式:/abc.html)

up_load.phpup_load.html两个,查看一下实际的返回可以发现是后者

结果为/up_load.html

5.分析流量包检材,攻击者通过修改请求包中的哪个字段导致恶意文件成功上传。(标准格式:test-type)

修改了Content-Type后成功上传

结果为Content-Type

6.分析流量包检材,攻击者上传成功的恶意文件, 该文件的临时存放路径是。(标准格式:/abc/edf)

结果为/tmp/php7Ndiwg

7.分析流量包检材,服务器php配置文件的存放位置(标准格式:/www/sev/php.ini)

这是webshell

目标是有openssl的,所以用的aes加密

解密这个流量

得到返回的数据

将basicInfo解码后另存为html

这样就可以拿到phpinfo

结果为/www/server/php/82/etc/php.ini

8.分析流量包检材,被攻击的web环境其数据库密码是。(标准格式:qwer1234)

简单写了一下流量解析(Byxs20yyds)

import pyshark
import FlowAnalyzer #Byxs20yyds
from Crypto.Cipher import AES
from base64 import b64decode
import re
from rich import print


capture = pyshark.FileCapture("F:\\BaiduNetdiskDownload\\2024龙信杯\\流量包检材.pcapng", display_filter="http")

fa = FlowAnalyzer.FlowAnalyzer("F:\\BaiduNetdiskDownload\\2024龙信杯\\1.json")
# 注释的这一部分用于一开始生成可以解析的json文件
# fa.get_tshark_path("C:\Program Files\Wireshark\tshark.exe")
# fa.extract_json_file(file_name="F:\\BaiduNetdiskDownload\\2024龙信杯\\流量包检材.pcapng",
#                      tshark_path="C:\\Program Files\\Wireshark\\tshark.exe",
#                      display_filter="http",
#                      tshark_work_dir="F:\\BaiduNetdiskDownload\\2024龙信杯",
#                      json_work_path="F:\\BaiduNetdiskDownload\\2024龙信杯\\1.json")

def decrypt(cipher_text):
    key = "e45e329feb5d925b".encode()
    iv = bytearray.fromhex("00000000000000000000000000000000")
    enc_data = b64decode(cipher_text)
    aes = AES.new(key, AES.MODE_CBC, iv)
    msg = aes.decrypt(enc_data).decode()
    return msg

def get_cmd(b64str):
    pattern = r"base64_decode\('(.*?)\)\);"
    match = re.findall(pattern, b64str)
    b64 = match[0]
    cmd_str = b64decode(b64).decode()
    cmd_pattern = r'\$cmd="(.*?)";'
    cmd_match = re.findall(cmd_pattern, cmd_str)
    if cmd_match:
        return b64decode(cmd_match[0]).decode()
    else:
        return None

def get_msg(response_data):
    pattern = r'"msg":"(.*?)"\}'
    match = re.findall(pattern, response_data)
    if match:
        return b64decode(match[0]).decode()
    else:
        return None

requests, responses = fa.parse_http_json()
keys = []
keys.extend(requests.keys())
keys.extend(responses.keys())
keys.sort()
for key in keys:
    if key in requests.keys():
        request = requests[key]
        if request.header.__contains__(b"POST /uploaded_img/cont.php HTTP/1.1\r\n"):
            file_data = request.file_data
            msg = decrypt(file_data)
            cmd = get_cmd(msg)
            print(f"[blue]{cmd=}")

    if key in responses.keys():
        response = responses[key]
        file_data = response.file_data
        try:
            msg = decrypt(file_data)
            print(f"[green]response={get_msg(msg)}")
        except Exception as e:
            pass

结果为X847Z3QzF1a6MHjR

9.分析流量包检材,服务器管理存放临时登录密码的位置。(标准格式:/tmp/pass)

结果为/tmp/tmppass

10.分析流量包检材,黑客获取的高权限主机的登录密码。(标准格式:qwer1234)

结果为passwd!@#

服务器分析

1.分析服务器检材,服务器会做登录密码验证,该登录验证文件位置在?[标准格式:/xxx/xxx/xxx.xxx]

看一下自启动脚本,可以找到一个,判断密码是否正确的,如果和之前保存的密码不一致(也就是仿真改了密码),就会删掉一些东西,比如docker、历史命令等,所以要用手机中找到的密码M6gNFerD8YYu3lq来登录,不绕密(不过这个密码好像不对),或者先进单用户模式删掉这个脚本

结果为/etc/profile.d/check-system.sh

2.分析服务器检材,服务器ssh端口是多少?[标准格式:1234]

结果为12320

3.分析服务器检材,服务器docker内有多少个镜像。[标准格式:100]

删掉验证脚本

结果为7

4.分析服务器检材,服务器内sqlserver默认账号的密码是?[标准格式:xxx]

docker inspect 39

结果为<i7uFtnkTv8>

5.分析服务器检材,服务器内sqlserver存放了阿里云存储下载地址,该下载地址是?标准格式:[https://xxx]

把这几个数据库容器都启动一下

连接一下即可

结果为https://xinfenfa.oss-accelerate.aliyuncs.com

6.分析服务器检材,服务器内sqlserver内“cmf_user_action_log”表,表内存在的用户操作日志,一共操作次数是多少?[标准格式:100]

表里有一个counts字段用于表示操作次数

结果为99684318

7.分析服务器检材,该服务器正在使用的数据库的持久化目录是什么?[标准格式:/xxx/xxx]

找到项目路径

项目使用的是mongodb,查看配置docker inspect d4

结果为/data/mongo

8.分析服务器检材,该网站后台正在使用的数据库有多少个集合?[标准格式:100]

连接时验证数据库要为admin

结果为13

9.分析服务器检材,该网站的后台登录地址是?[标准格式:/xxx/xxx.xxx 全小写,不加域名]

网站无法正常运行,这是因为缺少了mongo的依赖

再次通过日志可以发现,其实以前用的是mysql

连接到mysql后发现这个库并没有任何表

安装依赖可能行不通,因为这明显是为了出题故意改的,实际代码里应该没有做mongo的改动,所以还是把数据转回mysql比较好

导入完成后改一下配置文件

这样直接访问/appmanager就可以进入后台

这和模块名是互相印证的,按照常规的thinkphp框架,这个appmanager应该是admin,常规访问/admin跳转后台

访问后回跳转到完整路径

结果为/appmanager/common/login.html

10.分析服务器检材,该网站后台使用的管理员加密算法是?[标准格式:全大写]

/opt/bl.dsnbbaj686.fit/www/app/appmanager/controller/Admin.php找到加密函数为encryptpass,该方法在/opt/bl.dsnbbaj686.fit/www/app/appmanager/common.php中定义

结果为BCRYPT

11.分析服务器检材,该网站最早使用超级管理员进行删除管理员操作的IP地址是?[标准格式:x.x.x.x]

知道加密方式,直接生成密码替换登录

各种问题。。

直接翻数据库

结果为117.132.191.203

12.分析服务器检材,该网站后台上传过sha256值为“b204ad1f475c7716daab9afb5f8d61815c508f2a2b1539bc1f42fe2f212b30d1”的压缩包文件,该文件内的账单交易订单号是多少?[标准格式:123456]

找到上传路径

下载下来发现存在密码,注释带了密码组成

暴力

得到密码MTj02

是一张图片

结果为20240321000000005443369778283185

13.分析服务器检材,该网站存在网站数据库备份功能,该功能的接口地址是?[标准格式:/xxx/xxx 全小写,不加域名]

按理说应该加上export

结果为/appmanager/databackup

*14.分析服务器检材,该网站存放银行卡信息数据表中,其中信息数量前十的公司对应旗下visa银行卡一共有多少金额?[标准格式:100.00]

很难理解这里面的意思,因为这个数据库实际上并不完整,少了几张表,不知道这个信息和短信是不是有什么关联

结果为21701599.63

*15.分析服务器检材,该网站在2023年二月一共获取了多少条通信记录?[标准标准格式:100]

只能这么理解??我是真的怀疑哪里存了一个数据库备份,但是没有找到

结果为2879

16.分析服务器检材,该网站的一条管理员信息存在数据篡改,请分析是哪个管理员信息遭到篡改,该管理员用户名是?[标准格式:ABCDE] 2)

只找到一个时间有异常的

结果为xYpMLuROhNl

posted @ 2024-10-06 22:52  WXjzc  阅读(1458)  评论(12编辑  收藏  举报