
BlackLotus-Z2A-Challenge, rien à voir ici pour l'instant, veuillez passer votre chemin
BlackLotus-Z2A-Challenge, Rien à voir ici pour l'instant, veuillez passer votre chemin
Commençons par le commencement

Pour des raisons esthétiques uniquement, j'emprunterai (volerai) honteusement :)) de @darthmaulware(Ryan “DM” Smith) la solution les règles de détection yara juste pour faire pro. Va voir son twitter, c'est une personne super cool ! PS. Ryan, ne m'en veux pas d'avoir volé ça :))) et merci pour ton soutien sur Discord :)
Regarde aussi son travail :)
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)
}
Aussi pour des raisons esthétiques, je vais aussi voler ceci parce que ça a l'air cool :) encore désolé ryan, ne te fâche pas contre moi s'il te plaît :)```
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 si j'étais toi, je ne ferais pas entièrement confiance à capa (du moins dans ce cas précis) parce qu'ici ça dit que l'échantillon utilise RC4 alors qu'en réalité il utilise AES, mais bref, comme mentionné, c'est strictement pour l'esthétique :)
Avant de commencer, tu vas rencontrer tout au long de ce rapport beaucoup de

Ignore ça, s'il te plaît, car IDA n'arrive pas à désassembler correctement ça en assembleur, c'est

Et ça fait planter le débogueur ? Pourquoi ?
Parce qu'il essaie d'écrire à l'adresse 0, ce qui dans le folklore hacker est connu comme écrire à une adresse de pointeur nul, quelque chose qui était largement exploité pour obtenir l'exécution de code (CE), et cela a évidemment été mitigé.
Et avec la mitigation actuelle, si tu essaies d'écrire à 0, ça fera planter le processus, dans notre cas le malware & par conséquent le débogueur.
Maintenant, si on ouvre ça dans IDA

J'ai renommé chaque fonction pour indiquer une certaine logique qu'elle effectue, commençons par la première fonction, do_syscall()

On remarque immédiatement l'utilisation de syscalls, ce qui est une méthode connue pour rendre la vie d'un analyste plus difficile lors de l'analyse dynamique.
Pour ceux qui ne sont pas familiers avec les syscalls sous Windows, voici une vidéo sympa réalisée par oalabs (https://www.youtube.com/watch?v=Uba3SQH2jNE). Regarde-la parce que je l'ai fait aussi et ça m'a beaucoup aidé à comprendre ce qui se passe dans cette fonction.
Si on inspecte le "pseudo-code" résolu par IDA, on voit que ça ressemble à ça

Si on inspecte statiquement solve_hash, ça ressemble à ça
