LoadLibrary、Windows DLL を Linux アプリケーションにロードするためのレイヤー

テイビス・オーマンディ (テイビス・オーマンディ)、プロジェクトを開発している Google のセキュリティ研究者 LoadLibrary、Windows 用にコンパイルされた DLL を Linux アプリケーションで使用できるように移植することを目的としています。 このプロジェクトは、PE/COFF 形式の DLL ファイルをロードし、その中で定義されている関数を呼び出すことができるレイヤー ライブラリを提供します。 PE/COFF ブートローダーはコードに基づいています nディスラッパー。 プロジェクトコード によって配布 GPLv2に基づいてライセンスされています。

LoadLibrary は、ライブラリのメモリへのロードと既存のシンボルのインポートを処理し、Linux アプリケーションに dlopen スタイルの API を提供します。 プラグイン コードは、gdb、ASAN、および Valgrind を使用してデバッグできます。 フックを接続してパッチを適用することで、実行コードを実行中に調整することができます(ランタイムパッチ)。 C++ の例外処理とアンワインドをサポートします。

プロジェクトの目標は、Linux ベースの環境で DLL ライブラリのスケーラブルで効率的な分散ファジング テストを組織することです。 Windows では、ファジングとカバレッジのテストはあまり効率的ではなく、特にカーネルとユーザー空間にまたがるウイルス対策ソフトウェアなどの複雑な製品を分析しようとする場合、Windows の別の仮想化インスタンスを実行する必要があることがよくあります。 Google の研究者は、LoadLibrary を使用して、ビデオ コーデック、ウイルス スキャナ、データ解凍ライブラリ、画像デコーダなどの脆弱性を検索しています。

たとえば、LoadLibrary の助けを借りて、Windows Defender ウイルス対策エンジンを Linux 上で実行できるように移植することができました。 Windows Defender の基礎を形成する mpengine.dll の研究により、さまざまな形式に対応する多数の高度なプロセッサ、ファイル システム エミュレータ、および Windows Defender にベクトルを提供する可能性のある言語インタープリタを分析することが可能になりました。 可能な 攻撃.

LoadLibrary は識別にも使用されました。 リモートの脆弱性 アバスト アンチウイルス パッケージに含まれています。 このウイルス対策ソフトウェアの DLL を調査したところ、主要な特権スキャン プロセスに、サードパーティの JavaScript コードの実行をエミュレートするために使用される本格的な JavaScript インタプリタが含まれていることが判明しました。 このプロセスはサンドボックス環境で分離されず、権限をリセットせず、ファイル システムからの未検証の外部データや傍受されたネットワーク トラフィックを分析します。 この複雑で保護されていないプロセスに脆弱性があると、リモートからシステム全体が侵害される可能性があるため、LoadLibrary に基づいて特別なシェルが開発されました。 avscript Linux ベースの環境でアバスト ウイルス対策スキャナーの脆弱性を分析します。

出所: オープンネット.ru

コメントを追加します