web-dev-qa-db-ja.com

ルートキットを防止するためにシステムコール番号をランダム化しますか?

最初に単純なウイルスがコンピュータに感染することによってコンピュータに感染するルートキットについて聞いたことがあります。ターゲットコンピュータの仕様を含む「コマンド」コンピュータを呼び出します。
仕様では、コマンドコンピューターはルートキットのコンパイルを開始し、ターゲットコンピューターに感染させるか、ターゲットコンピューターのコンパイル済みバージョンを配布します。
これは、さまざまなプラットフォームをサポートするLinuxマシンのニュアンスを回避する効果的な方法のようです。

ただし、ターゲットマシンのシステムコール番号などが標準のシステムコール番号と異なる場合、インストール時にランダム化された場合はどうなりますか?

これにより、コマンドコンピューターが機能するルートキット/ウイルスを送信できなくなりますか?

システムコール番号を指定/割り当てできますか? (これは、独自のカーネルを変更してコンパイルすることで可能だと思いますか?)

4
Expanding-Dev

これにより、システムコールフッキングを目的とした一部の自動化攻撃が阻止される可能性がありますが、ルートキットをインストールするアクセス権を持つユーザーは、システム上の共通バイナリを逆アセンブルして「ランダム化」システムコールを特定したり、独自のカスタマイズ環境を使用してコードをコンパイルしたりできます。 System.mapなどを使用せずに関数がカーネルメモリ内のどこにあるかを判別するためのさまざまな手法もあります。

さらに、すべてのルートキットがsyscallテーブル/ SSDTフックに依存しているわけではありません。だから基本的には違います。これは効果的な緩和策ではないため、変更を加える際の障害となる可能性があります。

3
movsx

それは非常に破壊的なことになるでしょう。システムでバイナリを実行することはできず、すべてを最初からコンパイルする必要があります。コンパイラを含みます。

あいまいさによるセキュリティはほとんど機能しません。

4
ndrix