Taggat med: clamav

Identifiera Projekt Sauron (Remsec)

Detta är en guide till hur Er organisation kan identifiera den senaste avancerade skadliga koden vid namn Projekt Sauron.

Förutom att uppdatera antivirus med senate databaser så kan du även titta på nätverkstrafik för att se kommunikation till kontrollservrar (C&C). Ett till alternativ är att söka efter så kallade IOC:er (indicators of compromise).

IOC:er kan vara hashsummor, text-strängar, IP-adresser, URL:ar och mycket mer. Man kan säga att det är en typ av signaturer som är öppna, till skillnad från många antivirus-databaser som är stängda (förutom clamav).

Det finns ett antal gratis verktyg för att söka efter IOC:er samt ett antal olika öppna sammanställda listor med IOC:er.

Exempel på en IOC som identifierar Powershell verktyget Invoke Mimikatz:

Invoke Mimikatz Powershell

Ovan regel använder sig av Yara-formatet som är C-liknande. Yara är även ett öppet verktyg samt bibliotek till Python.

Följande metodik är framtagen av OpenIOC-projektet.

IOC metodik

lokiOch som du kan se av ovan process så är tanken att IOC:er snabbt ska gå att applicera i en mängd olika mjukvaror såsom IDS/IPS, SIEM, nätverket eller lokalt på en klient/server.

För att försöka identifiera Projekt Sauron så laddar jag hem först Loki-scannern:

wget https://github.com/Neo23x0/Loki/raw/master/loki.exe

Och sedan senaste signaturbiblioteket:

wget https://github.com/Neo23x0/signature-base/archive/754d19604d7c36580a3f254f341d220343ca9bdd.zip

Sedan måste du se till att hash-summan för loki.exe är korrekt samt att katalogstrukturen är korrekt. Sha256:

99239b002d76ea81fe239de2ad4d8fef4157ea0759a39e777a68e050df580342

Annars får du ett felmeddelande likt detta om katalogstrukturen är felaktig:

Traceback (most recent call last):
 File "<string>", line 811, in initialize_filename_iocs
