Taggat med: Nätverksforensik

Framtiden inom nätverksforensik

nätverksforensik

Jag var intresserad av hur framtiden inom nätverksforensik ser ut nu när allt mer av vår vardagliga kommunikation på internet är krypterad. Så därför kontaktade jag Erik Hjelmvik som driver företaget Netresec samt utvecklar den populära mjukvaran Network Miner. Erik är en av Sveriges främsta specialister inom nätverksforensik och en av de som jag känner som troligtvis kan besvara frågan bäst.

Så här skriver Erik om framtiden gällande nätverksforensik och de utmaningar som området står inför:

Erik Hjelmvik”Användningen av HTTPS har ökat dramatiskt under de senaste fyra åren. En orsak till den ökade SSL-användningen är att man nu kan få gratis SSL-certifikat genom initiativ som t.ex. Let’s Encrypt, men jag tror även att Snowdens avslöjanden har gjort att intresset för krypterad  kommunikation har ökat märkbart. Den ökade användningen av SSL gör dock att det blir allt svårare att genomföra nätverksforensik eftersom innehållet i kommunikationen nu ofta är krypterad.

Som forensiker är det därför viktigt att ta vara på den information som går, även när trafiken är krypterad. Jag har exempelvis byggt in stöd i NetworkMiner för att extrahera X.509-certifikat från nätverkstrafik, vilket gör det lättare att hitta felaktiga och ogiltiga certifikat som används av botnät och annan skadlig kod för att kryptera sin kommunikation. Ett annat exempel på trafik som använder sig av ogiltiga certifikat är Tor, vilket använder sig av en SSL-handskakning för att sätta upp sin krypterade förbindelse.

Fingeravtryck i nätverkstrafik

En annan utmaning är att den tillgängliga bandbredden ökar, och därmed även datamängden som en forensiker behöver analysera. Utmaningen blir med andra ord en variant av att hitta nålen i höstacken, där höstacken utgörs av inspelad nätverkstrafik. Som forensiker kan man använda sig av exempelvis ”Rinse-Repeat Threat Hunting” för att minimera höstacken. Det kan också vara bra att ta ett steg tillbaka och börja analysen med att titta på flow-data, som vilka IP-adresser som pratar med vilka, innan man börjar analysera innehållet i trafiken.

För att kunna göra det effektivt krävs det dock att flow-vyn är berikad med information om exempelvis domännamn och WHOIS-information om IP-adresser, vilket jag tagit fasta på i verktyget CapLoader. Styrkan med CapLoader ligger dock framför allt i att kunna gå från flow-analys till att analysera trafiken på paketnivå med bara ett klick. De flesta flow-verktygen saknar dock denna förmåga, vilket gör att forensiker ofta tittar på antingen flow-data eller på paketdata istället för att kombinera båda teknikerna till ett mer effektivt arbetsflöde”

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.

Så blir du en ninja på nätverksforensik

Nätverksforensik

Artikel uppdaterad: 2016-10-20

För att bli en ninjamästare på nätverksforensik så gäller det först och främst att du är bekväm och känner till din uppsättning med verktyg. Jag rekommenderar att du börjar med att testa Linux-disten Security Onion som är har en stor mängd olika verktyg förinstallerade såsom NetworkMiner, Argus, Snort och Bro.

Sen gäller det också att ha tillgång till någon data att experimentera med, och desto råare format desto bättre. Därför gillar vi som jobbar med nätverksforensik formatet pcap (och numera även vidareutvecklingen pcap-ng).

Har du inga egna pcap-filer så kan du alltid skapa upp dessa genom att spara ner nätverkstrafik till/från din egen dator eller hämta hem från Wireshark eller Netresec.

Hitta rätt i nätverkstrafiken

När du väl har tillgång till råmaterial i form av pcap-filer så måste du lista ut hur du ska angripa problemet. Oftast så finns det inte enbart en lösning på problemet utan som forensiker får du prova flera olika innan du eventuellt hittar en lösning.

