Hur kommunicerar skadlig kod
När vi kommer till skadlig kod så finns det ett antal sätt för den att kommunicera med utsidan och kontrolleras. Detta kan göras för att hämta uppdateringar, instruktioner eller transportera ut värdefull information från nätverket. I det här blogginlägget kommer vi snabbt och lätt gå igenom ett par nya trender för skadlig kod att kommunicera och för den nyfikne kommer vi presentera två open source alternativ som använder twitter och gmail.
Låt oss introducera Command and Control även benämnt som C2 samt C&C. Det är ett sätt för den som kontrollerar den skadliga koden att kommunicera med sitt mästerverk. De har nu fått in sin kod i ditt nät, men varför sluta där? För om koden har kommit dit, så ska den kontrolleras. Data kan behövas transporteras ut, den skadliga koden uppdateras eller instruktioner som ska genomföras.
Kommunikationen till kontrollservern brukar oftast ske med två metoder, antingen push eller pull.
- Push-modellen, här skickar C2-servern ut kommandon till alla infekterade datorer.
- Pull-modellen, här hämtar den infekterade datorn kommandon från en bestämd plats, detta görs genom att den skadliga koden tittar efter nya kommandon regelbundet.
Men hur ofta används C2 i skadlig kod och ser vi några trender inom detta? QinetiQ [1] har tagit fram en tabell över C2 i dokumenterade incidenter. I den tabellen kan vi klart och tydligt se en ökning i användningen av C2. Dock skriver de att dessa siffror inte är helt fastställda då det finns problem med insamlingen och rapportering av data innan 2010.
Det finns ett antal kommunikationskanaler för skadlig kod att använda sig av. Historiskt så har de flesta kommunicerat genom http och IRC. Men hur ser det ut idag? Ser vi någon förändring inom detta? Vi tittar på en presentation från BlackHat [2] som presenterar följande tabell:
Som vi ser i tabellen ovan beskrivs det i presentationen även hur DNS:er används för denna kommunikation. Det sker genom att den infekterade datorn skickar ut en förfrågan om en domän. Denna förfrågan skickas till en DNS-server som även är C2 server. I svaret den skickar göms ett meddelande. Så kan alltså den skadliga koden kommunicera genom DNS förfrågningar. Två exempel på skadlig kod som använder denna teknik är Feederbot och PlugX.
En annan intressant teknik som visas är steganografi, då bilder kan laddas upp på t.ex. en blogg som sedan läses in av den skadliga koden. Bilderna innehåller då gömd kod för att instruera offret. Ett exempel på skadlig kod som använt det här konceptet är TDSS/Alureon.
Sedan finns även exempel på att kommentatorsfältet på Youtube-video har använts för kommunikation. Ett exempel är Janicab [3]
Låt oss gå tillbaka till tabellen igen, vi har där en tregradig skala. Denna skala visar hur sofistikerade kommunikationskanalerna är. Vi ser där att Stuxnet ligger på andra nivån. Så om vi utgår från detta läge, så är det inte troligt att dessa används av för så många grupperingar.
Det var en kort och snabb sammanfattning om några olika sätt som den skadliga koden kan kommunicera. För den nyfikna presentera vi också två exempel med källkod som använder Gmail och Twitter som C2. Både Gcat och Twittor är uppbyggda på samma sätt. Nedan följer en snabb presentation:
Gmail – Gcat [4] bakdörr som använder Gmail som C2 server
För att sätta upp denna bakdörr behöver du:
- Ett gmail konto, samt att du tillåter alla appar att ansluta till detta.
- De två filerna:
- gcat.py ett script som låter dig kommunicera med dina bakdörrar.
- implant.py själva bakdörren.
När detta är ordnat finns följande kommandon:
cmd CMD Execute a system command download PATH Download a file from a clients system upload SRC DST Upload a file to the clients system exec-shellcode FILE Execute supplied shellcode on a client screenshot Take a screenshot lock-screen Lock the clients screen force-checkin Force a check in start-keylogger Start keylogger stop-keylogger Stop keylogger
Twitter – Twittor [5] Bakdörr som använder twitter för C2
- Ett twitter konto
- De två filerna:
- twittor.py ett script som låter dig kommunicera med dina bakdörrar.
- implant.py själva bakdörren.
Kommandon som Twittor kan köra:
refresh - refresh C&C control list_bots - list active bots list_commands - list executed commands !retrieve <jobid> - retrieve jobid command !cmd <MAC ADDRESS> command - execute the command on the bot !shellcode <MAC ADDRESS> shellcode - load and execute shellcode in memory (Windows only) help - print this usage exit - exit the client
Sammanfattning
Vi har idag gått igenom och nosat på ytan hur skadlig kod kan kommunicera, samt länkat två exempel. Så hur ser framtiden ut? Det är svårt att säga, men det verkar vara en trend att mer skadlig kod kommunicerar utåt och att en ökning har skett i att använda sociala-medier. Vid mer avancerade attacker kan mer sofistikerade kommunikationskanaler användas. Det är dock inte troligt att dessa tekniker används för den stora massan i nuläget. Det var allt för idag. Hoppas ni lärde er något idag samt att er dator inte twittrar konstiga tweets.
[1] http://www.cpni.gov.uk/documents/publications/2014/2014-04-11-cc_qinetiq_report.pdf
[3] http://arstechnica.com/security/2013/07/equal-opportunity-malware-targets-macs-and-windows/