サイト内の現在位置

トレーニングプラットフォーム「CyberDefenders」のご紹介

NECセキュリティブログ

2021年11月19日

NECサイバーセキュリティ戦略本部セキュリティ技術センターのmuu(ハンドルネーム)です。本記事では、セキュリティ演習において守る側の役割を果たすBlueTeam用のトレーニングプラットフォーム「CyberDefenders」[new window1]と、その中から学習用コンテンツを1つ取り上げてご紹介します。

CyberDefendersとは

CyberDefendersとは、サイバーセキュリティの防御側に焦点を当て、フォレンジックやログ解析などを学ぶことができるトレーニングプラットフォームです。

CyberDefendersには、専門的なトレーニングを受けることができる「Course」と、実践的な演習問題を解くことができる「Challenge」の2種類の学習方法が用意されています。
Courseには開発、フォレンジック、マルウェア分析などについて学ぶことができる学習シナリオが用意されており、一部有償となっています。
Challengeには攻撃調査、フォレンジック、PCAP分析などを学習するための様々な問題が用意されており、全て無償で問題を解くことが可能です。各Challengeには問題シナリオと複数の質問(Question)が用意されており、質問を解き進めていくことで問題の全貌が見えるようになっています。
今回は無償で学ぶことができるChallengeの中から一問ご紹介します。

Challenge – Hammered

今回はログ解析に関するChallenge「Hammered」を解いていきます。
以下が今回のChallengeの問題シナリオです。

This challenge takes you into the world of virtual systems and confusing log data. In this challenge, figure out what happened to this webserver honeypot using the logs from a possibly compromised server.

侵害された可能性のあるサーバーのログを解析していく問題となっています。なお、Challengeの各Questionにはヒントが掲載されていますので、問題に躓いたときはそちらを参考に学習を進めることも可能です。また、ヒントを確認するごとに減点となりますので注意が必要です。

今回はログ解析用のツールは使わず、コマンドのみで問題を解いていきたいと思います。

0. ログ解析準備

与えられたzipファイルを解凍します。

ファイル名やディレクトリから、Linuxの/var/log配下に出力されるログであると考えられます。
問題を解き進める上で、それぞれのログの役割を確認します。

表1. ログの種類と役割
ディレクトリ ファイル名 ログ内容
Apache2 www-access.log 通常のHTTPリクエスト
www-error.log エラーに関する情報
www-media.log 画像やJavaScript、フォントなど
apt term.log aptコマンドの内容
  auth.log ログイン履歴など認証に関する情報
daemon.log デーモンが出力した情報
debug デバッグ情報
dmesg 起動時にカーネルから出力されるメッセージ
dmesg.0 起動時にカーネルから出力されるメッセージ
dpkg.log dpkgコマンドの内容
fontconfig.log fontconfigに関する情報
fsck checkfs checkfs.shのログ
checkroot checkroot.shのログ
  kern.log カーネルより出力されるメッセージ情報
messages システムログ情報
  secure セキュリティ関連の情報
udev デバイス周りの情報
user.log ユーザープロセスが出力

調査対象のログの大きさをwcコマンドで確認していくと、auth.logが102164行と多いことがわかります。簡単にログを確認する際は、重複している内容を削除しログの量を減らしていくこともあります。試しにいくつかの方法でログを整理してみたいと思います。

① 一意の行の抽出

auth.logの中身を確認すると、タイムスタンプの後にユーザーが使用したサービスとその詳細情報が記載されています。

今回はタイムスタンプとコマンド番号を除いた一意の行を抽出してみたいと思います。cutコマンドでタイムスタンプ部分を切り出し、sedコマンドでコマンド番号部分を置き換えます。その後、sort、uniqマンドで重複した行を削除し昇順に並べ替えます。

一意の行を抽出することができ、ログの行数は102,164行から26,516行に減らすことができました。これで少しログを確認しやすくなりました。

② サービスの抽出

さらに確認する行を減らすために、出力されたサービスのみを抽出してみたいと思います。

このように、重複部分を削除してログの数を減らすことで、調査を始める前に簡単にログを確認することが可能となります。

1. 事前準備

Questionを解き進める前に事前調査としてどのようなログが出力されているかを確認し、攻撃の概要を確認したいと思います。

① 認証失敗の確認(auth.log)

問題シナリオから何かしらの攻撃が行われたログであるということが判明しているので、auth.logで認証が失敗している箇所がないかを確認してみます。「password」で検索をかけると、「Failed password」が大量に出力されていることがわかりました。

「Failed password」が出力されているログを確認していきます。

