GNU/Linux >> Linux の 問題 >  >> Linux

侵害されたサーバーを調査する

この記事では、侵害されたサーバーの分析を実行するために使用できるツールを一覧表示します。 (侵害されたサーバーのクリーニングはその範囲外です。)これらのツールを使用すると、次の情報を特定するのに役立ちます。

  • エントリポイント
  • 攻撃の起源
  • どのファイルが危険にさらされているか
  • 攻撃者が取得したアクセスのレベル
  • 攻撃者の足跡の監査証跡

さまざまな種類の侵害がUnix®サーバーを悪用する可能性があります。攻撃者は、サーバーが通常のパッチスケジュールにないことを期待して、ブルートフォース攻撃を開始したり、弱いパスワードを推測したり、既知のソフトウェアの脆弱性を使用しようとしたりする可能性があります。マシンがどのように侵害されたかを理解して、侵害されたマシンがアクセスできるサーバーやその他のホストへの被害の程度を判断することが重要です。

ほとんどのルートレベルの侵害では、最も簡単な回復アプローチは、サーバーのクリーンインストールを実行し、バックアップから重要なデータを復元することです。ただし、セキュリティホールを適切に閉じるには、侵害を理解する必要があるため、侵害のエントリポイントがわかるまで、この手順では不十分な場合があります。

攻撃を文書化する

管理下にあるシステムが危険にさらされている可能性があることが通知されたら、次の項目を含め、レポーターからできるだけ多くの情報を入手するようにしてください。

  • 最初の問題がどのように発見されたか
  • 侵害が発生した推定時間
  • 侵害が検出された後にサーバーが変更されたかどうか
  • レポーターが重要だと言っていることは何でも

重要 :法執行機関を関与させることを計画している場合は、サーバー上で追加のアクションを実行しないことが不可欠です。証拠収集のために、サーバーは現在の状態を維持する必要があります。

調査を続行することを選択した場合は、サーバー上で見つけたものをすべて文書化します。この手順は、コマンドとその結果をコピーして貼り付けるのと同じくらい簡単です。

調査ツール

一部の侵害では、攻撃者はすべての重要なログファイルを削除してトラックを非表示にすることができます。ただし、これは常に発生するとは限りません。その結果、ログファイルには、攻撃者がサーバーに対して行ったことに関する貴重な手がかりが含まれています。ログファイルは、攻撃が基本的なWebハッキングなのかルートレベルの侵害なのかを判断するのにも役立つ場合があります。このセクションのコマンドを使用して、妥協の範囲を解明するのに役立つ手がかりを見つけてください。

最後のコマンド

last コマンドは、システムに最近ログインしたユーザーのセッションを一覧表示します。その出力にはタイムスタンプとホスト名が含まれ、ユーザーがまだログインしているかどうかを示します。出力に奇数のインターネットプロトコル(IP)アドレスが表示される場合は、でブルートフォースセキュアシェル(SSH)攻撃に対して相互参照できます。 / var / log / messages または/var / log / secure ディレクトリ。このステップは、攻撃者がエントリを取得した方法、アクセスを取得するために使用したユーザー名、および特権を rootにエスカレートできたかどうかを示している可能性があります。 。

ls-lartコマンド

ls -lart コマンドは、侵害が発生したときに関連付けることができるファイルとディレクトリの時系列リストを出力します。この出力は、攻撃がシステムに追加またはシステムから削除したものを判別するのに役立ちます。

netstat-naコマンド

netstat -na コマンドは、マシン上の現在のリスニングソケットを表示します。このコマンドを実行すると、リスニングしているバックドアまたは実行中の誤ったサービスが表示される場合があります。

ps-wauxefコマンド

このコマンドは、リッスンしている誤ったプロセスを追跡し、他の奇妙なプロセスを表示するのに役立ちます(たとえば、ユーザー www Bashプロセスを実行します)。コマンド lsof | grep を実行することもできます。 プロセスが使用している開いているファイルに関する詳細情報を検索します。同時に、 cat / proc / / cmdlineを実行します プロセスを制御するファイルがどこに存在するかも教えてくれるかもしれません。

bash_historyコマンド

履歴ファイルは、妥協したものを追跡するためのロゼッタストーンであることがよくあります。 bash_historyを使用する ユーザーの.bash_historyを調べるコマンド 多くの場合、ファイルには、実行したコマンド、ダウンロードした悪意のあるプログラム、およびフォーカスしたディレクトリが正確に示されます。

トップコマンド

悪意のあるプロセスは、環境内で中央処理装置(CPU)の競合の問題を引き起こすことが多いため、プロセスのリストの一番上に表示されます。 topを使用する このリストを表示するコマンド。妥協点を追跡するときは、CPU競合の問題を疑わしいものにするプロセスを考慮してください。

straceコマンド

strace -p pidを実行すると 疑わしいプロセス、 straceに対するコマンド コマンドは、プロセスが何をしているかについての重要な洞察をもたらす可能性があります。

その他のツール

