【實戰】檔案加密器進行逆向

蚁景网安实验室發表於2024-08-07

前言

實戰可以大大提高自己,學習技術的目的就是能夠在實戰中運用。

本次實戰與實際息息相關,該軟體具有加密某檔案的功能。

【實戰】檔案加密器進行逆向

介面還挺好看的,功能很簡單,輸入檔案和PIN(4位)進加解密。

這是被加密的檔案

【實戰】檔案加密器進行逆向

需要將其進行解密,拿到flag

思路

因為PIN是4位,因此可以寫一個python指令碼,對其進行爆破。

關鍵在於得出加密的演算法,此時就需要我們進行逆向分析了

分析

先嚐試進行加密

【實戰】檔案加密器進行逆向

根據關鍵詞:encrypted 進行定位

【實戰】檔案加密器進行逆向

發現是我們需要的資訊

【實戰】檔案加密器進行逆向

跟蹤進去,發現了花指令

【實戰】檔案加密器進行逆向

去花指令

【實戰】檔案加密器進行逆向

發現堆疊不平衡,將所有程式碼選中,然後C鍵,重新分析

發現了單指令花指令,無非nop掉即可

【實戰】檔案加密器進行逆向

從頭選到下一個函式開始的位置

【實戰】檔案加密器進行逆向

按下C鍵

【實戰】檔案加密器進行逆向

analyze即可

還是rust編譯的

【實戰】檔案加密器進行逆向

此時就可以分析函式了。處理其他函式也是相同的道理

【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

初步分析

【實戰】檔案加密器進行逆向

【實戰】檔案加密器進行逆向

使用Fincrypto發現了salsa20加密


salsa20:32位字元構成的key,二是隨機生成的8位nonce。演算法使用key和nonce生成一個2^70長度的序列,並與明文進行異或加密


sub_140073A70

【實戰】檔案加密器進行逆向

發現main_func就是獲取我們的輸入的檔案內容

sub_140039890

而函式sub_140039890才是關鍵的加密函式

【實戰】檔案加密器進行逆向

0x61707865、0x3320646E均為Salsa20演算法的固定引數

【實戰】檔案加密器進行逆向

解密

由於密碼只有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

更多網安技能的線上實操練習,請點選這裡>>

相關文章