WindowsError: [Error 3] The system cannot find the path specified: 'E:\\./signat
ure-base/iocs/*.*'
Traceback (most recent call last):
 File "<string>", line 1253, in <module>
 File "<string>", line 119, in __init__
 File "<string>", line 860, in initialize_filename_iocs
UnboundLocalError: local variable 'ioc_filename' referenced before assignment

När allt väl är på plats så är det bara att starta genomsökningen. Förslagsvis som en användare med behörighet att läsa processer och filer (Administratör):

LOKI IOC Scanner

Sen är det bara att vänta. En genomsökning kan ta flera timmar för en enda klient eller server.

När den är klar söker du efter följande text:

[RESULT] Indicators detected!
[RESULT] Loki recommends checking the elements on Virustotal.com or Google an
riage with a professional triage tool like THOR APT Scanner in corporate netw
s.
[NOTICE] Finished LOKI Scan SYSTEM: IE9WIN7 TIME: 20160813T10:53:49Z

Håll även koll på falska positiva (false-positives) indikationer. Windows sökverktyg SearchIndexer.exe gillar exempelvis att indexera upp dina signaturer och kan göra så att Loki varnar.

Loki arbetar med följande kontroller:

1. Filnamns IOC:Er
Regex-matchning på sökväg eller namn

2. Yara Regelkontroll
Yara signaturkontroll på fil eller process (minne)

3. Hashkontroll
Jämför hashar i en mängd olika format (MD5, SHA1, SHA256)

4. C2 kontrollkanal
Kontrollerar anslutningspunkter mot C2 IOCs (nytt sedan Loki version 0.10)

Och även följande presentations-bild från företaget Mandiant FireEye beskriver en indikator bra:

whats-an-indicator-copy_1

Senare kommer jag även gå igenom hur du använder verktyget Volatility för offline-analys, en av mina favoriter.

Denna guide fungerar för att identifiera nästan all skadlig kod, bara man vet vad man söker efter. Givetvis så bör även nätverkstrafik kontrolleras, men i fallet med Sauron så finns det ännu inga DNS-namn eller IP-adresser ut som man kan kontrollera för kommunikation och kontrollkanaler (C&C).

Och så klart underlättar nätverksforensik om du redan sparar undan DNS-uppslag eller all trafik som flödar ut/in på nätverket med trafikinspelning, något jag rekommenderar.

Värt även att poängtera är att när du exekverar kod såsom Loki i enlighet ovan så kan även detta innebära en säkerhetsrisk.

Men att kontrollera mot filnamn, hashsummor och annat är sådant som är statiskt. Antagonisten kommer bara att ändra sådant när hen blir upptäckt. Därför är det även bra att lära sig metoderna som nyttjas och kontrollera dessa.

Nätverksforensik med Dshell från US Army

Den amerikanska militärens forskningscenter vid namn U.S. Army Research Laboratory har släppt ett verktyg för att analysera nätverkstrafik (nätverksforensik). Verktyget är skrivet i Python och ligger uppe på Github för vem som helst att ladda ner och testa samt skicka in förbättringsförslag.

Även så är Dshell modulärt och har stöd för att återskapa TCP-strömmar samt IPv4 och IPv6.

Installation Dshell

Följande kommandon exekveras för att installera paketberoenden på exempelvis Ubuntu:

$ sudo apt-get install python-crypto python-dpkt python-ipy python-pypcap python-pip unzip build-essential
$ sudo pip install pygeoip
$ wget https://github.com/USArmyResearchLab/Dshell/archive/master.zip
$ unzip master.zip
$ cd Dshell-master
$ make

Då var installationen klar och du bör ha en fil vid namn dshell.

Nätverksforensik med dshell

Om du ej sitter på inspelad nätverkstrafik i form av pcap-filer så kan du ladda hem någon av de publika filerna från Netresec:

$ wget http://download.netresec.com/pcap/maccdc-2012/maccdc2012_00016.pcap.gz
$ gzip -d maccdc2012_00016.pcap.gz

Dshell stödjer även att köras i realtid mot ett nätverkskort, använd då flaggan -i (för interface).

Finemang. Då startar vi dshell och listar de avkodningsmoduler som följer med som standard med decode -l

Dshell modulerFör att få hjälp med en specifik avkodningsmodul kan man skriva:

Dshell> decode -d rip-http -h

Vi vill nu testa rip-http som är en modul som extraherar hur nedladdningar över http. Vi ser även att det finns möjlighet att ange filändelse så vi anger att vi vill läsa ut alla .PNG-bilder:

Dshell> mkdir img
Dshell> cd img
Dshell> decode -q -d rip-http ../maccdc2012_00016.pcap --rip-http_name_filter="\.png"

Vi får då upp ett antal rader på skärmen som bekräftar att det identifierats PNG-bilder i nätverkstrafiken (eller åtminstone vad filändelsen säger).

Men det var ju mindre kul, låt oss istället försöka hitta på någon slags skadlig kod:

Dshell> cd ..
Dshell> mkdir files
Dshell> sudo apt-get install clamav
Dshell> cd files
Dshell> decode -q -d rip-http ../maccdc2012_00016.pcap

Sen väntar du ett bra tag på att samtliga nedladdningar ska skrivas ut till disk. Du kan testa att labba med -t och -p som står för trådat respektive parallella körningar.

När det är klart så kan vi testa att söka igenom samtliga filer med clamav:

$ clamscan -i -r

Och får då ut att ett antal suspekta filer identifierades:

/home/vagrant/Dshell-master/files/apache.php_: JS.Agent-144 FOUND
/home/vagrant/Dshell-master/files/apache.php: JS.Agent-144 FOUND
/home/vagrant/Dshell-master/files/apache.php__: JS.Agent-144 FOUND
/home/vagrant/Dshell-master/files/process.php: PHP.ShellExec FOUND

Det var väl ett trevligt verktyg för att utföra nätverksforensik? Intressant är också att det finns en decoder för INNUENDO DNS-kanal som skapats genom att observera en produktvideo från Immunity som är företaget som utvecklar INNUENDO-produkten.