最新消息:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

SEEBUG IMGIT 7浏览 0评论

作者:啟明星辰ADLab

一、事件介紹

近期,啟明星辰ADLab收到客戶反饋:由於不明原因,電腦中的文件被加密,無法打開。在得知這一消息后,啟明星辰ADLab迅速派遣技術人員趕往客戶現場。通過對現場感染機勘驗后,我們發現加密后的文件被統一冠以「.bip」後綴名,另外我們還發現被加密的文件目錄中有一個勒索提示文件「FILES ENCRYPTED.txt」,它是由勒索病毒創建的,目的是通知受害者其數據已經被加密,如果想要解密文件,需按照攻擊者提供的聯繫方式支付贖金。被加密的文件和「FILES ENCRYPTED.txt」內容如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

被加密的文件和「FILES ENCRYPTED.txt」內容

受感染的電腦在加密完成後或電腦重啟後會彈出兩個提示框,提示框是由mshta.exe調用Info.hta生成的勒索信息。感染機器的兩個Info.hta文件存放路徑分別為:

%windir%/System32/Info.hta
%AppData/Romaing/Info.hta

它的主要功能是提示受害人如何聯繫黑客、如何獲得比特幣、如何完成支付等信息,提示框內容如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

勒索提示框

經過現場對受感染機器的技術分析后,我們找到了該勒索病毒的樣本程序,樣本相關信息如下表所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

在對該勒索病毒的行為和二進制代碼進行深入分析並與已知勒索病毒家族進行橫向比對后,我們判定該勒索病毒屬於Crysis家族的一個新變種。該家族主要通過釣魚郵件和利用RDP(Remote Desktop Protocol)爆破進行傳播。

二、攻擊歷史

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

2016年6月,國外安全專家發現,能夠通過Java Applet傳播的跨平台(Windows、MacOS)惡意軟件Crysis開始加入勒索功能,並於8月份被發現用於攻擊澳大利亞和新西蘭的企業。Crysis惡意軟件不僅能夠感染VMware虛擬機,還能夠全面收集受害者的系統用戶名密碼、鍵盤記錄、系統信息、屏幕截屏、聊天信息,控制麥克風和攝像頭,現在又加入了加密勒索功能,其威脅性大有取代TeslaCrypt和Locky勒索軟件的趨勢。它主要通過暴力破解遠程桌面(RDP)協議傳播,支持185種文件類型加密。

2016年11月12日,勒索病毒 Crysis解密密鑰被公開,Crysis2及3的受害者可通過這個密鑰恢復丟失的文件。

2017年5月下旬,Crysis/Dharma病毒出現了一個新的變種.cesar,中國境內有部分個人和企業開始受到攻擊。

2017年8月30日,ID-Ransomware的Michael Gillespie發現了Crysis/Dharma 勒索軟件一個新的變種, 文件被追加 .arena 擴展名。中國境內個人和企業受到攻擊數量顯著增多。東莞某手機代工廠中病毒后所有的服務器文件後綴變成了.arena,工廠按照提示信息的地址給黑客付款,付款后黑客就消失了,三天後黑客發來信息稱自己在出差,併發來了一個解密工具,工廠解密后發現黑客只解密了部分文件,需要再支付一次才能繼續解密。下圖的勒索郵件圖片來自網絡:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

被二次勒索

2018年3月, Crysis/Dharma 勒索軟件出現一個新的變種, 文件被追加.java 擴展名。

2018年5月16日, Crysis/Dharma 勒索軟件出現一個新的變種, 文件被追加.bip 擴展名。啟明星辰ADLab第一時間發現該變種,並對其進行了深入的分析,由於使用了RSA+AES加密,所以目前尚無法被解密。它支持343種文件格式的加密,比最初增長了1.85倍。

三、勒索病毒技術分析

該勒索病毒使用加密的shellcode,在shellcode中利用換體技術對程序地址空間進行修改,以達到干擾殺毒軟件的查殺和對抗二進制分析的目的。加密算法實現上並沒有使用常見的加密開源庫,所以給逆向人員在算法識別上帶來一定的困難。我們在做二進制分析的時候,沒有發現勒索軟件有網絡數據產生,推測是黑客的C&C服務器已經關閉了。

