以前、よく知られている2つの一般的なセキュリティスキャナーrkhunterとCentOSについて書きました
「Habré」には、ウェブホスティング用のスキャナー-maldetの構成に関する説明もあります。 次に、OpenVZ Linux OS-Antidotoの脆弱性、ウイルス、およびボットネットのヒューリスティック検出のためのアプリケーションの実装を検討したいと思います。
イタリアの名前を持つこのオープンソースプロジェクトは、ロシア語の開発者Pavel Odintsov
pavelodintsovの発案によるものです。 これはオープンプロジェクトで、
githubにあります。 このスキャナーを作成する理由の1つは、他のスキャナーよりも明らかに目立つという事実だけでなく、稼働中のシステムのメモリーをスキャンして、実行中の悪意のあるソフトウェアを検出することです。
人気のあるすべての最新のLinuxディストリビューションでの宣言された作業:Centos 5-6、Debian 5-7、Ubuntu 10-14。 一般に、プロジェクトはperlで記述されているため、他のディストリビューションでも機能するはずです。
Antidoteの機能を検討してください。
- 公的にアクセス可能なディレクトリ(/ tmp、/ var / tmp)で、空でないファイルおよび奇妙な名前(スペース、ピリオド)のディレクトリを検索します。
- apache、www-dataユーザー(/ var / spoo / crontabs、/ var / spool / cron)の空でないスケジューラージョブファイルを検索します。
- 最近の承認に関する情報を含む欠落ファイルの通知(/ var / log / btmp、/ var / log / wtmp)
- 実行可能ファイルが見つからないプロセスを検索する
- md5ハッシュを使用したメモリ内の一般的なマルウェアの検出
- udp / tcpポート(irc、プロキシ、ボットネットコントローラー)を使用した疑わしいソフトウェアの検出
- スレッド数が異常なリモートサーバーへの接続の検出(5以降)
- サーバーで使用されるシステムとアーキテクチャが異なるプロセスの発見
- 静的にコンパイルされたファイル(すべての依存コンポーネントを含むバイナリ)から実行されるプロセスの検出
- SUID、SGIDビットを持つファイルから起動されたLD_PRELOADを使用して開始されたプロセスの検出
Antidotoは監査モードで起動できます。これは、複数のプログラム(netstat、lsof、ss、ps)の代替として一度に使用されます。 また、スキャンエンジンとしてインストールされたClamAVを使用することもできます。
Antidotoスキャナーのインストールと実行は非常に簡単です。実行するために追加の依存関係は必要ありません。 スキャナーファイルとそのモジュールは単にダウンロードされます。
wget -OAntidoto.pl --no-check-certificate https://raw.githubusercontent.com/pavel-odintsov/Antidoto/master/Antidoto.pl wget -OAntidoto.pm --no-check-certificate https://raw.githubusercontent.com/pavel-odintsov/Antidoto/master/Antidoto.pm perl Antidoto.pl
ファイルスキャンスキャナーに加えて、Antidotoに含まれているネットワークスキャナーがあります。
wget -OAntidoto.pm --no-check-certificate https://raw.githubusercontent.com/pavel-odintsov/Antidoto/master/Antidoto.pm wget -Olinux_network_activity_tracker.pl --no-check-certificate https://raw.githubusercontent.com/pavel-odintsov/Antidoto/master/linux_network_activity_tracker.pl perl linux_network_activity_tracker.pl
次に、多くのopenvzコンテナが配置されているCentOSを実行しているサーバーでAntidotoを実際に使用することを検討します。
最初のスクリプトも2番目のスクリプトも、起動時にパラメーターを使用しません。
ただし、Antidoto.plにはコード内に一連のパラメーターがあり、ネットワークアクティビティのチェックを調整できます。 ブール値が使用されるため、チューニングは特に難しくありません。
- compress_forks => 1、プロセスフォークを検出すると、1つのプロセスのみが表示される
- show_process_information => 1、見つかったプロセスに関する情報を表示
- show_open_files => 1、開いているアプリケーションファイルを報告する
次のブロックはTCP接続専用になります。
- show_tcp => 1、TCPに関連する情報を表示します
- show_whitelisted_listen_tcp => 1、ホワイトリストに登録されたソケットをリストにリストします
- show_listen_tcp => 1、TCP待機ソケットのリスト
- show_client_tcp => 1、TCPクライアントソケットのリスト
- show_local_tcp_connections => 1、ローカルTCP接続に関する情報を表示
最後のブロックは前のものと似ていますが、UDPに適用されます
- show_udp => 1、
- show_whitelisted_listen_udp => 1
- show_listen_udp => 1
- show_client_udp => 1、
- show_local_udp_connections => 1
親サーバーでスクリプトを実行すると、次のデータを受け取りました
ご覧のとおり、サーバーをチェックすると、485コンテナの一時ディレクトリで疑わしいファイルが検出され、実行中の3proxyプロセスのアーキテクチャが一致していません。
幸いなことに、サーバー上でマルウェアは検出されませんでした。
別のスクリプト-linux_network_activity_tracker.plに表示されるサーバー診断(監査)モードに移りましょう。
その利点は、netstat、lsof、ss、psという複数のユーティリティを一度に置き換え、検証の結果として情報の読み取り可能な出力を提供することです。 Antidotoのように、コンテナを使用して親サーバーでスクリプトを実行するだけです
受け取った情報からわかるように、監査スクリプトは、ポート6667(これはIRCに接続してボットを管理するための最も一般的なポート)へのコンテナー接続と、ポート9050への接続を待機しているアプリケーションで見つかりました。 さらに検討すると、ソックスプロキシであることが判明しました。
セキュリティおよび脆弱性スキャナーに関するその他の記事: