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

miércoles, 2 de junio de 2021

CYBERDELINCUENTES APROVECHAN VULNERABILIDAD DÍA CERO EN POPULAR PLUGIN DE WORDPRESS.


 Un grupo de cyberdelincuentes escanea internet  en busca de sitios web que ejecuten el plugin Fancy Product Designer con el fin de explotar una vulnerabilidad día cero que permite cargar malware en el sitio web objetivo. Este es un plugin de configuración visual de productos para sitios web en plataformas como WordPressWooCommerce y Shopify, que permiten a los clientes personalizar productos empleando diversos gráficos y contenido.


El término de vulnerabilidad día cero se refiere a una falla o agujero de seguridad en una pieza de software, hardware o firmware que todavia no ha sido corregida y en la mayoría de los casos es revelada públicamente; en ocasiones esto involucra la explotación activa de estos errores.


La vulnerabilidad, identificada por el especialista Charles Sweethill, es un error de ejecución remota de código (RCE) y es considerada critica: "La version de WordPress es la que se usa en instalaciones de WooCommerce y es vulnerable" menciona el reporte. Cuando se trata de la version de Shopify del complemento, hay probabilidad de que los ataques se bloqueen, dado que Shopify utiliza controles de acceso mas estrictos para los sitios alojados y que se ejecutan en su plataforma.

Un actor de amenazas que haya explotado la vulnerabilidad podría esquivar las comprobaciones de seguridad integradas para limitar la carga de archivos maliciosos, lo que les permitiría implementar archivos PHP ejecutables en los sitios web que usan Fancy Product Designer para tomar el control total de los sistemas vulnerables.

La falla ha sido explotada en escenarios reales, por lo que el reporte no incluye información detallada sobre el método de explotación de esta vulnerabilidad. Aunque solo se conocen un pequeño numero de ataques exitosos, los expertos piden no bajar la guardia ante potenciales campañas de explotación masiva.

Dado que la vulnerabilidad esta bajo explotación activa y se califico como de gravedad critica, se recomienda a los clientes inhabilitar el plugin hasta el lanzamiento de una versión corregida.


No olvides que puedes seguirnos en Facebook y Twitter, y si quieres charlar e intercambiar ideas con otros hacklabbers, está el Foro y Discord. ¡Esperamos verte allí!

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.