¿Cuáles son los sistemas operativos más utilizados por los hackers en 2017?

Recientemente leía un artículo en una web (HowToDoAnything) en el que se aventuraban a hacer un listado con el top 10 de los sistemas operativos más utilizados por los hackers en 2017. Y digo "aventuraban" porque algunas de las distribuciones que listan en su artículo estaban discontinuadas pero, sobretodo, porque siempre es difícil hacer este tipo de listados "Top" ya que (que yo sepa) no hay estadísticas oficiales y cada uno tiene sus propios gustos y puede argumentar las razones de por qué la distribución que utiliza es mejor que el resto, algo que siempre es bastante subjetivo.

Me atrevería a decir que Kali hoy en día es la distribución por excelencia y la más utilizada, pero como sabréis existe una gran diversidad de distribuciones enfocadas a la seguridad. Aún así, todos coincidimos en que usamos Linux y prácticamente en el uso de muchas herramientas.

En cualquier caso me parecía un top bastante interesante por lo que quería dejarlo "caer" también por aquí, eso sí añadiendo algunas distribuciones adicionales, ordenándolas por categorías y hasta llegar a una lista bastante amplia. A ver qué opináis y si echáis en falta alguna que otra:

Pentesting

1. Kali Linux

Qué decir a estas alturas de Kali... sin duda el sistema operativo más famoso para pentesting. De los creadores de BackTrack (Offensive Security), se trata de una distribución basada en Debian y que está disponible para muchas plataformas diferentes como VMware, Arm, etc.

2. Parrot Security OS

Este sistema operativo está basado en Debian GNU/Linux mezclado con Frozen box OS y Kali Linux y, con esta combinación, proporciona una excelente experiencia para tests de intrusión y pruebas de seguridad. Tiene muchas características como herramientas personalizadas anti-forense, GPG, crypt...

3. Arch Linux

Arch Linux es el sistema minimalista por excelencia. Sigue el principio KISS (Keep it Simple and Short). Arch Linux utiliza su gestor de paquetes Pacman, que combina paquetes binarios simples con un sistema de compilación de paquetes fácil de usar. Existe además BlackArch que puede usarse de forma independiente o instalarse en el sistema base y viene con numerosas herramientas preinstaladas.

4. BackBox

Back Box es una distribución de Linux basada en Ubuntu. Puede funcionar fácilmente en un dispositivo de bajo rendimiento y se ha desarrollado específicamente para realizar pruebas de intrusión y auditorías de seguridad. La nueva versión cuenta con funciones interesantes que incluyen análisis forense, documentación y generación de informes e ingeniería inversa.

5. Samurai Web Testing Framework

Samurai Web Testing Framework es una distro live que ha sido preconfigurada para funcionar como un entorno de prueba de pentesting web. Incluye muchas herramientas esenciales como WebScarab, rat proxy, w3af, Burp Suite y BeEF.

Spoilerwall, devuelve un spoiler de una película por cada puerto escaneado

Shodan, Censys, Scans.io, NetDB.io, ZMap, ... hoy en día son muchos los servicios y herramientas que escanean (y etiquetan) continuamente y de forma indiscriminada todas las IPs en Internet. Pero, ¿y si troleáramos a estos escáneres abriendo puertos TCP que no contienen realmente ningún servicio? Y aumentando la mala baba a nivel Dios... ¿si cada servicio escaneado además devolviera un banner "spoileando" el final de una película?

Pues hace días Infobyte LLC nos sorprendía publicando en su Github una pequeña herramienta en Python que precisamente hace eso: Spoilerwall. Una utilidad que simplemente levanta un servidor web (SocketServer) en un puerto especificado y devuelve de forma aleatoria un texto contenido en un fichero json (el spoiler). Luego y normalmente mediante iptables tendremos que redireccionar el puerto o puertos que consideremos para que, a la hora de que nos escaneen la máquina,  devuelva el banner de turno. Simple evil.. xD

Para probarlo, lo primero que tenemos que hacer -por supuesto- es clonar el repositorio:

$ git clone https://github.com/infobyte/spoilerwall.git

