某加密样本 Trace分析 - 2
Security Classification: 【C-1】 | Publish Time:2024-02-20 | Category:Test Notes | EditExpiry Notice: The article was published three months ago. Please independently assess the validity of the technical methods and code mentioned within. :)
AI Summary: 该文章展示了如何从加密结果中找到明文入参。首先,通过分析加密过程,确定了明文的第一个分组m[0]为0xfeedfacf,并确认该值对应Mach-O文件的魔数头。文章提到了一条加载指令,显示该值从内存地址0x11f4ac000加载。接着,分析了该地址的数据装载过程,发现填充过程中有大量0填充,且最终确认0xfeedfacf为明文的前几个字节。通过正则匹配和使用CyberChef进行哈希,结果一致,证明md5算法未被修改。最终结论为该样本用于获取Mach-O文件的md5值。 --- (From Model:gpt-4o-mini-2024-07-18)
基础信息
加密结果: 7fdf80a3bab0a71cc16aac6f71a9448e
可以在trace中找到md5魔数和k表。
找到明文入参
之前的文章说过
那么实际上 0xffffff进行 add运算时,可能就是第一轮运算的明文的第一个
说明 进行相加的明文的第一个分组的m[0] 是 0xfeedfacf
谷歌能知道是Mach-O文件的魔数头
[0xd32e04c] 0x10e60604c ldr w16, [x1]; # r[ x1=0x11f4ac000, ] w[ x16=0xfeedfacf, ]
[0xd32e050] 0x10e606050 str w16, [x0, #0x58]; # r[ x0=0x17027a4c0, ] r[ x16=0xfeedfacf, ]
这条指令是一个加载指令,它从内存地址x1指向的位置加载一个字(word,32位)到寄存器w16中。
x1的值为0x11f4ac000,指令执行后,w16被加载的值是0xfeedfacf。说明明文message来源在0x11f4ac000,找找线索。看到对0x11f4ac000进行数据装载操作的指令有大量的0填充。
此处看到是feedfacf ,恰好是明文前几个字节。说明这个地址在开始进行明文填充,并加载到内存上了。一直到填充结束的位置。copy table到新的log文件,使用python正则匹配
使用cyberchef进行哈希,结果一致。证明md5没有做魔改
结论
样本在对Mach-O文件获取md5值。
Comment List