Slijede razlike između dviju inačica stranice.
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
racfor_wiki:seminari2024:forenzicka_analiza_cobalt_strike_alata [2025/01/21 18:45] Delimar Danko yara i mreža |
racfor_wiki:seminari2024:forenzicka_analiza_cobalt_strike_alata [2025/01/26 15:13] (trenutno) Delimar Danko [Forenzička analiza Cobalt Strike alata] |
||
---|---|---|---|
Redak 1: | Redak 1: | ||
===== Forenzička analiza Cobalt Strike alata ===== | ===== Forenzička analiza Cobalt Strike alata ===== | ||
+ | Video - [[https:// | ||
===== Sažetak ===== | ===== Sažetak ===== | ||
Ovaj seminar se bavi analizom alata za izvođenje penetracijskih testova i crvenih timova Cobalt Strikea. U uvodu će biti objašnjeno što je Cobalt Strike i kako ga penetracijski testeri, ali i maliciozni akteri koriste. Zatim će biti objašnjene tehnike za detekciju i razmotit će se neki izazovi u detekciji. | Ovaj seminar se bavi analizom alata za izvođenje penetracijskih testova i crvenih timova Cobalt Strikea. U uvodu će biti objašnjeno što je Cobalt Strike i kako ga penetracijski testeri, ali i maliciozni akteri koriste. Zatim će biti objašnjene tehnike za detekciju i razmotit će se neki izazovi u detekciji. | ||
Redak 12: | Redak 12: | ||
===== YARA pravila ===== | ===== YARA pravila ===== | ||
Kao i kod svakog zloćudnog koda početna detekcija može doći iz YARA pravila. YARA je jezik koji može detektira uzorke u binarnim i tekstualnim datotekama. ElasticEDR ima jedan od poznatijih setova pravila za detekciju Cobalta koji je otvorenog tipa[3]. Iz tog seta možemo zaključit dosta u nizovima znakova koji se mogu naći u procesima u kojima je Cobalt //beacon//. Takvi nizovi znakova su primjerice greške koje Cobalt ispisuje svojim operaterima (npr. "[-] Failed to get default AppDomain w/hr 0x%08lx" | Kao i kod svakog zloćudnog koda početna detekcija može doći iz YARA pravila. YARA je jezik koji može detektira uzorke u binarnim i tekstualnim datotekama. ElasticEDR ima jedan od poznatijih setova pravila za detekciju Cobalta koji je otvorenog tipa[3]. Iz tog seta možemo zaključit dosta u nizovima znakova koji se mogu naći u procesima u kojima je Cobalt //beacon//. Takvi nizovi znakova su primjerice greške koje Cobalt ispisuje svojim operaterima (npr. "[-] Failed to get default AppDomain w/hr 0x%08lx" | ||
+ | |||
+ | <file yara elastic_cobalt_rule.yar> | ||
+ | rule Windows_Trojan_CobaltStrike_c851687a { | ||
+ | meta: | ||
+ | author = " | ||
+ | id = " | ||
+ | fingerprint = " | ||
+ | creation_date = " | ||
+ | last_modified = " | ||
+ | description = " | ||
+ | threat_name = " | ||
+ | severity = 100 | ||
+ | arch_context = " | ||
+ | scan_context = "file, memory" | ||
+ | license = " | ||
+ | os = " | ||
+ | strings: | ||
+ | $a1 = " | ||
+ | $a2 = " | ||
+ | $a3 = " | ||
+ | $b1 = " | ||
+ | $b2 = "[-] Could not write temp DLL to ' | ||
+ | $b3 = "[*] Cleanup successful" | ||
+ | $b4 = " | ||
+ | $b5 = " | ||
+ | $b6 = "[-] %S ran too long. Could not terminate the process." | ||
+ | $b7 = "[*] Wrote hijack DLL to ' | ||
+ | $b8 = " | ||
+ | $b9 = "[-] COM initialization failed." | ||
+ | $b10 = "[-] Privileged file copy failed: %S" ascii fullword | ||
+ | $b11 = "[-] Failed to start %S: %d" ascii fullword | ||
+ | $b12 = " | ||
+ | $b13 = "[-] ' | ||
+ | $b14 = "[-] Cleanup failed. Remove: %S" ascii fullword | ||
+ | $b15 = "[+] %S ran and exited." | ||
+ | $b16 = "[+] Privileged file copy success! %S" ascii fullword | ||
+ | condition: | ||
+ | 2 of ($a*) or 10 of ($b*) | ||
+ | } | ||
+ | |||
+ | </ | ||
===== Analiza mrežnog prometa ===== | ===== Analiza mrežnog prometa ===== | ||
Cobalt Strike //beaconi// kao osnovnu funkciju imaju komunikaciju s C2 serverom. Specifično ta komunikacija može biti preko HTTP, HTTPS, SMB, DNS ili TCP protokola. Ako neki proces koji nema razloga komunicirati tim protokolima s internetom (npr. word.exe, rundll.exe) ili neki proces koji prije nije komunicirao tim protokolima krene komunicirati njima to može biti znak za dodatnu istragu. Sam promet je opet vrlo konfigurabilan pomoću MalleableC2, | Cobalt Strike //beaconi// kao osnovnu funkciju imaju komunikaciju s C2 serverom. Specifično ta komunikacija može biti preko HTTP, HTTPS, SMB, DNS ili TCP protokola. Ako neki proces koji nema razloga komunicirati tim protokolima s internetom (npr. word.exe, rundll.exe) ili neki proces koji prije nije komunicirao tim protokolima krene komunicirati njima to može biti znak za dodatnu istragu. Sam promet je opet vrlo konfigurabilan pomoću MalleableC2, | ||
- | ===== Zaključak ===== | + | == Detekcija teamservera |
+ | Pošto //beacon// mora komunicirati s teamserverom nekako, moguće je da napadači ostave teamserver otvoren prema internetu. Ako je teamserver otvoren i njegove osnovne postavke nisu promjenjene on će slušati na portu 50050 i poznati su TLS certifikati koje taj server koristi za HTTPS komunikaciju. Poznati su i JARM sažetci pošto je teamserver pisan u javi.[5] | ||
+ | ===== Ostali Cobalt artefakti ===== | ||
+ | == Powershell == | ||
+ | Powershell je ugrađen u brojne obrasce izvršavanja unutar Cobalt Strikea i često postoje argumenti u tom izvršavanju koji su vrlo rijetko korišteni u normalnim uvjetima. Primjer takvih argumenata su: //nop, hidden, encodedcommand, | ||
+ | |||
+ | == Detekcija rundll32.exe procesa == | ||
+ | Ako nije promijenjeno, | ||
+ | |||
+ | |||
+ | ===== Zaključak ===== | ||
+ | Cobalt Strike je alat koji je moguće promijeniti do razine da je neprepoznatiljiv tradicionalnih forenzičkim metodama. Na sreću, ili na žalost ovisno o perspektivi, | ||
Redak 29: | Redak 81: | ||
[4] [[https:// | [4] [[https:// | ||
+ | [5] [[https:// | ||
+ | |||
+ | [6] [[https:// | ||