Mer åren får du troligtvis även mer erfarenhet och kan lösa problem snabbare och navigera rätt snabbare bland nätverkstrafiken.

Frågan vi måste ställa oss är: Vad är syftet? Vad är det vi är ute efter. Är det potentiellt skadlig kod som har passerat eller söker vi efter något annat. Och innan vi börjar så bör vi även veta hur nätverkstopologin ser ut:

  • Är trafikinspelningen innanför eller utanför brandväggen?
  • Är det bakom NAT?
  • Är det egress/ingress eller dubbelriktad trafik
  • capinfos-kommandot som följer med Wireshark ger bra info

Sedan bör ni ha en Standing Operating Procedures (SOP) för hur trafiken ska hanteras. Jag rekommenderar exempelvis att alltid använda Snort och ett relativt uppdaterat regelverk som en av de första kontrollerna.

Lär dig med hjälp av CTF

CTF står för Capture The Flag och är en typ av övning som du själv kan utföra för att lära dig mer samt testa dina färdigheter. Det finns ett antal olika CTF:er som är inriktade på nätverksforensik och du börjar som oftast med att ladda hem en pcap-fil som ska analyseras.

Här har jag listat ett antal CTF:er med inriktning på nätverksforensik:

Om du kör fast med någon av ovan så testa att söka efter CTF:ens namn samt write-up så hittar du troligtvis lösningar.

NinjaUtmaningar inom nätverksforensik

Att titta på nätverket ger oftast enbart en bild som många gånger bör kompletteras med övriga forensiska utredningar av datorer exempelvis. Även kan loggfiler från olika system också komplettera den nätverkforensiska undersökningen.

Jag ser även att mer och mer trafik blir också krypterad och använder sig av TLS (https) vilket gör det svårare att titta vad som går i sessionerna. False-flag är också något som förekommer mer och mer där metoden går ut på att förvilla och lämna falska spår.

Behöver Er organisation hjälp med nätverksforensik? Kontakta Triop AB 

En annan metod att kringgå och försvåra nätverksforensik är domain-fronting. Med denna metod så döljs skadlig trafik i kommunikation mot tjänster såsom CDN (se mitt föredrag från Internetdagarna 2014).

Verktygen du ska lära dig

Wireshark och tshark

Först och främst är Wireshark och dess CLI-version tshark något som jag anser att alla bör behärska. Och hanterar du stora mängder data så är det otroligt viktigt att känna till alla kommandoargument som tshark kan ta.

Exempel på kommando: Följande kommando kan användas för att titta på information om TLS/SSL-certifikatet vid en handskakning:

tshark -r snort.log.1425565272 -R ssl.handshake.certificate -V | grep dNSName:

Även så kan vi titta på SNI-värdet (server name indication) om detta finnes:

tshark -r test.pcap -T fields -e ssl.handshake.extensions_server_name

tcpdump

tcpdump är också ett sådant självklart kommando som följer med nästan alla Linux-distar och kan användas till det mesta. Om inte annat så har verktyget bra prestanda när det gäller att filtrera trafik när du skriver pcap-filter för att förfina sökningen, exempelvis:

tcpdump -r gigantisk-fil.pcap -w mindre-fil.pcap "dst port 31337"

Och behöver du snabbt och enkelt spara ner data så brukar jag köra kommandot nedan. Observera att snaplen -s inte behövs om du har en relativt ny tcpdump-version eftersom nya går standard till 65535 bytes (tidigare 96).

tcpdump -i en2 -s0 -w test.pcap

ngrep

ngrep används precis som det klassiska kommandot grep, dvs att vi söker efter något. Gör ingen direkt tolkning av protokoll såsom tshark/wireshark vilket gör att kommandot kan vara snabbare att arbeta med.

Följande kommando kan användas för att identifiera namn på HTTP-förfrågningar