Luego editar el archivo server-spoiler.py y configurar las variables HOST y PORT, y ejecutar el servidor:

$ python2 server-spoiler.py

Ahora que tenemos el servidor corriendo, por defecto en el puerto 8080, tendremos que redireccionar todo el tráfico TCP entrante hacia el mismo:

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1:65535 -j DNAT --to-destination {HOST}:{PORT}

Si el tráfico está redireccionado a localhost tendremos que ejecutar:

$ sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1

Finalmente, con esta configuración, si escanean cualquier puerto, un "simpático" banner será devuelto:


También podéis ver un ejemplo desde Shodan (cuidado con los spoilers) en:

https://www.shodan.io/host/138.197.196.144

Ten cuidado en tu próximo CTF - nunca sabes cuando aparecerá un spoiler! 

Githubhttps://github.com/infobyte/spoilerwall

Errores de Wannacry que pueden ayudar a recuperar archivos después de la infección

A veces los desarrolladores de ransomware cometen errores de programación. Estos errores pueden ayudar a las víctimas a recuperar el acceso a sus archivos originales después de una infección (por supuesto, nos referimos sin necesidad de pagar). Uno de los mejores ejemplos, lo tenéis en un artículo de Kapersky del pasado 1 de junio en el que publicaban una breve descripción de varios errores en el desarrollo de, casi con total seguridad, el ransomware más famoso hasta la fecha: Wannacry.

Errores en la lógica del borrado de archivos

Cuando Wannacry cifra los archivos de su víctima, lee desde el archivo original, cifra el contenido y lo guarda en el archivo con la extensión ".WNCRYT". Después del cidfrado mueve ".WNCRYT" a ".WNCRY" y elimina el archivo original. Esta lógica de borrado puede variar dependiendo de la ubicación y las propiedades de los archivos de la víctima.

Archivos que se encuentran en la unidad del sistema:

Si el archivo se encuentra en una carpeta "importante" (desde el punto de vista de los desarrolladores de programas maliciosos, por ejemplo, Escritorio y Documentos), el archivo original se sobrescribirá con datos aleatorios antes de su eliminación. En este caso, por desgracia, no hay forma de restaurar el contenido del archivo original.


Si el archivo se almacena fuera de carpetas "importantes", el archivo original se moverá a %TEMP%\%d.WNCRYT (donde %d es un valor numérico). Estos archivos contienen los datos originales y no se sobrescriben, simplemente se eliminan del disco, lo que significa que existen muchas posibilidades de que se puedan restaurar con algún software de recuperación de datos.

Detenido por correr un nodo de salida Tor en casa


El 6 de Abril arrestaron y desde el día 10 está detenido Dmitry Bogatov, acusado de haber publicado comentarios extremistas en sysadmins.ru.

Dmitry llevaba tiempo administrando un nodo de salida Tor desde su casa, que servía de salida a Internet a los usuarios que se conectaban a la cebolla.

Al venir los comentarios de su dirección IP las autoridades le atribuyen a él los comentarios, a pesar de que:
  1. Dmitry estaba en el gimnasio con su mujer cuando se publicaron los comentarios.
  2. El autor de los comentarios había escrito desde más de 100 IPs diferentes de distintas partes del mundo.
  3. El autor de los comentarios sigue teniendo actividad en la red, mientras Bogatov está en la cárcel. Admitió públicamente que utiliza Tor.

¿Pretenden responsabilizar al administrador del nodo de salida la actividad proveniente de la red Tor? Eso nos dejaría exentos de cualquier culpa de lo que hagamos a través de Tor... Pero nos irá dejando sin nodos de salida poco a poco...

Yo me acabo de enterar hace poco, pero ésto ya ocurrió hace casi 3 meses y es gravísimo.


Contribución gracias a 'elvecinodeabajo'

Repositorios en Github de la NSA

Algunos no lo saben pero, desde no hace mucho tiempo, la NSA tiene publicado un buen número de repositorios de Github con varias guías y variadas herramientas con su correspondiente código fuente. No tan interesantes como las que liberó ShadowBrokers *zasca* pero muchas que merece la pena revisar.

Sí amigos, ver para creer, la Agencia de Inteligencia (probablemente) más poderosa del mundo haciendo un ejercicio de desarrollo colaborativo, casi me emociono. Y es que, como ellos mismos rezan, el Software de Código Abierto u OSS invita al desarrollo cooperativo de la tecnología, fomentando su uso y adopción. El público se beneficia adoptando, mejorando, adaptando o comercializando el software y el Gobierno de los Estados Unidos se beneficia de las mejoras de la Comunidad. Menos da una piedra señores...

La razón fundamental de este "altruismo" se enmarca dentro del Programa de Transferencia de Tecnología de la NSA (TTP) que trabaja con innovadores de agencias que desean usar este modelo colaborativo para transferir su tecnología al mercado comercial.

Algunos de los proyectos más interesantes que podemos encontrar son:

- AppLocker Guidance: guía para implementar listas blancas de aplicaciones en AppLocker
- Certificate Authority Situational Awareness (CASA): una sencilla herramienta que identifica certificados de CAs sospechosas en equipos Windows
- Control Flow Integrity: una técnica basada en hardware para prevenir exploits de corrupción de memoria
- Event Forwarding Guidance: Guía de configuración para implementar la recopilación de eventos de Windows
- goSecure: una VPN portable y fácil de usar para Linux y Raspberry Pi
- GRASSMARLIN: Proporciona un conocimiento de la situación de la red IP de las redes ICS y SCADA para respaldar la seguridad de la red
- OpenAttestation: Un proyecto para recuperar y verificar la integridad del sistema de forma remota usando Trusted Platform Module (TPM)
- Pass-the-Hash Guidance: Guía para implementar mitigaciones para Pass-the-hash
- RedhawkSDR: Es un framework de radio definido por software (SDR) que proporciona herramientas para desarrollar, implementar y administrar aplicaciones de radio de software en tiempo real.
- OZONE Widget Framework (OWF): Es básicamente una aplicación web, que se ejecuta en su navegador, permite a los usuarios crear widgets ligeros y acceder fácilmente a todas sus herramientas de forma online
...

y así hasta 32 repositorios (y creciendo) que la NSA ha puesto (esta vez sí voluntariamente) y que podéis encontrar repartidos en cualquier de sus dos URLs en Github:

1. Information Assurance by NSA: https://github.com/iadgov
2. National Security Agency: https://github.com/nationalsecurityagency

Backdoors en imágenes gracias a BMPs y una lupa

Después de un tiempo de desconexión con motivo de exámenes y demás, hoy vuelvo para hablaros de un tema bastante útil a la par que peligroso...

Muchos nos hemos dedicado a darle cientos de vueltas a la cabeza para conseguir ejecutar malware sin ser frenados por la multitud de antivirus que hay en el mercado, para ello hay algunas herramientas como AVET, comentada anteriormente por estos lares, que nos facilitan cantidad el proceso de evasión de AVs, pero debemos saber que estas herramientas no son infalibles.

Normalmente nada más ser publicadas funcionan bastante bien, pero con el paso del tiempo sus mecanismos de evasión acaban siendo detectados por los antivirus y acaban quedando inservibles...

A parte de estas herramientas para evadir a los antivirus, puede haber otras maneras de crear backdoors indetectables o incluso distintos métodos de propagación de malware que no son muy utilizados en la actualidad como el que vengo hoy a tratar.

Seguramente casi nadie (por no decir nadie) os habréis fijado bien si hay algo raro en la imagen de cabecera del post, ¿no veis nada raro?, ampliarla un poquito más, ¿seguís sin verlo?, os daré un pista, haced zoom a la parte inferior izquierda de la imagen... Bueno, como podéis observar, aparece una tira de pixels de diferentes colores, los cuales no concuerdan con la imagen original, pues en esa tira de pixels se encuentra nuestra futura sesión de meterpreter, o mejor dicho, nuestro querido backdoor.

AQUATONE, más que una herramienta de descubrimiento de subdominios

