PHP kódminőség fenntartás
php, qa, static code checking, phpunit, phpcs, phpmd, phpstan, churn, phpdd, psalm, phplint, phan
2024-10-17
Failed: bson encoding error: BSON element key cannot contain null bytes
mongo, mongodb, bson, null, key
2024-08-24
Nem bízol a kollégáidban? Akkor valamit rosszul csinálsz!
bizalom vezetokent
2023-05-03
Dolgok, amikről a programozók azt hiszik, hogy tudják, de tévednek
programozoi-tevhitek-falsehoods
2023-04-08
A programozóktól meg kell szabadulni
chatgpt no-code low-code
2023-01-22
Miért fontosak a személyes adatok egyáltalán?
privacyaware, privacy
2023-01-07
Egy tanmese a szerény, de tehetséges informatikusról, akit én csak Gézának hívok
privacyaware, privacy
2023-01-02
Beskatulyáznád magad egy termékkel? Gondold át még egyszer!
learning, vendorlockin, risky
2022-12-11
Rekrúterekről és állásajánlatokról
bérsáv, recruiter, relevancia
2022-10-30
"A hídon akkor kell átmenni, amikor odaérünk."​ - YAGNI
yagni, pagni
2022-10-17
"A lényeg, hogy a munka készen legyen!"
agile, estimation, becsles, scrum, home office
2022-08-20
Munka vs. hivatás, a klasszikus dilemma
hr, hobbi, munka, egyensuly, hivatas
2022-07-18
Miért nem fogok nálatok technikai interjún részt venni?
technikai interju, hr, recruit, leet code, coding challenge, take home challenge
2022-07-04
"Hogyan építsek kapcsolati tőkét, ha karriert szeretnék váltani?"
linkedin, tippek, trukkok
2022-06-10
Junior/Medior/Senior, hogyan mérjük?
junior, medior, senior, hr, grade, level, experience
2022-05-09
11 tipp frontendeseknek, hogyan tegyék hatékonyabbá a munkájukat
frondend, vscode, angular
2021-10-31
Motion zoom - mozgás alapú képrekonstrukció
#52het
2021-06-01
Gesture Launcher
#52het
2021-05-31
CellEvent, első Android alkalmazásom
#52het
2021-05-19
Notebookcheck, azaz hogyan válasszuk ki a legjobb ár-érték arányú eszközt
#52het
2021-05-18
Torrent multiplexer
#52het
2021-05-17
Process watcher, logger
#52het
2021-05-05
Lazy loading material dialog content
lazy loading, angular, material, dialog
2020-12-28
Runtime configuration loading in Angular
angular, runtime, configuration, settings, environment, production
2020-03-29
How to start an Angular project?
angular
2020-03-11
Az 52 hét projekt
#52het
2020-01-01
Akkutöltöttség-jelző
#52het
2020-01-01
NetClub - Kollégiumi internetszolgáltató
#52het
2019-12-31
DeeJayy - Lost Terminal
#52het
2019-12-31
Counter Strike monitor
#52het
2019-12-31
Kollégiumi CS bajnokság 2005
#52het
2019-12-31
Mozgásérzékelős képrögzítő, Camera Capture
#52het
2019-12-30
Többszörös host pingelő
#52het
2019-12-30
Sávszélesség mérő, tesztelő
#52het
2019-12-30
Generáljunk hamis adatokat
#52het
2019-12-30
SQL lekérdezések parancssorból, odbc-vel
#52het
2019-12-30
Nonogram generátor (aka. "Fesse feketére")
#52het
2019-12-30
Egyedi chat alkalmazás, kliens és szerver
#52het
2019-12-29
FontSelector - betűtípusválasztó / font preview
#52het
2019-12-28
Saját hálózati kommunikációs segédszoftver - sox
#52het
2019-12-28
Csoportos e-mail küldő szoftver Delphiben
#52het
2019-12-28
Universal Api caller module for Angular 7-9 With NGRX state management
Ngrx, API, Effects, HttpClient
2019-07-02
A leghosszabb projekt
#52het
2019-04-19
Legelső kioszk projektem: Stari Sör Jukebox
#52het
2019-02-28
BPM számláló
#52het
2018-11-01
Assembly féléves beadandók
#52het
2018-11-01
Chatbot before it was cool
#52het
2018-10-30
StartX - Cseréljük ki a windows tálcáját és a Start menüt
#52het
2018-10-28
What? - fájltípus azonosító
#52het
2018-10-27
Transport Tycoon DirectX
#52het
2018-10-26
Diff - fájlösszehasonlító
#52het
2018-10-26
De Facto - Szoftverfelügyelet
#52het
2018-10-25
CD és DVD katalogizáló
#52het
2018-09-24
MP3 segédeszközök
#52het
2018-09-24
Keylogger - azaz billentyűleütés-figyelő és naplózó alkalmazás
#52het
2018-08-29
Az örök projekt: személyes weboldal és blog
#52het
2018-08-14
Szógyakorló nyelvtanuláshoz
#52het
2018-08-13
Warzone 2100 mentett játék szerkesztő
#52het
2018-08-13
Rejtett Windows-beállításokat konfiguráló program: TweakMaster
#52het
2018-08-13
A DrótPostaGalamb levelezőprogram adatfájljainak dekódolása
#52het
2018-08-13
Privacy jegyzet
2018-07-30
Egy éve ilyenkor
2018-07-25
The Matrix - konzol szimuláció
#52het
2018-07-13
Kakaóreceptkönyv
kakaó
2018-06-29
Crackelés!
#52het
2018-06-22
A K.I.T.T. challenge
#52het
2018-06-18
Doom 2 botokkal
#52het
2018-06-16
Römi játék Delphiben
#52het
2018-06-09
MeetsCow & DeeJayy - Intro
#52het
2018-06-09
Direct viewer - bitmap megjelenítő
#52het
2018-06-09
bazMAG
#52het
2018-06-09
Console Vision - Konzolos ablakkezelő Delphiben
#52het
2018-05-01
Quake 2 egy floppyn
#52het
2018-04-20
Játék-kitömörítők
#52het
2018-04-12
Tetszőleges program elrejtése Windows tálcáról
#52het
2018-04-05
Személyre szabás
#52het
2018-03-28
A year with Angular 5, 6 - Angular 2018
#angular5 #angular #resources #articles
2018-03-16
Az ikon evolúciója
#52het
2018-03-14
Betűtípusok
#52het
2018-03-04
Billentyűzet-gyakorló
#52het
2018-02-28
Zenél is a DeeJayy?
#52het
2018-02-22
Térképrajzoló az Ascii 3D labirintushoz
#52het
2018-02-19
Ascii 3D labyrinth
#52het
2018-02-14
52 hét - 52 projekt, avagy #eletem
#52het
2018-02-14
Dockerezzünk virtualizált környezetben!
docker, xen, ubuntu
2017-11-12
A cloud-initramfs-copymods hatásai paravirtualizált környezetben
ubuntu, xen, copymods, docker, docker-ce, docker.io
2017-11-11
Virtualizáljunk Xen 4.6-tal Ubuntu 16-on (Xenial)
ubuntu, xen, virtualizálás, hypervisor, debootstrap
2017-11-04
Álláskeresésem története
álláskeresés, it, fejvadászok, linkedin, job
2017-10-24
FAR Manager competitors
far manager, file managers
2010-01-01
Blog
blog
2001-01-02

