
BlackLotus-Z2A-Challenge، لا يوجد شيء لرؤيته هنا الآن، من فضلك امضِ قدمًا
BlackLotus-Z2A-Challenge، لا شيء لتراه هنا في الوقت الحالي، تفضل بالمضي قدمًا
الأهم أولاً

لأغراض جمالية فقط، سأستعير (بكل خجل) :)) قواعد كشف yara من حل @darthmaulware(Ryan “DM” Smith) فقط لأجعل الأمر يبدو احترافيًا. اذهب وتفقّد حسابه على تويتر، إنه شخص رائع بجنون! ملاحظة: ريان، من فضلك لا تغضب لأنني سرقت ذلك :))) وشكرًا لدعمك في ديسكورد :)
من فضلكم تفقّدوا أعماله أيضًا :)
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 |
+------------------------------------------------------+------------------------------------------------------+
لأكون صريحًا، لو كنت مكانك لما وثقت 100% في capa (على الأقل في هذه الحالة تحديدًا) لأنه هنا يقول إن العينة تستخدم rc4 بينما في الواقع العينة تستخدم aes، ولكن لا يهم، كما ذُكر هذا لأغراض تجميلية فقط :)
قبل أن نبدأ، ستواجه خلال هذا التقرير الكثير من

يرجى تجاهل هذا لأن ida يفشل في تفكيك هذا بشكل صحيح في لغة التجميع، هذا هو

وهذا يتسبب في تعطل المٌنقّح (debugger)؟ لماذا؟
لأنه يحاول الكتابة في العنوان 0، وهو ما يُعرف في التراث الشعبي للهاكرز بالكتابة في عنوان مؤشر فارغ (null pointer)، وهو شيء كان يُستغل على نطاق واسع للحصول على CE (تنفيذ كود)، وقد تم التخفيف من ذلك بوضوح.
ومع هذا التخفيف الحالي، إذا حاولت الكتابة في 0 فسيتعطل تلك العملية، وهي في حالتنا البرمجية الخبيثة، وبالتالي المٌنقّح.
الآن إذا فتحنا هذا في ida

أعدت تسمية كل دالة للإشارة إلى بعض المنطق الذي تقوم به، لنبدأ بالدالة الأولى، do_syscall()

نلاحظ فورًا استخدام استدعاءات النظام (syscalls)، وهي طريقة معروفة لجعل حياة المحلل أصعب عندما يتعلق الأمر بالتحليل الديناميكي.
لمن ليسوا على دراية بـ syscalls في ويندوز، إليكم فيديو رائع من إعداد oalabs(https://www.youtube.com/watch?v=Uba3SQH2jNE). من فضلكم شاهدوه لأنني شاهدته أيضًا وقد ساعدني كثيرًا في فهم ما يحدث في هذه الدالة.
إذا فحصنا «الكود الزائف» (pseudo-code) الذي أنتجه ida، نرى أنه يبدو هكذا

إذا فحصنا solve_hash بشكل ثابت، فسيبدو هكذا


من منظور الكود الزائف يبدو هكذا