ngrep -q -W byline -I snort.log.1425565276 Host:|grep -i ^Host

Network Miner

Erik Hjelmvik som utvecklat Network Miner har även utvecklat CapLoader och andra bra verktyg. Följer med Security Onion men en gratisversion kan även laddas hem från Netresec. Lätt och enkelt att arbeta med och är det bästa verktyget för att identifiera filer som går över nätverket.

För cirka 7400kr så får du en bättre version som har ytterligare en mängd funktioner såsom protokollidentifiering med hjälp av statistik, GeoIP, CLI-version.

NetworkMiner

Om du använder dig av Security Onion kan du starta NetworkMiner med kommandot /opt/networkminer/networkminer

tcpflow

NinjaDetta verktyg parar ihop TCP:s fem-tupel och skriver ner dessa strömmar till disk, en ström per fil. Otroligt värdefullt om du vill analysera stora mängder data närmare.

Varje fil får ett namn som relaterar till sessionen i form av IP-adress src/dst samt käll och destinations-porten. Med nollor som prefix, exempelvis:

185.003.051.013.00080-010.101.001.143.63092

Sedan kan vi hantera filen med vanliga verktyg såsom grep, head osv:

$ head -3 185.003.051.013.00080-010.101.001.143.63092
HTTP/1.0 304 Not Modified
Server: Apache-Coyote/1.1
P3P: policyref="/w3c/p3p.xml", CP="NON DSP COR NID CUR ADMa DEVa PSAa PSDa TAIa OUR IND COM CNT DEM INT LOC NAV PRE UNI"

Även så genomförs ingen vidare avkodning, så vi får själv ta hand om gzippat innehåll osv. Men har vi en nyare version och lägger på argumentet -e http (eller -a). Då får vi en till fil men med suffixet -HTTPBODY-002 exempelvis:

185.003.051.013.00080-010.101.001.143.63092-HTTPBODY-002

snort

Snort är en mjukvara för att upptäcka intrång i nätverkstrafik (IDS) men kan även läsa PCAP-filer i efterhand. Och som anti-virus motorer så fungerar en IDS bäst då regelverket är uppdaterat.

När det gäller Snort så finns det tre huvudspår när det gäller regelverk:

  • Emerging Threats
  • Snort – Cisco Talos
  • Snort Community

Jag rekommenderar att använda Snort Cisco Talos, kostar enbart 29$ per år för personligt bruk. Annars testa även Emerging Threats regler som också uppdateras och innehåller 47k regler. Kör kommandot rule-update på Security Onion om du vill uppdatera regelverket med PulledPork:

PulledPork

För att läsa in en pcap-fil och sedan skriva ut larm till mappen ./log/ kör du:

snort -r snort.log.1425565276 -c /etc/nsm/templates/snort/snort.conf --daq pcap --daq-mode read-file -l ./log/

Och om du som jag får många regler som larmar false-positive så kan du alltid lägga till dem i filen /etc/nsm/pulledpork/disablesid.conf

Även så kan Snort logga direkt till console med -A console argumentet.

Givetvis är även Suricata ett alternativ till Snort, och finnes så klart redan installerat i Security Onion.

Snort

argus

Argus (audit record generation and utilization system) är uppdelat i en mängd olika verktyg såsom ra, rasort och racluster. Argus gör det lätt att arbeta med flöden samt övergripande analyser. Och precis som många andra verktyg som jag gått igenom här så kan Argus fungera offline eller direkt online mot nätverkstrafik.

Även så kan argus-filer vara bra vid långtidslagring där bara meta-data behöver sparas från trafiken.

argus -r snort.log.1425565276 -w snort.log.1425565276.argus

Vår pcap-fil är på 153 MB och argus metadata-fil är på 241K.

Sedan kan vidare använda argus verktyg såsom racluster och rasort för att koppla ihop TCP-sessioner och sedan sortera samtliga sessioner i filen för att försöka upptäcka exfiltration:

racluster -r snort.log.1425565276.argus -w -|rasort -r - -m sbytes|head -30

Och vill vi enkelt filtrera ut samtliga tcp-sessioner, slå ihop dessa samt se vilka som varit mest långvariga kan vi köra följande kommando:

racluster -r snort.log.1425565276.argus -w - -- tcp|rasort -r - -m dur -s stime saddr daddr sport dport dur proto |tail

OPSEC

SchhyyyNär du utför dina analyser så bör du upprätthålla god sekretess. Trafiken du analyserar kan innehåll diverse kod som gör att sårbarheter utnyttjas i exempelvis Wireshark. Se därför till att köra så mycket som möjligt med låg behörighet och helt avskilt från andra nätverk och system såsom Internet.

Och fundera igenom allt du gör mot Internet: Vad lämnar detta för spår? Om du exempelvis analyserar kommunikation som en trojan utnyttjar (C&C) och det helt plötsligt dyker upp ett curl-anrop från din analys-klient så kan detta förstöra framtida mtrl.

Antagonisten kan nämligen bevaka kontrollkanalerna och då snabbt radera samtliga bevis, nycklar osv om hen märker att du utför analys.

Skärmdump

Denna skärmdump är från webbgränssnittet i Security Onion:

securityonion-web

Test av NetworkMiner 2.0

NetworkMiner 2.0NetworkMiner är precis som det låter en produkt för att undersöka nätverkstrafik. Mjukvaran är utvecklad av det svenska företaget Netresec och har funnits sedan 2007.

Denna nya version har följande funktioner:

  • SMB/CIFS stödjer nu att extrahera filer från SMB-skrivningar
  • Stöd för SMB2-protkollet
  • Yttarligare IEC-104 kommandon implementerade
  • Modbus/TCP hantering
  • Förbättrat stöd i SMTP, DNS och FTP
  • GUI förbättrat vid inläsning av PCAP-filer eller live-läsningar
  • Favicon-bilder extraheras nu ur nätverkstrafik
  • Stöd för att söka med nyckelord under flertalet tabbar

Under testet så laddade jag in en PCAP-fil från 4SICS-konferensen. Filen var på 134 MB och tog cirka 15 minuter att ladda in.

NetworkMiner ser ut att läsa ut filer, sessioner och all annan information som kan vara relevant för en nätverkforensisk undersökning. Mjukvaran finns även i en betalversion som kostar cirka 7600 SEK och inkluderar då geoip, csv export, os fingerprinting och ett kommandogränssnitt.

Vad är då största skillnaden mellan NetworkMiner och Wireshark? NetworkMiner klarar att extrahera ur filer ur en större mängd nätverksprotokoll även om Wireshark stödjer att tolka fler protokoll.

Här kan du ladda hem gratisversionen av NetworkMiner:

Skärmdumpar:

NetworkMiner NetworkMiner

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.

NetworkMiner ute i version 1.6

NetworkMinerSvenskutvecklade NetworkMiner som är ett utmärkt verktyg vid nätverksforensik och analys av skadlig kod finns nu ute i en ny version.

NetworkMiner finns även som betalversion som då kommer med ett antal intressanta funktioner såsom automatisk protokollidentifiering: Port Independent Protocol Identification (PIPI) samt en kommandoradsklient (CLI).

Nytt i denna version är bl.a. PCAP över IP som gör att du kan starta tcpdump på en annan klient och sedan skicka sniffad data över nätverket till NetworkMiner för vidare analys som kör avkodning och utkarvning av filer från nätverkspaket.

Även så fungerar ”drag och släpp” direkt från NetworkMiner till ditt favoritprogram.

Pcap-over-IP

Fungerar även att skicka över SSL med följande kommando från Linux:

$ tcpdump -i eth0 -s 0 -U -w - | openssl s_client -connect 1.2.3.4:57012

Här kan mer information hittas: