国精品无码一区二区三区在线,欧美性XXXXX极品少妇,亚洲伊人成无码综合网

方程式(EQUATION)部分組件中的加密技巧分析

時間 :  2015年02月10日  來源:  安天


      安天分析團隊從2月啟動“方程式(EQUATION)”分析工作,在形成了第一篇分析報告后,后續(xù)整體分析沒有取得更多的進展和亮點。基于這種情況,我們首先嘗試對部分組件中的加密技巧進行了分析樹立,以利后續(xù)工作,我們將相關工作進行分享,希望得到業(yè)內同仁的批評指點。

DoubleFantasy組件


      DoubleFantasy是用于環(huán)境認證的前導模塊,其他分析機構認為該組件活躍時間約為2004年至2012年,之后被TripleFantasy替代。DoubleFantasy針對資源、注冊表存儲和網絡通訊中均使用了加密技巧。

      資源加解密算法:DoubleFantasy自帶的資源為密文,采用異或算法,密鑰有兩個,為0x3C(xor 0x3C)和0x7F(xor 0x7F),如圖:

 
注冊表存儲配置和網絡通訊加密算法: 

         DoubleFantasy組件中的注冊表存儲配置信息和網絡通訊加密算法均為對稱加密算法RC6。組件代碼生成一組長度0x44*4的密鑰,隨后使用該密鑰,對一些配置數據和網絡通訊進行加密,由于是對稱加密算法,加解密方法相同。DoubleFantasy沒有預設密鑰,保證對不同目標的采用的加密密鑰都不相同。

解讀:是一種分組加密算法,其由RSA實驗室以RC5算法為基礎改進提出,并參加了AES的遴選,成為最終入圍的5種候選算法之一,但最終被比利時的Rijandael擊敗。
 
  1. 解密函數參數

      函數共5個參數,其中4個參數 
     
      Decode
     
      {
   
      Lpdata1   ;密文地址 

      Lpdata2   ;解密后明文地址 

      Lenth     ;密文長度 

      Lpkey     ;密鑰地址 

      }
  1. 密鑰結構分析
     
      密鑰長度為:4*49=196(bytes),各部分數據示例如下:

          Sk1            Sk2            Sk3           Sk4

          ……          ……          ……       

          Sk37          Sk38          SK39          SK40

          Sk37          Sk38          SK39          SK40

          Sk41          Sk42          Sk43          Sk44

          Sk45          Sk46          Sk47          Sk48

          Sk49        

        
      其中sk45-48為二級密鑰,sk49為修正標志。


      1.解密數據的方法

      2.根據密鑰,計算二級密鑰(二級密鑰長度為16bytes)

      3.將密文前16位與二級密鑰進行逐byte進行異或操作。結果為明文。

      4.將計算后的二級密鑰按順序替換密鑰中的k45-k48共16個bytes

      5.重新計算下一級密鑰。再對后面16個bytes進行解密。

      6.循環(huán)直到未解密的密文長度不足16bytes

      7.修正標志為剩余密文byte數。

      8.繼續(xù)計算下級密鑰并更新密鑰,逐byte解密。

      9.二級密鑰計算方法

      10.二級密鑰共16個bytes,4個bytes為一個參數。結構圖如下:
           
      R1          R2          R3          R4


      二級密鑰計算密碼表

          參數名             參數值

             L1                     R2

             L2                     R4

             L3                     R1

             L4                     R3

             L5                     R1

             L6                     R2

             L7                     R4

             L8                     R2

             L9                     R3

             L10                   R1

             L11                   R3

             L12                   R4

             L13                   R2

             L14                   R3

          
      二級密鑰計算方法

      1.R2=K1+K46;R4=K2+K48

      2.(L1+L1+1)*L1=M1;(L2+L2+1)*L2=M2

      3.M1環(huán)左移5位得到結果M1;M2環(huán)左移5位得到結果M2
 
      4.M1和L3進行異或操作;M2和L4進行異或操作

      5.分別取M1和M2的低8位:N1和N2
 
      6.將M1循環(huán)左移N2位得到Z1;將M2循環(huán)左移N1位得到Z2

      7.Z1+K3寫入到L3對應的地址中

      8.Z2+K4寫入到L4對應的地址中

      9.步驟2-8循環(huán)4次。其中L下標每次加3,K下標每次加2

      10.步驟2-9重復循環(huán)5次,L下標不變,K下標依次向后增加。

      11.K43+R1=R1;K44+R3=R3

         該加密算法比較對安全研究人員分析增加了一定困難,由于沒有預設的密鑰,除非分析人員有完整的數據流,否則無法解密加密的數據。

EquationDrug組件:

      EquationDrug是一個復雜的攻擊組件,其是Fanny/Fantasy系列前導驗證模塊,的一個手續(xù)樞紐模塊,可以完成相關的信息上傳和后續(xù)組件下載工作。

資源加解密算法:采用了是異或和移位混合使用的方式。 
     
      下面是將資源中數據獲取,并對其解密的一段操作,解密得到多個字符串。


      在EquationDrug的msnadt.exe模塊中,我們發(fā)現(xiàn)釋放可執(zhí)行程序相關解密操作,所使用的加密方式多為移位、異或操作,下圖為主要的解密部分。 


GrayFish組件


      GrayFish組件是方程式攻擊組織使用組件中最為復雜的組件之一,其自身依托注冊表進行分塊存儲,借助Bootkit完成無文件載體的加載。其資源、配置中廣泛使用了加密技術。

      資源加解密算法:

      1.GrayFish還原為執(zhí)行體后,其資源節(jié)的前4字節(jié)為解密密鑰

      2.X =0xDD483B8F - 0x6033A96D *密鑰

      3.逐字節(jié)讀取后面的數據與X進行異或

      解密的數據使用RtlCompressBuffer修復即得到明文


 
      GrayFish的資源解密代碼

      配置數據解密算法:

      1.密碼對照表在偏移0x0042010C處

      2.根據密文的16進制數作為偏移,從密碼對照表中讀取數據

      3.逐字節(jié)讀取拼接成明文數據

GrayFish配置字符串解密算法和密碼對照表