上記のコマンドは、攻撃中に何が起こったかに関する多くの手がかりを提供しない可能性があります。その場合は、より専門的なツールを使用できます。

重要 :このセクションのツールを使用する前に、調査に使用しているバイナリがトロイの木馬バージョンではないことを確認する必要があります。トロイの木馬バージョンは、侵害が何を達成しようとしていたかを明らかにする可能性のある情報を省略するなど、攻撃者に代わってタスクを実行できます。

次のコマンドを実行して、適切に機能するツールのセットがあることを確認します。

rpm -Va

パッケージを検証すると、パッケージにインストールされているファイルに関する情報が、RPM Package Manager(RPM)データベースに保存されているパッケージのメタデータと比較されます。検証では、各ファイルに関連付けられているサイズ、MD5合計、権限、タイプ、所有者、およびグループに関する情報を比較します。出力には不一致が表示されます。

重要 :次のディレクトリでフラグが立てられたパッケージは、バイナリのトロイの木馬バージョンを使用していることを示している可能性があるため、その出力を信頼できません:

  • / bin
  • / sbin
  • / usr / bin
  • / usr / sbin

次の例は、トロイの木馬化されたファイルを示しています。

S.5….T /bin/login

rpm-qaコマンド

コマンドrpm-qaを使用できます 最近インストールされたパッケージを時系列で表示します。ただし、ルートが侵害された場合、rpmデータベースも侵害される可能性があります。

lsattrコマンド

攻撃者がrootアクセスを取得し、特定のバイナリをトロイの木馬にすると、それらのバイナリが不変になり、クリーンなバージョンのバイナリを再インストールできなくなる可能性があります。次のディレクトリを確認してください:

  • / bin
  • / sbin
  • / usr / bin
  • / usr / sbin

次の例は、攻撃者が不変にしたファイルを示しています。

-------i----- /bin/ps
Under normal circumstances in these directories, the rules should all look similar to:

------------- /bin/ps
コマンドの検索

find は、最近変更されたファイルを見つけるのに重要なUnixツールです。たとえば、次のコマンドを実行すると、過去5日以内に変更されたファイルを見つけることができます。

find / -mtime 5

Webエクスプロイトの共通ディレクトリ

Apache®が一般的に一時ファイルを書き込む次の誰でも書き込み可能なディレクトリを確認してください。

  • ls -al / tmp
  • ls -al / var / tmp
  • ls -al / dev / shm

見覚えのないファイルや疑わしいファイルを探します。隠しファイルと実行権限を持つファイルに注意してください。

Webサイトのディレクトリのアクセス許可を777に設定している場合は、それらも確認してください。

エントリのポイントを見つける

前のセクションのツールを使用して役立つ情報を見つけた場合は、ハッカーが悪意のあるファイルをサーバーにインストールしたときのタイムスタンプもある可能性があります。

そのタイムスタンプを使用して、その期間中に追加された疑わしいエントリについてWebサイトのアクセスログを確認できます。疑わしいものを見つけた場合は、それを悪意のあるファイルの場所と相互参照して、エントリのポイントを絞り込むことができます。

侵害のほとんどはWebサイト内の悪用可能なコードに起因しますが、他のエントリポイントを除外することはできません。必ず/var / log / *を確認してください 報告された期間中に疑わしいと思われるものについて。

調査例

このセクションの調査例は、疑わしいルートレベルの侵害を調査するときに使用する必要があるプロセスを示しています。

攻撃の種類を特定する

それが基本的なWebハッキングであったかどうか、または攻撃者が実際にroot権限を取得したかどうかを確認します。ほとんどの場合、攻撃は安全に駆除できる単純なWebハッキングです。

  1. 次のコマンドを実行して、攻撃者がroot権限を取得したかどうかを確認します。

    lsattr / usr / sbin |少ない

    lsattr / usr / bin |少ない

    lsattr / bin |少ない

    lsattr / sbin |少ない

  2. 不変に設定されているバイナリなど、変更された属性を探します。

    出力:

     s---ia------- /sbin/shs
    

    文字列を使用する場合 そのファイルにコマンドを実行すると、それがバックドアシェルであることがわかります。

攻撃者がトラックをクリーンアップしたかどうかを確認します

多くの場合、攻撃者は経験が浅いまたはずさんで、トラックを消去していません。次の手順を使用して、攻撃者が手がかりを残していないかどうかを確認します。

  1. / etc / passwd内のすべてのユーザーアカウントを確認します 次のコマンドを実行して、有効なシェルを作成します。

    cat /home/$USER/.bash_history

  2. 次のコマンドを実行して、rootユーザーの履歴を取得します。

    歴史

    cat /root/.bash_history

