Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

Visitas al blog!

Ayúdanos a seguir.

Páginas Amigas

martes, 30 de enero de 2018

SecHackLabs: Linux Hardening - Asegurando el sistema de arranque o BootLoader.


Un atacante que tiene acceso físico a tu sistema puede bypassear fácilmente una gran cantidad de la seguridad de su sistema, especialmente controles de usuario y contraseña, además puede reiniciar este, cambiar la configuración de arranque del sistema, la manera cómo cargan los procesos y su orden de arranque. Usted necesita asegurar el arranque de su sistema y tener conocimiento total sobre que está pasando durante el proceso de arranque para poder endurecer/proteger su sistema contra este tipo de ataques.

Si un atacante puede reiniciar tu sistema, puede crear dos grandes problemas. El primero es que los sistemas GNU/Linux ofrecen una gran cantidad de acceso a todo aquel que puede cómo ellos inician el sistema. El segundo, es que pudiendo apagar tu sistema es un excelente ataque DoS/DDoS. Entonces, tener control sobre quien está habilitado para reiniciar tu sistema, cómo puede interactuar cada usuario con el bootloader o cargador de arranque y cual kernel pueden ellos iniciar es una decisión en la que debes ser altamente estricto.

Además, cuales servicios inician y su orden de arranque pueden exponer tu sistema a futuros riesgos, además, muchos de los servicios que se inician en un sistema que se instaló tal y cómo venía por defecto o en sistema no endurecido (unhardened) son innecesarios. Muchos de los servicios exponen tu sistema a riesgos, debido a sus particulares funcionalidades, a lo largo de este post dejaré unas buenas reglas para asegurar y organizar el proceso de arranque de tu sistema.

· Protegiendo tu GRUB con contraseña.

GNU GRUB (GNU GRand Unified Bootloader) es un gestor de arranque múltiple, desarrollado por el proyecto GNU que nos permite elegir qué Sistema Operativo arrancar de los instalados.

Se usa principalmente en sistemas operativos GNU/Linux. El sistema operativo Solaris ha usado GRUB como gestor de arranque en sistemas x86 desde la revisión 10 1/06. Para más información, ver aquí.

Al ser este el paquete que nos da la opción de arrancar nuestro sistema y además, nos permite elegir con cual kernel arrancarlo, es ALTAMENTE recomendado la asignación de una contraseña que debamos introducir al momento de intentar arrancar uno de los kernel instalados. En una entrada anterior que publicamos, explicamos lo fácil que es cambiar la contraseña del usuario ROOT y cualquier otro usuario en un sistema GNU/Linux que no tiene protección del GRUB. Ver publicación.

En este post explicamos la manera cómo podiamos obtener acceso a un sistema GNU/Linux cómo root, sin necesidad de usar contraseñas, cracks, ni nada por el estilo, solamente usando las funcionalidades propias del sistema. Para los hackers, programadores, especialistas en seguridad informática y usuarios preocupados por su privacidad y seguridad, esto puede significar un riesgo inminente, pero como dijimos, es un error de configuración de nuestro GRUB y podemos corregirlo para que nadie pueda cambiar nuestra contraseña root de esta manera (Este cambio también puede realizarse con discos externos en un entorno chroot en discos que no estén cifrados). Para configurar de manera correcta nuestro GRUB, debemos realizar lo siguiente:

1) Creamos una contraseña que pueda ser reconocida por el GRUB, usando el comando #grub-mkpasswd-pbkdf2, escribimos la contraseña que deseemos y la confirmamos, si todo sale bien saldrá algo similar a lo que se muestra en la imagen:


2) Abrimos el archivo /etc/grub.d/40_custom con nuestro editor de texto favorito y añadimos las siguientes líneas en el final:

set superusers='user'
password_pbkdf2 'user' 'password'

Importante: El '$user' puede ser cualquiera, a tu gusto pero debes colocar el mismo user en los dos campos requeridos. En el campo password colocamos la contraseña generada en el paso anterior, esta comprende todo lo que aparece desde grub.pbkdf2.sha512.10000.* hasta el final. Las comillas no son necesarias.

3) Una vez que tengamos todo esto hecho, generamos un archivo de configuración de nuestro GRUB con los nuevos parámetros, utilizamos el comando grub-mkconfig -o /boot/grub/grub.cfg y esperamos a que finalize el proceso.

Una vez realizados estos pasos, cada vez que queramos iniciar nuestro sistema o modificar algún parametro en el GRUB al inicio, debemos proporcionar las credenciales asignadas anteriormente, solucionando de este modo el problema anteriormente mencionado. Si alguien desea ingresar sin las credenciales, sencillamente verá un error así:


Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.


jueves, 25 de enero de 2018

Hackeando una máquina tragamonedas.


Aveces para hackear algo o saltar la seguridad de algo no es necesario estar en un ordenador , o tener una linea de código cuando los programas son un patron de ordenes no infinito que tienen un comienzo y un final. De niños estas maquinitas nos robaban mucho dinero ya que las maquinitas son adictivas en ciertos aspectos con esto no trato de inducirlos al bandalismo pero cobrarselas de las maquinitas puede ser una venganza entretenida.
 
No todas funcionan igual, pero cada una debe tener un inicio y un fin donde retorna al inicio repetitivo y eso es lo que debemos identificar haciendo un cálculo mental, donde se estudiara a simple vista el comportamiento que tendrian esas máquinas (y decían que el cálculo o las matematicas no servian para nada). Hay que tener en cuenta muchas cosas y son identificar que clase de maquina es la que estudiaras, pero todas tienen la misma debilidad un inicio y un fin donde retorna y comienza el ciclo de nuevo.

Antes de hackearla debes estudiarla, por lo cual deberas invertir unas cuantas monedas para descubrir cual es el fin de esa maquina. Las máquinas tragamonedas utilizan lo que es un GNA.

¿Que es un GNA?

Es un generador de números aleatorios. Éste es un mecanismo situado dentro de la máquina traga-monedas que genera miles de números aleatorios por segundo (en sets de 3 o de 5 números, dependiendo de la cantidad de carretes) y en el momento exacto en el que el jugador activa un giro, el GNA genera una combinación de números que luego se convertirá en la que aparecerá en los carretes. Ésto significa que el resultado de cada giro es aleatorio. Por ejemplo: si un jugador abandona una máquina y un nuevo jugador se sienta en ella y gana el jugador previo podría sentirse mal por no haberse quedado en la máquina para realizar un último giro, pero lo que debemos entender es que para que el primer jugador ganara, debería haber presionado el botón en el segundo exacto si deseaba ganar durante ese mismo giro. Si hubiera jalado la palanca un segundo después, la combinación hubiera sido completamente diferente.

Maquinas de apuestas a numeros
 
