Co jsou keyloggery
Keyloggery jsou programy či zařízení určené k zaznamenávání stisknutých kláves, většinou samozřejmě za účelem krádeže důvěrných údajů jako jsou čísla kreditních karet, piny, hesla k bankovním účtům, e-mailům, a podobně (více viz heslo v anglické Wikipedii).
Softwarový keylogger
Program, který pomocí „zahákování“ některých funkcí systému a odchytávání systémových zpráv zaznamenává stisknuté klávesy, aby je následně spolu s informacemi o vás odeslal svému tvůrci, se jmenuje sotwarový keylogger. Keyloggery bývají často vybaveny dalšími zákeřnými funkcemi, například mívají schopnost číst obsah oken cizích aplikací (třeba zjišťují, zda adresní řádek internetového prohlížeče obsahuje slovo „banka“, a pokud ano, tak spustí zaznamenávání kláves), umí „odfotit“ obrazovku (print screen), načítat hesla z tzv. Protected Storage (uložená hesla Internet Exploreru, Outlooku, atd.).
Hardwarový keylogger
Ne, nedělám si z vás legraci. Keylogger ve formě fyzického zařízení opravdu existuje a nejedná se o žádný super složitý zázrak. Jde o malé zařízení připojené mezi klávesnici a počítač. Dost malé na to, abyste jej snadno přehlédli. I radioamatér – začátečník takové zařízení sestaví podle dostupných schémat za necelou hodinu. Celý keylogger se skládá přibližně ze sedmi součástek, které lze co se týče velikosti snadno zabudovat do PS2 konektoru klávesnice nebo přímo do ní. Pro běžného uživatele je takový keylogger naprosto neodhalitelný, neboť ho nelze žádným způsobem detekovat. Existoval sice předpoklad, že při zapojení keyloggeru vznikají v komunikaci počítače a klávesnice prodlevy, které by mohly jeho přítomnost naznačit, to se ale nakonec nepotvrdilo. Časové prodlevy v komunikaci buďto vůbec neexistují, nebo jsou tak malé, že je není možné rozeznat.
Test Antikeyloggerů
Hlavním cílem tohoto článku je otestování funkčnosti antikeyloggerů.
Antikeylogger by měl být schopen detekovat v systému pokusy jiných programů o snímání stavu klávesnice, čtení oken cizích aplikací, odfocení obrazovky, a další nekalé činnosti. Antikeylogger funguje na principu heuristické analýzy, tedy monitoruje chování všech programů a knihoven v systému, kontroluje, zda nejsou využívány typické funkce keyloggerů a pokud se nějaký problém objeví, měl by uživatele upozornit, případně škodlivé aplikaci rovnou „zatnout tipec”.
Realita je ovšem jiná. Ne každý antikeylogger je opravdu antikeyloggerem…
Pro účely otestování funkčnosti antikeyloggerů jsem vytvořil tři keyloggery, každý založený na jiném principu. Žádný z nich se nesnaží před antikeyloggerem „schovat“, všechny ke své funkci využívají ty nejběžnější způsoby monitorování klávesnice a automatického spouštění po startu systému.
Použité techniky snímání kláves při testování: DirectX, API GetAsyncKeyState a API GetKeyboardState v kombinaci s AttachThreadInput.
Pozn. autora: Některé antikeyloggery jsou si velmi podobné, až stejné – pravděpodobně to bude snaha o větší prodej, falešná konkurence…
Postup testování
Testování na vlastních keyloggerech jsem zvolil z prostého důvodu:
Všeobecně známé keyloggery typu ardamax keylogger nejsou pro takovýto test vhodné právě z důvodu jejich velké rozšířenosti. Jejich „checksumy“ (kontrolní součty souborů) mohou být zahrnuty v databázích, které antikeyloggery používají, a tak by je mohly detekovat bez použití heuristické anylýzy. Předmětem testu je však výhradně heuristická analýza (tedy základní princip antikeyloggeru), nikoli kontrola souborů fungující na principu kontrolního součtu – takto fungují antiviry. Já testuji jen schopnost antikeyloggerů odhalit záškodný program na základě analýzy importovaných API funkcí operačního systému a jeho chování.
Např. program, který nevyvíjí žádnou jinou činnost, než opakované volání funkce GetAsyncKeyState, jistě nebudou piškvorky…
Proto si myslím, že test odráží skutečnou (ne)efektivitu antikeyloggerů. Žádný hacker vám zcela jistě do počítače nenasadí virus, o kterém je všeobecně známo, že jej detekují i ty nejhorší antiviry, a naopak program, který bezostyšně snímá stav klávesnice, se díky své nepřítomnosti v databázi keyloggerů stává nedetekovatelným špiónem.
Pozn. Testované antikeyloggery byly vybrány náhodně – z výsledků vyhledávání slova „antikeylogger“ na Googlu.
Výsledky testu:
První místo si zaslouží AntiKeylogger 8.2, který dokázal detekovat dva ze tří pokusů a v jednom případě dokonce automaticky zamezil logování stisknutých kláves.
Místo druhé zaslouženě získává Snoop Free Privacy Shield. Malý, ale schpný pomocník detekuje logování přes API GetAsyncKeyState, navíc jako jediný detekoval odfocení obrazovky a čtení z oken cizích programů.
Bronz mají společně programy: ID AntiKeylogger, 1-ACT AntiKeylogger 2006 a AntiKeylogger 1.1. Všechny detekují použití GetAsyncKeyState, jinak ale neumí zhola nic.
Čtvrtý skončil I Hate KeyLoggers, který si ale ani to čtvrté místo nezaslouží. Jeho autor v souboru readme.txt tvrdí, že po jeho spuštění nebudou keyloggery schopny zachytávat hesla. Skutečnost tomu ale neodpovídá, I Hate KeyLoggers si neporadil ani s jedním keyloggerem, všechny bez problému odchytávaly stisknuté klávesy.
Místo poslední získává opravdu bezkonkurenční výtvor českého autora. AntiKeylogg 1.0 nedetekoval žádný z keyloggerů, dokonce označil systém za bezpečný i přes tři aktivní keyloggery. Screenshot informující o tom, že je systém bezpečný, byl pořízen v okamžiku, kdy tři keyloggery aktivně a úspěšně snímaly stisknuté klávesy.
Název AntiKeyloggeru | GetAsyncKeyState | GetKeyboardState | DirectX | PrintScreen |
---|---|---|---|---|
AntiKeylogger 8.2 | Detekoval | Detekoval | Nedetekoval | Nedetekoval |
Snoop Free | Detekoval | Nedetekoval | Nedetekoval | Detekoval |
ID AntiKeylogger | Detekoval | Nedetekoval | Nedetekoval | Nedetekoval |
1-ACT AntiKeylogger 2006 | Detekoval | Nedetekoval | Nedetekoval | Nedetekoval |
AntiKeylogger 1.1 | Detekoval | Nedetekoval | Nedetekoval | Nedetekoval |
I Hate KeyLoggers | Nedetekoval | Nedetekoval | Nedetekoval | Nedetekoval |
AntiKeylogg 1.0 | Nedetekoval | Nedetekoval | Nedetekoval | Nedetekoval |
Obrana
Mimo (většinou nefunkčních) antikeyloggerů jsou i jiné možnosti obrany.
Jedním z nich může být použití softwarové klávesnice, což je program, ve kterém si požadovaný text „naklikáte“ myší a poté zkopírujete tam, kam je potřeba. Hardwarový keylogger v tom případě nemá absolutně žádnou šanci zjistit, jaký text píšete, ale co ten softwarový? Keyloggery bývají vybaveny funkcí čtení obsahu schránky Windows, pomocí které přesunete „naklikaný“ text ze softwarové klávesnice do cílového programu. Takže si nikdy nemůžete být jisti, že je vámi psaný text keyloggerům nedostupný.
Navíc nikdy nemůžeme vědět, jestli program dělá to, co říká, že dělá. Naprogramování virtuální klávesnice je otázkou několika desítek řádků kódu, kdežto vývoj kvalitní virtuální klávesnice s ochranou proti keyloggerům je práce na dlouhé měsíce či roky.
Závěr
Jen jeden z testovaných programů dokázal odhalit logování kláves funkcí GetKeyboardState, keylogging pomocí rozhraní DirectX pak nedetekoval ani jeden z antikeyloggerů. Šokující zjištění, vzhledem k cenám některých „ochránců“…
Co říci závěrem? Situace na poli antikeyloggerů je doslova katastrofální. Trh přesycený kopiemi kopií nedokončených a téměř nefunkčních antikeyloggerů postrádá kvalitní produkt, který by byl schopen ochránit uživatele aspoň před těmi nejběžnějšími typy útoků na soukromí.
testovací keylogger
Chcete-li si otestovat svůj antigeylogger, zde na serveru máte k dispozici archiv se třemi testovacími keyloggery.
Automatické spouštění jsem před zveřejněním článku odstranil.