NoPasswd
下载得到附件attachmen.doc文件,用office2john尝试爆破发现失败,最后查看属性发现可疑点
宏孩儿让我想到了宏加密,在比赛的时候用的查看宏代码的应用要钱,所以当时没出,现在发现了一个可以免费查看宏代码的工具oletools然后就可以进行分析了。
1 2 3 4 5 6 7
| oleid:分析OLE文件以检测通常在恶意文件中发现的特定特征。 olevba:从MS Office文档(OLE和OpenXML)中提取和分析VBA Macro源代码。 MacroRaptor:检测恶意的VBA宏 msodde:检测并从MS Office文档,RTF和CSV中提取DDE / DDEAUTO链接 pyxswf:检测,提取和分析可能嵌入在MS Office文档(例如Word,Excel)和RTF等文件中的Flash对象(SWF),这对于恶意软件分析特别有用。 oleobj:从OLE文件中提取嵌入式对象。 rtfobj:从RTF文件中提取嵌入式对象。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Sub XOREncryptFile() Dim numbers(8) As Integer
numbers(0) = 19 numbers(1) = 71 numbers(2) = 122 numbers(3) = 99 numbers(4) = 65 numbers(5) = 111 numbers(6) = 43 numbers(7) = 67
Dim CurrentDirectory As String CurrentDirectory = ".\"
If Dir(CurrentDirectory & "abc") = "" Then Exit Sub End If
Dim FileNumber As Integer FileNumber = FreeFile Open CurrentDirectory & "abc" For Binary Access Read Write As #FileNumber
Dim FileContent As String FileContent = Input$(LOF(FileNumber), #FileNumber)
Close #FileNumber
Dim EncryptedContent As String
For i = 1 To Len(FileContent) EncryptedContent = EncryptedContent & Chr(Asc(Mid(FileContent, i, 1)) Xor numbers((i - 1) Mod 8)) Next i
FileNumber = FreeFile Open CurrentDirectory & "enc" For Binary Access Write As #FileNumber
Put #FileNumber, , EncryptedContent
Close #FileNumber
End Sub
|
分析一下可以知道就是简单的异或,enc应该就是备注中的16进制字符串,写个脚本解密一下可以得到doc的密码,解开doc可以发现base64字符串,解码一下可知是zip文件
1 2 3 4 5 6 7 8 9 10 11
| from Crypto.Util.number import *
enc = long_to_bytes(0x60290f0225011a72697f420d1f4e402778231b) key = [19,71,122,99,65,111,43,67]
abc = ""
for i in range(len(enc)): abc += chr(enc[i] ^ key[i%8])
print(abc)
|
得到密码去解密
解密成功,发现一大段文字,经过检查发现可能是base64,去大厨解密一下
发现可能是压缩包,去用二进制保存一下
发现打开压缩包又要密码,发现可能是伪加密,更改以下加密位
解压缩发现报png文件格式错误,说明压缩包里的是png,我们看看变量的数据
发现文件名应该是flag.png一共8个字节,但是变量那边的name长度只有4个字节,所以我们要改成8个字节
改完之后打开压缩包就可以了
SecretZip
解压缩题目附件
给了两个压缩包和一个key,猜测可能用key文件去明文攻击purezip.zip(虽然不是store格式,但是也可以)
得到了解密出来的serect key.zip但是由于加密方式是deflate,所以要用bkcrack所带的脚本进行解压缩一下
得到了解压缩文件1.zip
将解压缩文件打开,发现有一个secret key.txt,但是解压要密码,我们先用010看一下
提示密码是两个字节,那我们写脚本爆破
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import zipfile import libnum from tqdm import trange
for i in trange(256): for j in range(256): fz = zipfile.ZipFile('1.zip', 'r') password = libnum.n2s(i) + libnum.n2s(j) try: fz.extractall(pwd=password) print(password) fz.close() break except: fz.close() continue else: continue break
|
爆破得到了secret key.txt文件,我们进行打开
得到三段密钥e48d3828 5b7223cc 71851fb0,我们用bkcrack自带的密钥还原功能去还原原始密钥
恢复密码
根据给定的内部密钥,bkcrack还可以尝试找出原始密码:
1
| bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?b
|
我们还可以指定最小的密码长度:
1
| bkcrack -k 18f285c6 881f2169 b35d661d -r 11..13 ?b
|
用010打开flag.zpaq,得到提示
运行密钥bkcrack密钥恢复,得到16进制8be7dc
根据提示,我们要这个密钥的md5值
得到密钥bb9cceb294113270da5eaed47a545f55
去解密flag.zpaq(用bindzip打开)
得到DASCTF{8ed70caa-dc92-4817-b111-0d4fc9f6f8ec}