Bits, Bytes y Esquemas de Numeración

Body

En las computadoras, las cosas son blancas o negras, todo es 1 o 0. Las computadoras utilizan un lenguaje llamado binario. En binario existen únicamente dos posibles resultados: un 1 o un 0. Cada 1 o 0 es llamado un bit. En términos matemáticos, binario es clasificado como un sistema de numeración base 2. En comparación, todos nosotros utilizamos un sistema de numeración base 10 conocido como decimal. Decimal utiliza los números desde el 0 al 9. Para acelerar las cosas, las computadoras trabajan con grandes colecciones de bits. Estas colecciones de datos son llamadas bytes. Un byte esta constituido de 8 bits, lo cual se visualiza de manera similar a 01101001.

¿Cómo los bytes se relacionan con letras y números?. Cada letra, número, espacio, y carácter especial es representado por un único byte. Por ejemplo, utilizando el conjunto de caracteres ASCII , 01000001 representa la letra “A”, mientras 01100001 representa la letra “a”

Para asimilar mejor este concepto, se procede a crear un archivo de texto de nombre “quijote.txt”, y luego se utiliza la herramienta “xxd” para visualizar su contenido en binario.

Hexadecimal

Hexadecimal es un sistema base 16, la cual es una forma adecuada para expresar números binarios. Hexadecimal se expresa utilizado números desde el 0 hasta el 9 y letras desde la A hasta la F. La letra “M” se expresa como “4D” en hexadecimal. La letra “a” se expresa como “61” en hexadecimal. Frecuentemente se verá un número hexadecimal expresado con el prefijo “0x”. Este prefijo o el sufijo “h” se utiliza para designar o identificar un número hexadecimal o base 16.

Se utiliza nuevamente la herramienta “xxd” para visualizar en hexadecimal el contenido del archivo “quijote.txt”. Se puede percibir la frecuencia de “20”, él cual es la representación hexadecimal del espacio.

Binario a Texto

¿Entonces como estos 1 y 0 se convierten en A y B?. Las computadoras utilizan esquemas de codificación para convertir binarios en algo lo cual los seres humanos puedan leer. Existen dos esquemas de numeración necesarios a conocer, ASCII y Unicode. ASCII (American Standart Code for Information Interchange), es el esquema de codificación utilizado para el lenguaje inglés. ASCII define 128 caracteres, de los cuales únicamente 94 son imprimibles. El resto son caracteres de control. En contraste, Unicode está hecho para representar todos los lenguajes del mundo y está constituido de miles de caracteres.

¿Porque es relevante esto para el forense digital?. En muchas instancias, los analistas forenses deben buscar datos a nivel de bits o bytes para encontrar, extraer o interpretar evidencia. Esto es más evidente en un proceso llamado “file carving” o reconstrucción de archivos. La reconstrucción de archivos se realiza ubicando y minando archivos desde un conjunto de datos amorfo, como el espacio sin asignar (también conocido como espacio libre). El primer paso para el proceso de la reconstrucción de archivos es identificar un potencial archivo. Normalmente un archivo se identifica por la cabecera, si tiene una. Una vez el “pie” es encontrado, el archivo puede ser extraído a través de una simple acción de copiar y pegar todo lo contenido entre la cabecera y el pie. Un archivo fragmentado es de hecho más difícil de recuperar. El tener la habilidad de interpretar binarios y hexadecimales hacen posible la reconstrucción de archivos.

Fuentes:

https://en.wikipedia.org/wiki/Binary_number
https://en.wikipedia.org/wiki/Hexadecimal
http://www.asciitable.com/
https://unicode-table.com/en/

OWASP Mutillidae II

Body

OWASP Mutillidae II es una aplicación web libre, open source, deliberadamente vulnerable, la cual proporciona un objetivo para entusiastas en seguridad web. Mutillidae puede ser instalado sobre Linux y Window utilizando LAMP, WAMP, y XAMMP. Incluye docenas de vulnerabilidades y sugerencias para ayudar al usuario. Es un entorno para hacking web fácil de utilizar, diseñado para laboratorios, entusiastas de seguridad, salones de clase, CTF, y herramientas para la evaluación de vulnerabilidades. Mutillidae ha sido utilizado en cursos de seguridad, cursos de entrenamiento para empresas, y como objetivo para evaluar diverso software de seguridad.

Mutillidae proporciona un completo entorno para el OWASP TOP 10 del 2013

