	___________________________________________________________________


		       (c) 2000 DeepZone. All rights reserved.

		   _-=[ Win9x.h0rtiga : Anonimato e Intrusion ]=-_

                            by |Zan - izan@deepzone.org

		http://www.deepzone.org - http://deepzone.cjb.net

	___________________________________________________________________


	Background
	__________

	En las siguientes lineas se visitan nuevas y antiguas tecnicas
	para conseguir un cierto anonimato en la red, finalizando, con
	una aproximacion real de intrusion y anonimato basada en el
	posible abuso de miles de hosts corriendo el kernel 9x.

	La informacion y software proporcionado en este documento puede
	ser reproducida libremente manteniendo el copyright de su autor.

	La informacion y software proporcionado en este documento debe
	ser entendido como una sencilla demostracion de lo expuesto a lo
	largo del documento. El autor no se responsabiliza del uso que se
	haga de ella por terceros.	


	Introduccion
	____________

	Hoy en da existen diferentes recursos a lo largo de la red para
	mantener un cierto anonimato en la misma y, aunque
	(afortunadamente), este anonimato es presentado como un anonimato
	completo y fiable por empresas o particulares dedicados a ofrecer
	dichos servicios la verdad es otra; estando muy alejada de las
	bonitas promesas presentadas en sus paginas web.

	Entre estos servicios se encuentran remailers, redireccionadores,
	surfing proxys ... etc ... etc ... El problema de estos servicios
	es que siempre tienen la posibilidad de loggear o almacenar
	direcciones o datos confidenciales de sus usuarios siendo labor del
	usuario decidir si confiar en estas terceras partes o no, que como
	mal menor te obligan a visualizar multitud de banners y propaganda
	electronica y como mal mayor te obligan a aceptar una politica de
	uso en la que suelen inducirte a aceptar clausulad de abuso por
	las cuales en casos concretos tus datos (presuntamente anonimos)
	pueden ser hechos publicos.

	Mas complicado es mantener cierto anonimato en IRC. Resulta curioso
	como a la mayoria de usuarios anonimos les gusta recibir correo
	encriptado y/o firmado y prefiere responder a traves de IRC para
	evitar la traza de correo desde su ISP mostrando la mayoria de las
	veces su IP origen. Una buena solucion para solucionar esto ultimo
	es utilizar proxys mal configurados o utilizar vulnerabilidades
	conocidas en los mismos o similares, como es el caso del producto
	Wingate. Acerca de Wingate se han escrito multitud de lineas para
	abusar de sus problemas de relay, asi como escrito numerosas
	herramientas para detectar dicho producto en computadoras remotas.

	Quizas cualquiera de los recursos presentados pueda ser una buena
	opcion para garantizar el anonimato salvo que todos estos servicios
	pueden estar habilitados para loggear cualquier peticion o conexion
	a traves de ellos convirtiendo el anonimato en un pseudoanonimato o
	anonimato aparente.


	Tecnica de Anonimato
	____________________

	Cualquiera que conozca Internet y TCP/IP podra darse cuenta que en
	su filosofia de distribucion y encadenamiento los paquetes van
	saltando de un host a otro.

	Quizas lo mas importante a destacar de esto ultimo es que cada
	paquete necesita una IP origen y una IP destino para conseguir el
	deseado flujo de paquetes entre maquinas, ademas de otras
	caracteristicas que no seran necesarias conocer para entender estas
	lineas.

	Una IP es un numero de 32 bits (en su version 4) unico que
	identifica una maquina en Inet. El problema de enviar paquetes con
	una IP origen alterada es que la respuesta remota ira orientada a
	la IP origen falsa. Es posible entablar una comunicacion con una
	maquina remota mandando multitud de paquetes con diversos campos
	alterados y confiando en que la probabilidad nos permita entablar
	dicha comunicacion con el host remoto, pero se puede observar que
	este metodo no constituye un metodo deseado para entablar una
	comunicacion fiable.

	Una aproximacion al modo de funcionamiento de un proxy constituye
	la mejor opcion. De todos es conocido que un proxy funciona por
	recibir peticiones, transportar dicha peticion y obtener un
	resultado para posteriormente atender la peticion original con el
	resultado obtenido.

	Lo anterior seria algo asi ...


	 Maquina A           Maquina B  Maquina B         Maquina C


	<IP anonima> <--->  <IP proxy> <IP proxy> <---> <IP destino>


	
	En el grafico se puede apreciar que para que el host 'A' alcance
	al host 'C' es necesario dos conexiones utilizando una maquina
	intermedia como es el caso del host 'B'.

	Cualquier software o servicio loggeando el origen de paquetes en
	la maquina 'C' dara como IP origen a la maquina 'B', cuando en
	realidad la conexion es forzada desde la maquina 'A'.

	Como se ha mencionado antes si la maquina 'B' loggease el trafico
	el problema se retrasaria un nivel en el encadenamiento de
	paquetes pero cualquier administrador en la maquina 'C' podria
	ponerse en contacto con el administrador de la maquina 'B' y
	pedirle que IP origen realizo una peticion de conexion a su
	maquina a una hora en concreto.

	Quizas la "unica" solucion para obtener un anonimato completo es
	la instalacion de modulos que realicen la doble conexion en una
	maquina intermedia ocultando la IP origen. Estos programas son
	famosamente conocidos en la comunidad y responden al nombre de
	bouncers. Generalmente no suelen ser programas elaborados,
	limitandose unicamente a realizar una conexion con un host
	preconfigurado a la hora de correrlo. El problema de esto ultimo
	hace hincapie en el pobre soporte que esto supone para
	protocolos como http que realizan multiples conexiones en poco
	tiempo, sin olvidar que necesitas rearrancar dicho bouncer cada
	vez que quieras realizar una conexion a cualquier host arbitrario.

	De lo anterior se deduce que el caso mas ideal de bouncer es
	aquel instalado en una maquina intermedia a nivel kernel
	ocultando dichas conexiones y evitando cualquier actividad de
	logging por terceros.

	Este ideal tendria un modo de funcionamiento similar a un proxy
	autoconfigurable remotamente y bidireccional.


	Tecnica de Intrusion
	____________________

	El hecho de que exista la posibilidad de un proxy bidireccional
	instalado en un gateway supono al mismo tiempo que anonimato
	'completo' un riesgo para las computadoras visibles a traves de
	cualquier interfaz en el gateway.

	Esto ultimo supone que cualquier usuario con control remoto sobre
	este ideal podria scannear cualquier computadora de la intranet/s
	conectada/s a traves de dicho gateway a la red a la que pertenece
	el atacante.

	Por otro lado se puede observar como la privacidad de recursos y
	servicios ofrecidos en la Intranet estan ahora disponibles a un
	potencial atacante. Cualquiera puede ahora acceder a un servidor
	web local o cualquier otro servicio rompiendo incluso las reglas
	de filtrado de un posible firewall en otro segmento de la red
	por disponer de una IP valida de acceso dentro de la la misma.


	host ideal vs host real
	_______________________

	Todas las lineas anteriores constituyen una aproximacion ideal
	de lo que supondria la instalacion/utilizacion de un proxy
	bidireccional en un host arbitrario.

	Esto ultimo en maquinas corriendo sistemas abiertos como Linux
	donde la documentacion es libre puede llegar a hacerse e incluso
	existen algunas lineas de codigo demostrandolo constituyendo la
	mayor dificultad obtener los privilegios adecuados para poder
	hacerlo remotamente.

	Lo mismo es aplicable a Windows NT, Solaris ... Cualquier minima
	medida de seguridad supondra un intento fallido de conseguir la
	instalacion/utilizacion remota del proxy.


	La autentica realidad
	_____________________
	
	Las lineas anteriores pueden llegar a desanimar a cualquier
	potencial atacante pero las cosas no son exactamente de esta
	manera.

	La verdadera realidad es otra. La autentica realidad es la
	existencia de miles de maquinas corriendo sistemas operativos que
	no implementan una buena seguridad a nivel de usuario en las que
	conseguir anillo 0 y controlarlas remotamente es un simple juego.
	
	Esto ultimo significa que cualquier usuario de la red puede
	obtener un cierto anonimato a costa de suplantar la identidad
	de cualquier otro y aprovechar sus privilegios para realizar
	cualquier tipo de actividad sin su consentimiento y conocimiento.

	Nace h0rtiga ...


	 Que es h0rtiga ?
	__________________

	h0rtiga es la implementacion practica de lo expuesto anterior-
	mente para el kernel Win9x de Microsoft - http://www.microsoft.com

	h0rtiga es un proxy bidireccional, configurable remotamente y
	aunque no implementado a nivel kernel por motivos de tamao de
	codigo si corre como un servicio del sistema.

	La implementacion de h0rtiga se ha realizado en asm y C
	siguiendo un modelo cliente-servidor bien definido.

	Originalmente h0rtiga poseia una subrutina que permitia subir y
	ejecutar ficheros al host remoto donde estaba instalado pero dicha
	rutina ha sido eliminada finalmente por motivos obvios. h0rtiga
	esta orientado a proporcionar y explotar servicios de red a un
	usuario remoto. Cualquier persona buscando control sobre una
	maquina remota quizas deba usar programas de "administracion
	remota" como BO o NetBus.

	h0rtiga esta formado por dos modulos (cliente y servidor). El
	cliente ha sido implementado en C mientras que el servidor ha sido
	implementado integramente en asm. Esto ultimo permite que el tamao
	del servidor no exceda los 5k de tamao bruto aprox. permitiendo
	pasar inadvertido cuando llega a un sistema. En realidad el
	codigo dinamico que se inocula a los ejecutables ocupa un tamao
	alrededor de los 3k.

	h0rtiga es capaz de autoaadirse a un fichero ejecutable e
	infectarlo para tomar el control cuando llega a un sistema. Esto
	supone que h0rtiga es capaz de 'pasar inadvertido' en cualquier
	ejecutable. Por otro lado, h0rtiga no hace uso de ninguna
	caracteristica stealth ya que su fin no es pasar inadvertido y
	facilitar el abuso de sistemas por terceros. Asi mismo h0rtiga sigue
	determinados compromisos para permitir su facil deteccion en caso
	de pasarle un scanner. Para esto ultimo se ha codificado usando
	tecnicas que permitan una facil desinfeccion y deteccion como es la
	de aadir su codigo en una nueva seccion. Esto supone trabajo de
	codificacion extra y un algoritmo mas complejo pero facilita los dos
	puntos citados anteriormente con lo que la perdida de datos en caso
	de necesitar desinfectar un ejecutable es minima.

	Con h0rtiga no se ha facilitado ninguna herramienta de configuracion
	para el servidor lo que implica que una configuracion standard no
	modificada prestara sus servicios en el puerto 5556.


	Infectando con h0rtiga
	______________________


	La forma adecuada de instalar h0rtiga en un sistema es la siguiente:

	
	- Obtener la generacion zero de h0rtiga o una copia de un fichero
	  infectado por el mismo.

	- Comprobar la firma digital de sus ficheros en caso de tratarse de
	  la generacion zero.

	- Crear un directorio donde se realizara la infeccion controlada.

		c:\> mkdir c:\h0rtiga

	- Copiar la generacion zero o el fichero obtenido en el paso 1 al
	  directorio.

		c:\h0rtiga> copy c:\fuente h0rtiga\h0rtserver.exe c:\h0rtiga


	- Copiar el ejecutable/s que quieres infectar al directorio.

		c:\h0rtiga> copy c:\directory\something.exe c:\h0rtiga

	- Ejecutar h0rtiga. Recuerda que h0rtiga infecta 5 ejecutables
	  maximo en cada iteraccion. Si por ejemplo copias 12 ficheros
	  ejecutables al directorio tendras que ejecutar h0rtiga 3 veces.
	  h0rtiga no infectara ficheros ya infectados. Por otro lado es
	  inocuo cuando es ejecutado bajo el kernel NT.


	Transmitiendo h0rtiga
	_____________________


	Una vez inoculado h0rtiga a un fichero este debe ser ejecutado en
	la maquina que queremos sea nuestra maquina intermedia y con la
	cual queremos enmascarar nuestra IP.


	Como actua h0rtiga
	__________________


	Cuando h0rtiga llega a un sistema comprueba que el sistema no esta
	infectado, procede a hacer una copia de si mismo y a aadirse como
	un servicio para cualquier posterior arranque.

	Una vez se rearranca la maquina, h0rtiga toma control de esta en el
	puerto 5556.

	A traves de un cliente h0rtiga puede ser configurado remotamente
	para actuar como un proxy bidireccional entre la intranet e
	Internet o entre dos maquinas de la propia Inet.

	Servicios soportados por h0rtiga son: http, ftp, telnet, irc ...

	
	Configurando h0rtiga
	____________________


	c:\> h0rtclient


	           (c) 2000 DeepZone - h0rtiga client (Win32) ...

                       Coded by |Zan - izan@galaxycorp.com


            	Uso : h0rtclient <h0rtiga host> <port> <new host> <port>
	        e.j.: h0rtclient host.com 5556 www.pandasoftware.es 80

        	Error : Numero de parametros incorrectos.


	c:\> h0rtclient foo.bar 5556 ftp.xxxxxxxxx.com 21


	           (c) 2000 DeepZone - h0rtiga client (Win32) ...

                       Coded by |Zan - izan@galaxycorp.com


            	Uso : h0rtclient <h0rtiga host> <port> <new host> <port>
	        e.j.: h0rtclient host.com 5556 www.pandasoftware.es 80

	Esperando respuesta ...

	(c) 2000. Win9x.h0rtiga v1.0 Server activated
	
		- http://mareasvivas.cjb.net

	Coded by |Zan - izan@galaxycorp.com / izan@deepzone.org

	Who are you ???

	... nueva configuracion enviada.

	c:\> ftp foo.bar 5556
	Conectado a ftp.xxxxxxxxx.com.
	220 ftp.xxxxxxxxx.com FTP server ready.
	Name (foo.bar:root):
              ^^^^^^^
	         |
                  ---------- La conexion se loggea con IP origen foo.bar


	Scan para una IP de la red local

	c:\> h0rtclient foo.bar 5556 192.168.10.25 23

	[ omitida salida del cliente ]

	c:\> telnet foo.bar 5556
	Trying foo.bar...
	Connected to foo.bar.
	Escape character is '^]'

	server login:


	El host existe y ademas presta un servicio de telnet remoto.


	Limitaciones
	____________


	h0rtiga ha sido desarrollado para demostrar el posible abuso
	de miles de computadoras en Inet. El hecho de que un ataque se
	realice desde una IP en concreto y haya sido loggeada como tal
	no deberia suponer una prueba concluyente; ya que como se ha
	visto, esconder y actuar bajo 'otra identidad' es demasiado
	facil para cualquiera de los millones de usuarios de Inet.

	Quizas el mayor numero de victimas potenciales de h0rtiga se
	encuentren en IRC. Miles de IPs dinamicas proporcionando acceso
	anonimo a cualquier potencial atacante.

	En el momento en que se decidio dar soporte http a h0rtiga se
	opto por habilitar un numero de conexiones minimas comunes a
	todos los servicios. Este numero es de 20 conexiones antes de
	que tengas que volver a configurar el servidor. Esta eleccion
	supone una reduccion importante en el tamao del codigo pero
	supone una molestia a la hora de tener que agotar dichas
	conexiones cuando basculas entre dos protocolos que necesitan
	solamente una unica conexion.


	Interpretando codigos
	_____________________

	h0rtiga es una utilidad basada en linea de comandos capaz de
	autoinfectar cualquier ejecutable para Win32. Esto evita tener
	que utilizar ninguna herramienta externa y simplifica su uso
	en un nivel aceptable.

	Cuando h0rtiga escucha en el puerto 5556 de un host infectado
	respondera a cualquier conexion con el siguiente mensaje ...

	(c) 2000. Win9x.h0rtiga v1.0 Server activated

			- http://mareasvivas.cjb.net
	
	Coded by |Zan - izan@galaxycorp.com / izan@deepzone.org

	Who are you ???       

	En este momento el servidor esta listo para recibir su nueva
	configuracion como ya comente anteriormente a traves de
	h0rtclient.

	h0rtiga puede acabar su timeout de conexiones en cualquier
	momento cuando usas http debido al numero de conexiones que
	supone una pagina web para el cliente. Si la pagina que estas
	navegando supera las 20 conexiones h0rtiga vuelve a solicitar
	una nueva configuracion con el siguiente mensaje a traves del
	navegador ...

		"Unknown Status reply from server: 2000!"

	Posteriormente visualiza en el navegador una pagina con el
	siguiente mensaje ...

			"Who are you ???"

	h0rtiga indica asi su deseo de que se le envie una nueva
	configuracion a traves de h0rtclient.	

	Por otro lado si deseas agotar las conexiones restantes que
	h0rtiga ha hecho a un host (sea el protocolo que sea) puedes
	apuntar el navegador a ese host y utilizarlo para agotar las
	conexiones restantes comodamente.


	Desinfectandose
	_______________

	Cualquier usuario que haya sido infectado por h0rtiga puede
	desinfectarse facilmente siguiendo los siguientes pasos ...

	
	Eliminando el servicio ...

	Inicio -> Ejecutar -> Regedit
	
	Edicion -> Buscar -> h0rtiga Server

	Edicion -> Eliminar

	Inicio -> Apagar el sistema -> Reiniciar en modo Ms-DOS

	Eliminando el fuente ...

	c:\>del c:\windows\system\server.exe
	
	Puede que necesites cambiar el directorio origen del sistema
	si has instalado windows en una unidad/directorio diferente.


	Ultimas palabras ...
	____________________


	Para cualquier comentario o sugerencia puedes alcanzar al autor
	en las siguientes direcciones ...


       		http://www.deepzone.org
		http://mareasvivas.cjb.net
		
		mailto:izan@deepzone.org
		mailto:izan@galaxycorp.com


	Existe un redireccionador siempre actualizado en
	http://deepzone.cjb.net


	___________________________________________________________________

					 |Zan - izan@galaxycorp.com / DZ'00
							