Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Forenzička analiza Cobalt Strike alata

Video - Sharepoint

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.

Uvod

Cobalt Strike[1] je jedan od danas najkorištenijih alata za C2 komunikaciju u svijetu penetracijskog testiranja, ali i kriminalnih kampanja[2]. Sam alat nudi mogućnost generiranja i kontroliranja takozvanih beacona koji se mogu instalirati na žrtvino računalo. Kada je beacon instaliran na računalo, ako nije uhvaćen od strane EDR-a ili antivirusa, počinje komunicirati sa Cobalt Strike teamserverom i tada operateri mogu krenuti slati komande beaconu. Komande mogu biti primjerice izvršavanje sistemskih naredbi, snimanje zaslona, snimanje tipkovnice i izvršavanje drugih alata. Cobalt Strike direktno nudi brojne načine kako beacon može biti dostavljen (powershell, DLL, izvršna datoteka, MS Office macro i sl.), ali vješti operateri mogu ugraditi beacon u proizvoljan način dostavljanja. Također, beacon je pomoću njegove MalleableC2 opcije moguće prilagoditi na brojne načine što otežava proces detekcije. Neki od mogućih načina izmjene su promjena izgleda mrežnog prometa, promjena memorijskih indikatora (npr. korištenje RWX memorije) i promjene kako beacon učitava DLL-ove. Zbog svega prije navedenog potrebno je razviti robusne metode detekcije koje su dovoljno prilagodljive na promjene koje operateri mogu dodati u Cobalt.

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”), funkcije koje su dio beaconovog API-a (npr. “impBeaconDataInt”) ili imena datoteka vrlo specifična za beacon (npr. “invokeassembly.dll”). Također postoje pravila koja detektiraju specifične uzorke bajtova koji su vezani uz neku beaconovu funkcionalnost primjerice njegov DLL loader. Takve detekcije su jako uspješne ako beacon nije promijenjen pomoću MalleableC2 profila, što možemo očekivati od naprednijih napadača, ali će uloviti neiskusnije napadače. Ova pravila daju nam i osnovu za forenziku Cobalta pošto ih je lagano pokrenuti nad procesom ili memorijom računala za koju sumnjamo da je inficirana Cobaltom.

elastic_cobalt_rule.yar
rule Windows_Trojan_CobaltStrike_c851687a {
    meta:
        author = "Elastic Security"
        id = "c851687a-aac6-43e7-a0b6-6aed36dcf12e"
        fingerprint = "70224e28a223d09f2211048936beb9e2d31c0312c97a80e22c85e445f1937c10"
        creation_date = "2021-03-23"
        last_modified = "2021-08-23"
        description = "Identifies UAC Bypass module from Cobalt Strike"
        threat_name = "Windows.Trojan.CobaltStrike"
        severity = 100
        arch_context = "x86"
        scan_context = "file, memory"
        license = "Elastic License v2"
        os = "windows"
    strings:
        $a1 = "bypassuac.dll" ascii fullword
        $a2 = "bypassuac.x64.dll" ascii fullword
        $a3 = "\\\\.\\pipe\\bypassuac" ascii fullword
        $b1 = "\\System32\\sysprep\\sysprep.exe" wide fullword
        $b2 = "[-] Could not write temp DLL to '%S'" ascii fullword
        $b3 = "[*] Cleanup successful" ascii fullword
        $b4 = "\\System32\\cliconfg.exe" wide fullword
        $b5 = "\\System32\\eventvwr.exe" wide fullword
        $b6 = "[-] %S ran too long. Could not terminate the process." ascii fullword
        $b7 = "[*] Wrote hijack DLL to '%S'" ascii fullword
        $b8 = "\\System32\\sysprep\\" wide fullword
        $b9 = "[-] COM initialization failed." ascii fullword
        $b10 = "[-] Privileged file copy failed: %S" ascii fullword
        $b11 = "[-] Failed to start %S: %d" ascii fullword
        $b12 = "ReflectiveLoader"
        $b13 = "[-] '%S' exists in DLL hijack location." ascii fullword
        $b14 = "[-] Cleanup failed. Remove: %S" ascii fullword
        $b15 = "[+] %S ran and exited." ascii fullword
        $b16 = "[+] Privileged file copy success! %S" ascii fullword
    condition:
        2 of ($a*) or 10 of ($b*)
}

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, ali ako taj promet nije konfiguriran potpisi u većini komercijalnih rješenja će ga uloviti. Kako bismo vidjeli kako taj promet može izgledati, možemo pogledati javno dostupne profile nastale na temelju istraga kampanja APT grupa [4]. Možemo vidjeti da se ti profili generalno maskiraju kao promet prema nekim web stranicama. Podatci koje Cobalt prenosi serveru se često stavljaju u URL parametre ako je riječ u GET zahtjevu ili u tijelo poruke ako je riječ o POST zahtjevu. URL parametri ili tijelo poruke koje je veliko i/ili šifrirano može biti znak za dodatno provjeriti komunikaciju prema web stranici. Ako stranica nikad nije posjećena prije i ima takav promet to može biti dodatan znak za ljudsku provjeru same stranice i procesa koji komunicira s njom.

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, nologo i noprofile. Također, ne postoji razuman razlog zašto bi primjerice word.exe pokretao powershell pa ako postoji trag da neki nerazumni proces pokreću powershell to je dobar znak za dodatnu istragu.[6]

Detekcija rundll32.exe procesa

Ako nije promijenjeno, a po nekim podacima u čak 90% beacona nije[6], beacon koristi rundll32.exe za izvršavanje poslije eksploitacijskih aktivnosti. Takve aktivnosti su migriranje u druge procese i izvršavanje poslije eksploitacijskih alata kao što je Rubeus. Ako se detektira da neki proces pokreće rundll32.exe to je jedan od mogućih razloga za dodatnu istragu pomoću ostalih metoda navedenih prije.

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, takve modifikacije zahtjevaju značajan trud s napadačke strane i većina napadače nema znanje niti vremena za takve modifikacije. Zato su metode poput YARA potpisa ili analize mrežnog prometa i dalje jako efektivne. Ako se sumnja da je neki proces ili računalo zaraženo Cobalt Strikeom, uvježbani analitičar ga može pronaći pomoću memorijskih artefakata koje ostavlja i tipičnih uzoraka korištenja kao što je pokretanje rundll32.exe procesa za izvršavnje poslije eksploitacijskih aktivnosti.

Literatura

racfor_wiki/seminari2024/forenzicka_analiza_cobalt_strike_alata.txt · Zadnja izmjena: 2025/01/26 15:13 od Delimar Danko
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0