Estas maquinitas tienen un sistema repetitivo con los numeros, los números que salen en las primeras vueltas se repiten en los intentos altos, tienen un límite de intentos de 25 como máximo de rotación de números, no todas funcionan igual así que lo mas recomendable es ir y observar el comportamiento de las maquinas , y así le podrás tirar mucho al numero que va a salir lo que debes tener en cuenta es:

· El número máximo y número mínimo. (Cuantos numeros tiene y cuantas vueltas da para caer en un número).

· Tener en cuenta la posición en que se detiene para hacer el calculo de cuantas vueltas da y deducir el proximo numero que va caer. (Es importante tener en cuenta el lugar donde está detenido y cuantos giros da para saber donde caerá).

· Tener en cuenta si se reducen la cantidad de giros.

En dado caso que sea como una ruleta, sea una forma plana, hay que tener en cuenta la cantidad de número que tiene y los saltos que da para caer en otro númer, por ejemplo, si del 1 a 50 la primera vuelta cae en 15, el proximo número puede que caiga de 15 en 15 o tenga variaciones de 8, es decir tenga 8 cambios de cálculo, por lo general no le ponen muchas variaciones para que se haga más complicado acerta.
Lo más recomendable es ir a hacer varios intento o tratar de tener el tope de intentos sin obviar ningún dato, para encontrar en final y el comienzo repetitivo.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

martes, 23 de enero de 2018

"OSINT". Herramientas de código abierto de inteligencia



La información no tiene que ser secreta para ser valiosa. Ya sea en los blogs que navegamos, en las transmisiones que vemos o en las revistas especializadas que leemos, hay un suministro interminable de información que contribuye a nuestra comprensión del mundo. La comunidad de inteligencia generalmente se refiere a esta información como inteligencia de código abierto (OSINT). También desempeña un papel esencial al brindar a la comunidad de seguridad nacional una perspectiva y un contexto completos a un costo relativamente bajo.

Se extrae de material disponible públicamente, que incluye:

  • Internet en general.
  • Medios de comunicación tradicionales (por ejemplo, televisión, radio, periódicos, revistas).
  • Revistas especializadas, actas de congresos y estudios.
  • Fotos.
  • Redes sociales.
  • Ubicación  geográfica.
Internet, por supuesto, ha revolucionado el entorno de código abierto. Esperamos que la tendencia continúe.

Una organización que invierte en código abierto hoy en día es similar a una persona que invirtió en Google en su primer año. OSINT siempre ha sido un componente integral en inteligencia, pero en cinco años, creo que la propuesta de valor solo puede aumentar. Una organización que aprecie el valor y el potencial de OSINT será la más efectiva en el futuro.

OSINT está sin clasificar y disponible, pero los motores de búsqueda de rastreo de enlaces como Google no siempre acceden a él. Al investigar varias fuentes en línea, podemos obtener más información acerca de lo que una compañía, individuo, grupo o país está haciendo, pero no siempre se encuentra fácilmente. El uso de OSINT ha crecido dentro del sector privado y ha sido un pilar de los servicios militares y de inteligencia durante todo el año.

En mundo del hacking se usan OSINT de diferentes formas, una de ellas es  buscando información por medio de phishing. Un ataque de phishing o suplantación de identidad podría estar dirigido, por ejemplo a un solo objetivo de negocios de alto perfil. Este grupo atacante tiene acceso a datos confidenciales de empleados, clientes, banca, cuentas de valores. Los atacantes se dirigen a este grupo con correos electrónicos y páginas web integradas con código malicioso. Cuando se abren los archivos adjuntos de correo electrónico o se hace clic en las páginas web, se activa el código. El código malicioso libera puertas traseras, acceso remoto o incorpora keyloggers; y en cuestión de horas o días, el atacante obtiene acceso.

Algunas herramientas de OSINT:


Casefile. Es el hermano menor de Maltego. Es esencialmente la misma aplicación de gráficos que Maltego sin la capacidad de ejecutar transformaciones. CaseFile le brinda la capacidad de agregar, vincular y analizar datos rápidamente. La aplicación se dirige a un mercado único de analistas 'fuera de línea' cuyas principales fuentes de información no se obtienen del lado de la inteligencia de código abierto o pueden consultarse programáticamente. Vemos a estas personas como investigadores y analistas que trabajan 'sobre el terreno', obtienen información de otras personas en el equipo y elaboran un mapa de información de su investigación.


Creepy. Ofrece recopilación de información de geolocalización a través de plataformas de redes sociales.


Dmitry "Herramienta de recopilación de información de Deepmagic". Es una aplicación de línea de comandos Linux de UNIX / (GNU) codificada en C. DMitry tiene la capacidad de recopilar tanta información como sea posible sobre un host. La funcionalidad básica es capaz de reunir posibles subdominios, direcciones de correo electrónico, información de tiempo de actividad, escaneo de puertos tcp, búsquedas de whois y más.

Jigsaw es un simple script de ruby ​​que busca en www.jigsaw.com los registros de los empleados y las direcciones de correo electrónico basándose en las entradas de los nombres y apellidos de su sitio web su equivalente en KaliLinux es Thehavester.


Maltego es una aplicación forense y buscador de datos. Es capaz de consultar varias fuentes de datos públicos y representar gráficamente las relaciones entre entidades, como personas, empresas, sitios web y documentos.
 

Metagoofil realizará una búsqueda en Google para identificar y descargar los documentos en el disco local y luego extraerá los metadatos con diferentes bibliotecas como Hachoir, PdfMiner? y otros. Con los resultados generará un informe con nombres de usuario, versiones de software y servidores o nombres de máquinas que ayudarán a los evaluadores de penetración en la fase de recopilación de información.


TheHarvester. Esta herramienta está destinada a ayudar a los evaluadores en las primeras etapas de la prueba de penetración a fin de comprender la huella del cliente en Internet. También es útil para cualquier persona que quiera saber qué puede ver un atacante sobre su organización.


Twofi. Al intentar descifrar contraseñas, las listas de palabras personalizadas son adiciones muy útiles a los diccionarios estándar. Usa Twitter para crear una lista de palabras para descifrar contraseñas con John the Ripper.



Urlcrazy. Genera y prueba los errores tipográficos y las variaciones de dominio para detectar y realizar la ocupación de los errores tipográficos, el secuestro de URL, el phishing y el espionaje corporativo.


GoLimero. Esta framerwork de código abierto realiza pruebas de seguridad. Actualmente está orientado a la seguridad web, pero se puede ampliar fácilmente a otros tipos de test. también recopila y unifica los resultados de herramientas conocidas: sqlmap, xsser, openvas, dnsrecon y la OSINT como theharvester.

 Les dejo una lista mas detallada de herramientas OSINT.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

Iniciando en el mundo del reversing.