Mutillidae tiene los siguientes niveles de seguridad; 0: Hack Away, 1: Try Slighty Harder, 5: Good Luck. El nivel de seguridad 1 habilita validación JavaScript para muchas páginas. El nivel 5 añade controles adicionales como tokens fuertes.

El nivel por defecto es el 0. Y se puede cambiar el nivel de seguridad presionando el botón de nombre “Toggle Security”.

Existen tres niveles de sugerencias disponibles: Nivel 0: I try Harder, Nivel 1: Scr1pt K1dd1e y Nivel 2: Noob. El nivel 1 de sugerencias proporciona ejemplos y guías en la dirección correcta.

El ajuste por defecto de sugerencia en Mutillidae es 0 (“I try Harder”). Aunque también se puede seleccionar 1 (“Scr1pt K1dd1e”), o 2 (“Noob”). Se puede cambiar el nivel de sugerencia presionando el botón de nombre “Hints”.

Las sugerencias de Nivel 2 proporcionan un tutorial paso a paso para completar la tarea. Las sugerencias de este nivel no están disponibles para todos los módulos.

Las burbujas de sugerencias también están disponibles por separado. Señalan código dinámico, funciones vulnerables, etc. Y puede ser deshabilitadas presionando el botón “Hide Popup Hints”.

El presionar el botón de nombre “Reset DB” limpiará la base de datos y se empieza sobre algo fresco. Esto es muy útil para limpiar intentos antiguos, los cuales pueden obstaculizar la nueva manera de hacer “hacking”.

Fuentes:

https://sourceforge.net/projects/mutillidae/
https://www.owasp.org/index.php/Top_10_2013-Top_10

OAuth

Body

OAuth fue construido para resolver el problema de conexión para aplicaciones de terceros hacia proveedores de servicios en nuestros nombre, pero sin dar nuestras credenciales hacia el proveedor del servicio. OAuth es utilizado mucho en aplicaciones móviles y aplicaciones de escritorio, pero también es utilizado en aplicaciones. OAuth realmente no autentica usuarios, delega el acceso hacia terceros. Esta diseñado para evitar proporcionar la contraseña a terceros. Siendo frecuentemente utilizado por clientes de medios sociales para acceder hacia Twitter, Facebook, etc.

Existen tres partes en la transacción OAuth, el usuario, el consumidor, y el proveedor del servicio.

¿Cómo funciona OAuth?

“Juan” requiere utilizar un aplicación ficticia en Twitter de nombre “TweetRuta” para publicar en Twitter. Él utiliza la aplicación “TweetRuta” y le indica requiere interactué en su nombre con Twitter.

“TweetRuta” consulta a Twitter por un token de petición. Twitter devuelve un token de petición y un secreto para sea utilizado por “TweetRuta”. “TweetRuta” utiliza este secreto para registrar cada petición enviada hacia Twitter, de tal manera Twitter pueda verificar la validez de la petición, y esta no ha sido falsificada por alguien mas.

“TweetRuta” envía un token de petición hacia “Juan” indicándole lo lleve a Twitter y apruebe el acceso para “TweetRuta”. “TweetRuta” luego redirecciona a “Juan” hacia Twitter para aprobar el acceso.

“Juan” le indica a Twitter el requerimiento de aprobar el acceso para “TweetRuta”. Twitter confirma “Juan” requiere “TweetRuta” realice diversa cantidad de acciones en su nombre. Cuando “Juan” confirma la autorización para acceder a su cuenta, Twitter le indica a “Juan” la necesidad de informar a “TweetRuta” de su posibilidad de utilizar el token de petición.

“Juan le indica a “TweetRuta” el token de petición está listo.

“TweetRuta” luego consulta a Twitter para cambiar el token de petición por un token de acceso. Twitter verifica para asegurarse el token de petición ha sido autorizado por “Juan”. Si es así, Twitter devuelve un token de acceso y un secreto para “TweetRuta” lo utilice cuando publique en el Twitter de “Juan”.

“TweetRuta” envía luego una petición hacia Twitter para publicar en la cuenta de “Juan”, enviando el token de acceso y registrándose con el secreto. Twitter verifica la firma sobre el token de acceso sea valida y publica los datos solicitados en el Twitter de “Juan”.

OAuth 1.0

OAuth 1.0 depende de la integridad de una llave secreta para asegurarse el mensaje no ha sido falsificado. No hay requerimientos para encriptar el transporte, además los tokens no expiran. Así el proteger la llave secreta es la principal prioridad.

OAuth 2.0

