
BlackLotus-Z2A-Challenge, здесь пока ничего нет, пожалуйста, проходите мимо
BlackLotus-Z2A-Challenge, здесь пока ничего нет, проходите мимо
Прежде всего

Исключительно в эстетических целях я бесстыдно позаимствую (украду) :)) из решения @darthmaulware(Ryan “DM” Smith) правила детектирования YARA, чтобы всё выглядело профессионально. Загляните в его твиттер, он чертовски классный! P.S. Райан, пожалуйста, не злись, что я это украл :))) и спасибо за поддержку в Discord :)
Также посмотрите его работу :)
https://gitlab.com/malre-rcs/zero2automated/-/blob/main/solutions/bi_weekly_challenge/BlackLotus_20230321/BlackLotus_HTTP_Downloader.ipynb``` rule Blacklotus_HTTP_Downloader { meta: description = "Rule to detect Blacklotus HTTP Downloader" author = "Darth Maulware" sha256 = "d68f668b4240f9518e4f80499d93d8c5a1eddece0771658c33ae916cc54f5a66"
strings:
$opcode1 = {48 89 4C 24 08 48 89 54 24 10 4C}
$opcode2 = {89 44 24 18 4C 89 4C 24 20 48 83}
$opcode3 = {EC 28 B9 31 62 D7 2E 90 90 E8 ??}
$opcode4 = {?? ?? ?? 48 83 C4 28 48 8B 4C 24}
$opcode5 = {08 48 8B 54 24 10 4C 8B 44 24 18}
$opcode6 = {4C 8B 4C 24 20 4C 8B D1 90 90}
condition:
(uint16(0) == 0x5a4d and filesize < 500KB and all of them)
}
Также, из эстетических соображений, я всё равно украду и это, потому что выглядит круто :) снова извини, Райан, пожалуйста, не злись на меня :)```
C:\\Users\\REM\\Desktop>capa.exe -f pe -r capa-rules-5.0.0 d68f668b4240f9518e4f80499d93d8c5a1eddece0771658c33ae916cc54f5a66.exe
matching: 100%|████████| 124/124 [00:02<00:00, 46.96 functions/s, skipped 1 library functions (0%)]
+------------------------+------------------------------------------------------------------------------------+
| ATT&CK Tactic | ATT&CK Technique |
|------------------------+------------------------------------------------------------------------------------|
| DEFENSE EVASION | Obfuscated Files or Information T1027 |
| DISCOVERY | Process Discovery T1057 |
| EXECUTION | Shared Modules T1129 |
+------------------------+------------------------------------------------------------------------------------+
+-----------------------------+-------------------------------------------------------------------------------+
| MBC Objective | MBC Behavior |
|-----------------------------+-------------------------------------------------------------------------------|
| ANTI-BEHAVIORAL ANALYSIS | Debugger Detection::Process Environment Block BeingDebugged [B0001.035] |
| | Debugger Detection::Process Environment Block NtGlobalFlag [B0001.036] |
| CRYPTOGRAPHY | Encrypt Data::RC4 [C0027.009] |
| | Generate Pseudo-random Sequence::RC4 PRGA [C0021.004] |
| DATA | Encode Data::XOR [C0026.002] |
| DEFENSE EVASION | Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] |
+-----------------------------+-------------------------------------------------------------------------------+
+------------------------------------------------------+------------------------------------------------------+
| CAPABILITY | NAMESPACE |
|------------------------------------------------------+------------------------------------------------------|
| execute syscall instruction (35 matches) | anti-analysis |
| check for PEB BeingDebugged flag (2 matches) | anti-analysis/anti-debugging/debugger-detection |
| check for PEB NtGlobalFlag flag | anti-analysis/anti-debugging/debugger-detection |
| encode data using XOR (2 matches) | data-manipulation/encoding/xor |
| encrypt data using RC4 PRGA (2 matches) | data-manipulation/encryption/rc4 |
| get process heap flags | host-interaction/process |
| get ntdll base address (3 matches) | linking/runtime-linking |
| parse PE header (2 matches) | load-code/pe |
| resolve function by parsing PE exports (2 matches) | load-code/pe |
+------------------------------------------------------+------------------------------------------------------+
tbh если честно, на твоём месте я бы не доверял capa на 100% (по крайней мере в этом конкретном случае), потому что здесь указано, что сэмпл использует rc4, хотя на самом деле он использует aes, но не суть, как уже упоминалось, это чисто для эстетики :)
Before we start you will encounter through this report a lot of

Пожалуйста, игнорируй это, так как IDA не может корректно дизассемблировать это в ассемблере; это

И это роняет отладчик? Почему?
Потому что здесь идёт попытка записи по адресу 0, что в фольклоре хакеров известно как запись по нулевому указателю, и это когда-то широко эксплуатировалось для получения CE (code execution), но сейчас это, очевидно, смягчено.
И из-за текущей защиты, если попытаться записать по адресу 0, процесс — в нашем случае малварь, а следом и отладчик — упадёт.
Теперь, если мы откроем это в IDA

Я переименовал каждую функцию, чтобы было понятно, какую логику она выполняет. Давай начнём с первой функции — do_syscall()

Мы сразу замечаем использование сисколов — это известный метод, который усложняет жизнь аналитику при динамическом анализе.
Для тех, кто не знаком с сисколами в Windows, вот классное видео от oalabs(https://www.youtube.com/watch?v=Uba3SQH2jNE). Пожалуйста, посмотри его, потому что я тоже смотрел, и оно очень помогло мне понять, что происходит в этой функции.
Если мы посмотрим на «псевдокод», который построила IDA, то увидим, что он выглядит так

Если мы статически посмотрим на solve_hash, это выглядит так


С точки зрения псевдокода это выглядит так