Para iniciar, esta entrada no tendrá nada práctico, solo seran unos tips para comenzar con el reversing... muchos se preguntan si para comenzar, hay que saber programar o hay que ser muy bueno, pero la verdad todo depende de tu capacidad , la disciplina que tengas y las ganas de aprender,  la programación es necesaria pero si te gusta puedes empezar así e ir aprendiendo por el camino lo que necesitas de programacion , ya que muchos se ponen de obstáculos que no saben programar para lograr hacer reversing, la verdad esta es una rama muy buena en lo que es la informatica , se pueden lograr muchas cosa.

Si quieres iniciar, hay un curso llamado curso raton , es un curso muy básico que te da los principios para comenzar, tambien se pueden unir a la comunidad de crackslatinos donde hay cursos básicos y el maestro Ricardo Narvaja junto a otros colaboradores , suben manuales para aprender, tambien hacen videos tutoriales y demás para que aprendas o prodráas hacer el curso de malwareunicorn si te gusta, tienes muchas opciones para aprender.

Algo importante que debes hacer es plantearte metas pequeñas que quieres lograr en tu trayectoria y sobre todo tener un cuaderno de apunte, ya sea un blog público o un blog personal asi podrías ayudar a crecer de tu punto de vista a los usuarios que van llegando , tambien buscar diferentes formas de resolver el mismo problema no solo la planteada por alguien mas descubrir tu propio metodo para resolver los problemas.

Puedes comenzar con ollyDBG o con IDA pro, muchos dicen que IDA es un poco difícil para comenzar pero la estructura visual de IDA es muy comoda para los nuevos usuarios, además el curso de IDA está bastante completo asi que no sería un impedimento que sea más avanzado.

· Cosas que debes saber para comenzar.

Al comienzo lo más fácil seráa comenzar crackeando autenticaciones, saltarse login y todo eso es lo mas sencillo para comenzar hay muchos crackme sencillos que puedes usar para practicar. Pero antes que nada debes tener claro a que quieres llegar con el reversing y que es lo que quieres hacer exactamente, como por ejemplo  ser un malware research entre otras áreas que te puedes desenvolver usando la ingeniería inversa.

· ¿Que es ingeniería inversa?

Es la forma de obtener información o diseño de un programa con el fin de identificar cámo fue creado, cómo funciona, que hace, cuales son sus componentes y cual fue el proceso de creación.

· Herramientas que puedes usar.




IDA PRO -> es un desensamblador.*


*Desensamblador: software que traduce de lenguaje máquina a lenguaje ensamblador.

OllyDBG> Depurador.*

*Depurador: software que se usa para encontrar y eliminar los errores de un programa. Puede darse dversos usos a estas funcionalidades.

Esas son las herramientas que debes aprender a manejar al iniciarte en el mundo del reversing.


La imagen anterior es una estructura básica de un desamblado de IDA .

Así que si te gusta este mundo que es bastante interesante tienes bastante material explicado detalladamente para que aprendas  y con la dedicación suficiente podrás aprender en poco tiempo, no te pongas la piedra de que para eso hay que saber programar, es necesario pero lo puedes ir aprendiendo en el camino de aprendizaje y si ya sabes mucho mejor.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

viernes, 19 de enero de 2018

SecHackLabs: Hacking con Nmap - Técnicas basadas en el escaneo de puertos #1.


Anteriormente (Ver aquí y ver aquí) estudiamos cómo descubrir y ver el estado de los equipos que deseamos escanear dentro de una red usando diversas técnicas y órdenes desde la línea de comandos. Hoy veremos cómo poceder luego de tener identificada nuestra máquina o host al que deseamos realizarle un escaneo usando técnicas que se basan en el escaneo especifico de puertos.

· TCP SYN Scan (-sS)

Esta técnica también es conocida como SYN Stealth o Half-Open Scan. Es la técnica más popular y la utilizada por defecto, permitiendo el escaneo de miles de puertos por segundo en redes rápidas sin presencia de herramientas cortafuegos. Esta opción es relativamente sigilosa y rápida, ya que no finaliza las conexiones que abre, así como fiable al no depender, como otras técnicas avanzadas, de las particularidades de las diferentes implementaciones de la pila TCP/IP presentes en plataformas específicas. Permite por tanto una diferenciación clara entre el estado abierto, cerrado o filtrado de un puerto.

Este análisis es el utilizado por defecto, por lo que si lanzamos Nmap sin parámetros, y tenemos los permisos de administración necesarios para poder ejecutarlo, este será el análisis realizado.

Una adición muy útil es agregar la revisión de versiones para cada puerto abierto encontrado, combinándola con la opción -sV, para tratar de identificar el tipo y la versión de los servicios descubiertos.

Tras realizar un análisis con esta técnica, los puertos pueden encontrarse en tres estados: abiertos (si se ha recibido un paquete SYN/ACK como respuesta a la sonda enviada), cerrados (si se ha recibido un paquete RST como respuesta) o filtrados (si no se ha recibido nada o se recibe algún paquete de tipo ICMP Inalcanzable).

En la siguiente figura se muestra cómo esta técnica no negocia una conexión de forma completa. Por ejemplo, para el puerto abierto de ftp del objetivo, no se finaliza completamente el proceso habitual tree-way handshake (sólo SYN y SYN-ACK).



· TCP CONNECT SCAN (-sT)

Esta técnica se utiliza por defecto cuando no es posible la utilización de SYN Scan (-sS), cuando el usuario no tiene suficientes privilegios. Para su funcionamiento, usa las llamadas de alto nivel del sistema operativo para crear los paquetes (concretamente la llamada connect()) y para obtener la información de los intentos de conexión, al igual que cualquier otra aplicación.

Esta técnica es menos eficiente que SYN Scan porque Nmap no toma el control de los paquetes enviados, como hace en la mayoría de las otras técnicas, y en segundo lugar porque termina todas las conexiones, en lugar de hacer un half-open reset. Por este motivo, es menos sigilosa, siendo probable que un IDS/IPS registre los intentos de conexión.

Del mismo modo que en la técnica SYN Scan, según esta técnica los puertos pueden estar en tres estados: abierto, cerrado y filtrado. Las siguientes figuras muestran cómo esta técnica negocia una conexión de forma completa con aquellos puertos que han respondido. Por ejemplo, para el puerto abierto de SSH del objetivo, se muestra el proceso de establecimiento de conexión tree-way handshake (SYN, SYN-ACK, ACK).



· UDP SCAN (-sU)

No todos los servicios populares corren sobre TCP. Los ejemplos más comunes de servicios UDP son los protocolos DNS (puerto 53), SNMP (puertos 161 y 162) y DHCP (puertos 67 y 68). En ocasiones estos puertos son ignorados en los análisis y auditorías debido a que el escaneo UDP es en general más complejo y lento. Esto es un error, debido a que los servicios UDP pueden ser explotados por atacantes del mismo modo que los servicios TCP. Esta técnica puede ayudar al inventario de estos puertos, pudiéndose combinar al mismo tiempo con otras técnicas de escaneo TCP, como SYN scan (-sS).

