その古典のオフィス脆弱性CVE-2012-0158美徳を導入するには、次の小さなシリーズ、汎用性と安定したこの脆弱性の原則の詳細な説明、多くの場合、さまざまなレポートに表示され悪用し、手動で利用可能な原理に基づいて構成する方法POCサンプル.

  脆弱性の原則

  この抜け穴原理について、記事のオンライン分析の様々ながあり、一般原則の脆弱性を見つけ、分析するためのバイナリコードサンプルの例に基づいており、脆弱性の直接的な原因与えられ、詳細な分析がないだろう、それはデバッグデモの小さな部分の後ろにもあります.この脆弱性は、部品のオフィスで発生しMSCOMCTL.OCX、この脆弱性モジュールの存在の複数のバージョンのOfficeは、この記事のテスト環境は、例えばあるWINXP + Office2007の.MSCOMCTL.文書は、オフィスのActiveXコントロールの要素が含まれている場合、この脆弱性OCX ActiveXコントロールモジュールは、ダイナミックライブラリを解決するために、オフィスで使用されている、そのような文書がオフィスで開かれたボタンなど、リスト、ツリーコントロール、MSCOMCTLような言葉、.OCXプログラムに自動的にロードされますオフィススペースを解析して表示制御する工程と呼ばれ、.

  解析オフィスは(例えば、リストのリストビューコントロールで)良好な制御に構成されている場合、この脆弱性は、メモリコピーオーバーフローにおける古典スタックバッファオーバーフローの脆弱性に属し、クロスボーダースタックメモリコピーが発生し.プロセスの次バックトレース図は、この脆弱性に代わって行うことができます.

  

  図から分かるように、Excelは、解析リストビューコントロールは、読み取ったときとロードデータフロー制御、内部関数呼び出しにデータ?ストリームをロードするプロセスはReadBytesFromStreamPaddedからのパラメータに従って機能メモリコピー機能と同様のmemcpy関数指定指定したメモリコピー先メモリへのデータのサイズ.しかし、その脆弱性を見つけるでしょう近づくまでのトラックが、この機能には存在しないが、むしろ:: COBJに表示され、この関数は、この関数は、この機能のために、最初のラベルされたIDAの擬似コード抜け穴を表示する方法の以下の分析をロードします.

  名前が示すようにCOBJ ::ロードは、データ?ストリームの読み取りの始まりは、一時変数のV5に0x0Cのバイトを開始しますのでCOBJは、メモリからデータを読み出すために、オブジェクトのニーズをオブジェクトにロードされた方法であり、.次いで、最初の4つのバイトには、ローディングの次のステップの前にV5「COBJ」はオブジェクトのタイプをロードするかどうかを検出するか否かを判断し、8以上dwBytes変数なら.変数IDA注dwBytes = [BP-0x0Cの] V5 = [BP-0x14の]及びV5を落下見ることができるので、今後0x0Cのバイトを読み出したときで読み取られたメモ、dwBytes変数+ 0x0Cの= [BP-0x08の]間隔メモリので、臨界値dwBytesデータフローを変更することによって制御することができるあります.

  同じデータ?ストリームの次の外観は、カバーが必然的にコピーEBPを読み込みますので、元のdwBytesは、一時変数のV7、V7 = [BP-0x08の]へのバイトが、この時点ではなく8よりdwBytes大きいから読み取る発生しますクロスボーダーのコピーは、スタックオーバーフローの脆弱性を形成します.以上8は、必然的にスタックの異常なコピーにつながる場合は、この抜け穴が長くてテストされていますので、この分析は、通常、制御データdwBytes値から読み出すことを推測することが可能に基づいて、8より大きくありません.そして、クロスリファレンス機能でIDAを介してこれを参照すると、この機能が有効ではないようだ、いくつかの特定の負荷制御ビットで呼ばれるように始めているでしょう.だから、私はこの脆弱性が少ない以上8未満書かれたオリジナルの8よりも、いわゆる重大な過ちではないと思われる、マイクロソフトが故意にバックドアの脆弱性に任されています.

  

  POC憲法トリガーの脆弱性

  脆弱性ListViewコントロール機能COBJ ::ロードを解析する際に上記の分析原理の後、オフィスの呼び出しは、指定された機能のサイズはCOBJがdwBytesを改ざんすることができ、オブジェクトの読み込みに合わせて一時変数に8バイトのメモリデータを読み出し、バックドアサイズを検証容疑者は、バッファオーバーフローの脆弱性をもたらす利用することができます.我々の分析をテストするためには、正しいことで、ここでは、この脆弱性を引き起こすことができるExcel文書の構造を示す上記スタック回顧を参照してください..

  必要性のListViewコントロールがあるすべてのExcel文書の最初に、空のリストビューオブジェクトに埋め込まれた文書と同等のものを追加した後、追加するエクセルソフトウェア開発ツールによって缶.

  

  その後、我々はまた、あなたがエクセルプログラムCOBJへの呼び出しを行うことができますので、ListItemのリストアイテムと子オブジェクト内のオブジェクトを追加する必要があります::ロード機能.しかし、のListItemオブジェクトはExcelの操作で直接追加することができない問題がある、Excelが唯一のプロパティのタイトルによってリストListViewコントロールを追加することができ、コンテンツのリストを追加する直接的な方法はありません.溶液はVBA Excelのサポートを通じて、プログラムコードを書くことで、コンパイラは、リストアイテムオブジェクトを生成します.

  この文書は、このようなVBAマクロコード内に存在する場合、Excelが無効のコードが実行されるデフォルト設定されます、別の問題を、もたらし、これはまだListViewコントロールでのListItemオブジェクトを解決していない.しかし、簡単な解決策は、最初の書き込みにコードのコンパイルと実行されます制御対象が解決ブロックされていない間、マクロコードが実行されることが防止されるので、良い若い男は、ListViewコントロールになり、その後、すべての生成されたコードを削除して保存し、初期化.

  

  次のステップは、限り、保存された文書は、六角エディタ、COBJ位置決めデータオブジェクトによって開かれるように、オフセット値の値は、脆弱性を誘発することができるであろう8 dwBytes 8よりも大きい修正します.ReadBytesFromStreamPadded値は、その後dwBytesをチェックしますので、実際には唯一の幸い、ちょうど別dwBytesの読み取りヘッドからコピーするデータをチェックし、機能をコピーして、脆弱性の影響がトリガされ見ることができない値を変更値は、我々がちょうど値にも対応するサイズに変更されたデータをターゲットにする必要があるように、2つの値が等しい試験は、このようにチェックすることにより、この脆弱性をトリガすることができ.

  

  トリガーの後に脆弱性、最終エレガントExcelプログラムは、我々が見てみたいというエラーメッセージボックスを返しますので、我々は単に、いくつかのランダムなデータの戻りアドレスとEBPと関連する機能をカバーしているため.

  

  開発します

  今、私たちは、get A、スタックバッファオーバーフローの脆弱性は、あなたが爆弾を開始与えることを再集計、紙や電卓に何かをするために、この脆弱性を悪用する方法の下に、トリガーされることができます.

  POCの上記構成により、我々は、スタックのメモリレイアウトの動作を制御するために、後者の二つdwBytesとデータの値を変更することができ.より良いスケジュールデータにするために、動的に文書の対応する部分に限り、最後のメモリが振り付けとして、目的を達成するために、コピーデータをデバッグデータサンプルを修正好ましく.デバッグプロセスは、私たちの第一の目的は、自然のプログラムコントローラ制御EIPを得ることであるここで、一般的にSEHチェーンポインタ戻り値または関数が覆うことによって達成されます..MSCOMCTRLので、.DLLは、GSの保護になっていない、我々は、EIPを制御することが容易カバー関数の戻り値を取ります.しかし、プログラムが値を返すスムーズにするために、我々はいくつかの異常発生の積み重ねによる被害を避けるために、それほどなどの操作や機能の複雑な命令セットを入力しないように、データを修正するためにいくつかの条件を満たすためにリターンを必要とする、制御プログラムの流れ.

  

  プログラムが正常に戻りアドレスに到達すると、これらはエクスプロイトに精通している人々であるため、我々は、そのようなバイパスDEP ROP鎖保護を構築するよう、動作環境に応じて、あらゆるものを行うか、コードを実行するスタック領域に直接ジャンプすることができます何百回.需要はそれがListViewコントロールに関するデータのサイズを大きくする必要があるので、最も簡単な方法は、文字列の書き込みに十分な長さであるときのListItemを追加することで、ROPチェーンやシェルコードの両方を収容するのに十分な大きさのメモリデータ空間をスタックする必要がある、あります.

  

  すべての必要な条件が満たされた場合には、我々のコードはスタックに実装することができ、ここで、デフォルトではXP +オフィス2007がオープンDEPがないので、私は単純に、スタックメモリアドレスのコード実行に直接、一般的なジャンプのジャンプを使用します環境の保護私は正常にポップアップすることができますので、電卓.

  

  そのようなより多くの保護OFFICE2010デフォルトのDEPはオンになってバイパスにROPチェーンの書き方など、より需要のために、私は他に次の抜け穴のシェアに発売されます.また、この記事では、プレゼンテーションの形態に限定され、より詳細なビデオプレゼンテーションは、私のブログのアドレス(10次元局の探索)にもアクセスすることができます参照しました.

  総括する

  この詳細な分析によって、我々はMSCOMCTLので、原則と、この脆弱性の危険性を理解します.OCXは、動的ライブラリの基本である、アプリケーション?ソフトウェアより自然な効果、オフィスに加えて、全体のパッケージ、SQLおよび他のサードパーティ製アプリケーション、限り地元の図書館の脆弱性を使用することがあるので、悪用される可能性があります.同じ原理の方法及び物品の使用脆弱性と不可分であり、「異常」のテストデータの構造は抜け穴関数を通って流れなければならず、最終的にはプログラム自体の制限バイパスするために、制御プログラムをつかみます.

(例えば、CVE-2012から0158に)あなたはどのようにOfficeの脆弱性POCを構築するために教えました

Recommend Article: