Trojan med många attacktekniker

Publicerat: 30 maj 2011 i Uncategorized

image

Nyligen upptäckte Kaspersky en ny trojan som bygger på trojanen Banker. Den verkar enbart rikta in sig på bankkunder i Brazilien, men jag tyckte den var så intressant så jag ville blogga om vilka tekniker den använde för att lura slutanvändarna.

Trojanen utnyttjar ett säkerhetshål i gammal Java Runtime Environment (JRE). Den möjliggör en så kallad drive-by-download, dvs det räcker att man besöker en webbsida med en elak Javaapplet för att man ska få trojanen installerad. Flera populära brazilianska webbsidor hade hackats och fått denna applet installerad på sina webbservrar, så tipset “undvik skumma sidor” hade inte hjälpt.

Följande filer packades upp av trojanen:

image

Med hjälp av reg-filen slår man av User Account Control (UAC) och installerar ett fulcertifikat i Trusted Root Certificate Store, dvs det anses som fullt betrott av datorn.

imageTrojanen fungerar även på 64-bitars Windows. Men 64-bitars Windows är normalt skyddat med PachGuard (eller Kernel Patch Protection som det också kallas), vilket innebär att bara betrodda signerade drivrutiner kan installeras. Hur gick de runt detta då?

 

Jo, med hjälp av bat-filen konfigureras datorn (med bcdedit.exe) att starta upp Windows i TESTSIGNING-läge vid nästa omstart, läs mer om det här. Detta innebär att man accepterar ett specialcertifikat som Microsoft tillhandahåller för att förenkla tester för utvecklare. Jag har sagt det förr och kommer att behöva säga det igen: Finns det en “bakdörr/genväg/testfunktion” i en säkerhetslösning kommer den förr eller senare att utnyttjas av elakingarna också.

Så efter nästa omstart av offret installeras de bifogade drivrutinerna helt utan varningar. Dessa drivrutiner ser till att dölja trojanens existens på datorn genom att hooka in sig på Windows-API:erna som listar mappinnhåll och vilka tjänster som körs. Den döljer – på en låg nivå i systemet – alla referenser till sig själv. Det är detta som är själva definitionen av ett rootkit.

Trojanen lägger dessutom till adresser till Brazilianska banker i hosts-filen på datorn. Hosts-filen är en lokal fil som innehåller dns-namn med motsvarande IP-adresser. Denna lista kollas av Windows innan man går vidare med andra försök till namnuppslagning. Får man en träff här går man alltså inte vidare till DNS-förfrågningar.

Exempel på innehåll i en hosts-fil (jag har fejkat innehållet):

image

IP-adresserna som trojanen styrde om offren till hade kopior av bankernas inloggningssystem. De hade också SSL-cert som var signerade av fulcertet som installerats i offrens datorer. För slutanvändaren så det alltså helt ok ut. Man körde ju HTTPS, det var inga varningar och adressen var rätt.

Trojanen avaktiverade dessutom säkerhetsfunktioner som vissa av bankerna hade installerat i sina klienters webbläsare.

Inte ens SMS-koder eller bankdosor hade hjälpt, de som skapade trojanen kan ju skicka SMS-koden eller challenge/respons (modifierad vid behov) mellan offret och den riktiga banken. Detta hade dock gjort att elakingarna bara kunde logga samtidigt som när offret gjorde det, inte när de ville. Men man behöver ju bara vara inloggad en gång för att tömma kontot.

Ok, så hur kunde offren skyddat sig då? Man bör inte göra bankärenden på samma dator som man använder för att surfa runt på. Man kan använda bootbar live-CD, virtuella maskiner eller olika fysiska maskiner. Lite besvärligt, men många Brazilianare önskar nog att de hade gjort så.

Om man av någon anledning väljer att inte skilja på surf och bankärenden då?

Patcha allt! Inte bara Windows utan även alla program, plugins och tillägg. Använd SUMO och/eller Secuina PSI som jag har bloggat om tidigare för att underlätta detta. Uppdaterat antivirus är förstås också ett måste.

Att titta på utgivaren av SSL-certifikatet hade inte gett så mycket, eftersom det enda som behöver skilja mellan det riktiga och det fejkade är dess thumbprint. Namet på det utgivande certifikatet sätter ju hackern till vad han vill.

Jag använder en plugin till Firefox som heter Certificate Patrol. Jag ska blogga om det nån gång, men den hade varnat mig om att bankens certifikat – även om det var giltigt – hade bytt utgivare. Detta kan visserligen ske utan att det är ”fel”, men det skulle i alla fall göra att jag skulle besöka sidan från en annan dator på ett annat nät och se om det var bytt på den också, speciellt om förra certets giltighetstid inte var på väg att gå ut (Certificate Patrol har koll på det). Detta under förutsättning att jag installerat pluginet innan jag fick trojanen förstås.

Säga vad man vill, men man blir både imponerad och skrämd av så här sofistikerade attacker.

Annonser
kommentarer
  1. David Dikman skriver:

    Som du säger, skönt att man lever i Sverige 🙂 Riktigt intressant läsning, synd att så många snillen sitter på den onda sidan.

    Börjar sånt här bli aktuellt skulle det vara nyttigt att få ett exempel på den där PachGuard

  2. Vad menar du med fulcert i trusted roots?

    Alla rotcert är, precis som ”fulcert” selfsigned då dom inte är utgivna av en CA högre upp i PKI hierarkin. En Root CA är alltid selfsigned!

    • Tom Aafloen skriver:

      Det är inte ett fulcert pga vem som signerade det utan hur det kom in i datorn och blev betrott. Skadlig kod inte är skadlig beroende på i vilket språk man skrev det utan pga av syftet och hur det exekveras. Men skadligt cert lät fel.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s