Blogginlägg -

Insecure in Security - "Testa det här - men inte hemma..."

Insecure in Security publiceras varannan vecka och återger och analyserar säkerhetsincidenter som ägt rum. Författaren av bloggen är James Tucker som är säkerhetsexpert inom området nätverkssäkerhet och arbetar på McAfee, en del av Intel Security, i Sverige.

Veckans inlägg är en guide till hur du sätter upp en egen testmiljö för att sätta dina säkerhetsåtgärder på prov.


VARNING: Instruktionerna som följer innebär att du laddar ner aktiv malware till din dator. Försäkra dig om att du vidtagit nödvändiga säkerhetsåtgärder för att säkerställa att du inte blir infekterad.

Mina senaste inlägg har lagt tonvikten på teoretiska frågor inom säkerhet – att planera, synliggöra och agera utifrån tillgänglig information. Därför känns det som hög tid att få lite ”skit under naglarna” genom att lyfta en frågeställning som många av mina kunder har – hur testar man egentligen att det försvar man har på plats fungerar? En utmaning här är att många säkerhetsleverantörer – däribland min arbetsgivare – har strikta regler mot att erbjuda aktiv malware till nya och befintliga kunder, ens i testsyfte. Det håller våra jurister på gott humör, men det är ett problem för den som faktiskt vill säkerställa att den nya brandväggen eller IPS:en faktiskt håller vad den lovar.

Det vanligaste sättet att verifiera säkerhetslösningar är att köra pcaps (Packet captures) eller speciella testfiler som EICAR genom lösningen. Det är ett bra sätt att testa basfunktioner och jag använder själv samma metod ibland för att verifiera basfunktionerna på mina IPS:er. Men det är värt att komma ihåg att en gång upptäckta hot snabbt blir passé och att lösningarna kan anpassas efter dem för att framstå som mer kraftfulla än de är.

Därför ska jag här ge en snabbguide till hur man sätter upp en virtuell maskin i Linux med några scripts som kommer att ladda ner tonvis med skadlig kod, lagra den lokalt och ge dig möjlighet att kolla koden mot Virustotal . Det kommer att innebära en del programmering, vilket jag hoppas inte avskräcker någon. Och – som sagt – det är förstås inte ofarligt och säkert i strid med de flesta interna IT-policies, så se till att alla som behöver veta om experimentet har koll innan du sätter igång. Och ta det försiktigt!

Första steget är att sätta upp din Linux-testmiljö. Jag rekommenderar att använda en virtuell maskin för att skapa någorlunda vattentäta skott mellan testmiljön och resten av nätverket. Det finns goda råd att hämta från den här texten av Lenny Zeltser. Du kommer åtminstone att behöva vara säker på att din VMWare-server är patchad och uppdaterad och att du skapar ett helt nytt virtuellt nätverk på ESX-servern som saknar beröringspunkter med produktionssystemen. Jag skulle rekommendera att du använder Kali Linux, som går snabbt att installera och komma igång med. Kali har också ett bra utbud av verktyg för att övervaka och testa systemets sårbarhet – ett utmärkt tillägg till varje säkerhetsproffs verktygslåda. Du kan hämta en förbyggd VMWare-image här.

Sätt upp den virtuella maskinen på din ESX-server, logga in med användarnamnet ’root’ och lösenordet ’toor’ och öppna en terminal från applikationsmenyn. Jag utgår här från att din virtuella maskin fungerar med adresshantering enligt DHCP-standard (om inte kan du lösa det med lite handpåläggning genom standardkommandon).

Vi börjar med att uppdatera allt till senaste version. Skriv in:

apt-get update && apt-get upgrade

Sedan kan du installera verktyget för att ladda ner malware. Det heter Maltrieve och söker genom mängder av offentliga listor över malware och skadliga domäner, och laddar ner de infekterade filerna. Genom detta verktyg kan vi testa IPS:en, brandväggen eller proxyn för att se hur dessa reagerar på ett stort inflöde av skadlig kod. Att installera Maltrieve är ganska enkelt:

cd /opt
git clone
https://github.com/technoskald/maltrieve.git
cd maltrieve

Nu bör du se ett antal filer i Maltrieve-biblioteket. Första gången jag testade bestod fångsten av nästan en gigabyte av olika former av malware. När du skriver in nästa kommando blir det action.

python /opt/maltrieve/maltrieve.py

Om allt är som det ska bör det system du testar få frispel vid det här laget. Min egen IPS reagerade till exempel så här:

Notera att Maltrieve också stöder proxyanvändning, så om du vill testa en proxy, lägg till

-p IPOFPROXY:PORT