AQUATONE del alemán Michael Henriksen es un conjunto de herramientas escritas en Ruby para realizar reconocimientos de nombres de dominio. Puede descubrir subdominios usando fuentes abiertas o mediante fuerza bruta usando un diccionario. Después del descubrimiento de subdominios, AQUATONE puede escanear los hosts para identificar puertos web comunes. Además puede reunir y consolidar en un informe los encabezados HTTP, cuerpos HTML y capturas de pantalla para un análisis rápido de la superficie de ataque.

La instalación es muy sencilla, sólo tenemos que descargar o clonar el repositorio en Github:

$ git clone https://github.com/michenriksen/aquatone.git

Instalar las gemas:

$ gem install aquatone

Y añadir nuestras keys de las APIs de Shodan y Virustotal:

$ aquatone-discover --set-key shodan o1hyw8pv59vSVjrZU3Qaz6ZQqgM91ihQ
$ aquatone-discover --set-key virustotal 132d0h354bd538656ek435876567b1g757945342347654as548f3264a8724g19


Luego, para mayor flexibilidad, AQUATONE se divide en tres comandos, según queramos o no descubrir subdominios, escanear los hosts y/o obtener información de los servicios (gathering), cada una representando distintas fases que vemos a continuación:

Fase 1: descubrimiento (aquatone-discover)

Lo primero que hace AQUATONE es consultar los DNS con la autoridad para el dominio objetivo. De esta manera se asegura que la información obtenida está actualizada. Luego hace una prueba rápida para ver si el dominio de destino está configurado para ser un dominio wildcard, si lo es, identificará las posibles respuestas wildcard y las filtrará. Posteriormente, procede a preguntar a cada módulo de para recopilar los subdominios:

- Diccionario brute force (ver diccionario aquí)
- DNSDB.orghttp://dnsdb.org/
- Informe de Transparencia de Google
- HackerTarget
- Netcraft
- Shodan (requiere clave de API)
- ThreatCrowd
- VirusTotal (requiere clave de API)

El comando básico es el siguiente:

$ aquatone-discover --domain example.com

Por defecto tirará 5 hilos, si queremos aumentar el número para que vaya más rápido podemos usar el parámetro --threads:

$ aquatone-discover --domain example.com --threads 25

Si por el contrario no queremos hacer mucho ruido podemos espaciar cada consulta DNS cada el número de segundos que especifiquemos con --sleep y un retardo variable con --jitter para evadir posibles IDS:

$ aquatone-discover --domain example.com --sleep 5 --jitter 30

AQUATONE descubre los servidores DNS que resuelven los nombres de dominio objetivo y reparte las consultas entre ellos. Si las consultas hacia estos DNS fallan por defecto realizará las consultas a los DNS de Google para maximizar los resultados. Podemos especificar también otros DNS de "reserva" con:

$ aquatone-discover --domain example.com --fallback-nameservers 87.98.175.85,5.9.49.12


Una vez finalizado el descubrimiento de dominios y subdominios los resultados se almacenarán en el fichero hosts.txt y hosts.json para facilitar el parseo.

AVET (AntiVirus Evasion Tool)

Ya sabéis que cuando se ejecuta un archivo exe hecho con msfpayload y cía, el archivo exe normalmente es detectado por el AV...

AVET (AntiVirus Evasion Tool) es una herramienta de Daniel Sauder (aka govolution) que permite experimentar con distintas técnicas de evasión de antivirus. Antes de continuar, os recomiendo echar un vistazo a las presentaciones de su autor https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf y https://deepsec.net/docs/Slides/2014 /Why_Antivirus_Fails_-_Daniel_Sauder.pdf.

Las principales características de AVET son:

- su objetivo son las máquinas de Windows mediante archivos ejecutables
- en la última versión 1.1 se pueden usar payloads de 64 bits
- puede utilizar shellcodes en ensamblador
- se puede utilizar make_avet para configurar el código fuente
- con make_avet se pueden cargar códigos codificados en ASCII desde un archivo de texto o desde un servidor web, además usa una técnica de evasión de AV para evitar el sandboxing y la emulación
- para la codificación ASCII del shellcode se incluye la herramienta format.sh y sh_format

