Help us understand the problem. What is going on with this article?

【ハッキングに挑戦】脆弱性が残された仮想イメージ公開プラットフォーム(VulnHub)で練習をする

これからサイバーセキュリティについて手を動かしながら勉強に取り組んでいきたいと検討されている方に向けて「意図的に脆弱性が残された仮想イメージ公開プラットフォーム(VulnHub)で練習をする」として本稿をまとめていきたいと思います。
sqlmap.jpg

VulnHubとは

「Vulnerable By Design ~ VulnHub」(https://www.vulnhub.com/、以下 VulnHub)とは、意図的に脆弱性が残された仮想イメージを無料で!!公開しているプラットフォームです。
Top.png
創設者のg0tmi1kは、『誰もがデジタルセキュリティ、コンピューターアプリケーション、およびネットワーク管理の実践的な経験を得ることができる資料を提供する』という目標を掲げ、その運用を開始しました。年々登録される仮想イメージの数は増加しており、VulnHub公式 Twitterアカウント(@VulnHub)のTweetによると、年間100件を超える登録があり、総数は400件(2019年11月 現在)を超えているそうです。最新の登録状況はタイムラインから確認することができます。
VulnHubの仮想イメージカタログに掲載されると、[Services]、[Entry Tags]、[Vulnerabilities]などのセクションにタグが付与されます。学習者はこれらタグを手がかりに、学習目標に適したリソースへアクセスすることができます。

ウェブサイトの歩き方

トップページ

VulnHubトップページのヘッダーは次のとおりです。
HOME.png
では、さっそくと[SEARCH]メニューをクリックしたくなります。ですが、ここは[HELP]メニューや[RESOURCES]メニューをまず確認してください。

  • HELPメニュー:[Setting Up A Local Lab]が必見。まず何を揃えるべきなのか丁寧に記載されています。仮想イメージをダウンロードしたけれども練習が開始できないときは[Frequently Asked Questions]項目を確認してみましょう。
  • RESOURCESメニュー:[Books](参考書籍)、[Training Material](トレーニング教材)リストが必見。
  • SEARCHメニュー:画面左側から検索窓が表示されます。

SEARCHメニュー

SEARCHメニューでは、キーワード検索が可能です。加えて、Sortによって時系列順または名前順に並び替えて表示させる指定も可能です。
SEARCHメニュー.png
お目当ての仮想イメージがあれば、その名前をキーワードにすることができます。このほかに次のようなキーワードを手がかりに学習目標に適した仮想イメージを検索することもできます。

難易度(Difficulty)に関する検索キーワード

  • Easy
  • Intermediate
  • Hard

脆弱性(Vulnerabilities)に関する検索キーワード

  • File Inclusion
  • OS Command Injection
  • Overflows
  • Privilege Escalation
  • Remote
  • SQL Injection
  • Web Application

サービス(Services)に関する検索キーワード

  • Apache
  • CMS
  • MySQL
  • OpenSSH
  • PHP
  • RPC
  • Samba
  • WordPress

仮想イメージ公開ページの概要

トップページから仮想イメージ公開ページに進んでみましょう。ここでは一例として、「Kioptrix: Level 1 (#1)」を選択します。
VMImage.png
選択した仮想イメージにより一部異なりますが、公開ページは次の項目(セクション)で構成されています。

  • About Release:
    ここでは、仮想イメージの名前やリリース日、作者の情報が記載されています。同じ作者により連続でリリースされている仮想イメージは[Series]としてタグ付けされていることがあります(Kioptrixシリーズの場合、レベル1から5までリリースされています)。
    About Release.png

  • Download:
    ここでは、仮想イメージのダウンロードリンクが記載されています。なお、VulnHubでは、同時ダウンロード数が2ファイルまで、最大速度は3 MBに制限されています。
    高速ダウンロードが必要な場合、トレントクライアントソフト(μTorrent)を使ったダウンロードが有効です。
    Download.png

  • Description:
    ここでは、WebページやReadmeファイルの抜粋など、対象となる仮想イメージリリースに関するさまざまな情報が掲載されています。
    とくに作者からのヒントは、仮想イメージを攻略する上で重要なヒントとなります。
    Description.png

  • File Information
    このセクションで掲載されているMD5またはSHA1ハッシュ値を使って、ダウンロードしたファイルが破損していないか検証することができます。
    File Information.png
    Linuxディストリビューションであれば、md5sumおよびsha1sumコマンドを使ってハッシュ値を算出することができます。

root @ kali:〜# md5sum Kioptrix_Level_1.rar
6df1a7dfa555a220054fb98ba87facd4  Kioptrix_Level_1.rar
root @ kali:〜# sha1sum Kioptrix_Level_1.rar 
98ca3f4c079254e6b272265608e7d22119350a37  Kioptrix_Level_1.rar
  • Virtual Machine
    ここでは、仮想イメージの形式やオペレーティングシステムなど、仮想イメージに関する情報が含まれています。
    OSの情報は仮想イメージを攻略する上で重要なヒントになります。
    Virtual Machine.png

  • Networking
    ここでは、仮想イメージに関するネットワーク状態の情報が掲載されています。ほとんどの仮想イメージはDHCPによって自動的にIPアドレスが割り当てられています。
    Networking.png

  • Screenshot(s)
    ここでは、仮想イメージの画面が掲載されています。多くの仮想イメージは、「CUI(キャラクタユーザインターフェース)」です。このため、ヒントとなるような情報は限定的です。
    Screenshot(s).png

  • Services
    ここでは、仮想イメージで実行中のサービスリストが掲載されています。
    サービスの情報は仮想イメージを攻略する上で極めて重要なヒントです。
    Services.png

  • Walkthrough(s)
    Walkthroughは、オンラインコミュニティに投稿された「解決策」です。すなわちネタバレを含んでいます。各仮想イメージが提供している解決策の多くは、一本道ではありません。新たな道筋を見つけることもVulnHub楽しみの一つです。
    Walkthrough(s).png

  • Flag(s)
    仮想イメージの中には、特権昇格に加え、掌握したことを証明するフラグを要求しているものがあります(「Kioptrix: Level 1 (#1)」の場合、EMailが設定されています。特権昇格し、メールを確認する必要があるようです)。
    Flag(s).png

  • Entry Tags
    ここでは、仮想イメージに関連するキーフレーズが掲載されています。
    キーフレーズ情報はネタバレに通じる仮想イメージを攻略する上で極めて重要なヒントです。
    Entry Tags.png

  • Vulnerabilities
    ここでは、仮想イメージで想定している脆弱性の情報が掲載されています。
    脆弱性情報はネタバレに通じる仮想イメージを攻略する上で極めて重要なヒントです。
    Vulnerabilities.png

仮想イメージのダウンロード

VulnHubプラットフォームでは仮想イメージを、次の形式で公開しています。

  • 圧縮形式ファイル:.ZIP.RAR.7z.tar.gz.tar.bz2など
  • 光ディスク用アーカイブファイル:.ISO.IMGなど
  • OVF(Open Virtualization Format)形式ファイル:.OVFは標準化団体DMTFより策定、標準化等が行われている仮想マシンの構成ファイルです。
  • OVA(Open Virtualization Archive):仮想マシン全体(仮想マシンの設定(.OVF)およびハードドライブ(.VMDK))を含む単一のアーカイブ(.tar)です。
  • VMware専用ファイル:
    • .VMDK/.VHD:「Virtual Machine Disk(VMDK)」および「Virtual Hard Disk(VHD)」は仮想マシンのハードディスクドライブの内容を格納する仮想ディスクファイルです。
    • .VMXはVMware向けの仮想マシンの構成ファイル
    • .VMEM:仮想マシンのページングファイル
    • .VMSN/.VMSD:VMwareスナップショット関連ファイル
    • .NVRAM:仮想マシンのBIOSまたはEFIの設定ファイル

なお、仮想イメージによっては、「.torrent」ファイルや「Magnet」リンクにて公開されている場合があります。トレントクライアントソフト(μTorrent)を使用している場合、こちらを選択した方が高速にダウンロードすることが可能です。

macOS Chromeを使用して.OVAファイルをダウンロードした場合、.OVAファイルを.OVFにリネームしてダウンロードする既知の問題点が報告されています。

仮想化ソフトウェアの準備

VulnHubでは、仮想化ソフトウェアに対応した仮想イメージを公開しています。その多くはVMwareまたは、VirtualBoxに対応しています。
予算や使用環境に合わせて、いずれかの仮想化ソフトウェアを事前にインストールしておきます。

インストールされた仮想化ソフトウェアにVulnHubにて公開されている仮想イメージを使って、仮想マシンを構築します。この仮想マシンを標的として、残された脆弱性を探り、特権の引き上げを目指してハッキングの練習を行っていきます。
このように、実際に様々な方法で侵入や攻撃を試み脆弱性の有無を検査するテストのことを「ペネトレーションテスト(侵入テスト)」と呼ばれています。

仮想イメージを標的マシンとして構築する

VulnHubからダウンロードした仮想イメージが圧縮形式ファイルの場合、まず展開ソフトウェア(Keka7zipなど)を使って、ファイルの展開(取り出し)を行います。

ファイルを展開すると、.OVAファイル(標準規格の仮想マシンの構成ファイル)または、.VMXファイル(VMware規格の仮想マシンの構成ファイル)、.ISOファイルが含まれています。
公開されているイメージによっては、.TXTファイルが含まれている場合もあります。この場合、特別なセットアップ手順が記載されていることがあります。必ず事前に確認しましょう。

標的マシンに割り当てが必要となるスペック(CPUやメモリ)は最少要件でも十分です。

仮想イメージのインポート

OVAファイルのインポート

ここでは、「Basic Pentesting: 1」で公開されているbasic_pentesting_1.ovaファイルをダウンロードし、仮想イメージを標的として構築します。
また、仮想化ソフトウェアとして、VMware Fusionを使用しています。

  1. VMware Fusionを起動し、[ファイル] > [インポート]を選択します。[ファイルを選択...]にて、basic_pentesting_1.ovaファイルを選択し、[開く]を選択します。 インポート.png
  2. [続ける]をクリックし、任意の名前をつけて[保存]します。 名前.png
  3. [仮想マシンをインポート]ウインドウが表示されます。 仮想マシンをインポート.png
  4. インポートが完了すると、[終了]ウインドウが表示されます。 終了.png
  5. [設定のカスタマイズ]をクリックすると、[設定]ウインドウが表示されます。 設定.png
  6. [ネットワーク アダプタ]を選択します。ネットワーク環境内の他の仮想マシンに接続するには、仮想マシンにVMware仮想ネットワークコンポーネントを構成して実装する必要があります。
    ネットワーク アダプタ.png

  7. [スタートアップ]ボタンをクリックし、仮想マシンの電源をオンにします(「Basic Pentesting: 1」の場合、「Ubuntu」ディストリビューションのログオン画面が表示されます)。
    これで標的の構築は完了です。
    ubuntu.png

VMXファイルのインポート

ここでは、「Kioptrix: Level 1.1 (#2)」で公開されているKioptrix_Level_2-original.rarファイルをダウンロード、展開して得られたファイル群を使い仮想イメージを標的として構築します。
また、仮想化ソフトウェアとして、VMware Fusionを使用しています。

  1. VMware Fusionを起動し、[ファイル] > [開く]を選択します。.VMXファイルを選択し、[開く]をクリックします(「Kioptrix: Level 1.1 (#2)」の場合、CentOs4.5.vmxファイルを選択し、開きます)。 kioptrixLv2.png
  2. 新たな仮想マシンが導入されます。これを選択し、[仮想マシン] > [設定...]を選択します。
  3. [ネットワーク アダプタ]を選択します。ネットワーク環境内の他の仮想マシンに接続するには、仮想マシンにVMware仮想ネットワークコンポーネントを構成して実装する必要があります。
  4. [スタートアップ]ボタンをクリックし、仮想マシンの電源をオンにします(「Kioptrix: Level 1.1 (#2)」の場合、「CUI(キャラクタユーザインターフェース)」のログオン画面が表示されます)。 これで標的の構築は完了です。 Kioptrix Lv2.png

VMwareにおいて、仮想マシンを構成するファイルは複数あります。このうち、特に重要なのが.VMXVMDKファイルです。

Bring Your Own License

VulnHubで公開されている仮想イメージ(例えば、Bobby: 1)は、BYOL(Bring Your Own License)形式で公開されているものがあります。
「Bobby: 1」では、別途Windows XPのプロダクトキー(含む、.ISOファイル:ディスクイメージ)を用意する必要があります。用意したOSのライセンスとVulnInjectorプログラムを使い、脆弱な状態の学習環境を整備することができます。

攻撃マシン(Kali Linux)の準備

VulnHubの仮想イメージを楽しむには、攻撃マシンを用意する必要があります。ここでは、ペネトレーションテスト用のLinuxディストリビューションであるKali Linuxを使用します。

ダウンロードサイトでは、VMware(Kali Linux 64-bit VMwareKali Linux 32-bit (PAE) VMware)、VirtualBox(Kali Linux 64-bit VirtualBoxKali Linux 32-bit (PAE) VirtualBox)に対応した仮想イメージが公開されています。

標的マシンへのログイン

インポートした仮想イメージ(標的マシン)を起動させることはできましたか。ほとんどの標的マシンはGUIまたはCUIのログイン要求画面で止まっているはずです。
このあとログインするにはどうすべきなのでしょうか。ほとんどの場合、標的マシンへのログインすることが課題として設定されています。

Damn Vulnerable Linux」および「Exploit-Exercises」などのシリーズでは、課題に取り組むためにログインする必要があります。このような場合、付属のReadmeファイルに注意事項としてログイン方法が記載されています。

標的マシンのIPアドレスを特定する

仮想イメージ(標的マシン)を起動した後に実施すべきことは、攻撃マシンから標的マシンのIPアドレスを特定することです。ほとんどの標的マシンはIPアドレスは自動で割り当てられます。そこで、arp-scanコマンドや、netdiscoverコマンドを使って標的マシンのIPアドレスを特定します。

次の例では、あらかじめ攻撃マシンと標的マシンを172.16.208.0/24ネットワークの範囲にて稼働させ、DHCPサービスによってIPアドレスを取得しています。netdiscover -r 172.16.208.0/24コマンド構文にて標的マシンのIPアドレスを特定します。

root@kali:~# netdiscover -r 172.16.208.0/24

 Currently scanning: Finished!   |   Screen View: Unique Hosts                   

 4 Captured ARP Req/Rep packets, from 4 hosts.   Total size: 240                 
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
 -----------------------------------------------------------------------------
 172.16.208.1    00:50:56:c0:00:08      1      60  VMware, Inc.                  
 172.16.208.2    00:50:56:f3:32:8a      1      60  VMware, Inc.                  
 172.16.208.180  00:0c:29:7b:8d:43      1      60  VMware, Inc.                  
 172.16.208.254  00:50:56:ee:2c:f4      1      60  VMware, Inc.

ここでは、172.16.208.180が標的マシンのIPアドレスであることが特定できました。

仮想イメージの中には、固定されたIPアドレスで提供しているものもあります(「pWnOS: 2.0」では、IPアドレスが10.10.10.100に事前に設定されています。このため、攻撃マシンを10.10.10.0/24ネットワークの範囲内にあらかじめ設定しておく必要があります。)

標的マシンのアカウントを特権昇格する

標的マシンのIPアドレスを特定した後に、何をすればよいのでしょうか。ネットワーク識別、サービス識別、脆弱性識別と順を追って、特権昇格までの道筋を探っていくことになります。
NIST(National Institute of Standards and Technology:米国国立標準技術研究所)が発行するセキュリティ関連レポートであるSP800シリーズでは、「Technical Guide to Information Security Testing and Assessment」(SP800-115)と題した文書が公開されています。この文書における「4. Target Identification and Analysis Techniques.」や「5. Target Vulnerability Validation Techniques」は標準化されたペネトレーションテストにおける内部テストの方法論を知る上で参考になります。
なお、標的マシンにて掌握したことを証明するフラグが設定されていない場合、whoamiiduname -aコマンドを;(セミコロン)で連結して実行した結果を掲載することがあります。

# whoami; id; uname -a

厳選、おすすめ仮想イメージ

「仮想イメージはどれがおすすめ?」という方へ、ここでは、初心者でも取り組むことのできる仮想イメージをおすすめポイントともにまとめてご紹介します!
何からはじめればよいのかわからないという方の参考になればと思っています。

イメージ名 おすすめポイント 日本語解説(Walkthrough)
Bob's Missing Cat CTF: 1.1 ハッキング以前に、コマンドライン操作に苦手意識を感じている方にお勧めの仮想イメージです。 N/A
Kioptrix: Level 1 (#1) 良質な学習教材であるKioptrixシリーズの第一弾。リモートから到達可能な脆弱性でアクセス権を特定し、特権昇格を狙っていきます。アプリケーションの脆弱性を特定し、エクスプロイトコードを修正、コンパイルなども体験できる仮想イメージです。 あり
Kioptrix: Level 1.1 (#2) Kioptrixシリーズの第二弾。ウェブアプリケーションに関する「SQLインジェクション(CWE-89)」や「OSコマンドインジェクション(CWE-78)」を手がかりにカーネルエクスプロイトコードによる特権昇格について体験できる仮想イメージです。 あり
Kioptrix: Level 1.2 (#3) Kioptrixシリーズの第三弾。「SQLインジェクション(CWE-89)」を手がかりにsudo権限の乱用による特権昇格について体験できる仮想イメージです。 あり
Kioptrix: Level 1.3 (#4) Kioptrixシリーズの第四弾。 N/A
SickOs: 1.2 ウェブアプリケーションの処理におけるユーザー入力を手がかりにリバースシェルを確立。特権昇格について体験できる仮想イメージです。 あり
Basic Pentesting: 1 WordPress(ウェブサイトの作成に使用するオープンソースなコンテンツ管理システム(CMS))が稼働しているサイトに侵入し、書き込み可能な/etc/passwdファイルを手がかりにして特権昇格について体験できる仮想イメージです。 あり
BTRSys: v2.1 WordPressサイトにバックドアを仕掛け、カーネルエクスプロイトコードによる特権昇格について体験できる仮想イメージです。 あり
Stapler: 1 WordPressのプラグインに関する脆弱性を特定することでMySQLに関するクレデンシャル情報を取得することができます。特権昇格では複数のパスから実現可能であることを体験できる仮想イメージです。 あり
FristiLeaks:1.3 :--- N/A
VulnOS:2 :--- N/A
pWnOS: 2.0 :--- N/A
Bobby: 1 :--- N/A
Brainpan: 1 スタックベースのバッファオーバーフロー(CWE-119)を突くエクスプロイトコード開発に関してFuzzing、EIPの制御、JMP ESPの検索、Bad Charactersの検証という一通りのトピックについて確認することができる仮想イメージです。 あり

意図的に脆弱性を残したサーバを公開しているサービス

VulnHub以外にも、意図的に脆弱性を残したサーバを公開している練習サービスは複数あります。

オフェンシブな資格認定

VulnHubで磨いた実践的なスキルを資格認定という形で残すことを検討するのも有効です。

認定組織 資格情報の略語 認定タイトル
Offensive Security OSCP Offensive Security Certified Professional
GIAC GPEN GIAC Penetration Tester
eLearnSecurity eCPPT eLearnSecurity Certified Professional Penetration Tester
CompTIA PenTest+ CompTIA PenTest+

より完全なリストをこちらで参照することが可能です。

参考書籍

まとめ

VulnHubの魅力は、ローカルに仮想イメージを展開すること。これにより、環境を誰にも荒らされることなく、じっくりと、自分だけの標的マシンに取り組むことができます。

VulnHubに取り組むことで「ペネトレーションテスター」としてのスキルアップが期待できます。その楽しみ方は人それぞれです。

  • 攻略数を増やしていく
  • 一つの標的マシンを繰り返し攻略する
  • 攻略した標的マシンのログを鑑賞する
  • 攻略した仮想マシンの堅牢化を行う

いずれにせよ、アウトプットにこだわってみてください。「情報を整理する力」と「発信力」を楽しみながら身につけることができるはずです。
本稿をきっかけにVulnHubに取り組む人が一人でも増え、日本語での「Walkthrough」(攻略法)投稿が充実してくれれば嬉しい限りです。

参考情報

VMware / 仮想化ソフトウェア

ペネトレーションテストトピック

エクスプロイトコード開発

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away