この例では、 /root/.bash_historyからの出力 コマンドは、攻撃者がサーバー上で次のアクションを実行したことを明らかにします。

  • / var / www / html / *のApache®を介して提供する悪意のあるツールをダウンロードしました 。
  • インターネットリレーチャット(IRC)ツールおよびその他のツールを /var/tmp/.ICE-unixにインストールしました 。
  • 誰かがサーバーからsthemを削除した場合に、悪意のあるツールを再ダウンロードするようにルートcrontabを変更しました( * * * * * /var/tmp/.ICE-unix/update> / dev / null 2>&1
基本的なWebハックを確認する

これまでのところ、この攻撃はおそらく、サーバーをフォーマットせずに簡単に駆除できる単純なWebハックであると判断しています。

ただし、この例では、攻撃者がroot権限を取得したことがわかります。また、 phpMyAdminを悪用した可能性もあります 。バックドアPHPシェルがロードされた後、攻撃者はローカルルートエクスプロイトを実行して特権をエスカレートすることができました。

  1. 次のコマンドを実行して、Apacheが通常 tmpを書き込む世界で読み取り可能なディレクトリ内の隠しファイルとディレクトリを検索します。 ファイル:

    ls -al / var / tmp | less

    ls -al / tmp

    ls -al / dev / shm

  2. この例では、コマンドは次の出力を返します。

    drwx-3 70 70 4096 Nov 19 02:00 /var/tmp/.ICE-unix

  3. ここでアイテムを見つけた場合は、エントリポイントを追跡して、サイトを削除したり、サイトコードをアップグレードしたり、悪用可能なコードを修正したりできるようにする必要があります。ステップ5は、このタスクを実行するための簡単な方法を示しています。ただし、 ps -wauxの出力の場合 コマンドはIRCボットが実行されていることを示し、 lsof を使用して、プロセスが実行されている場所をキャッチしようとします。 コマンドまたはps-wauxxef | grep

着信接続をリッスンしているプロセス識別子を探します
  1. 次のコマンドを実行して、着信接続をリッスンしているプロセス識別子(PID)を探します。
  • netstat -natp :奇数ポートで実行されている疑わしい接続を探します

  • ps -wauxxef bashなどの疑わしいファイルを探します wwwの下で実行 コンテキスト

  • lsof :PIDがどこから実行されているかを判断するのに役立ちます

    次の例のように出力が表示されます。

      tcp 0 0 0.0.0.0:1144 0.0.0.0:* LISTEN 1008/bash
    
      tcp 0 1 172.16.23.13:60968 22.22.22.22:7000 SYN_SENT 6860/sshd
    

    この例では、次の例に示すように、SSHで確立された他のいくつかの接続も高レベルのポートから実行されています。

      [root@www tmp]# netstat -natp |grep sshd |awk '{print $4,$5,$6,$7}'
    
      0.0.0.0:22 0.0.0.0:* LISTEN 1046/sshd
    
      172.16.23.13:60986 22.22.22.22:6667 SYN_SENT 6860/sshd
    
      123.123.123.123:22 22.22.22.22:59361 ESTABLISHED 22795/sshd
    
      123.123.123.123:22 22.22.22.22:57434 ESTABLISHED 22796/sshd
    
      123.123.123.123:57139 143.143.143.143:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57402 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:22 143.143.143.143:49238 ESTABLISHED 8860/sshd
    
      123.123.123.123:57134 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:56845 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57127 143.143.143.143:6667 ESTABLISHED 6860/sshd
    

    この出力は、攻撃者がまだこのマシンに接続していることを示しています。ただし、攻撃者がバイナリを変更して自分自身を隠すため、攻撃者を見ることができません。

元の妥協点のエントリポイントを決定します

次の手順を使用して、元の侵害のエントリポイントを決定します。

  1. / var / log / [messages | secure]を確認してください ブルートフォースSSHの試みの場合。

  2. Apacheアクセスログとエラーログを確認してください。この手順は、悪用可能なサイトを特定するのに役立つ場合があります。

    また、ログから発生した可能性があると思われる場合は、ログに対してIPを相互参照する必要があります。これは、原点を追跡するための迅速で簡単な方法です。

    次のコマンドを使用して、多数のWebログがあるサーバーをすばやく確認できます。

    cd /var/log/httpd
    
    for i in `ls * |grep access`; do echo $i && grep wget $i; done
    
    for i in `ls * |grep access`; do echo $i && grep curl $i; done
    

    :この例では、 wgetを検索します wget エントリポイントの一部であった可能性のあるルートの履歴ファイルにありました。

結果

この例では、調査の結果、攻撃者が phpMyAdminを悪用したことが明らかになりました。 / var / www / htmlへのインストール ディレクトリ、おそらく phpMyAdminのバージョンが原因です サーバーにインストールされているものはひどく時代遅れでした。 phpMyAdminにパッチを適用する 定期的なスケジュールでこの状況が発生するのを防ぎます。


Linux
  1. LocateをFedoraサーバーにインストールする方法

  2. WindowsServerの稼働時間を確認する

  3. クラウドサーバーに関するFAQ

  1. OnMetalクラウドサーバーを作成する

  2. ApacheサーバーでHTTP圧縮を無効にする

  3. サーバーが正常に再起動することを確認します

  1. 侵害されたWindowsサーバーを調査する

  2. OnMetalクラウドサーバーの概要

  3. その他のクラウドサーバーの使用シナリオ