Egy kísérlet arra, hogy mi az a legkisebb méret, amiben egy működő keylogger írható

- 2001 -

Ez a poszt meglehetősen technikai lesz, a gépi kód és a Windows API bugyraiban fogunk kalandozni.

Tehát mi is az a keylogger?


forrás: bash.hu/959

Röviden tehát: egy program, ami megjegyzi a lenyomott billentyűket. Kérdezőnk elég frappáns választ kapott, hiszen a Microsoft Word teljesen alkalmas arra, hogy a lenyomott betűket rögzítse, ámbár csak akkor képes erre, ha ő az aktív program.

A keylogger ennél sokkal mélyebben helyezkedik el a rendszerben: nem csak akkor képes a lenyomott billentyűket (és nem csak betűket) érzékelni, amikor aktív, hanem akkor is, amikor rejtve van és valamilyen más program van az előtérben.

A működésének alapja az, hogy ráakaszkodik (hook) a rendszer azon funkciójára, amelyik a billentyűzetet kezeli (igen, a billentyűzetet az operációs rendszer kezeli szoftverszinten, nem a program, amelyik előtérben van, ő csak megkapja az operációs rendszertől, ha annak olyan kedve van, hogy továbbítsa). Ilyen módon, a keylogger alapjában véve nem egy ártalmas szoftver, mindenkinek a rendszerében van egy-két olyan program, ami ezt a hookot alkalmazza. Például az Intel videokártyákhoz szállított beállítóprogram, ami a CTRL+ALT+jobbra gomb lenyomásakor elforgatja a képernyőt - többekkel láttam előfordulni és telefonálni, hogy "most akkor ezzel mit csináljak?!". Ez a program végig a háttérben várakozik és csak akkor reagál, ha egy speciális kombinációt nyom le a felhasználó.

