Conexión Cliente / Servidor
Tools [*]t3c4i3`s Remote Access Shell v1.07 public [*]Wireshark [*]Nmap [*]Otras
Conocimientos Previos [*] Protocolo TCP/IP [*] Otros
1 Introduccion
En este paper analizaremos a nivel de red (funcionamiento) el tipo de conexión cliente servidor que es el que ultizan los troyanos, en este ejemplo veremos un “troyano” de conexión inversa osea que el cliente (Host Victima) se conecta al servidor (Host Atacante). Veremos los tipos de solicitudes que hace tanto el servid servidor or como como el clin clinte, te, en las transf transfere erenci ncia a de archiv archivos, os, activa activacio cion n de keylogger y otras funciones que trae con si la tool.
2 Notas
Cliente(Host Victima)
•Windows XP SP3 •IP ---> 192.168.65.129 (asignada por Vmware) •Firewall = ON!
Servidor (Hosts Atacantes)
• • • •
Windows XP SP3 IP ---> 192.168.65.128 (asignada por Vmware Firewall = ON! Backtrack4 (Sniffer, Analizador de datagramas de red)
3 Configuracion Prim Primer eram amen ente te vamo vamos s a conf config igur urar ar nues nuestr tro o clie client nte e el cual cual ira ira al host host victima.Como veran aparece un menu de inicio, alli se pueden ver 4 opciones sencillas 1. Load Server (cargar el servidor alli es donde habilitaremos el servidor escuchando X puerto para que el cliente pueda conectarse), 2. Create Client (crear cliente alli crearemos y configuraremos el cliente), 3. About ( Alli veremos la sintaxis de los comandos de la tool como tal, veremos algunos otros comandos basicos, alli tambien nos dicen que la version publica tiene deshabilitada la funcion de keylogger :S, aparecera un banner de hackforums.net donde alli se encontrara la version provida, pero seguiremos con esta para ver el func funcio iona nami mien ento to y util utiliz izar ar algu alguna na opc opcio ione nes s nece necesa sari rias as y basi basica cas) s), , 4. Exit(Salir de la tool)
Caracteristicas de la configuracion del cliente Input Input Input Input
ip ----> ip del servidor ----> 192.168.65.128 port ---> puerto del servidor ---> 666 id ----> ID ----> Progre Filename ----> nombre del archivo ---> Setup.exe
aquí le predefinimos al cliente que el servidor es la ip 192.168.65.128, el puerto por el cual el cliente se conectara al servidor que es 666 , el ID es la identificion del cliente y el cliente sera llamado Setup.exe.
Despues con algo de ingienieria social o con ataque man-in-the-middle, esto si se lo dejo a su imaginacion el server este dentro del Host victima y lo halla ejecutado, empezaremos a verificar informacion de nuestro cliente a ver si esta realemente ejecutandose. Nota: Despues de ejecutarse el servidor, el empieza a esconderse :) Sacaremos en nmap a trabajar, lo que haremos es ver si el puerto de nuestro cliente esta habilitado. Sintaxis
Excelente el puerto esta habilitado pero filtrado, eso es por el el firewall esta on pero aun asi vamos bien.
4 Conexion Antes de empezar a conectarnos a nuestro cliente en el host del atacante debe estar estar wiresh wireshark ark insta instalad lado o (ya que yo estoy estoy utiliz utilizand ando o Vmware Vmware virtu virtuali alise se Backtrack y voy analizando la trama de datos desde alli),bueno despues de tener instalado el wireshark lo iniciamos y aplicamos un flitro para que solo veamos la trama de datos que nosotros nesecitamos. Filter ----> (tcp.port eq 666)
y lo activamos y empezamos a atrapar la trama de datos de la red aplicando un filtro que solo atrape los paquetes tienen en el datagrama una direccion ip hacia el puerto 666.
Bueno empezamos con lo bueno, primeramente veremos algo asi en el wireshark, que esta pasando aquí?... los paqueres con gris aquí veremos que el cliente 192.16 192.168. 8.65. 65.128 128 lo que esta esta hacien haciendo do es intent intentan ando do cone conect ctars arse e hacia hacia la ip 192.168.65.128, los paquetes rojos son las respuestas de la solicitud perdida por que la ip si esta en la red pero no esta a la escucha de ninguna conexión por ahora por que no hemos habilitado el servidor, veamos mas caracteristicas.
Ahora analizaremos las propiedades de los paquetes grises osea los de intento de conexión. Bueno veremos un IP Src que esa seria la ip de provenencia o de donde viene el paquete, vemos una ip de Dst o de Destino es hacia donde esta dirijido el paquete, vemos el puerto 666 que es donde vienen los paquetes y vemos el puerto que se trata de conectar este puerto va variando cada vex que se pierda la conexión (para ello esta programado el cliente), seguimos. Ahora vamos con un paquete rojo.
Ahora vemos que los papeles se han cambiando ahora la ip de destino es la del servidor y la ip de provenencia es la del cliente y los puertos tambien varian de lugar. Aquí lo que hace la red como tal es notificarle al cliente es que no hay conexión con el host que el define alli entonces la conexión se pierde y ese dato le llega al host cliente.
Vamos a activar la conexión de nuestro servidor, vamos a load server en el menu de la tool con tan solo teclear 1, bueno alli nos dice que coloquemos el puerto que definimos antes osea el 666 y le damos enter y hay mismo lo activamos y vamos a conseguir la sesion de nuestro cliente.
Aquí nos muestra el cliente conectado, podremos observar 2 opciones 1 que es volver al menu y la otra es si tenemos mas clientes conectado podremos ejecutar comand comando o en masa masa hacia hacia todos todos los client clientes, es, pero pero aquí aquí solo solo tecle tecleam amos os 1 para para obtener la sesion. Al obtener la sesion vamos a ver el wireshark que fue lo que sucedió.
Vemos Vemos que el servidor servidor por fin respondio respondio la solicutu solicutud d que el cliente cliente estab estaba a pidiendo desde que se ejecuto. Apenas el servidor recibio la solicitud que el cliente emitia, el dijo “hey si estoy aquí y te estoy escuchando, conectate”, el cliente respondio “Conectandomee... y envio la shell del sistema” para ser algo mas graficos :).
Despues de esa conexión el servidor empieza a emitir un refresco de la conexión osea que vuelve y verifica si realmente el servidor esta conectado. Es un tipo de protoc protocol olo o que el tiene tiene para para que cuando cuando se pierda pierda la conex conexión ión entre el cliente y el servidor, avise y el lo avisa que esta refrescando la conexión con un _REFRESH_ que viaja en texto plano hacia el cliente y lo podemos ver.
Aparte de ello podremos ver que logro la conexión en el puerto 2339. aquí este proceso sigue asi durante toda la conexión del cliente al servidor. Ahora vemos como es el envio de los comandos hacia el host victima. Empezaremos con un simple DIR.
Ahora veremos en el wireshark como viajo hacia el host victima.
Como la mayoria de trama de datos que sniffeamos esta vianjando en texto plano podemos ver que el dir viaja normal hacia la vicitma. Y el cliente lo recive y envia una notificacion de que le llego el dir.
Como saque esta conclucion, si miramos todo la trama de datos anteriormente sin enviar comandos hacia el cliente la comunicación es la misma, solo varian en algunos caracteres pero casi siempre fue la misma y cuando hacemos el dir y lo enviamos enviamos el cliente cliente responde responde de esta manera, manera, luego luego el servidor servidor refresca refresca la conexión.
Y luego el cliente envia por texto plano el resultado de dir hacia el servidor.
5 Jugando con la Tool aquí vamos a probar varias opciones que trae la remote shell como tal y miraremos la forma de comunicación.
-Display /? Este comando es para 1 desktop (para tomarle un pantallazo al host cliente y ver por medio de una imagen que es lo que esta haciendo), 2 information (para ver algunas caracteristicas del host victima)
Sintaxis ----> DISPLAY /desktop DISPLAY /information *DISPLAY /desktop
Como vemos enviamos al cliente la sintaxis del comando bien y el lo reconocio y ejecuto esa funcion que tiene con si. Ahora veremos que paso en el protocolo TCP/IP
lo envia al cliente tal cual la sintaxis que le enviamos por medio de la shell, ahora el cliente nos respondera. Que llego y aparte de eso que esta en ejecucion.
Ya que el servidor asi entendera que el comando llego bien y luego el cliente empezara a enviar el formato de la imagen por medio de la comunicación que tienen establecidad ellos dos (cliente y servidor). Enviara varios paquetes del mismo modo por que como sabran en la etapa de fragmentacion y segmentacion que se produce en las capas del modelo osi la imagen estaria viajando atravez de varios framentos de datos hacia el servidor, esto se repitira por hay unas 17 o mas veces.
-DOWNLOAD /? Este comando es para descargarnos archivos del host cliente, nos tenemos que ubicar donde esta el archivo a descargar y ejecutarlo. Sintaxis -------> DOWNLOAD filename.txt
Despues de crear este archivo en el escritorio lo vamos a descargar y a mirar con el wireshark como viaja.
Como nos muestra nuestra tool ya descargamos el archivo, ahora solo es cuestion de ir a donde esta guardada la tool y buscar el archivo. Ahora a ver como viaja :). el servidor envia el comando hacia el cliente
Bueno dejamos hasta aquí el juego con las opciones de la herramienta.
6 Analizando el Servidor aquí lo que haremos es hecharle un ojo al servidor desde un editor de texto plano, aquí solo veremos como tal el lenguaje maquina, pero si nos colocamos a anilizar bien podemos encontrar mucha informacion de el.
Bueno empezaremos a buscar datos que nos llame la atencion, yo solo vi algunos que realmente me gustaron mucho y sobre estos son los que vamos a hablar un poco.
Flags o banderas del servidor aquí solo se muestran como el servidor recibe los flags o las banderas que se produscan por X o Y razon en el cliente, lo que hace el cliente es enviar el dato que estoy subrayando.
Lenguaje de programacion.
Comandos de la tool
aquí aquí en esta esta fase fase de anal analiz izan ando do el serv servid idor or podr podran an enco encont ntra rar r much mucha a mas mas informacion que les puede servir para ver el funcionamiento. Asi se puede ver varios varios funciona funcionamien mientos tos de las herramie herramientas ntas que estamos estamos utilizan utilizando do :) Bueno Bueno hasta aquí llegamos espero que les halla gustado.