web-dev-qa-db-ja.com

Reginは実行中のインスタンスをどのように非表示にしますか?

私は、ReginマルウェアのSymantec&KasperskyLabs分析を読んでいます。

ノートンライフロックによると

[ステージ2]は、ステージ1の実行中のインスタンスを非表示にすることもできます。これが発生すると、はっきりと見えるコードアーティファクトは残りません。

私が理解しているように、ステージ1はWindowsドライバーとして実装されており、再起動せずにWindowsドライバーをアンロードする安全な方法はありません(たとえそうだとしても、ステージ2自体も別のカーネルドライバーです)。

同様に、私が知る限り、実行中のカーネルドライバーのリストを傍受して操作する方法はありません(また、合法的にあるべきではありません)。ルートキットがファイルシステム上のファイルに対して行う方法です。

では、ステージ2はステージ1の実行中のインスタンスをどのように非表示にするのでしょうか。このオンラインに関する情報はほとんどないようですか?

出典: http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/regin-analysis.pdf -9ページ

3
jammmie999

私はカーネルハッカーではありませんが、私が読んだところによると、この手法はユーザースペースの関数フックに似ています。

前提

  • ユーザースペースコードは、システムコールを介してカーネルと対話します。
  • カーネルの状態に関する情報を明らかにするシステムコールがあります。 g。 fロードされたカーネルモジュールのリストを返します。
  • カーネルは、システムコールのテーブルtとメモリ内のそれらの実装の場所を管理します。
  • カーネルモジュール(別名「ドライバー」)mは、ロードされるとカーネルの一部になり、カーネルがアクセスできるすべてのものに完全にアクセスできるようになります。

ステップ

  1. m何らかの方法でカーネルにロード/注入されます。これで、インフラストラクチャの一部に接続するなど、OSに対して必要なことをすべて実行できます。

  2. mエントリを置き換えますtf関数への参照を保持するf、これはmの存在を明らかにするのに役立ちます。その代わりにm同様の関数への参照を配置しますf 'tf、これはmの一部であり、fを使用しますが、結果をフィルタリングおよび/または変換して、mのトレースを非表示にします。

  3. ユーザースペースプログラムが疑わしいカーネルモジュールを探しており、fを呼び出したいと考えています。システムコールを受信した後、カーネルはルックアップしますtf、それは期待するのでtffへの参照を保持します。代わりに、f 'を見つけて呼び出します。したがって、ユーザースペースプログラムはmによって制御される結果を受け取ります。

3
David Foerster