Till kommandot så används proxyn för nedladdningen. Själv kör jag följande:

python maltrieve.py -p 10.XX.YY.ZZ9090

En fördel här är att du kan få svar från proxyn, exempelvis ger min gateway omedelbart en notifiering varje gång den blockerat ett virus. Till exempel:

2014-05-28 03:01:59 140577482077952 Fetched URL http://www.somebadurl.com/badfile.zip?mscfopoysckwdh from queue

2014-05-28 03:01:59 140577482077952 353 items remaining in queue

2014-05-28 03:01:59 140577465292544 urlopen() returned error VirusFound

Det tar ett tag att köra Maltrieve. Du kommer att se filer dyka upp i katalogen /tmp/malware – observera att dessa filer döps om enligt filens md5sum. Det hjälper dig förhindra att du kör en fil av misstag men kan göra det lite komplicerat att avgöra vad du laddat ner. Nästa steg låter dig kategorisera filerna och kolla dem mot Virustotal.

Tidigare gjorde vi maltrievecategorizer.sh exekverbar, nu behöver vi redigera i filen för att lära skriptet var det ska söka. Öppna filen

nano /opt/maltrieve/maltrievecategorizer.sh

och ändra raden

root_dir="/media/malware/maltrievepulls/“

till

root_dir="/tmp/malware/"

Spara och stäng filen. Kör sedan följande sekvens:

cd /tmp/malware
/bin/bash /opt/maltrieve/maltrievecategorizer.sh
ls

Nu bör du se en mängd olika kataloger sorterade efter filtyp och filstorlek. Det kan vara användbart om du vill skicka en fil igenom säkerhetssystemet igen, eller skicka den till IT-säkerhetsteamet eller en leverantör.

Slutligen ska vi sätta upp ett script för att kolla filerna mot Virustotal. Det är extremt användbart för att avgöra om hotet är känt bland andra leverantörer och i så fall få ett namn och mer information om det. Registrera ett konto på sajten och kopiera din API-nyckel som på bilden till höger:

Kommandona nedan skapar en kopia av vt.py-scriptet som kan matcha dina nedladdade filer mot kända hot.

cd /opt
git clone 
https://github.com/botherder/virustotal.git
cd virustotal

nano vt.py

Lägg in API-nyckeln du kopierade.

api_key = '6XXXXXXXXXXXXXXXXXXXXXa'

Spara filen och gör den exekverbar.

chmod +x vt.py

Flytta sedan filen till ett mer lättåtkomligt ställe.

mv vt.py /usr/local/bin/

Användningen är enkel. Kör vt.py /PATH/TILL/FILEN – du kan köra vt.py på ett enda sample, eller en hel katalog åt gången. Nedan ser du en förkortad version av resultatet på en testad fil.  

vt.py PE32/small/18d9d56fad12a3dcdf4580e1bb23620d
[*] (PE32/small/18d9d56fad12a3dcdf4580e1bb23620d): FOUND
\_ Results: 50/53 DETECTED

SHA256: 849040d2a51cbf3e6a1e4774a0531765285fba54eeefe3b14edae1e2b643b2bb
Scan Date: 2014-06-01 20:15:40

Signatures:
W32.KeyloggerLTHVAP.Trojan

Trojan.Generic.KD.914347
Trojan/W32.Agent.41675

Backdoor.Win32.Azbreg!O
Trojan.Ircbrute.SU5

Dropper-FED!18D9D56FAD12

Och därmed har du satt upp en liten testmiljö som kollar dina försvarsmekanismer mot skadliga filer och url:er. Det finns förstås många fler saker du kan göra i den här miljön, som att skapa en egen databas över malware, installera Evader, eller använda verktygen som följer med Kali.

En sista påminnelse – jag har sagt det några gånger redan, men det tål att upprepas – säkerställ att du har isolerat den virtuella maskinen där du sätter upp testmiljön från resten av nätverket, och att alla hosts du interagerar med på ditt interna nätverk har antivirus eller hostbaserad IPS installerat. Jag råkade nästan illa ut ett par gånger medan jag skrev det här och räddades av min lokala antivirusinstallation.

Jag vill också gärna höra dina kommentarer och synpunkter på den här testmiljön – har du egna idéer om vad man skulle kunna göra med den eller hur den kan optimeras? Mejla mig på james_tucker@mcafee.com så diskuterar vi vidare!


Ämnen

  • Datasäkerhet

Kategorier

  • insecure in security
  • linux
  • hot
  • testmiljö
  • malware
  • skadlig kod

Kontakter

Mattias Källman

Presskontakt PR-kontakt +46 (0)760 289270