16.10.08

Como apoderarse de un Active Directory por medio del cache local

Este texto es d nivel 1 poco + alto q los anteriores aunq si le prestan atención y buscan en google cualquiera con conocimientos básicos puede entenderlo. No voy a explicar todos los conceptos desde abajo ya q c espera q el lector tenga esos conocimientos... o c preocupe x obtenerlos... je... cualquier duda dejen comentarios y las contesto.

X lo gral, en las grandes redes, los administradores c preocupan de poner la mayor atención en la seguridad de sus servers dejando las estaciones d trabajo bastante + abandonadas. Esto tiene cierta logica ya q el mayor peligro esta en 1 atacante q logre acceso x ej al Domain Controller (d ahora en adelante DC) o simplemente a la clave d admin d dominio.

Teniendo los servers asegurados tenemos asegurada la bd d usuarios con sus hashes y teóricamente lo unico q podria conseguir 1 atacante desde 1 estacion d trabajo es alguna pass local q como mucho le serviria para moverse x las pcs (en entornos corporativos c usa la misma pass d admin local en los clientes en el 99% d los casos) pero no poder pasar d ahí hacia los servers... entonces el dominio estaria asegurado... o no?? xD

Hace unas semanas vimos como conseguir la pass local en pocos mins:

Crackear contraseñas locales de Windows

este metodo puede fallar pero teniendo 1 buen poder d proceso y tiempo todo c puede crackear (en el futuro veremos q hacer si el ophcrack no encuentra la pass), todo depende d si vale o no la pena el tiempo a invertir. Vamos a ver entonces como con derechos locales podemos conseguir algunos hashes de dominio y con 1 poco d suerte y casi nada d riesgo tal vez el del admin.


MSCache

Cuando logueamos en 1 dominio (ahora Active Directory o AD) nuestra contraseña se envia encriptada al DC donde c comprueba q sea correcta para dejarnos ingresar y aplicar nuestros derechos sobre la red. Todo este proceso es mucho + seguro q loguear en 1 pc local o en 1 grupo d trabajo... o tendría q serlo ya q teóricamente los passes deberían estar alojados solamente en el DC.

Q pasaria entonces si tenemos 1 laptop corporativa cuyo user loguea en el dominio d la empresa cuando este no esta en la misma? Para poder usar su maquina fuera del trabajo deberia tener 2 users, 1 local y 1 del AD, ya q al no poder acceder a la red no podria autenticar su pass y x lo tanto loguear en el sistema, acceder a su perfil d dominio, etc.

Pero parece q los sres d Microsoft creyeron q era demasiado trabajo para sus pobres users, y decidieron cachear la pass en el sistema para poder loguear cuando no este disponible el DC. De esta manera cuando ingresamos al dominio nuestra pass queda en cache en el registro d win y podemos loguear sin estar conectados a ninguna parte con la ultima q accedimos. X supuesto q si la pass c cambia en el DC mientras esta desconectada va a seguir usando la del cache hasta q vuelva a la red y vea q hay 1 nueva. A partir d s momento cachea la nueva pass.

A esta altura ya estaran viendo adonde apunta todo esto. Muy sencillo... conseguir el hash cacheado, crackearlo y... bue... 1 agujero de seguridad enorme!!... je


PWDumpX

PWDumpX es la herramienta con la q vamos a extraer los hashes. Tambien lo podriamos hacer con Cain, q vamos a usar + tarde para desencriptar, pero tenemos 1 pequeña desventaja... con Cain podemos sacar los hashes d dominio alojados localmente, en cambio con PWDumpX podemos sacarlos d cualquier pc d la red sobre la q tengamos derechos d admin local (el agujero c agranda xD)...

Esta herramienta fue escrita en perl x Reed Arbin y la pueden bajar de aca:

http://reedarvin.thearvins.com/tools.html

el uso es bastante sencillo. Descomprimimos a alguna carpeta en el rigido y lo corremos desde ahí. Esta es la ayuda:

Usage: PWDumpX [-clph]

[-clph] -- optional argument
-- required argument
-- required argument
-- required argument

-c -- Dump Password Cache
-l -- Dump LSA Secrets
-p -- Dump Password Hashes
-h -- Dump Password History Hashes

If the and arguments are both plus signs (+), the
existing credentials of the user running this utility will be used.

Examples:
PWDumpX 10.10.10.10 + +
PWDumpX 10.10.10.10 administrator password

PWDumpX -lp MyWindowsMachine + +
PWDumpX -lp MyWindowsMachine administrator password

PWDumpX -clph IPInputFile.txt + +
PWDumpX -clph IPInputFile.txt administrator password



Como podemos ver tambien puede extraer los hashes normales, lsa secrets, etc… pero lo q nos interesa a nosotros es la opcion “-c” o sea “dump password cache”. Entonces el formato seria:


Pwdumpx –c nombrepcvictima user password

X supuesto como ya dijimos el user debe tener derechos d admin sobre la victima. Si queremos usar las credenciales con las q estamos logueados seria asi:

Pwdumpx –c nombrepcvictima + +

En pantalla veriamos esto:



MULTIVAC-DC2 es el DC secundario d mi red. Lo hice contra s xq era lo q tenia + a mano, x supuesto q en la realidad c puede complicar 1 poco + y van a tener q buscar 1 pc donde c haya logueado el admin d dominio o el user q les interese.

El pwdumpx como vemos en la captura devuelve 1 fila llamada multivac-dc2-PWCache.txt, vamos a buscar el archivo y encontramos esto dentro:

Administrator:B3A0102769XXXXXXXXXXD535D35E8363:MULTIVAC:MULTIVAC.LOCUTUS

Los campos estan bastante claros. User, hash, nombre dominio (pre2k) y nombre del AD (multivac.locutus). Como pueden ver puse algunas “X” para q no salga el hash completo y alguno c ponga a crackearme la pass. xD

Si hay + passes cacheados salen en el mismo formato 1 debajo del otro, ya con ellos nos podemos ir a crackearlas a 1 lugar + tranquilo...

Esta tambien la opcion si a alguien le interesa d poner 1 lista d pcs victima en 1 txt para hacer 1 ataque masivo y llevarnos todos los hashes q podamos, c hace simplemente cambiando el campo nombredelavictima x el txt.


Crackeando con CAIN

No voy a ponerme tampoco a explicar el uso d CAIN. Se supone q el q lee esto tiene idea d como usarlo o las ganas d aprender ya q tampoco es tan difícil lo q tenemos q hacer. El CAIN se descarga d aca:

http://www.oxid.it/cain.html

abrimos el soft y vamos a la pestaña “cracker” y en la lista d la izquierda podemos ver en 3er lugar “mscache hashes”. Si hacemos click y presionamos el boton “+” q c encuentra arriba podemos extraer los locales, d forma q tambien podriamos usar cain sin tener q recurrir al pwdumpx si lo q queremos son los hashes d users d dominio almacenados localmente. Lo q no podemos hacer es extraer los remotos.

El problema con el q nos encontramos es q no nos permite importar y x lo tanto no podemos introducir los hashes q traemos del pwdumpx. Para esto vamos a hacer 1 pequeño truquito.

Con cain cerrado vamos al dir d instalación y buscamos el archivo “CACHE.LST”. Si le dimos al boton + antes y obtuvimos algo, podemos ver q en el archivo c encuentran los hashes q saco d la pc pero en este formato:

MULTIVAC LOCUTUS B713D9AXXXXXXXXXX9FA9FE639874737

O sea… dominio (pre2k), usuario y hash. Lo q tenemos q hacer es agregar el q tenemos debajo d este d manera q quedaria:

MULTIVAC LOCUTUS B713D9AXXXXXXXXXX9FA9FE639874737
MULTIVAC ADMINISTRATOR B3A0102769XXXXXXXXXXD535D35E8363

Muy importante... poner después d cada hash q c agrega 1 tabulacion y 1 salto d linea para q c vea. El formato final seria dominio – 1 tab – user - 2 tabs – hash – 1 tab – newline. Abrimos nuevamente cain y ya los podemos ver:



ahora nos queda lo + largo... crackearla. Para esto podemos usar distintos metodos según lo q tengamos. Haciendo click derecho sobre la entrada vemos las posibilidades:


Podemos elegir entre ataque x medio d diccionarios, fuerza bruta o rainbow tables. Las rainbow no son las estandard sino q son especificas para mscache. Pueden descargarlas d algun p2p o generarlas uds mismos con alguno d los softs q andan x ahí para s fin. Tambien tienen opcion d testear passes a mano si tienen alguna idea d q puede ser.

Finalmente lo unico q queda es ir a su trabajo, escuela o lo q sea y pasar a ser dueño absoluto d la red.... je... sean eticos y no hagan maldades.

Me olvidaba algo importante... xD

Hay una key en el registro para determinar cuantos users pueden almacenarse. la key es:

CachedLogonsCount

y esta en:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

El valor x defecto es 20, o sea q el sistema cachea hasta 20 passes. Poniendo el valor en 0 se deshabilita el cacheo de passes d dominio, asi q los admins ya saben lo q tienen q hacer... ;)

2.10.08

TrueCrypt - Como mantener nuestros datos a salvo d extraños... (aunque nos apunten con 1 arma xd)


La privacidad es algo q la mayoria de la gente parece tomar muy en serio si c le pregunta, pero a la hora d preservar sus datos electronicos la mayoria son capaces de dejar en 1 txt del escritorio sus numeros de tarjeta con cvv incluido + num d cuenta del bco + pin. No hay una toma d conciencia d q los datos privados pueden ser accedidos x 1 atacante externo ya q hoy en dia todo esta conectado a internet, o tambien x alguien q logre acceso fisico a la pc.

Paranoia? Mmm... 1 poco tal vez. No c olviden nunca q 1 poco d paranoia es buena en este tema. 1 viejisimo dicho d la cultura under es el famoso “be paranoid”, q creo q nunca va a pasar d moda... y hasta puede ser q tenga cada dia + validez. Nuestros datos son solo nuestros y nadie tiene q andar husmeando x ahí... hay q tener en cuenta q cualquier cosa puede ayudar a conocer el perfil d 1 persona para luego usar con ella ingenieria social. Cualquier dato, al parecer d muchos insignificante, q nos puedan robar puede a ayudar a concretar 1 estafa o lo q sea. Hay q resguardar todo d ser posible, pero aunq sea empecemos x la info sensible. Despues si quieren encriptan todo el hd... ;)

Q podemos hacer para lograr esto? Simple... usar la criptografia o encriptación de nuestros datos. Veamos la definición d criptografia según wikipedia:

La criptografía (del griego κρύπτω krypto, «oculto», y γράφω graphos, «escribir», literalmente «escritura oculta») es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos.

Con más precisión, cuando se habla de esta área de conocimiento como ciencia se debería hablar de criptología, que engloba tanto las técnicas de cifrado, la criptografía propiamente dicha, como sus técnicas complementarias: el criptoanálisis, que estudia los métodos que se utilizan para romper textos cifrados con objeto de recuperar la información original en ausencia de las claves.

No voy a dar 1 explicacion de criptografia ya q no soy el + indicado, ademas d q no es el punto d este tema pero x lo q leemos arriba podemos darnos 1 idea d lo q estamos haciendo. La idea consiste en tomar 1 texto plano y, x medio d 1 algoritmo d encriptación y x lo gral 1 clave, convertirlo en algo ilegible e imposible d recuperar a – q tengamos la dicha clave.

Hay 1 soft muy bueno q nos va a ayudar a hacer esto y ademas d todo lo mejor es q... es completamente free!!. El software es el famoso Truecrypt y lo pueden bajar d su pagina oficial:

http://www.truecrypt.org/

viene tanto en versión windows como tambien osX y linux. La instalación es muy sencilla, el tipico next->next->finish. Podemos básicamente encriptar datos d 3 formas.

· Crear 1 contenedor para los archivos q después montamos como 1 unidad +
· Encriptar 1 particion q no tenga SO.
· Encriptar 1 particion q contenga 1 SO en la cual nos va a pedir clave en el booteo

Al iniciar el programa hacemos click en el boton “crear volumen” y nos aparece 1 ventana como esta:



ahí podemos ver las 3 opciones d las q hablábamos. Vamos a crear 1 contenedor q la verdad q me parece lo + comodo y lo + facil d ocultar. El principio basico es q si el atacante no sabe siquiera q hay datos encriptados o donde estan le va a resultar mucho + dificil conseguirlos desencriptados... xD