Con esta técnica es posible obtener puertos en cuatro estados distintos: abierto (significa que se ha obtenido una respuesta del puerto analizado), cerrado (si se obtiene una respuesta de tipo ICMP Puerto Inalcanzable), filtrado (si se obtiene cualquier otro tipo de paquete ICMP inalcanzable) y abierto/filtrado, que indica que no se ha recibido ningún tipo de respuesta desde el puerto analizado, a pesar de haber lanzado varias retransmisiones.

Como se ha indicado anteriormente, el análisis del protocolo UDP es más complejo. El primer problema que encontramos es que es normal que los puertos UDP no respondan a paquetes que les llegan, ya que el protocolo no está orientado a conexión, y los programadores suelen utilizar en este caso estructuras personalizadas para comunicarse con los puertos UDP, que Nmap desconoce en muchos casos, no pudiendo generar paquetes que permitan obtener una respuesta.

Otro problema consiste en que hay máquinas (entre ellas algunas máquinas Linux y Solaris) que tienen definida una tasa máxima de respuestas ICMP Puerto Inalcanzable a generar (e.g. no generar más de 1 paquete de este tipo por segundo). Para evitar que el objetivo deseche paquetes que no pueda procesar, Nmap es capaz de detectar la tasa máxima de envío de este tipo de paquetes y adaptar su velocidad para que los resultados del análisis sean exactos. Esto puede hacer que sea necesario invertir demasiado tiempo en esta técnica si se realiza un análisis de todos los puertos disponibles.

Otro problema es el estado abierto/filtrado, que no asegura que un puerto esté abierto o cerrado. La única forma de identificar con relativa seguridad si está abierto o no un puerto UDP es utilizando -sUV para determinar la versión de lo que en el escucha. Al identificar un puerto con el estado abierto/filtrado, la opción -sV envía diferentes tipos de solicitudes UDP conocidas en busca de obtener una respuesta que permita identificar lo que en él escucha. Si ninguna de las solicitudes enviadas genera una respuesta se mantendrá el estado abierto/filtrado del puerto, en caso contrario, se tendrá un buen indicativo del tipo de aplicación y su versión. Cabe destacar que la utilización de este modificador en los análisis aumenta considerablemente su tiempo de ejecución, al tener que enviar a cada puerto analizado sondas adicionales para cada uno de los tipos de servicio reconocidos por Nmap.

Las siguientes figuras muestran cómo al enviar sondas a 5 puertos UDP, cuatro responden que no son alcanzables. Nmap considera que el otro que no ha respondido o bien ha sido filtrados o bien está abierto.



· IDLE SCAN (-sI)

Esta técnica avanzada explota una “vulnerabilidad” de muchas implementaciones de la pila TCP/IP, consistente en la posibilidad de predecir (simple incremento en peticiones consecutivas) el identificador de fragmento de los paquetes IP (IP ID). Con ello se permite extraer información mediante el análisis de las secuencias predecibles del identificador (IPID) de los paquetes IP. Ni su fundamento ni su funcionamiento son triviales, por lo que una descripción completa escapa al propósito de esta sección.

Básicamente esta técnica permite escanear un objetivo sin enviarle un solo paquete utilizando la propia dirección IP origen, por lo que se considera la técnica más avanzada y sigilosa de todas las presentes en Nmap. Para ello es necesario utilizar un tercer equipo, denominado zombie, cuya IP tomaremos para que aparezca como fuente de las sondas desde el punto de vista de la máquina objetivo.

En este caso, se pueden obtener dos estados de puertos distintos: abierto (si se detecta a través del zombie que ha existido respuesta), o cerrado/filtrado (si no se detecta respuesta a través del zombie, bien porque el objetivo no responde al zombie, o bien porque el objetivo responde con un paquete RST, que es ignorado por el zombie).

El uso de esta técnica es altamente controvertido, desde el momento en que ésta usa sin autorización los recursos de una máquina (zombie), que además se registraría falsamente por herramientas IDS/IPS como el origen de un proceso de escaneo de puertos. Para su correcto funcionamiento es necesario que la máquina zombie sea alcanzable y su implementación TCP/IP genere una secuencia de identificadores IP predecible. Debido a que esta técnica escanea un objetivo desde el punto de vista de una tercera máquina, es posible determinar de este modo las relaciones de confianza entre distintas máquinas. Para ello es posible indicar una lista de equipos zombie que pudieran ser de confianza del objetivo.

Para tratar de encontrar un zombie que cumpla con los requisitos, se puede escanear una subred utilizando los parámetros siguientes:

nmap -P0 -sN -n -v -p 80 --scanflags SYN,ACK <subred_objetivo>


Esta comando envía los mismos paquetes (TCP con SYN+ACK) que usa Idle Scan al inicio del proceso. Cualquier objetivo válido debería responder con un paquete RST y por tanto deberá aparecer el puerto 80 como no filtrado.

El flujo de mensajes de la siguiente figura se presenta la traza de mensajes observable desde el origen (172.16.28.65). Inicialmente el origen recoge información del IPID de la máquina zombie (172.16.28.124). Inmediatamente después inicia la fase de descubrimiento del objetivo, enviando paquetes al zombie con la dirección origen falsificada (la del objetivo: 172.16.28.51). Seguidamente con una sonda al zombie determina si el objetivo es o no alcanzable (analiza el IPID). Ahora comprueba nuevamente el IPID del zombie e inicia el escaneo del puerto TCP445 del objetivo enviando un paquete SYN con la dirección origen falsificada. Finalmente busca si se ha incrementado el IPID para determinar el estado del puerto 445, en este caso abierto.
El siguiente flujo de mensajes muestra la traza de mensajes observable desde el objetivo (172.16.28.51). Como se puede ver, todos los mensajes que recibe el objetivo aparentemente vienen de la máquina zombie (172.16.28.124). Para el objetivo es como si el zombie tratara de establecer una conexión por dos veces al puerto TCP445. A la vista de esta traza es imposible averiguar que es otra máquina la que está causando este flujo de mensajes.
 Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

lunes, 15 de enero de 2018

SecHackLabs - Descubrimiento de equipos con Nmap desde línea de comandos - #2.


Continuando esta serie, aquí estamos con la segunda parte del tema Métodos y técnicas de análisis con Nmap desde línea de comandos, la primera parte está aquí. Cómo anteriormente dijimos esta sección será un poco extensa ya que detallaremos cómo funciona cada una de las posibles opciones de nmap y que realiza cada una de ellas así cómo ventajas y desventajas.

· PING UDP (-PU<lista de puertos>)

El enfoque de esta técnica es opuesto a las anteriores, por el hecho de que se envía paquetes a puertos que se considera estarán cerrados en el objetivo (por defecto se utiliza el puerto 57145). Esto es así porque, al ser el protocolo UDP sin conexión, un paquete enviado a un puerto abierto puede no recibir respuesta, aunque haya algún servicio escuchando en el puerto al que se ha enviado la sonda. Por el contrario, si se utiliza un puerto cerrado, el objetivo debería devolver un paquete ICMP del tipo Puerto Inalcanzable, dejando constancia de su existencia.