OAuth 2.0 añade expiración de token y requiere una comunicación SSL para proteger el token. Incluso si un token es interceptado, tendría un lapso limitado de vida antes de ser automáticamente reemplazado. Sin embargo, el proceso de renovación debe ser implementado adecuadamente o la seguridad de esta versión se caerá a pedazos.

Desde la perspectiva del atacante, así como la autenticación basada en formularios, los desarrolladores son los responsables de implementar adecuadamente la seguridad con un despliegue OAuth. Malas configuraciones, implementación pobre, y fuga de información, podrían dar información valiosa en las pruebas de pentración.

Fuentes:

https://oauth.net/
https://oauth.net/2/

FuzzDB

Body

FuzzDB fue creado para incrementar la probabilidad de causar e identificar condiciones de seguridad interesantes a través de la aplicación dinámica de pruebas en seguridad. Es el primer y más completo diccionario abierto sobre patrones de inyección, localizaciones predecibles de recursos, y expresiones regulares para corresponder a respuestas de servidores.

Patrones de Ataque

FuzzDB contiene listas completas de primitivas de cargas para pruebas de inyección. Estos patrones, categorizados por ataque y tipo de plataforma apropiada, son conocidos de causar problemas como inyección de comandos al SO, listados de directorios, recorridos de directorios, exposición de fuentes, evasión para subir archivos, evasión de autenticación, XSS, inyecciones crlf de la cabecera http. Inyección SQL, inyección NoSQL, y más. Por ejemplo FuzzDB cataloga 56 patrones los cuales pueden potencialmente ser interpretados como un byte nulo, y contiene listados de métodos comúnmente utilizados como “get”, “put”, “test”, y pares de nombres-valores los cuales activan modos de depuración.

Descubrimiento

La popularidad de los formatos de distribución estándar para empaquetar software y los instaladores, resultan en recursos como directorios administrativos o archivos “logs” frecuentemente siendo localizados en un pequeño número de ubicaciones predecibles. FuzzDB contiene un completo diccionario, ordenado por tipo de plataforma, lenguaje, y aplicación; haciendo las pruebas de fuerza bruta menos brutales.

Análisis de Respuesta

Muchas respuestas interesantes del servidor son cadenas predecibles. FuzzDB contiene un conjunto de diccionarios con patrones de expresiones regulares para corresponder contra las respuesta de los servidores. Además de los mensajes comunes de errores del servidor, FuzzDB contiene expresiones regulares para tarjetas de crédito, números de seguro social, y más.

Otras cosas útiles

Webshells en diferentes lenguajes, listas comunes de nombres de usuarios y contraseñas, y algunas listas de palabras útiles.

¿Cómo las personas utilizan FuzzDB?

FuzzDB es como un escaner de seguridad para una aplicación, sin un escaner. Algunas maneras de utilizar FuzzDB son.

  • Servicios para pruebas de penetración de tipo caja negra contra sitios web y aplicaciones web
  • Extensión FuzzDB del proxy OWASP ZAP
  • La herramienta Intruder y escaner de Burp Suite
  • Un proxy de interceptación basada en consola PappyProxy
  • Para identificar respuestas interesantes de servicios utilizando patrones “grep” para PII, números de tarjeta de crédito, mensajes de error, y más
  • Dentro de herramientas personalizadas para pruebas de software y protocolos de aplicación
  • Crear casos de pruebas de seguridad para software con GUI o línea de comando con herramientas estándar para la automatización de pruebas
  • Incorporación dentro de otro software Open Source o productos comerciales
  • En materiales y documentación de entrenamiento
  • Para aprender sobre técnicas para la explotación de software
  • Para mejorar los productos o servicios en pruebas de seguridad

¿Cómo fueron recolectados los patrones?

Muchas, muchas horas de investigación y pruebas de penetración. Y

  • Análisis de instalaciones por defecto de aplicaciones
  • Análisis de la documentación del sistema y aplicación
  • Análisis de mensajes de error
  • Investigación de exploits web antiguos por cadenas repetibles de ataque
  • Extracción de los payloas de escaners desde los logs http
  • Varios libros, artículos, publicaciones en blog, y temas en listas de correo
  • Otros fuzzers open source y herramientas d pruebas de penetración

Otras herramientas y proyectos de seguridad incorporan FuzzDB en parte o completamente. Por ejemplo; OWASP ZAP, Metasploit Framework, Burp Suite, ProtoFuzz, entre otros.

Fuentes:

https://github.com/fuzzdb-project/fuzzdb
https://github.com/fuzzdb-project/fuzzdb/tree/master/docs
https://github.com/fuzzdb-project/fuzzdb/graphs/contributors

WebSocket

Body

El protocolo WebSocket es relativamente una nueva tecnología, la cual desde la perspectiva de un navegador llegó con HTML 5. El protocolo tiene directa relación con HTTP y las aplicaciones web. Sin embargo, las implementaciones son en su mayoría exclusivamente empleadas para manejar aplicaciones web. Una de las capacidades clave de WebSocket permite al desarrollador iniciar comunicaciones bidireccionales sobre un sólo socket TCP. Esto es bueno cuando una aplicación necesita tiempo real o comunicaciones regulares. También ayuda a soportar aplicaciones pesadas del cliente, las cuales actualmente son desarrolladas.

Cuando se encuentra siendo utilizado WebSocket en una aplicación web, típicamente se ubica dentro de un archivo .js, aunque puede ser encontrado en una página HTML dentro de una etiqueta “script”. Se puede ver un nuevo objeto WebSocket siendo creado con un código similar al siguiente:

var connection = new WebSocket(‘ws:www. dominio. com/hola’,[‘soap’,’xmpp’];

Esto crea un objeto hablando hacia la funcion “hola” sobre “www. dominio. com”. También configura los protocolos soportados sobre la conexión, los cuales son SOAP y XMPP. El primero es un protocolo de servicio web, y el segundo es Jabber.

Se puede entonces luego ver una aplicación utilizar la función “send” para enviar un mensaje hacia el servidor WebSocket

connection.send(“Bienvenidos”);

Muchas de las herramientas actualmente utilizadas en pruebas de penetración web no entienden o manejan comunicación con WebSocket. Esto implica fallarán al interceptar o capturar esta ruta de comunicación, dejando brechas en las evaluaciones contra la aplicación web.

Se tienen dos herramientas disponibles actualmente para manejar esto. La primera es Wireshark, la cual captura tráfico de red en bruto. Se puede entonces intentar analizarlo. Esto es limitado pues mucha de la comunicación WebSocket frecuentemente está encriptado. Se puede también utilizar la herramienta de interceptación ZAP. Porque básicamente realiza un hombre en el medio (MiTM) del tráfico, no siendo la encriptación un problema.

Fuentes:

https://tools.ietf.org/html/rfc6455
https://www.wireshark.org/
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

Escaneo de Puertos UDP contra Metasploitable3

Body

Aunque los servicios más populares en Internet se ejecutan sobre el protocolo TCP, los servicios UDP están ampliamente desplegados. DNS, SNMP, y DHCP (en puertos registrados 53, 161/162, y 67/68) son tres de los más comunes. Debido al escaneo UDP es generalmente más lento y más difícil a comparación de TCP, algunos auditores de seguridad ignoran estos puertos. Esto es un error, pues los servicios UDP explotables son bastante comunes, y los atacantes ciertamente no ignoran por completo el protocolo. Afortunadamente, Nmap puede ayudar a hacer un inventario de puertos UDP.

Un escaneo UDP funciona enviando un paquete UDP hacia cada puerto objetivo. Para algunos puertos comunes como el 53 y 161, un “payload” o carga útil específico del protocolo es enviado para incrementar la velocidad de respuesta, pero para la mayoría de puertos el paquete esta vacío a menos las opciones “--data”, “--data-string” o “--data-length” sean especificados. Si se devuelve un error “ICMP port unreachable” (tipo 3, código 3), el puerto está “cerrado”. Otros errores “ICMP unreachable (tipo 3, códigos 0, 1, 2, 9, 10, o 13)”, marcan el puerto como filtrado. Ocasionalmente, un servicio responderá con un paquete UDP, indicando está abierto. Si no se recibe una respuesta después de la retransmisión, el puerto se clasifica como abierto|filtrado. Esto significa el puerto podría estar abierto, o tal vez un filtroS de paquetes está bloqueando la comunicación. La detección de versión (-sV) puede ser utilizada para diferenciar los puertos verdaderamente abiertos de aquellos filtrados.

Un gran reto con el escaneo UDP es hacerlo rápidamente. Los puertos abiertos y filtrados raramente envían cualquier respuesta, dejando a Nmap el tiempo de espera y luego conducir la retransmisión solo en caso se pierda la prueba o respuesta. Los puertos cerrados son frecuentemente un problema aún mayor. Ellos usualmente devuelven un error “ICMP port unreachable”. Pero a diferencia de los paquetes RST enviados por puertos TCP cerrados en respuesta hacia un escaneo SYN o Connect, muchos hosts limitan por defecto la velocidad de mensajes “ICMP port u reacheable”, particularmente Linux y Solaris son estrictos en este tema. Por ejemplo el kernel de Linux 2.4.20 limitan los mensajes “destination unreachable” a uno por segundo.

Nmap detecta la limitación de velocidad y se relentiza consecuentemente para evitar inundar la red con paquetes no útiles los cuales podrían ser descartados por la máquina objetivo. Desafortunadamente, el limite al estilo Linux de un paquete por segundo hace un escaneo de 65,535 puertos demande más de 18 horas. Entre las ideas para acelerar los escaneos UDP se incluye escanear más hosts en paralelo, hacer primero un escaneo rápido de solo los puertos populares, escanear desde detrás del firewall, y utilizar la opción “--host-timeout” para omitir hosts lentos.

# nmap -n -Pn -p- -sU -v 192.168. 0.X

El escaneo realizado con Nmap finalizó después de 12 minutos aproximadamente.

Otra herramienta la cual es factible utilizar es Unicornscan. Unicornscan es un herramienta asíncrona para estimular entregas y respuesta. Esto significa, envía paquetes rotos, desorganizados o fragmentados (sin un patrón regular a diferencia de otras herramientas de escaneo de puertos), hacia un host y espera por la respuesta del objetivo. Una de las principales características de Unicornscan es utilizar diferentes hilos para enviar paquetes y para recibirlos, diferente a otros escaners de puertos.

# unicornscan -Iv -mU 192.168. 0.X:a

Los siguientes escaneos se realizan contra la máquina virtual Metasploitable3, pero con el firewall desactivado.

Se realiza nuevamente el escaneo UDP utilizando Nmap. Este escaneo con un avance del casi el 13% debería finalizar luego de aproximadamente 2 horas y 50 minutos. Esto difiere sustancialmente del escaneo realizado cuando el Firewall de Windows estaba activo, por las razones ya mencionadas sobre como funciona el protocolo UDP, y como Nmap realiza este tipo de escaneo.

# nmap -n -Pn -p- -sU -v 192.168. 0.X

Se realiza nuevamente el escaneo UDP utilizando Unicorscan. Los resultados de este escaneo no difieren en cuanto al tiempo, comparado con el escaneo realizado cuando el Firewall de indows estaba activo.

# unicornscan -Iv -mU 192.168.0.70:a

Los puertos UDP encontrados en estado abierto; cuando el firewall de Windows está activo son: Nmap; 137, Unicornscan; 137, 161.

Los puertos UDP encontrados en estado abierto; cuando el firewall de Windows está desactivado son: Nmap; 137, Unicornscan; 137, 161.

Fuentes:

https://nmap.org
https://nmap.org/book/man-port-scanning-techniques.html
http://www.reydes.com/d/?q=Unicornscan
https://linux.die.net/man/1/unicornscan

Escaneo de Puertos TCP contra Metasploitable3

Body

El escaneo de puertos permite obtener una diversidad de información desde el objetivo de evaluación. Los firewalls y sistemas para la detección de intrusiones pueden identificar varias instancias de los escaneos, particularmente aquellos utilizando los paquetes más sospechosos; como escaneos SYN, FIN o NULL.

Nmap es la herramienta más comúnmente utilizada para realizar diversos tipos de escaneos, aunque de hecho incluye además una gran diversidad de funcionalidades y características, convirtiéndola en la herramienta más poderosa para este tipo de procesos.

Escaneo TCP Connect

El escaneo “TCP Connect” de Nmap es el tipo de escaneo por defecto cuando no es una opción el escaneo “SYN”. Este es el caso cuando un usuario no tiene los privilegios para crear paquetes en bruto. En lugar de escribir paquetes en bruto como en la mayoría de otros tipos de escaneos, Nmap consulta al sistema operativo subyacente para establecer una conexión contra la máquina y puerto entregando una llamada al sistema “connect”. Esta es la misma llamada al sistema de alto nivel utilizado por los navegadores, clientes P2P, y otras aplicaciones de red, utilizada para establecer una conexión. Es parte de una interfaz de programación conocida como Berkeley Sockets API. En lugar de leer respuestas de paquetes en bruto desde el cable, Nmap utiliza este API para obtener información sobre el estado de cada intento de conexión.

# nmap -n -Pn -v -sT -p1-65535 192.168. 0.X

Escaneo TCP SYN

El escaneo SYN es la opción de escaneo por defecto y más popular por buenas razones. Este puede realizar rápidamente el escaneo de miles de puertos por segundo sobre una red veloz, no obstaculizada por firewalls restrictivos. También es relativamente sigiloso y discreto, pues nunca completa conexiones TCP. El escaneo SYN funciona contra cualquier pila compatible TCP en lugar de depender sobre las idiosincrasias de plataformas específicas como lo es para los escaneos FIN, NULL, Xmas, Maimon e Idle. También permite una clara y fiable diferenciación entre los estados de puertos “open”, “closed”, y “filtered”.

# nmap -n -Pn -v -sS -p1-65535 192.168. 0.X

Escaneo TCP ACK

Este escaneo es diferente a los otros mencionados, pues nunca determina los puertos “abiertos o (abiertos| filtrados)”. Es utilizado para mapear conjunto de reglas del firewall, determinando si estos son de estado o no, y cuales puertos son filtrados.

El escaneo ACK prueba paquetes con sólo la bandera ACK activa (a menos se utilice --scanflags). Cuando se escanean sistemas sin filtrar, puertos “abiertos” y “cerrados” devuelven un paquete RST. Nmap entonces los etiqueta como “unfiltered” (Sin filtrar), lo cual significa estos son alcanzables por un paquete ACK, pero no se puede determinar si están “abiertos” o “cerrados”. Los puertos no respondiendo, o envíen ciertos mensajes de error ICMP como (tipo 3, código 0, 1, 3, 9, 10 o 13), son etiquetados como “filtrados”.

# nmap -n -Pn -v -sA -p1-65535 192.168.0.X

El escaneo TCP ACK finalizó después de 22 minutos aproximadamente. Los resultados obtenidos permiten inferir la existencia de un firewall activo.

Se procede a desactivar en la máquina virtual Metasploitable3 el Firewall de Windows.

Los siguientes escaneos se realizan contra la máquina virtual Metasploitable3, pero con el firewall desactivado.

Se realiza nuevamente escaneo TCP ACK. Este escaneo finaliza en menos de medio minuto. Un tiempo extremadamente mínimo comparado con los 22 minutos, cuando el firewall estaba activo.

Se realiza nuevamente un escaneo TCP Connect, encontrándose 47 puertos abiertos, en comparación a los 18 encontrados cuando el firewall estaba activo.

Se realiza nuevamente un escaneo TCP SYN, encontrándose el mismo número de puertos del escaneo anterior.

Los puertos TCP encontrados en estado abierto; cuando el firewall está activo son: 21, 22, 80, 1617, 3000, 4848, 5985, 8022, 8080, 8282, 8484, 8585, 9200, 49153, 49154, 49230, 49235, 49936.

Los puertos TCP encontrados en estado abierto; cuando el firewall está desactivado son: 21, 22, 80, 135, 139, 445, 1617, 3000, 3306, 3700, 3820, 3920, 4848, 5985, 7676, 8009, 8019, 8022, 8028, 8031, 8032, 8080, 8181, 8282, 8443, 8444, 8484, 8585, 8686, 9200, 9300, 47001, 49152, 49153, 49154, 49155, 49156, 49197, 49230, 49235, 49318, 49319, 49936, 50022, 50023, 50024.

También es factible realizar otros tipos de escaneos contra puertos TCP, como también realizar el escaneo de los puertos UDP.

Fuentes:

https://nmap.org/
https://nmap.org/book/man-port-scanning-techniques.html

Metasploitable3

Body

Metasploitable3 es una máquina virtual gratuita, la cual permite simular ataques utilizando Metasploit Framework. Es utilizado por personas en la industria de seguridad para una diversidad de propósitos; como entrenamientos para la explotación de red, desarrollo de exploits, evaluación de software, entre otros propósitos.

Desde el año 2012 no se la había dado mantenimiento al proyecto. Metasploitable3 tiene las siguientes características principales; es Open Source, está orientado a personas con diferentes niveles de conocimiento, incluye “banderas” Flags, y es ampliable.

Es Open Source

Durante su desarrollo se reconoció uno de los inconvenientes de Metasploitable2, fue su mantenimiento. Se pensó dado el hecho se quiere toda la comunidad juegue, la comunidad debe tener el poder de influenciar y contribuir. Esto también permite la imagen vulnerable evolucione constantemente, con la esperanza de mantener la diversión para jugar en la máquina virtual.

Se debe considerar, en lugar de descargar una máquina virtual como era antes, Metasploitable3 requiere ejecutar algunos comandos y construirse para VirtualBox (VMWare será soportada en un futuro próximo). Para hacer esto, se debe instalar en la máquina; Packer, Vagrant, Plugin Reload de Vagrant y Virtualbox

Para construir automáticamente Metasploitable 3:

  1. Ejecutar el script de nombre “build_win2008.sh” utilizando bash. Si se utiliza Windows ejecutar “build_win2008.ps1”
  2. Si el comando se completa exitosamente, ejecutar “vagrant up”.
  3. El proceso de construcción toma entre 20 a 40 minutos, dependiendo del sistema y conexión hacia Internet.

Después de haber hecho todo esto se será capaz de abrir la máquina virtual dentro de VirtualBox y hacer login. El nombre de usuario por defecto es “vagrant” con la contraseña “vagrant”.

Para realizar la construcción manual referirse a la documentación de Metasploitable3.

Es Para Personas con Diferente Nivel de Conocimientos

Metasploitable2 fue más un entorno de prueba para Metasploit Framework. Era sencillo de jugar, y no se necesitaba invertir mucho tiempo para explotarlo, y obtener un shell con privilegios elevados.

Pero en esta nueva versión, se han hecho las cosas algo más difíciles.

Primero, no todos los tipos de vulnerabilidades en Metasploitable3 pueden ser explotados con un único módulo de Metasploit Framework, pero algunos pueden. También por defecto, la imagen está configurada para hacer uso de algunas mitigaciones de Windows, como diferentes ajustes de permisos y el firewall.

Por ejemplo, si se explota inicialmente un servicio, es probable se sea recompensado con una shell con bajos privilegios. Esta parte no debería ser muy difícil para quienes son nuevos en el juego. Pero si se quiere más a esto, servicios con privilegios elevados tienden a estar protegidos por un firewall, y se debe idear la manera de como lograr esto.

Por razones especiales, el firewall puede ser deshabilitado si se ajusta la variable de entorno MS3_DIFFICULTY“, como:

# MS3_DIFFICULTY=easy vagrant up

Si la imagen ha sido construida, se puede abrir una consola de comandos y ejecutar:

$ netsh advfirewall set allprofiles state off

Tiene Banderas

Una cosa muy común sobre realizar Pruebas de Penetración es ir por los datos corporativos. Bien, no es factible mostrar ningún dato corporativo real en Metasplotable3 sin algún problema legal, por lo tanto se ha introducido banderas “flags” a través de todo el sistema. Estos sirven como “datos los cuales se quieren robar”, y cada una de ellas está en la forma de una imagen de tarjeta de poker, relacionado a un desarrollador de Rapid7 o Metasploit, y está empaquetada en una de las siguientes maneras; ofuscación, ajustes estrictos de permisos, atributos de archivos, archivos incorporados.

El tener entre las manos estas banderas “flags” permite ejecutar las técnicas de post-explotación, y puede requerir algún conocimiento sobre ingeniería inversa.

Una pista sobre estas banderas puede ser encontrada desde uno de los servicios. En el futuro se publicará más sobre como encontrar estas banderas.

Es Ampliable

En Pruebas de Penetración del mundo real, está muy involucrado el ser capaz de romper una máquina, y aprovecharse de la información robada desde esta contra la siguiente. Las contraseñas robadas y hashes son ejemplos perfectos de esto.

En lugar de solo tener una máquina virtual, el plan es tener la capacidad de construir varias imágenes vulnerables, y crear un red de ellas. Esto permite a la audiencia tener la oportunidad de practicar más técnicas de post-explotación, pivoting, y irrumpir en el siguiente objetivo.

Aunque la primera imagen es Windows, ya se ha iniciado la planificación para una versión Linux.

Fuentes:

https://community.rapid7.com/community/metasploit/blog/2016/11/15/test-…
https://github.com/rapid7/metasploitable3
https://www.packer.io/intro/getting-started/install.html
https://www.vagrantup.com/docs/installation/
https://github.com/aidanns/vagrant-reload#installation
https://www.virtualbox.org/wiki/Downloads
https://github.com/rapid7/metasploitable3/issues/37

Encontrar LANs Inalámbricas a través del Análisis de la Dirección MAC

Body

Para descubrir puntos de acceso inalámbrico en un entorno objetivo, los profesionales en pruebas de penetración y hacking ético tienen varios mecanismos a su disposición, los cuales pueden ser divididos en dos categorías, descubrimiento del lado cableado y descubrimiento inalámbrico. Desde la perspectiva cableada, se intenta identificar los puntos de acceso inalámbrico basado en su conexión y tráfico sobre una red cableada. Entre las técnicas para realizar esto se incluye obtener la huella del punto de acceso, lo cual puede ser hecho por algunas herramientas. Y también una de esas técnicas es analizar la dirección MAC.

La mayoría de proveedores tienen asignado un conjunto de OUIs (Organizationally Unique Identifiers) o por su traducción al idioma español; Identificadores Organizacionalmente Únicos, el prefijo de tres octetos el cual constituye la primera parte de las direcciones MAC para los productos creados por cada compañía. Con la dirección MAC de un dispositivo objetivo, se puede consultar el proveedor asociado y determinar si podría ser un punto de acceso, basado sobre los productos del proveedor.

Una más completa y actualizada lista de mapeos OUI a proveedor es mantenido por la IEEE, la cual puede ser encontrada al final del presente texto.

Si el OUI indica un proveedor el cual únicamente fabrica puntos de acceso inalámbrico, se puede tener una seguridad razonable el sistema objetivo es un punto de acceso inalámbrico únicamente basado en su dirección MAC. Sin embargo, muchos proveedores tienen numerosos productos, algunos de los cuales podrían ser puntos de acceso, y otros ser diversas formas de equipos de red inalámbricos. Pero, incluso dentro del espacio OUIs de un proveedor, se puede ser capaz de identificar rangos específicos de de direcciones MAC para tipos específicos de productos, como son los puntos de acceso. Tal análisis requiere investigar al proveedor, sus OUIs, y direcciones MAC en Internet con búsquedas de Google.

Fuentes:

http://standards-oui.ieee.org/oui.txt

Handshakes 802.11 - Pruebas, Autenticación, y Asociación

Body

Para entender los diversos enfoques disponibles para descubrir puntos de acceso y atacarlos, se necesita abarcar el proceso de “Handshake” o en idioma español podría ser traducido como un Apretón de manos o Saludo. Este proceso de Saludo es utilizado por un cliente para unirse hacia una red LAN inalámbrica 802.11. Primero, el punto de acceso envía un paquete “beacon” o faro sobre una base regular, aproximadamente diez veces por segundo, para transmitir información de sincronización y disponibilidad.

El proceso de unirse hacia una LAN inalámbrica empieza con el cliente enviando una petición de prueba sobre todos los canales donde la interfaz inalámbrica siente actividad (posiblemente paquetes “beacon” o cualquier otro tráfico sobre los canales inalámbricos). Después de recibir una petición de prueba, por defecto, el punto de acceso envía una respuesta de prueba, la cual incluye diversos ítemes necesarios para el cliente se una hacia la red inalámbrica, como el SSID de la red (ya sea el BSSID y el ESSID), el canal en uso, información para la sincronización del tiempo, tasa para la transferencia de datos disponibles, y más. En un entorno inalámbrico concurrido, el cliente puede tener muchos puntos de acceso para seleccionar desde aquellas respondiendo a las peticiones de prueba. El cliente hace la selección entre los puntos de acceso disponibles basado en su configuración o interacción con el usuario.

El cliente luego envía una trama de gestión inalámbrica con una petición de autenticación. En una red abierta, el punto de acceso automáticamente responde con una mensaje de autenticación satisfactoria. En una red exigiendo seguridad WEP, WPA, o WPA2, el punto de acceso envía un reto de autenticación hacia el cliente. El cliente aplica una rutina criptográfica hacia el reto y formula una respuesta de autenticación. Si el punto de acceso verifica satisfactoriamente la respuesta, se devuelve un mensaje de autenticación satisfactoria. El cliente luego envía un mensaje de petición de asociación hacia el punto de acceso para unirse a la LAN inalámbrica. Si el cliente fue satisfactoriamente autenticado anteriormente en el proceso, el punto de acceso envía un mensaje de respuesta de asociación. Luego, se pueden transmitir los datos entre el cliente y el punto de acceso. Anotar los puntos de acceso retan al cliente, pero el cliente nunca reta al punto de acceso. Esta es una autenticación de una sola vía, no una autenticación mutua.

Fuentes:

https://en.wikipedia.org/wiki/IEEE_802.11
http://www.corecom.com/external/livesecurity/eviltwin1.htm