El contenedor es simplemente 1 archivo como cualquier otro q puede ser movido, copiado o borrado como cualquiera sin perder sus características. Entonces... “create a file container”, next y vemos esta otra pantalla:



tipo d volumen... standard u oculto... vamos a ver esto con 1 poco d detalle xq vale la pena.

El standard es lo q hablábamos antes, 1 fila encriptada normal a la cual podemos poner donde queramos o con los atributos q c nos ocurra. X ej podemos ponerla como oculta, sistema y ponerle algun nombre q parezca algo d nuestro SO... alguna dll inexistente d system32 x ej si usamos windows.

Pero q pasa si tenemos 1 atacante frente a frente q sabe q tenemos 1 particion oculta apuntándonos con 1 9mm amenazándonos con vaciar el cargador en nuestra cabezita si no le decimos donde esta el contenedor y le damos la pass?? O tal vez el asunto sea + leve pero llevandonos a la situación d tener q poner la pass y mostrar el contenido a otra persona. Demasiada paranoia?? Mmm.... hay q pensar en todo siempre. ;)

Para eso justamente existe el tipo d volumen oculto. Lo q hace este sistema es meter 1 particion encriptada dentro d otra. En este grafico c v bastante claro:



arriba vemos 1 particion standard d truecrypt, lo q esta en verde es la cabecera, lo violeta el espacio ocupado x archivos y finalmente lo gris es el espacio libre. El detalle es q el espacio libre esta formado x info aleatoria... esta es la forma en q c crea cualquier partición d truecrypt.

Ahora... si en s espacio libre metemos 1 particion a su vez encriptada seria imposible diferenciarla d los datos aleatorios... perfecto!!

En el 2do grafico ya tenemos la partición oculta representada x el color azul. Detrás de la cabecera d la anterior (verde) podemos ver 1 nueva cabecera en celeste q es la del volumen oculto. Tanto la cabecera como la partición son imposibles d reconocer sin la clave, sin ella siguen siendo “info aleatoria” exactamente igual al espacio libre... ;)

Entonces... vamos a tener 2 claves distintas. 1 para la partición encriptada “normal” y otra para la "oculta”. X supuesto q deben ser distintas. Entonces, cuando ponemos la pass d la 1era partición entra directamente a esta y toma el resto como “espacio libre” o “datos aleatorios”. Si ponemos en cambio la pass de la 2da, la 1er cabecera la toma como incorrecta y pasa el control a la 2da q monta la partición oculta.

Asi podemos tener en la 1era partición algun dato q no nos importe q vean y lo valioso en la 2da. No “pass incorrecta” ni nada d eso. Bueno... este metodo solo en caso d “extrema paranoia”. Sigamos con el metodo “normal”. Elegimos la opcion d “standard truecrypt volume” y vamos a la siguiente ventana:



nos pide 1 nombre d archivo para crear el volumen encriptado. Ponemos ruta y nombre q tengamos ganas. Recomendable como deciamos antes meterlo en algun lado q parezca algun archivo d sistema o cualquier cosa q no llame demasiado la atención. Tambien c puede seleccionar 1 archivo existente, el cual seria destruido en el proceso. Siguiente y vamos a:



el tipo d algoritmo d encriptación q queremos usar, todos son bastante difíciles d romper. Hay q tener en cuenta q a mayor complejidad del algoritmo mayor es el tiempo d encriptación/decriptacion d los archivos con los q trabajamos. Haciendo click en el boton “benchmark” c pueden comparar tiempos d c/u.



en la pantalla siguiente definimos el tamaño d la partición. Si solo queremos guardar unos pocos datos de texto con unos kbs alcanza. Next y vamos a la pantalla d password:



no pongan 12345... xD



después c formatea el archivo en el sistema q le digamos, pide mover el mouse para recolectar info aleatoria y ya tememos listo el archivo.

Para abrirlo desde la ventana principal de truecrypt seleccionamos 1 letra d unidad, clickeamos en “select file” y elegimos el archivo encriptado:



haciendo click en “mount” c abre el cuadro q nos pide el pass correspodiente y al introducirlo ya tenemos el volumen encriptado montado en la letra d unidad q elegimos.

Con esto sus datos ya deberían estar a salvo... ;)