Tanto la falta de respuesta como la recepción de otro tipo de ICMPs será indicativo de destino inalcanzable. La principal ventaja de este tipo de escaneo es su capacidad de traspasar herramientas cortafuegos que sólo filtren paquetes TCP.

Las siguientes figuras muestran cómo esta técnica envía un paquete UDP al puerto 57145, que se considera con altas posibilidades de estar cerrado. En efecto lo está y responde con un paquete RST descubriendo con ello al objetivo.




· PINGS ICMP (-PE, -PP, -PM)

La forma más extendida de realizar un descubrimiento de equipos es mediante la utilidad ping del sistema operativo, la cual envía paquetes ICMP Echo Request al destino y espera una respuesta ICMP Echo Reply. Nmap es capaz de imitar esta técnica mediante la opción -PE (Ping ICMP Echo). Dado que la mayoría de los filtros bloquean este tipo de paquetes, Nmap implementa dos técnicas más basadas en paquetes ICMP, que consisten en enviar paquetes de tipo ICMP Timestamp (-PP) y ICMP Addressmask (-PM), que deberían estar activos en todos los equipos que implementen el estándar RFC792 (la mayoría de los dispositivos existentes actualmente). Estas técnicas persiguen conseguir el descubrimiento de equipos en caso que únicamente se encuentren filtrados los paquetes ICMP Echo, y no se hayan tenido en cuenta otros tipos de paquetes ICMP en las reglas de bloqueo.




Allí se ha mostrado la operatoria de esta técnica: se envían seguidos los tres tipos de paquetes ICMP request al objetivo, recibiendo casualmente respuestas a las tres peticiones, anunciando con ello que la máquina es alcanzable.

· PING SCTP (-PY<listado de puertos>)

El protocolo SCTP pertenece a la capa de transporte, como TCP y UDP, inicialmente definido por el grupo SIGTRAN de IETF en el año 2000 para transportar señalización telefónica SS7 sobre IP, con la idea de dotar el protocolo IP de algunas de las características de confiabilidad de SS7, aunque su versatilidad le ha permitido expandirse en otras áreas.

Proporciona, como TCP, confiabilidad, control de flujo y secuenciación, aunque permite además el envío de mensajes fuera de orden, y es un protocolo orientado al mensaje. Otras características importantes son: capacidad de que los extremos de la conexión dispongan de más de una dirección IP (multihoming); capacidad para monitorizar y seleccionar caminos según las necesidades de la red; mecanismos de validación para evitar ataques y de notificación para evitar pérdidas o duplicados; así como multistream, o fragmentos independientes, que eliminan el Head-of-line blocking de TCP. Utiliza un handshake en cuatro fases (INIT, INIT-ACK, COOKIE-ECHO, COOKIE-ACK).

Este tipo de análisis envía sondas SCTP INIT al puerto 80 (se pueden definir otros puertos, pasándolos como parámetro), indicando que se quiere realizar una conexión SCTP con el objetivo. Si el equipo está levantado, responderá o bien con un paquete INIT-ACK (puerto abierto) o bien con un paquete ABORT (puerto cerrado). En cualquier otro caso se considerará el equipo como inactivo.



· IP PROTOCOL PING (-PO<listado protocolos>)

Una de las técnicas más novedosas para el descubrimiento de equipos consiste en el envío de paquetes con un protocolo concreto especificado en sus cabeceras. Por defecto, se envían sondas con los protocolos 1 (ICMP), 2 (IGMP) y 4 (Encapsulado IP), aunque se puede, del mismo modo que en otros casos, introducir un listado de protocolos a utilizar.

Para los protocolos ICMP, IGMP, TCP (protocolo 6) y UDP (protocolo 17), se envían paquetes con las cabeceras propias del protocolo, mientras que para el resto de protocolos, se envía un paquete IP sin contenido tras la cabecera IP. Este método espera respuestas utilizando el mismo protocolo, o paquetes ICMP del tipo Protocolo Inalcanzable, que indiquen que el equipo objetivo está vivo.



Se puede ver, como se indicaba anteriormente, que algunos de los paquetes enviados no están correctamente formados, ya que Nmap únicamente rellena las cabeceras de los mismos, sin introducir datos válidos en ellos.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

SecHackLabs: Linux Hardening - Instalando tu distribución Linux de manera segura.


El corazón de nuestro sistema GNU/Linux son el Kernel y el sistema operativo. Combinados, forman el la base de su sistema, en el cual todas las aplicaciones se ejecutarán. Hablando comparativamente el sistema GNU y el kernel Linux son razonablemente seguros. Un gran número de carácteristicas de seguridad están integradas en el kernel, herramientas relacionadas a la seguridad y otras carácteristicas vienen con la mayoría de distribuciones GNU/Linux o están disponibles en la red de manera open-source. Adicionalmente GNU/Linux ofrece un control excepcional sobre quien, cómo y cuales recursos y aplicaciones pueden ser accedidas por los usuarios. Entonces ¿donde están los riesgos?

Un viejo refrán dice "El diablo está en los detalles". La seguridad de su sistema depende de una amplia variedad de elementos de configuración tanto a nivel del sistema operativo como a nivel de aplicación. Además, el sistema operativo Linux y el kernel son complejos y no siempre es fácil de configurar. De hecho, los sistemas Linux son casi infinitamente configurables, y cambios de configuración sutiles pueden tener importantes implicaciones de seguridad. Por lo tanto, muchas expocisiones (de estar expuesto a ataques) de seguridad y vulnerabilidades no siempre son obvias de inmediato, y la falta de comprensión sobre el impacto global de los cambios en los elementos de configuración puede conducir a expocisiones inadvertidas.

Además la seguridad en sistemas GNU/Linux no es estática, una vez asegurado tu sistema, este no está perpetuamente protegido, a medida que usas tu sistema, la seguridad se va debilitando. Esto puede suceder debido a cambios operacionales o funcionales, así cómo el descubrimiento de nuevas vulnerabilidades y exploits en aplicaciones y paquetes.  Asegurar su sistema es algo continuo y viviente, muchos de los cambios que se aplicarán a lo largo de esta serie de publicaciones debes hacerce más de una vez (por ejemplo, luego de un cambio a nivel operacional, una reinstalación de componentes, etc) o ya sea de manera rutinaria para mantener el nivel de seguridad en su sistema.

Por defecto, la mayoría de distribuciones GNU/Linux vienen con un gran número de paquetes instalados, aplicaciones y configuraciones de manera predeterminada para ti. Esto depende del creador de la distribución y de la finalidad de la misma.

· Instalando tu distribución Linux de manera segura.