Tehát a rendszerben találhatók olyan programok, amik figyelik éppen most, nálad is a billentyűzetet. Keyloggernek viszont az olyan típusú szoftvereket nevezzük, amik a lenyomott billentyűket rögzítik egy naplóba (akár fájl, akár adatbázis), innen a neve: key (billentyű) - logger (naplózó).

A keyloggert azért kriminalizálják, mert az összes billentyűlenyomás rögzítése és tárolása csak nagyon-nagyon ritka esetben a normális felhasználás része. Ezt a típusú programot legtöbbször arra használják, hogy adatot lopjanak felhasználótól, miközben a számítógépet használja. Csak, hogy két elég erős példát mondjak: jelszavak és bankkártyaadatok.

"Tudta-e?" - hogy a keyloggernek nem kell még csak rendszergazda jogosultság sem a hatékony működéshez?

Mi ez a kísérlet?

Láttam én már sok számítógépes vírust addig és azóta is, érdeklődve figyeltem a működésüket, reakciójukat, felépítésüket. Nevezzük ezt maximum műkedvelésnek, még a boncolásig sem jutottam el sok esetben - csak azonosítottam és eltávolítottam.

Ami viszont mindig megdöbbentett: a vírus mérete. Óriásiak voltak, nem lehetett őket nem kiszúrni és ez szerintem probléma (a vírusoknak, mármint). Ha csak megnézzük a scene versenyeken milyen kis méretben milyen bámulatos dolgokat tudnak összehozni a versenyzők: https://youtu.be/1NW8lBa29NY?t=89.

Ezeket a munkákat kevesebb, mint egy bekezdésnyi karakterrel megalkották. Ahogy már egy korábbi bejegyzésben is taglaltam, szenvedélyem az optimalizálás, a minél kevesebb erőforrásból minél többet kihozni. Ezért ütött szöget a fejembe, hogy "dehát miért kell egy keyloggernek ilyen nagynak lennie?".

Szóval nekiláttam, megnéztem, mi kell ahhoz, hogy billentyűleütéseket tudjak figyelni: 10 karakter - ezt még megjegyezni is egyszerű lenne! Persze önmagában ez a 10 karakter még nem képes érzékelni és rögzíteni a leütött billentyűket, de 10 karakterrel megoldható, hogy a keylogger megkapja mindet.

10 karakter

Ezzel a 10 karakterrel indult tehát a program, ami a következő "funkciókat" hivatott még szolgálni:

  1. minden rendszerben leütött billentyűt megkap
  2. a billentyűket, ha azok nem olvashatók (pl. nem betűk/számok/jelek), akkor olvasható szöveget társít hozzájuk (pl. a shift billentyű lenyomásakor csak egy kódot kap a program, a naplóba viszont már azt kell írni, hogy "shift", hogy érthető legyen)
  3. a naplófájlt álcázza olyan névvel, amivel egy gyakorlott rendszergazda is átsiklik fölötte
  4. figyeli azt is, hogy melyik program van előtérben és szintén rögzíti a váltást a naplóba (pl. a word-ről a böngészőre váltotta a felhasználó és a böngésző címsorában milyen weboldal van megnyitva)
  5. az elkészült naplót időnként feltölti egy internetes tárhelyre

A legutolsó változat működő magja már 1000 karakteres volt (+ a 2-es ponthoz szükséges lista, amig még kb. 300 byte, illetve pár szükséges sallang).

Tehát 1500 karakterből sikerült egy teljesen működőképes keyloggert írnom. Viszonyításképpen: ez a poszt eddig a pontig 4100 karakter körül van.

Az üröm az örömben sajnos az, hogy a Windows-on futó legkisebb program mérete 4096 byte lehet (legalábbis a fordító ekkorát generált egyetlen parancs miatt is). Elég pazarló, de ez van. Így, bár a szoftver lényegi része minden szükséges toldalékkal együtt maximum 1500 karakter volt, a Windows miatt ez fel volt kerekítve 4096-ra és ki lett töltve ürességgel.

A programot a mai napig nem ismerik fel a népszerű vírusirtók (persze, igazából nem terjed - de attól még kártékony is lehet).

Forráskód a githubon.

(A program utoljára Windows 98-on működött és csak a saját gépemen teszteltem.)