某加密样本 Trace分析 - 2

Security Classification: 【C-1】 | Publish Time:2024-02-20 | Category:Test Notes | Edit

Expiry 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文件的魔数头

  1. [0xd32e04c] 0x10e60604c ldr w16, [x1]; # r[ x1=0x11f4ac000, ] w[ x16=0xfeedfacf, ]
  2. [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

© Copyright: This article is an original work and the copyright belongs to the  Depy's docs  unless marked as Reproduced

Please contact the blogger for authorization to reprint