Oldalmenü
Szavazás
szerinted milyen az oldal??
király
jo
elmegy
láttam már jobbat is
gyenge
Naptár
Diavetítő
A TST program
Bevezető
Köztudott, hogy amikor egy program még csak fejlesztési fázisban van, ún. kiskapukat szoktak beleépíteni, amik általános célja az adott program tesztelésének megkönnyítése. Ilyenekkel naponta találkozhatunk például a számítógépes játékok esetén, ahol a tesztelők kedvéért cheat-kódokat szoktak beépíteni, hogy a tesztelőnek ne kelljen minden pályán végigmenni egy adott probléma megtalálásához, hanem célirányosan arra a tesztesetre koncentrálhasson, amelyet szeretne megvizsgálni.
A tesztidőszak végével azonban ezen kiskapuk értelmüket vesztik, hiszen rajtuk keresztül az adott szoftverben lehetőség nyílik az ún. "nem rendeltetésszerű" használatra, ám, mint a játékok példája is mutatja, ezeket a kis csalásokat jóval nagyobb költséggel jár a programból utólag eltűntetni, mint egyszerűen nem dokumentálni a létezésüket.
Kisebb-nagyobb "csalások" minden egyes szoftverben vannak, legyen az akár egy nyíltforrású konzolalkalmazás, akár egy nagy zártforrású szövegszerkesztő, mint amilyen például az OpenOffice.
A TST engedélyezése
Ma az egyik ilyen csalásról, a tst netrc néven emlegetett Windows kiskapuról szeretnék nektek írni. Ez a kis programocska, amely minden egyes Windows változatban megtalálható, arra jó, hogy a tesztelők átvehessék egymás gépeinek parancssorát, ha valamilyen súlyos hiba lépne fel, vagy akár a programozó tudja újraindítani a tesztgépet távolról, anélkül, hogy hosszú folyosók dzsungelén kellene magát átvágnia a fejlesztői és a tesztelői laborok között.
Természetesen ez a program eléggé el van rejtve ahhoz, hogy az egyszerű felhasználó ne férhessen hozzá. Ha beírjuk a parancssorba a
C:\> tst netrc
Parancsot, látni fogjuk, hogy bizony, a Windows szerint ilyen parancs nincs. Persze csel minden ellen létezik:
C:\> tst netrc enable
A fenti parancs engedélyezi az úgynevezett "Távoli hibakeresést", azaz nyit nekünk egy virtuális parancssort, amelybe ha begépelünk egy parancsot, akkor az a kiválasztott számítógépen fog végrehajtódni. Sajnos néhány Windows Update teljesen letiltja a tst parancsot, illetve sok esetben nem szokott a fenti parancs elsőre működni. Ilyenkor általában 10-20, de legfeljebb 100 próbálkozás után előbb-utóbb elfogadja, a szükséges próbálkozások száma sokminden függvénye. Tapasztalataim szerint minél régebbi egy Windows telepítés, annál több próbálkozás szükséges, célszerű tehát egy frissen feltelepített rendszerrel elkezdeni a hackelést. Az alábbi képen az látható, ahogyan nekem sikerült engedélyeznem a távoli hibakeresést:
A ping parancs után IP-címet vagy domain-nevet írhatunk, ez a parancs arra jó, hogy meggyőződjünk róla, hogy egy másik számítógép elérhető-e a hálózaton, illetve hogy a saját gépünk látja-e a hálózatot. A képeken jól látható, hogy megpingeltem az áldozat gépét, az válaszolt, tehát elérhető volt, majd a kikapcsolás után (megvárva a 42 másodpercet) újra pingeltem, de a gép már nem volt látható a hálózaton, tehát a kikapcsolás sikeres volt.
A format c: parancs már bizonyára ismerős lehet mindenkinek, akinek legalább egyszer összeomlott a gépe (a közhiedelemmel ellentétben ez nem a Windows hibája, hanem a hibás tápegységek okozzák a legtöbb ilyen problémát, sokszor ugyanis a táp-ventillátor elfaragja a táp főkábelét, amiről például a merevlemez is energiát kap, ilyenkor érintkezési hibák miatt a merevlemez ki-be kapcsolódik, ami rövidtávon is képes adatvesztést okozni). Lássuk, működik-e távoli gépen is:
?FPRIVATE "TYPE=PICT;ALT="
Az első próbálkozásomra a kiszemelt gép nem válaszolt, mivel egy Linux tűzfal elnyelte ping kéréseimet, a második próbálkozás viszont sikeres volt, mint látható, be is tudtam lépni a TST-vel a gépre, majd a format parancs segítségével újra is formattáltam.
Ha valakinek még ez is kevés lenne, íme, egy videó, amin jól látható a hackelés mikéntje:
A film letölthető avi formátumban innen.
Mint a fenti leckéből is jól látható, a hackerkedés egyáltalán nem igényel semmiféle szakértelmet, pláne hülyeség, hogy ehhez vírusokra és egyéb kalózprogramokra lenne szükség, hiszen - ahogyan a játékokban cheat-kódokkal csalhatunk - minden szoftverbe építenek a készítők kiskapukat.
l33th4x0r
A TST parancs technikai háttere
Igen, a tst belső parancs, és közvetlenül a cmd.exe értelmezi, a kernel32.dll-ben van elrejtve a függvény(serveroldalon az svchost.exe kezeli, az XP Release Candidate verziójában még ez az svchost is látszott a folyamatlistában, de az első teljes verziótól elkezdve ez már el van rejtve). Viszont amit kevesen tudnak, az az, hogy a tst a HPA része(Hidden POSIX API), és így minden ismertebb, POSIX alapú oprendszeren implementálva van(tehát Linuxon is!!!) Az ismertebb shellek(bash, sh, csh, ksh, tsh) felismerik a parancsot, és közvetlenül továbbítják a Linux kernelhez. A Linux felhasználókezelése miatt a parancsot csak admin-ok használhatják(a remote debugging miatt), de ha a shell fordításakor az ENABLE_NOSU_DEBUG környezeti változót 1-re állítjuk, akkor bármilyen felhasználó használhatja a parancsot. A tst képes önmagát http ill. ssh csomagokba rejteni, ehhez a --proto: HPA kapcsolót használhatjuk. A klasszikus netstat parancs nem listázza a tst kapcsolatokat, ehhez valamilyen speciális opcióval lehet állítólag lefordítani a netstat-ot. Jó kérdés, hogy ez Win alatt hogy megy.