Esta serie de publicaciones no pretende centrarse en una distribución en especifico y las recomendaciones dadas a lo largo de la misma son apicables a la mayoría de sistemas GNU/Linux. Aquí no explicaremos el proceso de instalación de ninguna distribución es especifico y se dará consejos generalizados para la instalación de tu distribución, sea cual sea tu elección. Este proceso es una de las claves del proceso de hardening, la clave de la seguridad de la tecnología de la información (IT) es la minimización de sus riesgos. Las instalaciones por defecto de la mayoría de distribuciones hacen lo contrario.

Tips Generales.

* Habilite SHA1, shadow o cualquier otro método o algoritmo que ayude a mantener sus contraseñas relativamente más seguras.

* Cuando se te pida la contraseña del usuario root introduzca una contraseña robusta, el usuario root tiene permisos para hacer todo en el sistema. Aquí dejo un link sobre cómo crear contraseñas seguras.

* Cree un usuario diferente de root con los permisos adecuados y estrictamente necesarios, de este modo se evita estar conectado siempre cómo root y además de que todo lo que se ejecute se haga con privilegios root.

* Si durante la instalación es preguntado, instale un firewall de los propuestos allí, si te proponen opciones de control para el firewall, elija aquella que permita el mínimo número de conexiones. Solamente habilite conexiones explicitas cuando esté completamente seguro de que las necesita. Recuerde que generalmente cualquier firewall instalado y configurado durante la instalación, no es adecuado para propositos de producción.
Instala solo lo que necesites.

Cómo hemos dicho, el minimalismo es importante. Si su distribución te da la posibilidad de elegir una mínima o personalizada cantidad de paquetes durante la instalación, entonces elija esa. De hecho, recomendamos que solo instale el sistema base y deje todo lo demás sin instalar.
Nosotros no te podemos dar un número detallado de paquetes que no deben ser instalados, pero muchos de ellos basta con el uso del sentido común para saber que no se necesitan. ¿Realmente necesita usted tener metasploit o aircrack-ng en un servidor web con Apache?, con ese tipo de preguntas fácilmente puedes identificar que tipos de los paquetes que vienen preinstalados son candidatos para remover.

Varias de las áreas que recomendamos revisar para remover paquetes innecesarios son:

· Juegos.
· Servidores de red.
· Demonios y servicios (Esto incluye scripts de autoarranque).
· Bases de datos.
· Herramientas Web.
· Editores.
· Paquetes relacionados con multimedia (Reproductores, quemadores de CD, etc)
· Herramientas de desarrollo y compiladores.
· Herramientas de impresión.
· Herramientas de Office.
· Herramientas de manejo de documentos.
· Entornos de escritorio y todo lo relacionado con X-Windows.

Una de las recomendaciones más importantes durante la instalación, es el elegir no instalar paquetes relacionados con X-Windows o entornos de escritorio. Además, sistemas Linux de producción (Servidores {web, email, FTP, firewall, etc}) no necesitan X-Windows para realizar sus funciones. X-Windows es una inmensa cantidad de paquetes que contiene numerosos componentes y una larga historia de vulnerabilidades que lo convierten en un componente potencialmente peligroso. Adicionalmente, Linux al contrario de Windows, no necesita entornos de escritorio o GUI's (Graphical User Interface) para funcionar, nada de lo que hagas desde un entorno de escritorio no se puede hacer desde la línea de comandos.

Precaución: No instale su distribución mientras está conectado a internet o conectado a una red que está conectada a internet.

Puede parecer una buena idea estar conectado a internet cuando usted va a obtener actualizaciones, parches de seguridad o registrar su sistema. ¿Pero en realidad lo es? Probablemete tu CD/USB/DVD de instalación esté descatualizado, un número de vulnerabilidades y fallos desde entonces han sido descubiertos. Esto significa que su sistema está potencialmente expuesto a un gran número de ataques, entonces, hasta que usted descargue todos los parches y actualizaciones, su sistema es vulnerable. Mientras usted está ocupado esperando que su sistema descargue los requeridos parches y actualizaciones y los aplique, un atacante tiene el potencial de identificar su sistema desprotegido y vulnerar este usando una vulnerabilidad que aún no ha sido parchada.

Para reducir los riesgos de conectar un sistema desprotegido a internet, te recomendamos estar offline o desconectado de internet hasta que usted haya parchado y aplicado las correspondientes actualizaciones y parches de seguridad. Para realizar esto, recomendamos descargar primero todas las actualizaciones y parches en otro sistema primero y comparar las sumas MD5 o MD5 checksums de los paquetes descargados contra los publicados por el creador del sistema en su sitio oficial, además de validar su clave GPG.

Una recomendación muy práctica de nuestra parte es que configures una máquina central de "Actualizaciones y Parches" y descargues y verifiques todos los paquetes en ella antes de instalarlos en su sistema de producción. También puede utilizar dicha máquina para probar nuevas versiones o actualizaciones antes de hacerlo con sus sistemas de producción. Para una nueva instalación, usted puede empaquetar y grabar las actualizaciones en un CD y cargarlas directamente en el sistema que va a ser actualizado o parchado.

Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

domingo, 14 de enero de 2018

SecHackLabs: Contenido de Linux hardening.


Anteriormente habiamos iniciado con una serie de publicaciones sobre Linux Hardening, las cuales por motivos de tiempo habian quedado pausadas. Ahora hemos decidido continuarlas y para hacer que todo sea más fácil para nuestros lectores, en este post se estará actualizando cada una de las entregas que hagamos en Linux Hardening, al igual que lo estamos haciendo con la serie "Hacking con Nmap."

Propósitos de Linux Hardening.

1. Los propósitos de esta serie de publicaciones se basan en algunos principios subyacentes que son cruciales para mantener su seguridad.

• Sea minimalista y minimice el riesgo.
• Defensa en profundidad.
• Vigilancia.

Una comprensión de estos principios, en combinación con los ejemplos y un poco de sentido común, puede ayudarlo a mitigar el riesgo de un ataque a sus equipos. 

Sea minimalista y minimice el riesgo.

El primer principio, el del minimalismo, también se puede expresar con el acrónimo KISS o Keep It Simple Stupid (Mantén esto simple estúpido). La forma más segura de reducir los riesgos para sus hosts es no introducir riesgos en primer lugar. Por ejemplo, muchas distribuciones instalan servicios, herramientas, aplicaciones y funciones que podría representar un riesgo para su equipo. En algunos casos estas activan e inician servicios automaticamente. También crean usuarios para estos servicios y aplicaciones que a menudo no son necesarios o podrían ser utilizados por un atacante para comprometer su equipo. El primer paso para minimizar el riesgo para sus equipos es eliminar este excesivo e innecesario material. El segundo paso es asegurarte de que estés controlando lo que está instalado e instalará en sus equipos. No instale más de lo que necesita, no ejecute servicios o funciones que no necesita, y no tenga usuarios que no necesita.

