Zpět na seznam článků     Číst komentáře (9)     Verze pro tisk

Zavádění operačního systému Windows XP (2) - MSGINA.DLL

Autor: .cCuMiNn.   
14.9.2005

Zobrazení přihlašovacího dialogu je jednou ze slabin operačního systému Windows. Chcete-li se dozvědět více o této problematice a odchytnout si nějaké to přístupové heslo, je tento díl určen právě vám.


Tentokrát začnu citací odstavce, který jsem použil v prvním díle tohoto seriálu:

„Nyní zbývá pouze přihlášení uživatele do systému, které nám zprostředkuje soubor WINLOGON.EXE, jež je nahrán kernelem jako služba a je následován souborem LSASS.EXE (Local Security Authotity), který zobrazí přihlašovací dialog. Tento dialog se objeví přibližně ve stejnou chvíli, kdy subsystém služeb nastartuje síťové služby.“

Uvedený odstavec nebyl napsán zcela přesně, a proto jej nyní přepíši tak, jak by měl správně vypadat. Blíže se podíváme na tuto část zavádění operačního systému a ukážeme si jednu bezpečnenostní trhlinu, kterou lze použít pro zachycení přístupových hesel.
Správně jsem tedy měl uvést toto:

„WINLOGON.EXE (proces, který se stará o přihlášení, odhlášení a spuštění uživatelského prostředí) zavolá knihovnu MSGINA.DLL (Microsoft Graphical Identification and Authentication), která zobrazí dialog pro zadání autentizačních údajů. Po jejich potvrzení z uživatelovi strany se řízení vrátí zpět programu WINLOGON.EXE, který autentizační údaje předá procesu LSASS.EXE (Local Security Authority). Ten provede autorizaci uživatele ověřením zadaných údajů v místní databázi SAM (na lokálním počítači), ve vdálené databázi SAM (na řadiči domény s Windows NT 4.0) nebo v active directory (v doméně s řadičem WIN2000).“

Nás bude v této chvíli zajímat knihovna MSGINA.DLL (Microsoft Graphical Identification and Authentication)
Pokud se zamyslíme nad tím, že jde o jednoduchou DLL knihovnu, která od uživatele přebírá citlivé přihlašovací informace, určitě nás napadne myšlenka nahradit tuto knihovnu naším vlastním modulem. Některé firmy tuto knihovnu mění za alternativní produkty, které zajišťují větší bezpečnost. Proč bychom se tedy my nemohly pokusit tuto knihovnu změnit tak, aby uživatel nic nezpozoroval a přitom by šla veškerá bezpečnost do ztracena? Stačí pouze vytvořit vlastní DLL, která se bude navenek tvářit jako standartní MSGINA.DLL se stejným vzhledem. Autentizační údaje ovšem kromě jejich předání procesu WINLOGON.EXE zároveň uloží do souboru, který si pak budeme moci přečíst. Celkem lákavá představa, co?

Pochopitelně nejsem první, koho tato myšlenka napadla. Jde o trik starý již několik let a proto můžete na netu několik podobných výtvorů najít. Jedním z nich je například FAKEGINA.DLL. Tato knihovna se chová přesně tak, jak jsem popsal. Stačí, pokud nahradíme originální MSGINA.DLL touto knihovnou, nebo změníme záznam v registrech tak, aby na ni ukazoval. Přístupová hesla se pak nepozorovaně ukládají do souboru passlist.txt v adresáři %SYSTEM32%\SYSTEM32 a nám stačí jej pouze jednou za čas zkontrolovat.
Dalším ukázkovým příkladem, který si můžete stáhnout včetně zdrojových kódů je GINA_SPY. Vzhledem k tomu, že je pro stáhnutí kódu nutná registrace, nabízím vám zde odkazy na download zdrojových kódů a demoverze, která ukládá pouze první čtyři znaky jména a hesla do souboru C:\GINALOG.TXT

Když nyní víme, co to GINA je a víme také o slabině, kterou můžeme využít, řekneme si, kde je tato knihovna umístěna na disku, kde jsou záznamy v registrech, apd.
Knihovnu MSGINA.DLL najdete v adresáři %SYSTEM32%\SYSTEM32, její kopii pak v adresáři %SYSTEM32%\SYSTEM32\DLLCACHE. Touto kopií je vždy přepsána knihovna v adresáři %SYSTEM32%\SYSTEM32, když dojde k její změně. Pokud tedy budete přepisovat originální knihovnu nezapomeňte také na tuto kopii a na to, že na vás systém vybalí hlášku o neověřeném souboru.

Daleko jednodužší je proto pozměnit záznam v registrech. V klíči HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL je uveden odkaz na originální knihovnu. Jestliže tuto hodnotu nahradíme odkazem na náš soubor, spustí se po restartu počítače právě naše knihovna a máme vystaráno. Pokud tento klíč není zaveden, pak jej vložíme jako typ REG_SZ.

Nevýhodou těchto, na netu dostupných programů však je, že jsou často antivirovými programy identifikovány jako trojské koně a proto je vhodnější si takovouto knihovnu vytvořit vlastními silami. Informací, jak na to naleznete na Internetu také dostatek.
Uvedu zde jen některé z odkazů, které by vás mohly v souvislosti s knihovnou GINA zajímat:

http://www.microsoft.com/windows2000/docs/msgina.doc
http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs
http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/default.aspx
http://pluralsight.com/wiki/default.aspx/Keith/CustomizingGINA.html
http://www.codeguru.com/Cpp/W-P/system/misc/article.php/c5683/
http://www.powerbasic.com/support/forums/Forum7/HTML/001257.html
http://sourceforge.net/projects/pgina/

Závěrem ještě dodám, že výše uvedený postup funguje na platformách NT, 2000, XP a s jistými obměnami i na 9x. Otázkou však zůstává, proč by někdo chtěl vytvářet vlastní modul GINA pro tak děravý systém, jakým 9x jsou :)

.cCuMiNn.

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.05/22

1  2  3  4  5    
(známkování jako ve škole)