3.1 勒索病毒母體執行
3.1.1 勒索病毒執行流程

勒索病毒運行后,首先利用TEA算法解密shellcode,shellcode解密完成後,便開始執行。shellcode的功能是改寫勒索病毒自身內存地址空間,對勒索病毒進行換體。流程圖如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.1.2 解密shellcode

勒索病毒運行后,首先通過LoadLibraryA函數加載Kernel32.dll,然後利用GetProcAddress動態獲取LocalAlloc和VirtualProtect的函數地址,再利用LocalAlloc分配0x11C98大小的內存地址作為shellcode數據的存儲空間,通過sub_4011D5函數把數據段中的數據賦值給dw_shellcode地址,使用TEA算法解密dw_shellcode地址的數據,解密完成後調用VirtualProtect函數給shellcode添加執行權限,然後執行shellcode代碼,相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

在分析shellcode解密代碼的時候,根據TEA的魔數特徵0xC6EF3720,識別出解密代碼的算法是TEA算法,代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.2 Shellcode執行

勒索病毒母體執行完畢后,開始執行shellcode代碼。在shellcode中動態調用VirtualAlloc分配內存,把新的變體內容拷貝到內存中;調用VirtualProctect修改內存屬性,把源程序地址空間清零;使用新的變體內容填充,最後調用VirtualFree釋放前面分配的內存。相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3 換體後代碼執行

換體完成後,勒索病毒便開始執行變體代碼。變體代碼首先創建一個互斥,防止自身被多次執行;其次,變體代碼創建一個線程,用於監控感染機上指定的進程或服務,該線程每隔500毫秒對感染機上的目標進程或服務進行一次關閉操作;再次,變體代碼創建開機自啟動註冊表項,拷貝自身到註冊表項所在目錄,以達到開機自啟動的目的,然後變體代碼刪除磁盤卷影,防止受害人恢複數據;最後,變體代碼創建一個線程,用於掃描局域網共享目錄並對掃描到的文件進行加密。遍歷邏輯驅動器,每個驅動器創建一個文件加密線程,對邏輯驅動器下的文件進行加密。該變體代碼的執行流程圖如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.1 創建互斥

勒索病毒的字符串都是使用RC4算法加密的,通過內置的一個128位元組密鑰進行解密。我們用Ollydbg對字符串解密過程進行動態跟蹤,得到了RC4的128位元組的密鑰,如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

互斥體的名稱由三部分組成,第一部分是RC4解密出來的字符串「Global/syncronize_」,第二部分是RC4解密出來的字符串「45STKM」,第三部分是根據參數選擇,如果參數為1就是「A」,否則是「U」。

最終,勒索病毒會創建兩個互斥體 "Global/syncronize_45STKMA""Global/syncronize_45STKMU",相關代碼如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.2 解鎖文件佔用

勒索病毒不但會殺死指定的正在運行的進程而且還會停止指定的正在運行的服務,這樣做的好處是解鎖對應進程的文件佔用,從而保證文件加密成功。勒索病毒會使用上文中的RC4算法解密得到要殺死的進程名稱和服務名稱。相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

進程名和服務名列表如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

勒索病毒在完成字符串解密后,創建一個線程,在線程中遍歷系統進程,判斷目標進程是否存在,如果存在,就殺死目標進程。相應代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

遍歷系統服務名稱,判斷服務名稱是否存在,如果存在就停止服務。相關代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

該勒索病毒創建一個線程,每隔500毫秒循環一次,判斷相應的進程和服務是否存在,如果存在就殺死,反彙編代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.3 添加開機自啟動

勒索病毒先拷貝設置到以下目錄:

啟動目錄
%windir%/System32
%appdata%
%sh(Startup)%
%sh(Common Startup)%

拷貝完成後在註冊表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run下新建3個註冊表項,註冊表內容如下圖所示。

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

「%AppData/Romaing/Info.hta」是勒索病毒提示用戶解鎖的提示文件。通過註冊表我們可以看到「Info.hta」文件被拷貝了兩份,另外一份是在「%System32%」路徑下,可能是黑客為了確保這個提示框被受害人能看到,所以特意寫了兩個路徑。

「load_.exe」文件是勒索病毒程序自身的拷貝,這樣就可以實現每次開機啟動后執行加密邏輯,把受害人新增的文件加密。相關代碼如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

拷貝文件添加註冊表開機自啟動

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

%sh(Startup)%目錄下的開機自啟動程序

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

%sh(Common Startup)%目錄下的開機自啟動程序

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

%Appdata%目錄下支付勒索的提示程序

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

%windir%/System32目錄下的開機自啟動程序

3.3.4 刪除磁盤卷影

卷影副本功能可提供網絡共享上的文件的即時點副本。利用共享文件夾的卷影副本,用戶可以查看網絡文件夾在過去某一時間點的內容。

勒索病毒會刪除磁盤卷影,以防止受害人通過磁盤還原方式對文件進行恢復,刪除磁盤卷影的命令為「mode con cp select=1251 vssadmin delete shadows /all /quiet Exit」,該命令是用上文中的RC4算法解密出來的。勒索病毒通過調用CreateProcess啟動「C:/Windows/system32/cmd.exe」調用刪除命令來刪除磁盤卷影,相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.5 枚舉局域網的共享目錄,對共享目錄文件進行加密

該勒索病毒創建一個線程,對局域網中共享的文件進行加密。

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

創建加密共享磁盤線程

線程中遍歷局域網共享資源,加密文件的核心代碼如下:
啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.6 遍曆本地磁盤,對磁盤目錄文件進行加密

該勒索病毒先用上文中的RC4算法解密一段數據,解密后的結果為 「ABCDEFGHIJKLMNOPQRSTUVWXYZ」,通過GetLogicalDrives函數獲取磁盤驅動器,然後遍歷執行文件加密,相關反彙編代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

為了保證電腦系統正常啟動,勒索病毒對保障操作系統正常運行的文件不加密,並把這些文件的文件名加密存儲在程序中。通過上文中的RC4算法解密后的文件名列表如下:

解密后的文件名
boot.ini
bootfont.bin
ntldr
ntdetect.com
io.sys

3.3.7 文件加密

勒索病毒支持343種類型文件的加密,文件類型(文件的後綴名)是以分號分割並通過上文中的RC4算法加密存儲的,運行時動態解密,解密后的字符串在Ollydbg內存中如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

支持加密的文檔擴展名如下:

.1cd;.3ds;.3fr;.3g2;.3gp;.7z;.accda;.accdb;.accdc;.accde;.accdt;.accdw;.adb;.adp;.ai;.ai3;.ai4;.ai5;.ai6;.ai7;.ai8;.anim;.arw;.as;.asa;.asc;.ascx;.asm;.asmx;.asp;.aspx;.asr;.asx;.avi;.avs;.backup;.bak;.bay;.bd;.bin;.bmp;.bz2;.c;.cdr;.cer;.cf;.cfc;.cfm;.cfml;.cfu;.chm;.cin;.class;.clx;.config;.cpp;.cr2;.crt;.crw;.cs;.css;.csv;.cub;.dae;.dat;.db;.dbf;.dbx;.dc3;.dcm;.dcr;.der;.dib;.dic;.dif;.divx;.djvu;.dng;.doc;.docm;.docx;.dot;.dotm;.dotx;.dpx;.dqy;.dsn;.dt;.dtd;.dwg;.dwt;.dx;.dxf;.edml;.efd;.elf;.emf;.emz;.epf;.eps;.epsf;.epsp;.erf;.exr;.f4v;.fido;.flm;.flv;.frm;.fxg;.geo;.gif;.grs;.gz;.h;.hdr;.hpp;.hta;.htc;.htm;.html;.icb;.ics;.iff;.inc;.indd;.ini;.iqy;.j2c;.j2k;.java;.jp2;.jpc;.jpe;.jpeg;.jpf;.jpg;.jpx;.js;.jsf;.json;.jsp;.kdc;.kmz;.kwm;.lasso;.lbi;.lgf;.lgp;.log;.m1v;.m4a;.m4v;.max;.md;.mda;.mdb;.mde;.mdf;.mdw;.mef;.mft;.mfw;.mht;.mhtml;.mka;.mkidx;.mkv;.mos;.mov;.mp3;.mp4;.mpeg;.mpg;.mpv;.mrw;.msg;.mxl;.myd;.myi;.nef;.nrw;.obj;.odb;.odc;.odm;.odp;.ods;.oft;.one;.onepkg;.onetoc2;.opt;.oqy;.orf;.p12;.p7b;.p7c;.pam;.pbm;.pct;.pcx;.pdd;.pdf;.pdp;.pef;.pem;.pff;.pfm;.pfx;.pgm;.php;.php3;.php4;.php5;.phtml;.pict;.pl;.pls;.pm;.png;.pnm;.pot;.potm;.potx;.ppa;.ppam;.ppm;.pps;.ppsm;.ppt;.pptm;.pptx;.prn;.ps;.psb;.psd;.pst;.ptx;.pub;.pwm;.pxr;.py;.qt;.r3d;.raf;.rar;.raw;.rdf;.rgbe;.rle;.rqy;.rss;.rtf;.rw2;.rwl;.safe;.sct;.sdpx;.shtm;.shtml;.slk;.sln;.sql;.sr2;.srf;.srw;.ssi;.st;.stm;.svg;.svgz;.swf;.tab;.tar;.tbb;.tbi;.tbk;.tdi;.tga;.thmx;.tif;.tiff;.tld;.torrent;.tpl;.txt;.u3d;.udl;.uxdc;.vb;.vbs;.vcs;.vda;.vdr;.vdw;.vdx;.vrp;.vsd;.vss;.vst;.vsw;.vsx;.vtm;.vtml;.vtx;.wb2;.wav;.wbm;.wbmp;.wim;.wmf;.wml;.wmv;.wpd;.wps;.x3f;.xl;.xla;.xlam;.xlk;.xlm;.xls;.xlsb;.xlsm;.xlsx;.xlt;.xltm;.xltx;.xlw;.xml;.xps;.xsd;.xsf;.xsl;.xslt;.xsn;.xtp;.xtp2;.xyze;.xz;.zip

