Vulnerability(脆弱性)についての基礎知識を学ぶためのルームです。

Task1 Introduction

TryHackMeの「Vulnerabilities 101」は、サイバーセキュリティの根幹である「脆弱性」を基礎から学ぶルームです。

Task 1では、脆弱性とは何か、なぜそれを学ぶ必要があるのかといった基本概念から、脆弱性の評価方法、さらには実務に不可欠なリサーチ用データベースの紹介まで、本ルームでカバーする全体像を提示しています。ペネトレーションテストにおいて、状況に応じた適切なリソースを使いこなすための基礎体力を養う導入部となっています。

Qustion

No answer needed

Task2 Introduction to Vulnerabilities

脆弱性とは、システムの設計・実装・運用における「弱点」や「欠陥」を指します。攻撃者はこれらを悪用(エクスプロイト)することで、本来許可されていない情報の閲覧や操作を行います。NIST(アメリカ国立標準技術研究所)による定義でも、情報システムやセキュリティ制御の不備が脅威によって引き起こされるものと説明されています。これらは、アプリケーションの設計ミスや、ユーザーの行動に対する想定不足など、多様な要因から生じます。

本タスクでは、脆弱性を以下の5つの主要カテゴリーに分類しています。

  1. OS: 特権昇格を招くオペレーティングシステム内の不備。
  2. (誤)設定: サービスの設定ミスにより、機密情報が露出するなどの問題。
  3. 脆弱な、またはデフォルトの認証情報: 初期設定(admin/adminなど)のまま放置された認証。
  4. アプリケーションロジック: 認証機能の設計ミスなど、プログラムの論理的な欠陥。
  5. ヒューマンファクター: フィッシング詐欺のように、人間の心理や行動の隙を突くもの。

ペネトレーションテストを行う上で、これら脆弱性の発見から悪用までのプロセスを熟知することは、最も基本的なスキルのひとつです。

Qustion

An attacker has been able to upgrade the permissions of their system account from “user” to “administrator”. What type of vulnerability is this?
攻撃者が、自身のシステムアカウントの権限を「ユーザー」から「管理者」に昇格させることに成功しました。これはどのような脆弱性でしょうか?

Answer


You manage to bypass a login panel using cookies to authenticate. What type of vulnerability is this?
Cookie を使用して認証を行うことで、ログイン画面を迂回することに成功しました。これはどのような脆弱性ですか?

Answer

Task3 Scoring Vulnerabilities (CVSS & VPR)

Task 3では、発見された脆弱性をどのように評価・管理すべきかという「脆弱性管理(Vulnerability Management)」のプロセスと、その評価指標であるスコアリングシステムについて解説されています。

ネットワーク上の全ての脆弱性を修正することは現実的に不可能であり、実際に悪用されるのは全体の約2%に過ぎません。そのため、限られたリソースを最も危険な脆弱性の対処に集中させる必要があります。その優先順位付けのために、以下の2つの主要なフレームワークが紹介されています。

CVSS(共通脆弱性評価システム)

2005年に導入された、最も普及しているオープンな評価基準です。脆弱性の攻撃難易度や、CIA(機密性・完全性・可用性)への影響に基づき、0から10のスコアで深刻度を分類します。広く普及している一方、あくまで「深刻度」を示すものであり、組織にとっての「修正の優先順位」を直接示すものではないという欠点があります。

VPR(Vulnerability Priority Rating)

Tenable社が開発した、より実戦的でリスク駆動型の新しい指標です。組織にとっての実際の「リスク」を重視し、150以上の要素(エクスプロイトの有無やその脆弱性の古さなど)を分析して動的にスコアを算出します。商用プラットフォームでのみ利用可能ですが、日々状況が変化するサイバー脅威に対し、より柔軟に優先順位を判断できるメリットがあります。

ペネトレーションテスターや管理者にとって、これらの指標の違いを理解し、どれを優先して対処すべきかを判断する能力は極めて重要です。

Qustion

What year was the first iteration of CVSS published?
CVSSの最初のバージョンが公開されたのはいつですか?

Answer


If you wanted to assess vulnerability based on the risk it poses to an organisation, what framework would you use? Note: We are looking for the acronym here.
組織に対するリスクに基づいて脆弱性を評価したい場合、どのようなフレームワークを使用しますか? 注:ここでは頭字語をお答えください。

Answer


If you wanted to use a framework that was free and open-source, what framework would that be?
Note: We are looking for the acronym here.
無料かつオープンソースのフレームワークを使いたいとしたら、どのフレームワークを選びますか?
注:ここでは頭文字の略称をお答えください。

Answer

Task4 Vulnerability Database

実務を進める上で混同しやすい3つの用語を整理しておきましょう。

  • 脆弱性(Vulnerability): システムや設計上の「弱点」。
  • エクスプロイト(Exploit): 脆弱性を利用して攻撃を行う「行為やコード」。
  • 概念実証(PoC): 脆弱性の悪用が可能であることを証明するための「技術やツール」。

