-[ 0x0E ]-------------------------------------------------------------------- -[ CURSO DE NOVELL NETWARE -II- ]-------------------------------------------- -[ by MadFran ]-------------------------------------------------------SET-15- Segundo (y esperado) capitulo sobre Novell Netware Capitulo - 02 PASSWORDS 02-1 Como acceder al archivo de paswwords (sin que se note demasiado). Contrariamente a lo que se piensa (...yo no tenia ideas preconcebidas), acceder al archivo de passwords en Netware no es como en Unix, el archivo de passwords no se encuentra al descubierto. Todos los objetos y sus propiedades se encuentran en los archivos bindery en 2.x y 3.x, y en 4.x estan en la base de datos NDS. Un ejemplo de un objeto puede ser una impresora, un grupo, una cuenta individual, etc. Un ejemplo de una propiedad de un objeto puede ser un password, o un nombre completo, los miembros de un grupo,... Los atributos (o flags) de los archivos bindery en 2.x y 3.x son Hidden y System, y estos archivos se encuentran en el volumen SYS: en el subdirectorio SYSTEM. Sus nombres son los siguientes : Version NETWARE Nombre del archivo --------------- -------------------------------------- 2.x NET$BIND.SYS, NET$BVAL.SYS 3.x NET$OBJ.SYS, NET$PROP.SYS, NET$VAL.SYS Los passwords se almacenan en : - 2.x -> NET$BVAL.SYS - 3.x -> NET$VAL.SYS En Netware 4.x, los archivos se colocan en sitios distintos del SYS: Sin embargo usando la utilidad RCONSOLE y la opcion Scan Directory se pueden ver los archivos en SYS:_NETWARE Archivo Que es ------------- ------------------------- VALVE.NDS Parte de NDS BLOCK.NDS " ENTRY.NDS " PARTITIO.NDS Tipo de la particion NDS MLS.000 Licencia VALLINCEN.DAT Validacion de la licencia Hay potencialmente otro metodo para ver estos archivos y editarlos. Despues de instalar NW4 en un volumen NW3, arrancar el servidor 3.x SERVER.EXE. En el volumen SYS estara el directorio _NETWARE. SYS:_NETWARE esta mejor escondido en 4.1 que en 4.0x, pero todavia es posible verlos escaneando los numeros de entrada de los directorios usando NCP calls (se necesitan los API) usando las funciones 0x17 subfuncion 0xF3. Lo siento chicos,...para mi chino. Yo solo traduzco 02-2 Como crackear paswords Hay varios caminos para conseguirlo. Primero, asumimos que Intruder Detection esta desconectado, que se admiten password no encriptados. Afortunadamente, no hay que luchar con paquetes firmados (explicacion en proximo capitulo 7). Tambien asumimos que tenemos acceso a la consola. Finalmente que disponemos de algun capturador de password. Acceder a algun sniffer puede ayudar. Existen muchos. Mira no me puedo resistir a comentarlo. Acceso a la consola.... Fisicamente es de los sitios mas vigilados en cualquier sitio que se precie. Todos los que conozco tienen acceso o con llave o con tarjeta. Siempre hay alguien.. y no es el caso de preguntar Te importaria que pusiera un disquete? Es solo para chupar los passwords. Gracias Los sniffer que he probado, no funcionan desde las token ring desde donde yo puedo actuar.....algo debo hacer mal. Si el Intruder Detection esta desconectado, puedes utilizar un rompedor de password tipo "fuerza bruta". Mira la seccion 02-4 para mas detalles. Encriptar los password es la manera que tiene Novell de protegerlos de los sniffers. En las versiones primitivas de Netware (2.15), se enviaban los passwords en forma de texto a traves de la red. Para evitar esto, Novel dio una opcion al administrador. Las siguientes versiones de LOGIN.EXE, encriptan los password antes de enviarlos. Pero antes de que esto pase, el entorno (NETX) tiene que actualizarse. Como algunos sitios tienen que mantener entornos antiguos y viejas versiones de LOGIN.EXE para soportar equipos antiguos, el admin tiene la opcion de permitir password no encriptados para acceder al server. Esto se hace tecleando SET ALLOW UNENCRYPTED PASSWORD=ON en la consola o a€adiendo esto en el autoexec.ncf. Por defecto es OFF, lo que significa que NOVELBFH se pondra a beepear a cada intento !!. Afortunadamente en muchas redes esta ON para soportar equipos antiguos. Si tienes acceso a la consola, sea fisicamente o con el comando RCONSOLE, se puede utilizar SETSPASS.NLM, SETSPWD.NLM o SETPWD.NLM para resetear los passwords. El comando RCONSOLE solo lo puede lanzar alguien con privilegios admin. ....al menos yo siempre me lo he encontrado asi. No hay mas que cargar NLM y pasar los parametros en la linea de comando. NLM CUENTAS QUE RESETEA VERSION ------------ -------------------- --------- SETSPASS.NLM SUPERVISOR 3.x SETSPWD.NLM SUPERVISOR 3.x y 4.x SETPWD.NLM Cualquier cuenta 3.x y 4.x (Ver 02-5 para mas informacion) Si planeas capturar password a leer el teclado, puedes hacerlo de esta forma. El archivo LOGIN.EXE esta en el directorio SYS:LOGIN, y normalmente no tendras acceso para poner un fichero en este directorio. El mejor sitio para poner un programa capturador de teclados es en el directorio de trabajo, con el ATTRIB set como oculto. La ventaja es que podras capturar el password y NETWARE no vera lo que haces. La desventaja es que tienes que tener acceso a la maquina para hacerlo. El sitio realmente bueno es una maquina normal, a traves de una ventana pcAnywhere (programa de acceso remoto). Muchos sitios permitiran acceso con pcAnywhere sin practicamente software, ni control de acceso de seguridad a la LAN utilizando las utilidades de seguridad de Netware. Subiendo un programa de captura de teclado en una maquina como esta lo impide. Si el sistema hace backup via una estacion de trabajo, es posible utilizar este hecho como via de acceso. Esta estacion de trabajo debe tener derechos equivalentes a SUPERVISOR para poder copiar el bindery y resto de archivos de sistema. Si puedes acceder a esta estacion de trabajo o utilizar la uenta desde donde se hace backup, entonces hay posibilidades de acceder al login con privilegios de SUPERVISOR. 02-3 Que es un cracker de password "brute force" Si el Intruder Detection esta desconectado, se puede simplemente probar password hasta adivinarlo. Esto se puede automatizar utilizando un programa que prueba passwords, conocido como cracker de password "brute force".. Un programa que hace esto es el NOVELBFH.EXE (solo para versiones 3.x). Este programa probara passwords tales como aa, ab, ac,... hasta que se pruebe toda combinacion valida de caracteres. Sin embargo esto supone que: 1.- Dispones de mucho tiempo, ya que tarda un segundo o dos por password. 2.- Tienes acceso a una maquina que corra el programa horas o dias. Yo me he encontrado con una dificultad adicional Al cabo de ocho tentativas la cuenta atacada se desactiva, pero de una forma extra€a, ya que al cabo de 5 minutos vuelve a estar accesible, pero.. el programa empieza de nuevo. Si el Intruder Detection esta activado, sonara una se€al de alarma en la consola del sistema cada 2 segundos y se grabara la incidencia en el File Server Error Log con la hora y la direccion del nodo. Para ataques "brute force" de archivos bindery antiguos, hay un programa llamado CRACK. Este programa trabaja en Netware 3.x y se puede encontrar en: http://www.medinet.liv.ac.uk/~roy/freeware.html Estas direciones en general funcionan y .....no funcionan Personalmente prefiero buscar con cualquier buscador potente como ALTAVISTA e ir probando en funcion de resultados 02-4 Que es un diccionario de crackear password Un programa cracker de password que trabaja contra una unica cuenta es por ejemplo NWPCRACK.EXE de Teiwaz. Este utiliza un archivo auxiliar que contiene todas las passwords a probar. Archivos de este tipo los puedes encontrar en la red (ver alt.2600/#hack FAQ, hay una lista de ftp con este tipo de archivos). No he encontrado ninguno de estos archivos en formato DOS Todos son en formato UNIX Estaras sometido a las mismas limitaciones que para NOVELBFH (no Intruder, 3.x) pero funciona bien. Para un cracker que trabaje directamente contra: - Un .OLD bindery dejado despues de pasar BINDFIX - O un bindery vivo. prueba el BINDERY.ZIP Este ZIP de Al Crant contiene BINDERY.EXE que extraera informacion de usuarios de los archivos bindery y los pondra en un archivo tipo texto de UNIX. Despues tendras que utilizar BINCRACK.EXE del mismo ZIP para crackear los passwords del archivo extraido. BINCRACK igual que NWPCRACK.EXE, requiere una lista de palabras. Es muy rapido. El archivo BINDERY.ZIP contiene versiones de BINCRACK para Solaris 1 y 2, por tanto puedes copiar la informacion de usuarios extraidos en un Sparc y crackearlos. Para detectar passwords tipo GUES,... ver seccion 07-9...proximamente. 02-5 Como utilizar SETPWD.NLM Se puede cargar SETPWD en la consola o via RCONSOLE. Si utilizas RCONSOLE, usa la opcion SERVER del Transfer Files y pon el archivo en SYS:SYSTEM. Para 3.x LOAD [path] SETPWD [usuario] [nuevopassword] Para 4.x set bindery context= [context, ejemplo hack.corp.us] LOAD [path] SETPWD [usuario] [nuevopassword] En 4.x el cambio se propaga de forma que tienes acceso a todos los servers en el arbol y no olvidar que tienes que seguir las especificaciones de password en SYSCON para esta tarea. Por ejemplo, si la cuenta a la que estas cambiando el password requiere 6 caracteres,...tendras que poner seis caracteres. 02-6 Cual es el camino "debug" para desconectar los passwords. Tienes que estar ante la consola. para entrar en debugger teclea "d VerifyPassword 6" Escribe 6 byts para uso posterior teclea "c VerifyPassword=B8 0 0 0 0 C3" Inhabilita password check teclea "g" Para salir del sistema y volver a la consola Para reestablecer el password checking... Entra en debugger teclea "g VerifyPassword = xx xx xx xx xx xx" donde xx son los numeros de antes teclea "g" para volver a la consola. Teiwaz ha puesto al dia el procedimiento para hacerlo mas facil. Y...solo 3.x 02-7 Como se encriptan los password El algoritmo para 3.x y 4.x es, segun algunas fuentes, el mismo. Es un algoritmo de propiedad que se supone se desarrollo de una vez. Descripcion del codigo fuente localizado en: DUTIWS.TWI.TUDELFT.NL Directorio /PUB/NOVELL El codigo fue enviado por Fauzan Mirza en el foro SCI.CRYPT, y produjo la consiguiente descrpipcion bit a bit en COMP.OS.NETWARE.SECURITY por David Wagner ENCRYPTP (int id4, char password[]) char buffer[32] - Concatenar password[] consigo mismo hasta conseguir 32 bytes - Poner el resultado en buffer[] - concatenar id[] consigo mismo hasta alcanzar 32 bytes. - XOR el resultado en buffer[]. return encryt (buffer[]) ENCRYT (char buf[32]) - nibble output[32]; /*un nibble=4 bits*/ - aplicar una complicada (pero facilmente reversible) funcion en buf[] - for (i=0; i<32; i++) output[i]=S-box[buf[i]]; - return output [] Donde S-box[] comprime un valor de 8 bit en 4 Bien, aqui esta como invertir la funcion de enredar la password, dado en el valor output[]. Aqui tengo un problema de traduccion,... lo siento - for (i=0; i<32; i++) toma cualquier x del S-box[x]==output[i] buf[i]=x - aplica el contrario de la complicada funcion a buf[] - concatena id[] a si mismo...., y XOR el resultado a buf[] - utiliza los 32 bytes del resultado de buf[] como el inverso del password Desde luego, hay algunos peque€os detalles que me he dejado fuera; si estas escribiendo el programa, tienes que ser cuidadoso con los detalles. Tambien, esta el hecho que el password inverso incluido el valor completo de 8 bits, no ASCII alfanumericos. Por tanto intenta ser un poco mas sofisticado y ten en cuenta el problema. La razon por la cual no obtienes la "verdadera original" password es debido a que cuando tomas "x", no sabes que "x" es "verdadero" y "original", ya que las cajas-S desplazan la informacion. 02-8 Cual es el peligro de almacenar password capturados Hay algunos, y seguro que se te ocurren otros. - Si el admin las encuentra on-line, obviamente pensara que algo esta pasando, especialmente si es bajo tu cuenta. - Si otro usuario en el sistema se da cuenta de lo que haces, puede que utilice la informacion en su provecho (y de forma insegura) y ponga en sobreaviso al admin. - Con algo parecido al LOGIN/PROP de itsme, hay la posibilida que TU password quede en el archivo, esto puede permitir a otro a utilizar tu cuenta sin esfuerzo. Esto es especialmente peligroso cuando el admin esta jugando con LOGIN/PROP porque quiere ver como funciona. - Otro usuario puede darse cuenta de lo que pasa y ser capaz de probar lo que estas haciendo. Si otros usuarios se encuentran el fichero y explotan las cuentas (y causan da€os), tu seras el culpable. Por lo tanto recomiendo encriptar los passwords, preferiblemente con algo medianamente seguro (XOR no es encriptar). Tercer capitulo sobre Novell Netware Capitulo - 03 CUENTAS Y SEGURIDAD DE CUENTAS 03-1 Que son las cuentas. El sistema de cuentas es el medio utilizado por Novell para controlar y administrar los accesos al servidor de una forma que es "contabilizable". El admin adjudica cargos por cada bloque leido o escrito, servicios requeridos, tiempo de conexion y espacio en disco. La cuenta paga por el servicio requerido un precio, que es deducido de su cuenta corriente. Como la cuenta paga por estos items (factura departamental, metalico,...) puede o no puede ser importante, pero el hecho es que puede instalarse y dejar una huella de que tu has estado ahi. Cualquier cuenta valida, incluyendo cuentas no-super puede chequear si la contabilizacion esta activa. Simplemente corre SYSCON y trata de acceder a Accounting, si recibes un mensaje diciendo que Accounting no esta activado,... bueno.... evidente no ? 03-2 Como frustar a Accounting Desconectala. E investiga la direccion tu nodo. Etapas a seguir : - Descubre tu direccion (ver 03-6). Utiliza una direccion tipica de super como propia. - Si estas utilizando un backdoor, activalo con SUPER.EXE - Borra Accounting de la forma siguiente. - Lanza SYSCON - Selecciona Accounting - Selecciona Accounting Server - Pulsa la tecla borrar - ...y contesta si. La ultima entrada en el archivo NET$ACCT.DAT sera tu hora de login con la direccion del nodo. - Ahora haz lo que quieras en el sistema. Utiliza una cuenta diferente si quieres, no quedara reflejada en el log - Login con la cuenta original, lanza SYSCON y reinstala Accounting. Logout inmediatamente,... la primera linea en NET$ACCT.DAT sera tu logout, mostrando un login y logout en la misma cuenta. Limpio y neto. Si no puedes descubrir la direccion (algunas tarjetas LAN no lo permiten o requieren extra drivers que puede que no tengas), simplemente desconecta Accounting y dejalo off o borra NET$ACCT.DAT localizado en SYS:SYSTEM Tienes que tener privilegios super para desconectar Accounting pero no para descubrir la direccion. 03-3 Que es el Intruder Detection Intruder Detection es la forma en que Novell detecta las tentativas con password no validos. Mientras que esta utilidad esta off por defecto, cualquier sitio que practique un minimo de seguridad conectara esta proteccion. Hay diversos parametros para Intruder. Primero hay un parametro para limitar el tiempo que el server recordara un intento con falso password. Tipicamente esta colocado en 30 minutos, pero puede ser tan poco como 10 minutos o tan largo como 7 dias. Hay un parametro para cuantos tentativas bloquean la cuenta. Normalmente son tres tentativas, pero puede ser tan poco como 1 o tanto como 7. Cuando un Intruder Detecton ocurre, el beep del server y un mensaje en la consola del server con el nombre de la cuenta que esta bloqueado y la direccion del nodo desde donde viene el intento. Tambien se escribe esta informacion en el log. Un supervisor puede desbloquear la cuenta antes de que se libere solo, y el log tambien puede borrarse por un supervisor. En una red grande, no es inusual ver bloqueos de Intruder diariamente, y olvidar una password es una cosa corriente. Los bloqueos de Intruder de Supervisor normalmente se registran e informan en la consola. 03-4 Como chequear la existencia de Intruder La forma mas facil de hacerlo es jugar con una cuenta que conozcas la password. Prueba una password incorrecta varias veces. Si intruder esta on, la cuenta quedara bloqueada aunque pruebes con la password correcta. 03-5 Que son las restricciones de tiempo Restricciones de tiempo pueden colocarse en una cuenta para limitar el tiempo en que una cuenta puede estar activa. Si la cuenta esta conectada y el tiempo ha superado el limite, la cuenta es desconectada. Las restricciones pueden ser por tiempo o por fechas. Esto significa que si el admin quiere restringir una cuenta para evitar que se conecte excepto de lunes a viernes de 8 a 5., puede hacerlo. Solo el super puede alterar las restricciones de tiempo. Alterar la hora de la estacion de trabajo no sirve. Solo sirve cambiar la hora del servidor. Restricciones de estacion sirven para limitar donde una cuenta puede actuar. restricciones pueden ser para una token ring o un segmento ethernet, y pueden ser especificas para una direccion MAC o nodo. El unico camino para evitar una restriccion en un nodo es 'spoof' la direccion desde una estacion en el mismo segmento desde donde la direccion que estas 'spoofing'. Lo siento chicos,... no entiendo lo del spoofing. Imagino que es falsear la direccion de la tarjeta de conexion a la red,... pero tampoco podria jurar que es asi. Desde luego puedes quitar restricciones con SYSCON si eres super o equivalente. 03-6 Como puedes conocer el nodo o direccion IP Depende del tipo de tarjeta de interface de red (NIC) que tiene la estacion de trabajo, puedes actuar de varias formas. Normalmente lo puedes encontrar en la seccion Link Driver del archivo NET.CFG en la linea NODE ADDRES xxxxxxxxxxxx donde xxxxxxxxxxxx son los doce digitos de la direccon MAC. Esto suponiendo que estas utilizando drivers ODI, si utilizas los NDIS estaran en PROTOCOL.INI o en IBMENII.NIF. En el sistema operativo OS/2 WARP 3.0 la informacion se encuentra en: c:\IBMCOM\PROTOCOL.INI busca una linea que empiece por : NETADDRESS= los doce caracteres que hay acontinuacion de =, es la direccion buscada Ver las direcciones de las tarjetas es bastante facil. Login con cualquier cuenta y lanza USERLIST /A. Tendras una lista de todas las cuentas que actualmente estan conectadas con sus networks y direcciones de nodo. Si su terminal esta en la misma red que del objetivo, puedes ver la direccion sin problemas. Actualmente puedes ver la direccion pero tienes que estar en la misma red. Para una direccion IP, tienes que lanzar un programa de configuracion TCPIP Algunos implementaciones tendran mascara, router e IP direccion en NET:CFG, TCPIP.CFG. Es una buena idea ver en toda la red y mirar cualquier archivo tipo .CFG, .INI, .NIF Para una busqueda hay que recordar algunas cosas: - Archivos tipo INI CFG NIF. - Si el terminal tiene una configuracion complicada, la direccion IP puede estar en varios sitios. Por ejemplo si utilizas una tarjeta con protocolos multiples, habran configuraciones diferentes incluyendo NET.CFG - Si la direccion IP que estas intentando 'spoof' esta activa, es posible que no lo quieras utilizar. En redes grandes puede haber alguien monitorizando para detectar direcciones duplicadas. Netview es un ejemplo de programa que se utiliza para esto. - Un compa€ia puede tener direcciones de clase 2, y puede tener docenas de subredes de clase 3. Si tu subnet es 100.100.100.x y tu router es 100.100.100.254, intentar 'spoof' 100.100.200.10, probablemente no ira muy bien