文件加密功能是在線程函數中執行的,在加密前,它先進行CRC32校驗,確保加密成功,並構造加密後文件名的命名,該惡意程序加密后的文件按照{原始文件名}+{.id-}+{C盤序列號}+{.[filedec@tuta.io] .bip}方式進行重命名。以「test.txt」為例,加密后的文件名為「test.txt .id-B05844B5.[filedec@tuta.io].bip」。每個文件都隨機生成一個0x16位元組的IV,從而保障加密的隨機性,線程函數核心代碼如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

在加密文件前,勒索病毒先去掉目標文件的只讀屬性,待加密完成後再還原其原有的文件屬性,相關代碼如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

3.3.8 加密算法分析

勒索病毒加密文件,使用內置的一段加密的RSA公鑰對隨機生成的AES密鑰進行加密,並將加密后的內容發給黑客,黑客使用RSA私鑰進行解密,得到加密文件的AES密鑰。為了保障隨機性,黑客對每個文件進行加密的時候都使用隨機的IV,被加密后的文件按照特定的文件格式進行存儲,文件加密算法流程圖如下所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

在加密算法中有一個非常重要的結構體,如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

這個結構體的初始化過程是:首先利用上文中的RC4算法解密一段內置的0x80位元組的數據,解密后的結果作為RSA的公鑰;然後對RSA的公鑰進行SHA1求值,將其SHA1結果賦值給encrypt-> rsa_pub_sha1。RSA公鑰如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

計算RSA公鑰的SHA1結果為「23 A0 55 82 B9 C1 12 1E FE 56 71 CE 45 87 38 1D BA 95 B7 F9」,相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

勒索病毒使用GetVolumeSerialNumber函數獲取C盤序列號,並填充encrypt->disk_id字段,通過rdtsc獲取CPU自從啟動以來的時鐘周期數(也就是一個隨機數);使用RC4加密,RC4加密的結果作為後面對文件加密的AES密鑰,填充encrypt->aes_key字段。代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

勒索病毒使用RSA公鑰加密encrypt->aes_key,加密后的結果填充encrypt->rsa_encrypt_key字段,通過上文的RC4算法解密得到黑客聯繫郵箱「.[filedec@tuta.io]」和文件後綴名「.bip」,代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

初始化完加密結構體,勒索病毒會創建線程對文件進行加密,在對文件進行加密的時候,該勒索病毒會判斷文件大小是否大於0x180000,如果大於就使用大文件加密方法,否則就使用小文件加密函數。相關代碼如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

