特定のシステムのすべての脆弱性を見つけようとしています。
悪意のあるユーザーが実行可能ファイル(.exe
ファイル).NETアプリケーション(C#)の悪意のあるDLL彼または彼女が作成したものです。DLLを実行ファイルに挿入して実行できますDLLに含まれるコード?
Dllインジェクションに関する ウィキペディアの記事 は、さまざまな手法の要約をうまく行っています。
要約する:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
の下にdllをリストすると、user32.dllにリンクするすべての(新しい)プロセスにロードされます(つまり、ほぼすべてのユーザーモードプロセス)。はい、それを行うにはいくつかの可能性があり、攻撃の非常に大きな部分はDLLフッキングに基づいています。
そして、これは原因でもあります。なぜ、より新しい、より新しいバージョンのWindowsには、通常、dllの処理に関するより厳格で厳格なポリシーが含まれているのですか。
主な目的はfake dllを構築することです。これは、一部のAPI呼び出しを元のdllでラップするだけで、他のことも行います。攻撃者の目標は、そのような場合、元のバージョンに対して、クラックされるアプリケーションによって偽のdllをロードできるようにすることです。
このソリューションの代替手段は、元のDLLが何らかのタイプのバイナリハックを取得した場合です。難しいです。
フックされたdllの内部動作は次のとおりです。
dllopen()
呼び出しで元の変更されていないdllも開き、その中のapi呼び出しのアドレスも見つけますフックされたdllをアプリに挿入するにはどうすればよいですか?
最も一般的な解決策は、フックされるexeが存在するのと同じディレクトリにこれを置くことだけです。実行可能ファイルを開始すると、Windowsは常に同じディレクトリでそのDLLを最初に探します。これは、ほとんどのソフトウェアコピー保護/アクティベーションクラックによって行われます。
2番目の可能性は、ラッパーDLLをPATHのどこかに、ただしC:\windows\...
の前に置くことです。 DLLは、実行可能ファイルとしても、PATHで検索されます。
3番目の可能性は、デバッガー、または本来デバッグ用のWindows APIを使用することです。それを使用して、実行中のexeのdll開始コードを操作できます。それも本当に便利ですが、それも難しいです。