4月19日の4時32分からFailed passwordが大量に発生し始めたことから、総当たり攻撃によるログイン試行が行われたと推測できます。

次に、0.ログ解析準備の①の方法で、4月19日のログを確認してみます。

存在しないユーザーでログイン(check pass; user unknown)を試みたり、rootへのログイン(authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.150.161.20 user=root)を大量に試みたりしていることがわかります。

② 認証成功の確認(auth.log)

総当たり攻撃が成功しているのかを確認していきます。総当たり攻撃が開始されたと考えられる4月19日以降から、ログイン成功を示す「Accepted password」が出力されているログを確認します。

219.150.161.20がrootでログイン成功していることがわかりました。

③ 設定の変更、ツールのインストール(auth.log、daemon.log)

攻撃者がシステムにログインした後、設定の変更や攻撃に使用するツールのインストールを行っているか確認していきます。

  • 新しいユーザーの作成有無の確認(auth.log)

攻撃者がrootでアクセスした可能性のある4月19日にUID=0(rootユーザ),GID=0(rootグループ)でアカウントpacketが作成されています。その後にもdhg、messagebus、fido、wind3str0yが作成されていることがわかります。

  • ツールのインストール有無の確認(dpkg.log、auth.log)

4月19日以降dpkgコマンドで様々なツールをインストールしていることが確認できます。

  • FireWallの設定変更の有無の確認(auth.log)

攻撃者は外部と通信を行うためにFireWallの設定も書き換えることが考えられるため、ufwコマンドやiptablesコマンドを使用しているか確認してみます。4月19日以降、FireWallの設定を書き換えて、sshDNSなどを有効にしていることがわかります。

④ Apacheのアクセスログの確認(www-accesslog)

  • 不審なUserAgentの有無の確認

普段利用しないブラウザや見覚えのないUserAgentなど、不審な点はないかを確認します。

IRC プロキシスキャナ「pxyscand」で、72.51.18.254:6677に対しCONNECTメソッドを使用した通信を行っていることが確認できます。

ここまでの調査から、今回の攻撃の概要として以下の内容を推測・確認することができます。

  • 2010/04/19から総当り攻撃を受ける
  • 同日、攻撃者はrootアカウントによるログインに成功する
  • 同日以降、大量のツールのインストール、新たなユーザーの追加、FireWallの設定変更が行われる
  • 2010/04/20以降、72.51.18.254:6677に対しプロキシスキャナを使用したアクセスが行われる

2. Question

ではQuestionsの問題を解いていきたいと思います。

#1 Which service did the attackers use to gain access to the system?
(攻撃者がシステムにアクセスするために使用したサービスはどれですか?)

  • 0.
    事前準備の②より、auth.logに出力されているサービスの中でログインに関連しているものはsshd、loginの2つです。

auth.logよりsshdを利用して総当たり攻撃を行なっていることがわかります。

答え:ssh

#2 What is the operating system version of the targeted system? (one word)
(対象システムのOSのバージョンは何ですか?)

dmesgを確認し、OS関連の情報が出力されているか探します。dmesgはLinuxがブート開始直後からファイルシステムがマウントされるまでのログが保存されています。

答え:Ubuntu 4.2.4-1ubuntu3

#3 What is the name of the compromised account?
(漏洩したアカウントの名前は何ですか?)

1.事前準備の②より、攻撃者がrootでアクセスしていることが判明しています。

答え:root

#4 Consider that each unique IP represents a different attacker. How many attackers were able to get access to the system?
(それぞれのIPアドレスが異なる攻撃者を表すとした場合、何人の攻撃者がシステムにアクセスできましたか? )

rootで接続成功できたIPアドレスを確認するために「Accepted password for root」を検索し、アクセス元のIPアドレスを昇順で並べます。

合計で18IPアドレスからrootで接続成功していることがわかりました。

この中から攻撃者のIPアドレスを識別します。今回のシステムには総当たり攻撃が行われているので、今回は複数回接続失敗しているものを攻撃者のIPアドレスとして数えていきます。sshでの接続失敗を示す「authentication failure」を検索し、接続失敗している接続元を昇順で並べます。

何度も接続失敗しており、かつ接続成功しているIPアドレスは219.150.161.20、222.66.204.246、121.11.66.70、222.169.224.197 、122.226.202.12、61.168.227.12 の6つになります。
答え:6

#5 Which attacker's IP address successfully logged into the system the most number of times?
(どの攻撃者のIPアドレスが最も多くシステムに正常にログインしましたか?)