(1)小於等於0x180000的文件處理方法

加密完成後,勒索病毒把AES加密的結果寫入文件中,然後再追加一段數據。假設這段數據的起始地址為0,將這段地址全部初始化為0:

  1. 在第0x04位元組后依次寫入0x00000002和0x417AFE0C;
  2. 在第0x18位元組后寫入0x00000020;
  3. 在第0x20位元組處寫入文件名;
  4. 在文件名後面追加6位元組的encrypt->str_45STKM;
  5. 在encrypt->str_45STKM後面追加20位元組的encrypt->rsa_pub_sha1;
  6. 在encrypt-> rsa_pub_sha1後面追加16位元組的IV;
  7. 在IV後面追加4位元組的PadingLen,(對AES明文不足16位元組的補齊長度);
  8. 在PadingLen後面再追加128位元組的encrypt->rsa_encrypt_key;
  9. 在encrypt-> rsa_encrypt_key後面寫入4位元組的偏移(0x20+文件名長度)。

至此,文件加密完成,關閉文件,相關代碼如下:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

(2)大於0x180000的文件處理方法

加密完成後,勒索病毒把AES加密的結果寫入文件中,然後再追加一段數據。假設這段數據的起始地址為0,將這段地址全部初始化為0:

  1. 在第0x0位元組處寫入文件名;
  2. 在文件名後面追加6位元組的encrypt-> str_45STKM;
  3. 在encrypt-> str_45STKM後面追加20位元組的encrypt-> rsa_pub_sha1;
  4. 在encrypt-> rsa_pub_sha1後面追加16位元組的IV(用於AES加密);
  5. 在IV後面追加4位元組的0x00(這裡可能是為了與小文件格式兼容);
  6. 在PadingLen後面再追加128位元組的encrypt-> rsa_encrypt_key;
  7. 在encrypt-> rsa_encrypt_key後面寫入4位元組的文件名長度。

相關代碼如下圖所示:

啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

四、總結及建議

勒索病毒已經成為了一種越來越普遍和有效的攻擊方式,個人用戶和企事業組織受害者居多,而且一旦感染勒索病毒,數據被加密就很難還原。因為勒索病毒都採用成熟的密碼學算法,使用高強度的對稱和非對稱加密算法對文件進行加密,所以在通常情況下只能支付高額的贖金。有些勒索病毒在加密過程中使用Windows Crypto API生成密鑰並進行加密,但此API在某些操作系統上並未將生成密鑰時產生的素數從內存中刪除,因此若該內存塊尚未被覆蓋,我們就可以通過截取素數生成出同樣的密鑰,使用該密鑰實現對已被加密的文件進行解密。Crysis勒索病毒沒有使用這個API,所以不存在此漏洞。目前互聯網上流傳的一些勒索病毒的解密工具大多是利用了勒索病毒功能或邏輯上的漏洞或私鑰泄露實現的。
勒索病毒的幾點防範建議:

  1. 對重要的數據文件定期進行非本地備份。
  2. 不要點擊來源不明的郵件以及附件。
  3. 重命名vssadmin.exe進程,防止勒索病毒利用它一次性清除文件的卷影副本。
  4. 開啟防火牆,並升級到最新版本,阻止勒索病毒與其C&C服務器通信。
  5. 及時給電腦打補丁,修復漏洞。
  6. 使用長度大於10位的複雜密碼,禁用GUEST來賓帳戶。
  7. 盡量不要使用局域網共享,或把共享磁盤設置為只讀屬性,不允許局域網用戶改寫文件。
  8. 關閉不必要的端口,如:445、135、139、3389等。

啟明星辰積極防禦實驗室(ADLab)

ADLab成立於1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發佈Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、雲安全研究。研究成果應用於產品核心技術研究、國家重點科技項目攻關、專業安全服務等。
啟明星辰ADLab:Crysis家族勒索病毒最新變種分析


啟明星辰ADLab:Crysis家族勒索病毒最新變種分析
本文由 Seebug Paper 發佈,如需轉載請註明來源。本文地址:https://paper.seebug.org/619/

转载请注明:IMGIT » 啟明星辰ADLab:Crysis家族勒索病毒最新變種分析

发表我的评论
取消评论

*

code

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址