La herramienta se ha probado en Kali 2 (64 bits) y necesita tdm-gcc. Para instalar tdm-gcc visitar https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/, aunque tampoco tiene mucho misterio:

- Descarga el ejecutable correspondiente en https://sourceforge.net/projects/tdm-gcc/
- Instala con # wine tdm64-gcc-5.1.0-2.exe

Diseccionando bee-box (OWASP bWAPP VM) v1.6 - Inyección HTML

bWAPP (buggy Web APPlication) es una aplicación web deliberadamente vulnerable para que podamos practicar explotando un buen número de vulnerabilidades. Ya la descubrimos en el blog hace tres años y recibió su última actualización en noviembre del año pasado.

Lo que os traemos hoy es un writeup de los primeros ejercicios sobre inyección HTML, gracias al 'elvecinodeabajo' (bonito nick).


HTML Injection - Reflected (GET)
http://beebox/bWAPP/htmli_get.php

Los valores proporcionados a través de "firstname" y "lastname" en la consulta GET se reflejan en la página de saludo.

    http://beebox/bWAPP/htmli_get.php?firstname=Speedy&lastname=Gonzales&form=submit
    <div id="main">
        <h1>HTML Injection - Reflected (GET)</h1>
        <p>Enter your first and last name:</p>
        <form action="/bWAPP/htmli_get.php" method="GET">
            <p><label for="firstname">First name:</label><br />
            <input type="text" id="firstname" name="firstname"></p>
            <p><label for="lastname">Last name:</label><br />
            <input type="text" id="lastname" name="lastname"></p>
            <button type="submit" name="form" value="submit">Go</button>  
        </form>
        <br />
        Welcome Speedy Gonzales
    </div>

Si jugamos un poco podemos ver que las etiquetas HTML no se filtran y se reflejan tal cual en la página de resultado.

    http://beebox/bWAPP/htmli_get.php?firstname=%3Ch1%3ESpeedy%3C%2Fh1%3E&lastname=%3Ch2%3EGonzales%3C%2Fh2%3E&form=submit
    <div id="main">
        <h1>HTML Injection - Reflected (GET)</h1>
        <p>Enter your first and last name:</p>
        <form action="/bWAPP/htmli_get.php" method="GET">
            <p><label for="firstname">First name:</label><br />
            <input type="text" id="firstname" name="firstname"></p>
            <p><label for="lastname">Last name:</label><br />
            <input type="text" id="lastname" name="lastname"></p>
            <button type="submit" name="form" value="submit">Go</button>  
        </form>
        <br />
        Welcome <h1>Speedy</h1> <h2>Gonzales</h2>
    </div>

[Pentesterlab write-up] Web For Pentester II - Authorization & Mass Assignment

Continuamos con dos bloques más del lab 'Web for Pentester II',  esta vez con ejercicios para:

- explotar malas implementaciones en el esquema de autorización del aplicativo, que permiten acceder a información (URLs) que debería estar restringida, al menos sin previa autenticación.

- manipular registros de la aplicación para modificar elementos a los que el usuario normalmente no debería tener acceso, como contraseñas, permisos o roles. Es lo que se conoce como Mass Assignment.

Como veréis estos ejercicios son bastante sencillitos (quizás demasiado) y no requieren apenas esfuerzo, pero os recomiendo echarle al menos un vistazo rápido.


AUTHORIZATION

Ejercicio 1:

El primero ejemplo es un fallo común en el desarrollo web, el desarrollador creó la página de inicio de sesión pero no bloqueó las páginas que tienen información sensible a través de cookies u otros tokens de seguridad, esto significa que cualquiera que sepa la ruta (o la obtenga mediante un crawling o fuzzing de directorios) puede acceder sin autenticación.

http://vulnerable/authorization/example1



En esta ocasión no hace falta ni tirarle un wfuzz o un dirb, la URL es totalmente predecible:

http://vulnerable/authorization/example1/infos/2