Esto es algo que tienes que hacer desde cero con la instalación de un nuevo host hardened o si desea hacer hardening a un host existente. Obviamente, minimizando la funcionalidad de un sistema existente es más difícil. Debe asegurarse de estar completamente al tanto de que todas las funciones que se necesiten funcionen y asegúrarse de no desactivar o eliminar algo que se requiere en ese equipo para proporcionar la funcionalidad requerida. Endurecer un equipo de producción requiere pruebas exhaustivas y recomiendamos que continúe solo si tiene la capacidad de anular cualquier cambio y revertir a su configuración original en caso de que un cambio de seguridad tenga un efecto adverso. 

Defensa en profundidad.

El segundo principio de buena seguridad es la defensa en profundidad. En su forma más básica, la defensa en profundidad significa tomar un enfoque en capas para defender a sus equipos. El concepto de defensa en profundidad propone el uso de capas de tecnología, políticas y procesos para proteger sus sistemas. Esto significa que, siempre que sea posible en su entorno, no confíe en una sola capa para la defensa de tus equipos.

Podemos tomar de ejemplo su conectividad a Internet. Solo instalando un firewall entre su red interna e Internet no es suficiente. Además de un firewall entre su red e Internet, debe proteger sus hosts internos individuales, instalar un sistema IDS de algún tipo, realizar pruebas de penetración regulares y escaneo de vulnerabilidad de su equipo. Debe aplicar este principio a todos los componentes de seguridad de su equipo.

Vigilancia.

Una de las mayores amenazas para su seguridad es simplemente no hacer nada. No importa cuán seguros estén sus equipos en este momento, ellos, a diferentes velocidades, se volverán menos seguros con el paso del tiempo. Esto es una consecuencia de la entropía simple, como cambios en sus aplicaciones, entorno y requisitos que alteran la configuración y el potencial de sus sistemas. También es una consecuencia de la naturaleza cambiante de las amenazas en su contra. Lo que te has protegido ahora puede no ser lo que necesita para protegerse en el futuro. Esto es más obviamente manifestado como nuevas vulnerabilidades y exploits de esas vulnerabilidades que se descubren en los sistemas operativos, aplicaciones y herramientas que tiene en ejecución.

Debe asegurarse de incluir administración de seguridad y monitoreo como parte de sus actividades regulares de administración de sistemas. Verifique sus registros, audite a sus usuarios y grupos, y supervisa tus archivos y objetos en busca de actividad sospechosa. Conozca las rutinas y la configuración de sus hosts; cuanto más comprenda sobre los ritmos normales de sus equipos, más fácil será detectar anomalías que podrían indicar que estás bajo ataque o que has sido vulnerado.

También debe asegurarse de estar al día con vulnerabilidades, amenazas y exploits. A lo largo de estas publicaciones hablaremos sobre algunas de las fuentes de información que puede utilizar para hacer esto. Deberías suscribirte o revisar la información relacionada con la seguridad que distribuyen sus proveedores, así como aquellos disponible de fuentes de terceros como SANS o CIS.

Finalmente, realice pruebas de vigilancia. Y prueba de nuevo. Realice evaluaciones regulares de seguridad de su equipo y entorno. Buscar vulnerabilidades utilizando herramientas como Nessus, metasploit, nmap o herramientas comerciales. Considere el uso de terceras partes para realizar la prueba de penetración de su entorno y equipos. La garantía de seguridad continua es vital para asegurarse de que se mantente protegido y endurecido contra ataques.


Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

* Contenido de Linux Hardening.

viernes, 12 de enero de 2018

SecHackLabs: Descubrimiento de equipos con Nmap desde línea de comandos. - #1


En esta sección se muestran los métodos y técnicas de análisis que tiene Nmap, su descripción y funcionamiento, y ejemplos de uso y los paquetes intercambiados. Tras esto, se muestran algunos detalles a tener en cuenta a la hora de planificar y realizar un análisis rápido y efectivo a una red, y el modo en que estos detalles se pueden definir en Nmap.

Harémos énfasis en la duración de esta sección a lo largo de esta serie de post, ya que será en esta sección donde ser verá todas las posibles opciones que podemos añadir a NMap, así mismo se detallará cada una de ellas y se dará ejemplos junto a demostraciones gráficas y análisis de paquetes con el uso de Wireshark.

La sintaxis de Nmap es la siguiente:

nmap [Tipo(s) de análisis] [Opciones] [Objetivos]

Los tipos de análisis y las opciones generalmente comienzan con un guión ("-") a diferencia de los objetivos del análisis. Estos objetivos se pueden definir como direcciones IP, intervalos de direcciones, rangos CIDR o nombres de dominio (estos últimos también aceptan notación CIDR). De este modo, son válidos los objetivos 192.168.10.10, 172.16.128-130.0-255, 10.0.0.0/16 y scanme.nmap.org/28.

TÉCNICAS DESCUBRIMIENTO DE EQUIPOS.

En esta fase, la primera que realiza Nmap, se examina el conjunto de equipos que se ha pasado a Nmap para evaluar aquellos que están activos, y por tanto van a pasar a ser analizados. Existen varios métodos, descritos a continuación, que permiten realizar esta función.

1. NO PING (-Pn)

Esta opción evita completamente que Nmap realice la fase de Descubrimiento de Equipos. Es útil si se desea que todos los objetivos especificados sean considerados como activos, y de este modo se realice un escaneo de puertos en todos ellos, sin excepción.

El uso de esta opción puede tener una notable incidencia negativa en el rendimiento de un escaneo a gran escala, puesto que un escaneo de puertos contra una máquina inalcanzable consumirá mucho más tiempo, debido que vencerán todos los temporizadores de las respuestas esperadas a cada sonda enviada. Por otra parte, esta opción puede ser de utilidad si en la red analizada se bloquea, al menos en parte, el tráfico ICMP, que es el utilizado por defecto en la fase de descubrimiento de equipos. En versiones anteriores de Nmap, esta opción se activaba con los modificadores -P0 o -PN.

2. LIST SCAN (-sL)

Esta opción únicamente lista los objetivos dados como argumentos, sin enviar paquete alguno a éstos. Por defecto, Nmap realiza una resolución DNS inversa de los equipos a analizar, así que si se selecciona este método, los paquetes relacionados con esta resolución serán los únicos que se enviarán. Esta es una opción especialmente sigilosa (no intrusiva) con la cual obtener información potencialmente valiosa, y que puede servir también para comprobar que no se va a analizar ningún activo fuera de nuestro alcance.

La siguiente figura muestra el resultado textual de la invocación del comando.



3. NO PORT SCAN (-sn)

También conocida como Ping Scan o Ping Sweep. Esta opción, cuando se indica de forma explícita, instruye a Nmap para que no realice un análisis de los puertos tras completar una fase estándar de descubrimiento de los equipos activos dentro del listado de equipos a analizar, a excepción de los análisis de scripts (--script) o de rutas (--traceroute), si se indican de forma explicita. Si no se indica ninguna opción de descubrimiento de equipos, Nmap realiza por defecto las comprobaciones que se indican a continuación para tratar de descubrir los equipos que están activos y los que no, antes de iniciar la siguiente fase de análisis de puertos, para que esta sea más rápida.

Esta técnica es sensiblemente intrusiva ya que envía varias sondas a los objetivos, a diferencia del List Scan donde no se envía ninguna sonda a los objetivos, y suele utilizarse con el mismo fin. Permite realizar un reconocimiento ligero de la red objetivo de forma notablemente sigilosa. Esta técnica es igualmente útil para administradores que deseen de manera sencilla contabilizar  el número de máquinas activas en su red, o monitorizar la disponibilidad de sus servidores.

Si se ejecuta sin privilegios de administración, Nmap utiliza las llamadas al sistema connect para conectarse a los puertos 80 y 443 de los objetivos. En cambio, si el usuario tiene permisos administrativos se envía por defecto un paquete TCP ACK al puerto 80 (-PA), un TCP SYN (-PS) al 443 además de un paquete ICMP Echo Request y un ICMP Timestamp Request, salvo cuando el usuario especifica otros parámetros, en cuyo caso este sirve únicamente para indicar que no se debe continuar con la fase de análisis de puertos. Si el objetivo es local a la propia subred, se utilizará únicamente paquetes ARP (-PR).

En versiones anteriores de Nmap, esta técnica se activaba con el modificador -sP. En la siguiente figura se muestra como Nmap descubre dos objetivos de forma totalmente distinta. El primero, al encontrarse en la misma subred que el origen es descubierto mediante una Ping ARP. Al segundo objetivo se le envían dos sondas, un paquete ICMP Echo Request y un Ping ACK, respondiendo solamente a la primera.


** Sin root **


** Cómo root **


En las figuras anteriores se puede comprobar la diferencia entre ejecutar el mismo comando en un equipo sobre el que se tienen privilegios de administración y en otro sobre el que no se tienen permisos. En el segundo caso, se utilizan únicamente llamadas al sistema, por lo que siempre se realizan conexiones completas, a diferencia de en el equipo donde si se tienen privilegios.

4. PING ARP (-PR)

Uno de los escenarios en los que con más frecuencia se usa Nmap es para escanear redes locales Ethernet. Estas redes suelen tener muchos host inactivos, por lo que el proceso de escaneo basado en paquetes IP (ICMP echo request), que implica una resolución ARP anterior en cada caso, es notablemente lento, debido a los retardos introducidos por el sistema operativo en el envío de paquetes y al tamaño limitado de la cache ARP.

Esta técnica utiliza un algoritmo optimizado para realizar peticiones ARP, superando así las limitaciones de los sistemas operativos, que no están diseñados para hacer peticiones masivas. Debido a su especial fiabilidad y rapidez, no es necesario realizar pings IP si se recibe respuesta ARP para conocer si un equipo es alcanzable.

Esta técnica se utiliza por defecto cuando Nmap detecta que los equipos a analizar pertenecen a su misma red local, aunque no se especifique de forma explicita. Si se quiere evitar que se realice esta comprobación, se debe añadir el parámetro -send-ip, que evita que Nmap tome control del análisis ARP y únicamente envíe paquetes de tipo IP.

Las siguientes figuras muestran cómo el origen envía un ARP Request a la dirección de broadcast y el objetivo se descubre a sí mismo respondiendo con un ARP Response. Finalmente obtiene información adicional con una consulta al DNS inverso.




5. PING TCP SYN (-PS<listado de puertos>)

Esta técnica, si no se añade ningún puerto, envía al objetivo un paquete TCP vacío con el flag SYN activado al puerto 80. Se puede indicar un listado de puertos sobre los que realizar este análisis, separándolos por comas o introduciendo intervalos separados por un guión (p.ej. -PS22-25,80,443,8080).

El flag SYN indica al destino el deseo de establecer una conexión TCP por el origen. En este punto no interesa saber si el puerto analizado está abierto o cerrado, por lo que si Nmap recibe una respuesta de cualquier tipo del destino (ya sea un paquete RST indicando que el puerto está cerrado, o un paquete SYN/ACK indicando que se continua con el inicio de sesión TCP), NMap sabrá que el objetivo es alcanzable. Si por el contrario expira el temporizador, el destino se marcará como inalcanzable.

Si el usuario no tiene privilegios, se utiliza de forma automática una alternativa que consiste en enviar una solicitud de conexión TCP a través del sistema operativo (se utiliza la llamada del sistema connect). Del mismo modo que para un usuario privilegiado, si se recibe respuesta del objetivo, se sabe que este es alcanzable.

Este comportamiento, el uso de la llamada del sistema connect, también se utilizaba en versiones anteriores de Nmap para el análisis de redes IPv6, donde se utilizaban las funcionalidades proporcionadas por el sistema operativo. En la versión 6 se ha añadido la funcionalidad de generación de paquetes IPv6 en Nmap, por lo que se eliminan las restricciones de generación de paquetes impuestas por el sistema operativo para realizar análisis.

La eficacia de esta técnica es limitada, dado que muchos cortafuegos bloquean los paquetes SYN como medida preventiva para evitar el establecimiento de una conexión. En este caso la efectividad puede aumentar si se usa la técnica de Ping TCP ACK, descrita a continuación.




A continuación le añadiremos 3 puertos a la opción -PS de NMap y veremos cómo envia paquete a los 3, pero a la primera respuesta, finaliza el escaneo ya que el host es alcanzable.



6. PING TCP ACK (-PA<listado de puertos>)

El funcionamiento de esta técnica es idéntica a la de Ping TCP SYN, con la excepción de que ésta envía un paquete TCP al puerto 80 con el flag ACK activado. También se pueden añadir más puertos, indicando a continuación el listado de puertos sobre los que realizar este análisis, con el mismo formato que en casos anteriores.

Cuando un equipo recibe este tipo de paquetes sin existir previamente una conexión establecida, en principio deben responder con un paquete RST revelando de este modo su presencia. Esta técnica complementa la anterior al aumentar las posibilidades de traspasar filtros intermedios, como herramientas cortafuegos sin estado, debido a que muchos administradores configuran solamente reglas para interceptar paquetes entrantes SYN y no ACK. Los cortafuegos con estado suelen interceptar con éxito los paquetes inesperados, como el enviado con esta técnica, debido a que no se corresponde con ninguna sesión registrada previamente por un paquete SYN entrante. Una solución eficaz es combinar esta técnica con la anterior para que ambas sondas, SYN y ACK, sean enviadas.

En la siguiente figura se puede comprobar cómo esta técnica envía un TCP ACK al puerto 80 del objetivo como si tratara de asentir la recepción de un hipotético paquete enviado durante una conexión establecida. El objetivo niega que haya habido conexión alguna enviando un paquete RST, revelando con ello su presencia.



Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.