これらを効率よく調査するために、以下の2つのデータベースがあります。

  • NVD(NVD (National Vulnerability Database)
  • Exploit-DB

NVD(米国公的脆弱性データベース)

公開されたすべての脆弱性を「CVE(共通脆弱性識別子)」という形式(例:CVE-2017-0144)で管理・一覧化しているサイトです。最新の脆弱性動向を把握するのには適していますが、特定のアプリに対する具体的な攻撃手法を探すのには不向きな側面があります。

Exploit-DB

ペネトレーションテスターにとってより実用的なリソースです。ソフトウェアの名称やバージョンごとに、実際にその脆弱性を突くためのコード(PoC)が蓄積されています。

ハッカーやリサーチャーは、NVDで脆弱性の公的な情報を確認し、Exploit-DBで具体的な攻撃コードを探すといった使い分けをすることで、効率的なセキュリティ評価が可能になります。

Qustion

Using NVD, how many CVEs were published in July 2021?
NVDによると、2021年7月に公表されたCVEはいくつありましたか?

Answer

NVD WebサイトのVulnerability SearchでAdvanced Filterで2021年7月にPublishされた脆弱性情報を検索します。



Who is the author of Exploit-DB?
Exploit-DBの作者は誰ですか?

Answer

Exploit-DB Webサイトの一番下に載っています。

Task5 An Example of Finding a Vulnerability

Task 5では、これまでのタスクで学んだ知識を活かし、架空の企業「ACKme」を対象とした実戦的な脆弱性リサーチを行います。

このタスクでは、ペネトレーションテスターがどのように情報を収集し、攻撃の糸口を見つけるかが具体的に示されています。プロセスは以下の3つのステップで進行します。

  1. 偵察と情報収集 ターゲットが使用しているソフトウェアの種類とバージョンを特定します。ここでは、ACKmeのサーバーが「Version 1.0.3」の特定のアプリケーションを使用していることが判明します。
  2. データベースの活用 特定した名称とバージョンをもとに、Task 4で学んだ「Exploit-DB」などのリソースで検索を行います。その結果、そのバージョンには認証を回避できる深刻な脆弱性が存在し、すでに「PoC(概念実証)」コードが公開されていることが判明します。
  3. 脆弱性の評価 発見された脆弱性の「CVSSスコア」を確認します。この例ではスコアが「9.8(Critical)」と非常に高く、リモートから複雑な手順なしに攻撃が可能であり、システムの機密性・完全性・可用性のすべてに甚大な影響を与えることがわかります。

このように、公開情報を組み合わせることで「どの脆弱性が、どれほど危険で、どのように悪用できるか」を導き出します。理論で学んだ脆弱性の定義やスコアリングが、実務において攻撃の優先順位を決定し、効率的なペネトレーションテストを行うための指針になります。

Qustion

What type of vulnerability did we use to find the name and version of the application in this example?
この例では、アプリケーションの名前とバージョンを特定するために、どのような脆弱性を利用したのでしょうか?

Answer

Task6 Showcase: Exploiting Acme’s Application

[View Site]をクリックして、画面分割で表示されるWebページの内容に沿って、脆弱性サーチとそのエクスプロイトを体験します。

Qustion

Follow along with the showcase of exploiting ACKme’s application to the end to retrieve a flag. What is this flag?
ACKmeのアプリケーションを悪用してフラグを取得するまでの実演を、最後までご覧ください。このフラグとは何でしょうか?

Answer

シナリオ

It is your first week at ThePentestingCo as a Jr. Penetration tester. To ease into the role, you are shadowing a Sr. Penetration tester on your first engagement.
The Sr. Penetration tester has managed to find a vulnerability in a web application that the client (ACKme IT Services) uses.
Follow the steps that the Sr. Penetration tester took to ultimately exploit ACKme IT Service’s infrastructure.

ThePentestingCoでのジュニア・ペネトレーションテスターとしての勤務が始まって1週間が経ちました。仕事に慣れるため、最初の案件ではシニア・ペネトレーションテスターの業務を見学することになりました。
シニア・ペネトレーションテスターは、クライアント(ACKme IT Services)が使用しているWebアプリケーションの脆弱性を発見しました。
シニア・ペネトレーションテスターが行った手順に従い、最終的にACKme IT Servicesのインフラストラクチャを悪用してください。


ペネトレーションテストの対象のIPアドレスに注目してください。なぜかマルチキャストIPアドレスになっていますが、細かいことは気にせずに・・・

対象IPアドレスを入力して、Nmapを実行すると稼働中のサービスがわかります。

Webサイトにアクセスすると、ログイン画面が表示され、よくあるユーザ名/パスワードで侵入を試みるもうまくいきません。このログイン画面にでかでかと利用しているサーバアプリケーションとバージョンが載っています。

判明したアプリケーションとバージョンで脆弱性サーチを行うと、脆弱性の情報が見つかります。見つかった脆弱性はRemote Code Executionで、かなり危険な脆弱性です。

見つけた脆弱性にはエクスプロイトコードがあり、それを実行してみるとまんまと侵入できたというシナリオです。

[Show flag]をクリックすればフラグが表示されます。

Task7 Conclusion

お疲れ様です!このルームでは、脆弱性調査の概要や、それに必要なスキルやリソースについて学び、その知識を実践的に応用しました。

Qustion

No Answer Needed