【实战】文件加密器进行逆向(文件加密解密器)

前言

实战可以大大提高自己,学习技术的目的就是能够在实战中运用。

本次实战与实际息息相关,该软件具有加密某文件的功能。

图片[1]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

界面还挺好看的,功能很简单,输入文件和PIN(4位)进加解密。

这是被加密的文件

图片[2]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

需要将其进行解密,拿到flag

思路

因为PIN是4位,因此可以写一个python脚本,对其进行爆破。

关键在于得出加密的算法,此时就需要我们进行逆向分析了

分析

先尝试进行加密

图片[3]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

根据关键词:encrypted 进行定位

图片[4]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

发现是我们需要的信息

图片[5]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

跟踪进去,发现了花指令

图片[6]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

去花指令

图片[7]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

发现堆栈不平衡,将所有代码选中,然后C键,重新分析

发现了单指令花指令,无非nop掉即可

图片[8]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

从头选到下一个函数开始的位置

图片[9]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

按下C键

图片[10]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

analyze即可

还是rust编译的

图片[11]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

此时就可以分析函数了。处理其他函数也是相同的道理

初步分析

图片[12]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

图片[13]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

使用Fincrypto发现了salsa20加密


salsa20:32位字符构成的key,二是随机生成的8位nonce。算法使用key和nonce生成一个2^70长度的序列,并与明文进行异或加密


sub_140073A70

图片[14]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

发现main_func就是获取我们的输入的文件内容

sub_140039890

而函数sub_140039890才是关键的加密函数

图片[15]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

0x61707865、0x3320646E均为Salsa20算法的固定参数

图片[16]-【实战】文件加密器进行逆向(文件加密解密器)-Pikachu Hacker

解密

由于密码只有0000~9999这10000种可能

加密后文件名又是flag.png.enc,所以原文件是个png文件

使用png固有文件头89504E47来判断解密是否成功


  Python
 
 from Cryptodome.Cipher import Salsa20
 
 cipher = open("flag.png.enc", "rb").read()
 for i in range(10000):
 key = str(i).rjust(4, '0').ljust(32, 'x00')
 nonce = b'x24x24x24x24x24x24x24x24'
 sal = Salsa20.new(key=key, nonce=nonce)
 plain = sal.decrypt(cipher)
 if plain.find(b"x89x50x4Ex47")>=0:
 open("flag.png", "wb").write(plain)
 break

  

本文作者:蚁景网安实验室

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/205293.html

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容