Povzetek
Analize škodljive kode, ki jih na SI-CERT opravljamo na podlagi prijavljenih varnostnih incidentov, kažejo veliko razširjenost trojancev za krajo podatkov (information stealer trojan). Kot samo ime nakazuje, je njihov namen kraja avtentikacijskih podatkov, ki se hranijo na okuženem sistemu (gesel in digitalnih potrdil – certifikatov). Na drugo mesto pa bi lahko uvrstili škodljivo kodo, ki storilcu omogoča oddaljen nadzor nad okuženim sistemom. Gre za vrsto trojanskih konjev, ki ji poimenujemo “Backdor Trojan” ali bolj pogosto “Remote Access Trojan” oz. krajše “RAT”.
Vektor okužbe z zlonamerno kodo je običajno elektronska pošta, občasno pa tudi namestitev brezplačne programske opreme iz nepreverjenega virov ali namestitev plačljivih programov z zlomljeno licenčno zaščito (crack).
RAT – prikrito orodje za oddaljeni dostop
RAT je močno orodje. Z njim storilec izvaja različna opravila, med katerimi so:
- kraja informacij,
- ustvarjanje, zagon ali zaustavljanje opravil in procesov,
- prenos datotek na/iz sistema,
- sprememba kritičnih nastavitev operacijskega sistema (izklop protivirusne zaščite, požarnega zidu, …),
- ponovni zagon ali izklop računalnika,
- izvajanje pregledovanja in različnih napadov na druge sisteme.
V enem od tipičnih scenarijev napadalec najde pregovorni najšibkejši člen in okuži računalnik prve žrtve, preko te okužbe namesti RAT in nato začne z zbiranjem podatkov o okolju žrtve: o njenem računalniku in omrežju, v katerega je ta vključen. RAT orodje omogoča pregled drugih sistemov na lokalnem omrežju in poskus širjenja na njih preko ukradenih avtentikacijskih podatkov, zlomljenih gesel ali izrabe ranljivosti. Na koncu lahko preko RAT na delovne postaje namesti in sproži izsiljevalski virus [1].
Analiza RAT trojanca
Pisci zlonamerne kode veliko pozornosti posvečajo tehnikam, ki otežujejo izvedbo njene analize. Pri tem so lahko bolj spretni oziroma natančni, ali pa manj. Poglejmo si primer.
Tako, kot v večini obravnavanih primerov škodljive kode, se zgodba začne z elektronskim sporočilom. V njem skušajo pošiljatelji prejemnika prepričati, da odpre pripeto arhivsko .rar datoteko, saj naj bi šlo za naročilo.
V arhivski datoteki se nahaja .doc dokument.
Dejansko gre za RTF (Rich Text Format) obliko datoteke, pregled z orodjem rtfobj pa pokaže, da ima vgrajene tri OLE objekte (Object Linking and Embedding).
Vidimo, da datoteka vsebuje dva sumljiva objekta, ki ju tudi ustrezno obarva. Izpis vsebuje še dodatne informacije, kot je izračun MD5 zgoščene vrednosti posameznega objekta, katere ranljivosti se izkoriščajo (CVE), velikost, tip, pot izvoza objekta v primeru odpiranja datoteke …
Z uporabo istega orodja objekta tudi izvozimo. Tako dobimo dve datoteki 000101F2.bin in AbctfhgXghghghg.scT
000101F2.bin
Pregled 000101F2.bin datoteke pokaže, da je njen namen zagon vsebine objekta AbctfhgXghghghg.scT preko izkoriščanja ranljivosti za zagon poljubne kode preko RTF dokumentov.
AbctfhgXghghghg.scT
Analiza AbctfhgXghghghg.scT datoteke pokaže, da je ta napisana v VBS skriptnem jeziku v rahlo izmaličeni obliki z namenom oteževanja razumevanja njenega delovanja.
Delovanje/namen VBS skripte:
1. Vsebina skripte se kopira v datoteko hrjytrj.cmd
na poti C:/programData/
Z uporabo WScript
metode se VBS skripta zažene v skritem Windows ukaznem oknu.
2. V spremenljivki fsdfdsfs
se nahaja base64 kodiran niz, ki vsebuje URL naslov na katerem se nahaja javascript koda.
3. V spremenljivki yulkytjtrhtjrkdsarjky
je v base64 kodiranem nizu navedeno ime .js skripte t.j. PO0912.js
.
4. Prenos in zagon PO0912.js
se nato izvede prek vdelane PowerShell skripte.
PO0912.js
Ker nam je URL naslov PO0912.js
datoteke znan, jo od tam lahko ročno tudi prenesemo. Ta v spremenljivki av_send
vsebuje daljši base64 niz, ki vsebuje kombinacijo ponavljajočih posebnih znakov #%>
, ki ne sodijo v base64 obliko.
Odgovor na vprašanje, kaj ti znaki predstavljajo pa dobimo v spremenljivki stone
, kjer je navedeno:
Matrika spremenljivke stone
pa določa:
Skratka, posebne znake #%>
je potrebno nadomestiti s črko g
. To preprosto storimo z uporabo univerzalnega orodja sed (Stream EDitor).
Tako urejen base64 niz lahko sedaj dekodiramo. Rezultat je 1520 vrstic dolga skripta RAT trojanskega konja v berljivi obliki.
Na začetku skripte se nahajajo inicializacijski podatki, ki med drugim kažejo na funkcijo s parametri nadzornega strežnika in vsebujejo številko vrat na katerih ta “posluša”.
Spremenljivka host
je določena v funkciji getHost()
. Ta vsebuje:
- naslov nadzornega strežnika;
XMLHTTP
objekt; ta omogoča pošiljanje HTTP zahtev in razčlenitev odgovorov strežnika neposredno v MSXML DOM objekte;- parameter User-Agent; uporabniški agent s katerim “posnema” spletni brskalnik
Iz skripte je razviden nadaljnji potek okužbe. Najprej se v register doda vrednost, ki zagotavlja, da se zlonamerna koda izvede po vsakem zagonu sistema (persistence mechanism).
Z Win32_LogicalDisk (WMI class) preveri lokalno nameščeno pomnilniško napravo.
Z Win32_OperatingSystem (WMI class) preveri verzijo nameščenega Windows operacijskega sistema.
Z AntiVirusProduct (Security Center class) preveri kateri protivirusni program je nameščen.
Z Win32_Process (WMI class) preveri kateri procesi tečejo na sistemu.
Preko HTTP zahteve na http://ip-api.Com/json/
preveri podatke o geolokaciji in javnem IP naslovu okuženega sistema.
Ugotavljanje lokacije na podlagi IP naslova je le približno, zato ni nič neobičajnega, če lokacijo prikaže na drugem koncu Slovenije.
Po uspešni okužbi sistema na nadzorni strežnik pošlje POST HTTP zahtevo, ki vsebuje , ter mu na ta način sporoči, da je sistem pripravljen na sprejem ukazov.
Trojanec po okužbi samodejno začne z aktivnostmi kot so ekstrakcija hranjenih gesel v nameščenih spletnih brskalnikih, namestitev in zagon vsebujočega programskega modula za beleženje vnosov prek tipkovnice (keylogger), krajo gesel iz odjemalcev elektronske pošte, orodja za nadzor namizja, obratni posredniški strežnik (reverse proxy).
Funkcija beleženja vnosov prek tipkovnice deluje v dveh načinih:
- beleženje vnosov na tipkovnici brez povezave na internet (vnose beleži v datoteko)
- neposredno pošiljanje vnosov prek tipkovnice na nadzorni strežnik (napadalec lahko spremlja vnose v živo)
Seznam funkcij RAT trojanca:
ponovni zagon sistema – reboot | ugašanje sistema – shutdown |
zagon izvršljivih datotek – execute | nameščanje programov – install |
zagon programske kode na daljavo | izvajanje ukazov na daljavo – cmd-shell |
odstranjevanje programske opreme – uninstall | Združevanje datotek – runBinder (File Binder) |
online in offline keyloger | pridobivanje gesel – passgrabber |
remote desktop – RDP | reverse proxy |
onemogočanje UAC (Windows User Account Control) – disable-uac | onemogočanje protiviusne zaščite |
upravljanje z datotekami – filemanager | upravljanje z dnevniškimi zapisi |
upravljanje s procesi | prenos (download) in zagon programske opreme iz oddaljene lokacije |
pošiljanje (upload) podatkov/datotek na oddaljeno lokacijo | zagon programov z administratorskimi pravicami |
Zaključek
Obravnavan Remote Access Trojanec je napisan kar v “preprosti” javascript kodi, ki jo dokaj enostavno analiziramo. Vseeno pa gre za zmogljivo orodje, ki v primeru okužbe lahko povzroči znatno škodo posameznikom ali celotnemu podjetju. Pazljivost pri pri odpiranju priponk v sporočilih je tako povsem na mestu, kot tudi pogosto opozarjamo.
P.S.
Tovrstna orodja se seveda prodajajo na črnem trgu. Konkretni RAT trojanec je na voljo že za 24,99$/mesečno.
Posamezniku je torej že za 24.99$/mesec omogočeno, da stopi na drugo stran zakona. Seveda pa je za uspešno širjenje škodljive kode po el. pošti potrebna uporaba socialnega inženiringa; prejemnike je pač potrebno prepričati, da se v priponki nahaja nekaj, kar jim bo prineslo boljši jutri.
Seveda pa gre za kaznivo dejanje, ki je opredeljeno v 221. in 306. členu Kazenskega zakonika RS:
Napad na informacijski sistem, 221. člen
(1) Kdor neupravičeno vstopi ali vdre v informacijski sistem ali kdor neupravičeno prestreže podatek ob nejavnem prenosu v informacijski sistem ali iz njega, se kaznuje z zaporom do enega leta.
(2) Kdor podatke v informacijskem sistemu neupravičeno uporabi, spremeni, preslika, prenaša, uniči ali v informacijski sistem neupravičeno vnese kakšen podatek, ovira prenos podatkov ali delovanje informacijskega sistema, se kaznuje za zaporom do dveh let.
(3) Poskus dejanja iz prejšnjega odstavka je kazniv.
(4) Če je z dejanjem iz drugega odstavka tega člena povzročena velika škoda, se storilec kaznuje z zaporom od treh mesecev do petih let.
Izdelovanje in pridobivanje orožja in pripomočkov, namenjenih za kaznivo dejanje, 306. člen
(1) Kdor orožje, razstrelilne snovi ali pripomočke, s katerimi se lahko napravijo, ali strupe, za katere ve, da so namenjeni za kaznivo dejanje, izdela ali si jih pridobi ali jih hrani ali komu omogoči, da pride do njih, se kaznuje z zaporom do treh let.
(2) Kdor napravi ali komu odstopi ponarejen ključ, odpirač ali kakšen drug pripomoček za vlom, čeprav ve, da je namenjen za kaznivo dejanje, se kaznuje z zaporom do enega leta.
(3) Enako kot v prejšnjem odstavku se kaznuje, kdor z namenom storitve kaznivega dejanja poseduje, izdeluje, prodaja, daje v uporabo, uvaža, izvaža ali kako drugače zagotavlja pripomočke za vdor ali neupravičen vstop v informacijski sistem.
Povezave
[1] https://www.cert.si/si-cert-2019-05-napredni-napadi-z-izsiljevalskimi-virusi/