#4で確認したように、「Accepted password for root」を検索し、rootで接続成功できたアクセス元のIPアドレスを昇順で並べます。

答え:219.150.161.20

#6 How many requests were sent to the Apache Server?
(Apacheサーバーに送信されたリクエストの数はいくつですか?)

リクエスト数なのでapacheのアクセスログ数を確認します。

答え:365

#7 How many rules have been added to the firewall?
(ファイアウォールにいくつのルールが追加されましたか?)

Linuxでファイアウォールの設定を行う際はiptablesを使用するので、「iptables」で検索してみます。

Iptables -A INPUT などファイアウォールの設定変更に関するコマンドが出力されているログを6つ確認することができます。
答え:6

#8 One of the downloaded files to the target system is a scanning tool. Provide the tool name.
(ターゲットシステムにダウンロードされたファイルの1つは、スキャンツールです。ツール名を入力してください。)

パッケージのインストールや削除など、パッケージ操作時の情報が出力されるdpkg.logを確認していきます。ダウンロードされたツール名を探すために、「status installed」で検索してみます。

nmapがインストールされていることが確認できました。
答え:nmap

#9 When was the last login from the attacker with IP 219.150.161.20? Format: MM/DD/YYYY HH:MM:SS AM
(攻撃者からIPアドレス219.150.161.20で最後にログインしたのはいつですか。フォーマット:MM / DD / YYYY HH:MM:SS AM)

auth.logから最後にログインしたのはApr 19 05:56:05であるということがわかりました。
答えには何年かまで求められているため、statコマンドでログが生成された年を確認します。

2010年に作成されたことが確認できました。
答え:04/19/2010 05:56:05 AM

#10 The database displayed two warning messages, provide the most important and dangerous one.
(データベースは2つの警告メッセージを表示しました、最も重要で危険なものを提供入力してください。)

daemon.logを確認し警告メッセージを確認していきます。

mysql.userにはパスワードのない2つのrootアカウントが含まれているとの警告メッセージが出力されていることが確認できます。
答え:mysql.user contains 2 root accounts without password!

#11 Multiple accounts were created on the target system. Which one was created on Apr 26 04:43:15?
(ターゲットシステムに複数のアカウントが作成されました。4月26日04:43:15に作成されたのはどれですか?)

auth.logの中で「Apr 26 04:43:15」で検索してみます。

「ner user」と出力されていることから、新たなアカウントが作成されていることが確認できます。
答え:wind3str0y

#12 Few attackers were using a proxy to run their scans. What is the corresponding user-agent used by this proxy?
(スキャンを実行するためにプロキシを使用している攻撃者はほとんどいませんでした。このプロキシで使用されるユーザーエージェントは何ですか?)

  • 1.
    事前準備の④より、Apache2のアクセスログからUserAgentの出現回数をカウントし確認すると、IRC プロキシスキャナ「pxyscand」から通信を行っていることが確認できます。

答え:pxyscand/2.1

3. まとめ

以上の調査から、今回のQuestionsで問われたインシデントは以下のような流れで発生したものであると推測ができます。

表2. インシデントのタイムライン
日付 内容 ログ
2010-04-19 04:32:59 総当たり攻撃開始(203.81.226.86)
以降他のIPアドレスからも攻撃
auth.log
2010-04-19 05:41:44 攻撃者がrootに接続成功(219.150.161.20)
以降他のIPアドレス(222.66.204.246、121.11.66.70、222.169.224.197 、122.226.202.12、61.168.227.12)からも接続
auth.log
2010-04-19 12:00:17 大量のパッケージのインストール dpkg.log
2010-04-19 22:38:06 新たなユーザー作成 auth.log
2010-04-20 00:00:01 72.51.18.254:6677に対しプロキシスキャナを使用した不審なアクセス
以降2度アクセス
www-access.log
2010-04-20 06:51:38 Firewallの設定変更 auth.log

終わりに

本記事ではBlueTeamのスキル向上に役立つ学習用コンテンツCyberDefendersを紹介しました。CyberDefendersは問題ごとに進め方が明示されています。また、攻略難易度も比較的容易です。他にもフォレンジックからマルウェア解析まで様々なジャンルの問題が用意されていますので、ご興味のある方は、ぜひ挑戦してみてください

参考文献

執筆者プロフィール

muu(ムー)※ハンドルネーム
セキュリティ技術センター リスクハンティングチーム

ペネトレーションテスト・脆弱性診断を通じて、NECグループのセキュア開発・運用を推進。

執筆者の他の記事を読む

アクセスランキング