Tecnicas De Escaneo De Puertos
Enviado por robot_zero • 16 de Octubre de 2011 • 3.217 Palabras (13 Páginas) • 606 Visitas
Técnicas de escaneo de puertos
[ Introducción ]
En este texto vamos a ver distintas técnicas con las que podemos buscar información sobre un host, y luego de que forma podemos aprovechar la información obtenida. Nos concentraremos mas que nada en el escaneo de puertos y en las técnicas existentes para identificar que sistema operativo corre nuestra victima.
Muchas veces recibí mails diciendo cosas como "ayúdame a hackear pirulo.com, ya le hice un escaneo de puertos pero ahora no se que hacer". Esto es algo muy común, muchos al fijar los ojos en una víctima lo primero que hacen es un port scanning, pero cuantos mas allá de la simple teoría conocen las diferentes técnicas de escaneo, y mucho mas importante que hacer con la información obtenida.
Con este texto intento que no solo sepamos que hacen muchos de los métodos que utilizamos, sino también como funcionan, porque al saber como funcionan comprenderemos mejor lo que estamos haciendo y aprovecharemos mas la información obtenida.
Bueno, como siempre espero que disfruten tanto en leer este texto como yo en escribirlo.
[ Breve teoría de TCP ]
No es el objetivo de este texto explicar como funciona el protocolo TCP, pero dado que a medida que avancemos con la lectura se nos van a presentar términos y conceptos referidos mas que nada a este protocolo, decidí hacer una breve introducción a la teoría del TCP, y a lo que mas nos interesa saber para este texto. Al que le interese saber mas sobre el TCP o el TCP/IP que busque en el respectivo RFC.
El TCP es un protocolo que generalmente se usa con otros, o es mas conocido como TCP/IP; quiero aclarar que el TCP/IP es una suite de protocolos y no un solo protocolo como se cree comúnmente, esto quiere decir que dentro del TCP/IP tenemos muchos protocolos pero se lo conoce así por ser estos dos los mas representativos.
El protocolo TCP es un servicio de comunicación que forma un circuito, o lo que podríamos llamar una conexión. A diferencia de otros programas que usan UDP, con el TCP tenemos un servicio de conexión entre los programas llamados y los que llaman, chequeo de errores, control de flujo y capacidad de interrupción. Por todo esto es que se dice que el TCP es un protocolo orientado a la conexión.
A continuación veremos como es el segmento TCP, ya que esto es lo que mas usaremos al ver escaneo de puertos y fingerprinting.
Formato del segmento TCP:
El segmento TCP consiste en una cabecera y datos. A continuación veremos una descripción de los campos del segmento TCP:
* Número de puerto del origen/destino (Source/Destination Port Numbers): Este campo tiene una longitud de 16 bits.
* Números de secuencia (Secuence Numbers): existen dos números de secuencia en la cabecera TCP. El primer número de secuencia es el número de secuencia final y el otro número de secuencia es el número de secuencia esperado de recepción.
* Longitud de la cabecera (Header Length): este campo tiene una longitud de 4 bits y contiene un entero igual al número de octetos que forman la cabecera TCP dividido por cuatro.
* Código de bits (Code bits): el motivo y contenido del segmento TCP lo indica este campo. Este campo tiene una longitud de seis bits:
o Bit URG (bit +5): con este bit identificamos datos urgentes.
o Bit ACK (bit +4): cuando este bit se pone a 1, el campo reconocimiento es valido.
o Bit PSH (Bit +3): aunque el buffer no este lleno, como emisores podemos forzar a enviarlo.
o Bit RST (Bit +2): con este bit abortamos la conexión y todos los buffers asociados se vacían.
o Bit SYN (Bit +1): este bit sirve para sincronizar los números de secuencia.
o Bit FIN (Bit +0): este bit se utiliza solo cuando se esta cerrando la conexión.
Ventana (Window): este campo contiene un entero de 32 bits. Se utiliza para indicar el tamaño de buffer disponible que tiene el emisor para recibir datos.
Opciones (Options): este campo permite que una aplicación negocie durante la configuración de la conexión características como el tamaño máximo del segmento TCP. Si este campo tiene el primer octeto a cero, esto indica que no hay opciones.
Relleno (Padding): este campo consiste en un número de octetos (De uno a tres), que tienen valor cero y sirven para que la longitud de la cabecera sea divisible por cuatro.
Checksum: mientras que el protocolo IP no tiene ningún mecanismo para garantizar la integridad de los datos, ya que solo comprueba la cabecera del mensaje, el TCP dispone de su propio método para garantizar dicha integridad.
[ Que es el escaneo de puertos ? ]
El escaneo de puertos consiste básicamente en detectar que servicios nos esta ofreciendo un determinado host. Si al hacer un escaneo encontramos un puerto abierto, según cual fuese este es el servicio que nos ofrece.
Por ejemplo vamos a escanear el host zapala.com.ar:
Interesting ports on zapala.com.ar (200.32.91.1)
Port State Service Protocol
21 open tcp ftp
25 open tcp smtp
80 open tcp http
Suponiendo que sólo estos puertos estuvieran abiertos (HEH!) lo que nos resulta de este escaneo, es que zapala.com.ar esta ofreciendo servicios de transferencia de archivos, de correo y de web. Mas adelante veremos de que forma podemos explotar la información que hemos obtenido ahora.
[ Diferentes técnicas de escaneo de puertos ]
Debido a los diferentes tipos de protocolos, los numerosos puertos que pueden estar escuchando, y a los dispositivos empleados para evitar o detectar el escaneo de puertos, han surgido diferentes técnicas las cuales tienen sus ventajas como desventajas. A continuación veremos algunas de las distintas técnicas que hoy día conocemos:
TCP connect() scanning: esta es la forma mas popular de escaneo TCP y consiste básicamente en usar la llamada a sistema connect() del sistema operativo, si se logra establecer la conexión con el puerto de la otra computadora entonces este puerto esta abierto. Las ventajas que tiene esta forma de escaneo es que no se necesita ningún privilegio especial para poder llevarla a cabo, en la mayoría de los Unix cualquier usuario puede hacer uso de la llamada connect(). Otra gran ventaja es la velocidad. El lado negativo que encontramos es que es muy fácil de detectar y de filtrar, y generalmente el host loguea que establecemos una conexión e inmediatamente nos desconectamos.
TCP SYN scanning:
...