※Kindle版だと、PCで作業しながら別画面で本の内容を表示できるので非常におすすめ。
1. 私の紹介
- 入社3年目のセキュリティエンジニア
- 基本的なIT用語やLinuxには多少の馴染みがある状態で取り組んでいる。
- ハッキングツール(MetasploitやJohn the Ripperなど)は聞いたことある(一部、触ったことある)くらいのレベル
2. ハッキング学習
2.1. TryHackMe
2.1.1. 概要
- イギリスのTryHackMe社が提供する、ハッキングのシナリオを元に実践的なサイバーセキュリティのトレーニングが実践できるサイト。
- 英語のみの対応だが、操作や構成は直感的なので、苦手な人でもすぐ慣れると思う。
- メールアドレスを登録するだけで簡単にアカウントを作成でき、無料プランでも多くの「ルーム」(学習コース)を利用できる。有料プランでは、より高度なシナリオや快適な学習環境が利用できる。
- 演習環境はクラウド上に用意されており、自分でターゲット(やられサーバ)を用意することなく、ハッキングの演習ができる。VPNで接続することで、用意されたターゲット(やられサーバ)に接続できる。
- Walkthroughs方式(手順に沿って用意されたタスクをこなしていく)が多く、初心者にも取り組みやすい。
2.1.2. 課金について
2.1.3. 勉強できる内容
- 多様なサイバーセキュリティ分野を900以上のルームで実践的に学習できる(本書は内7ルームを体験する内容)。
- 上記のルームに加えてCyber Security Challenges(技術や知識を実践的に試し、競い合うイベントや課題)も用意されている。
- ラーニングパスとしては、以下のものが提供されている。
2.1.4. こんな人にオススメ
- 実践的なサイバーセキュリティを学びたい初心者~中級者
- 机上の勉強だけでは物足りない人
- CTFの練習をしたい人
2.2. Hack the Box
2.2.1. 概要
- イギリスのHack The Box社が提供するサイバーセキュリティ学習プラットフォーム。
- TryHackMeのような「Walkthroughs形式(タスクベース)」よりも、自分で考えて解く「CTF形式」のマシンが多く、ある程度知識やスキルがある人向けと言われている。
- 最近では、ルームにより「Walkthroughs形式(タスクベース)」と「CTF形式」を選択できたり、「Starting Point」や「Academy」といった基礎学習コンテンツもあるのでスキルレベルに応じて取り組むことができる。
2.2.2. 課金について
- Hack The Boxでは、演習用のマシンが「Activeマシン」と「Retiredマシン」に分類されている。
- Activeマシンは新しい問題。攻略することでユーザにポイントが付与され、ポイント数に応じてユーザのランクが決められる(入試問題みたいな感じ)。
- Retiredマシンは一定期間後に引退したマシンで、Walkthroughが公開されており、学習用に利用しやすい(過去問みたいな感じ)。
- Retiredマシンを利用するには有料プラン(VIP)の加入が必要。一方で、無料でも利用できるActiveマシンは解説(Walkthrough)が公開されておらず、自力での攻略が求められる。それゆえに、HackTheBoxよりも玄人向けと言われるのかもしれない。
2.3. AppGoat
2.3.1. 概要
- IPA(情報処理推進機構)が提供する、Webアプリケーションの脆弱性を体験的に学べる教材。
- 実際に攻撃を試せる安全な環境(自分のPC上にWebアプリケーションが構築される)が提供されており、セキュリティを実践的に学ぶには最適なツール。
- 利用するためには、IPAへの利用申請と学習ツールのダウンロードが必要(IPAの公式サイトから比較的簡単にできる)。
- 無料かつあんまり知られてない?のがもったいないくらいのクオリティで、Webアプリケーションの脆弱性をかなり踏み込んで説明してくれる良教材。
2.3.2. 勉強できる内容
- クロスサイト・スクリプティング(XSS)
- SQLインジェクション
- CSRF(クロスサイト・リクエスト・フォージェリ)
- ディレクトリ・トラバーサル
- OSコマンド・インジェクション
- セッション管理の不備
- 認証制御や認可制御の欠落
- HTTPヘッダ・インジェクション
- バッファオーバーフロー
- クリックジャッキング
- メールヘッダ・インジェクション
- その他の脆弱性(システム情報漏えい等)
2.3.3 こんな人にオススメ
- セキュリティの理論を学んだけど、具体的な手順や動作がわからない人
- 自社のWeb開発メンバーや新人研修に、安全にハンズオン形式で学ばせたい人
2.4. picoCTF(picoGym)
2.4.1. 概要
- アメリカ・カーネギーメロン大学が提供する、CTF形式の問題に常時チャレンジできるプラットフォーム「picoGym」。本来は学生向けコンテスト(picoCTF)の練習用に設けられたが、誰でも無料で利用可能。
- アカウントを作成すれば、Webブラウザ上からすぐに問題に取り組める。環境構築は不要で、基本的にブラウザ上のインターフェースだけで完結するものが多い。
- 問題はカテゴリごと(Binary Exploitation、Web Exploitation、Reverse Engineering、Forensics、Cryptographyなど)に整理されている。
- 英語で出題されるが、設問は比較的短くシンプルな設計なので、感覚で進めていける。英語が苦手な人でも問題なく取り組めるはず。
2.4.2. 勉強できる内容
- Web Exploitation
- Cryptography
- Reverse Engineering
- Forensics
- General Skills
- Binary Exploitation
- General
- CTFでよく出題されるジャンルの問題に触れながら、CTFっぽい考え方、ツール、攻撃手法、フラグの取得方法が学べる。もちろん、実践的なセキュリティの勉強にもなる。
2.4.3. こんな人にオススメ
- CTFの練習をしたい初心者~中級者
- CTF形式の問題に挑戦してみたいが、いきなり大会はハードルが高いと感じている人
- 登録や環境構築に手間をかけず、まずは気軽に始めてみたい人
3. 書籍の感想
- この本のコンセプトは「7日間でハッキングをはじめられる」というもの。そこで、実際に各章にかかった時間を計測しながら取り組んでみた。結果は下の表にまとめたが、7日で始めるというのは誇張ではなさそう。
- Burp Suite や Metasploit など、よく使われるが学ぶきっかけが掴みづらいハッキングツールの使い方を丁寧に解説してくれている。
- 技術書でありがちな「書籍通りにやっているのにうまく動かない」という場面がかなり少なく、ストレスなく進められたのも好印象だった。環境の整え方や操作手順が丁寧に書かれており、つまずきポイントが少ないのは初心者にとって大きな助けになるはず。
- 本来であればTryHackMeのタスクをすべてこなすのはハードルが高いが、本書では大事なポイントを抜粋している。時間的にもボリューム的にも、現実的に7日で完走できる構成になっていて「ハッキングに入門したいけど、何から始めたらいいか分からない」という人に、最初の一歩として強くおすすめしたい。
章 | 内容 | 難易度 | 要した時間 |
---|---|---|---|
冒頭 | はじめに | ー | 約15分 |
Day1 | ハッキングの準備をしよう | ★☆☆☆ | 約50分 |
Day2 | はじめてのハッキング | ★☆☆☆ | 約1時間 |
Day3 | 悪用厳禁のエクスプロイトを試してみよう | ★☆☆☆ | 約1時間30分 |
Day4 | よくある脆弱性を使って怪しいショップで遊ぼう | ★☆☆☆ | 約1時間30分 |
Day5 | Webフォームから侵入しよう | ★☆☆☆ | 約1時間20分 |
Day6 | Active Directoryのハッキング実践 | ★★☆☆ | 約2時間20分 |
Day7 | WordPressのハッキング実践 | ★★☆☆ | 約1時間35分 |
Day1:ハッキングの準備をする
詰まった点
- VPN接続はできたものの、状態が「connected」にならなかった。しかし、ここは無視して問題なく進めることができた。他の人のレビューでも「connected」にならないケースはあるようだが、進行に支障はない模様。
得られた知識
- [Ctrl] + [Shift] + [T] キーでターミナルのタブを増やすことができる
- nanoエディタ
- Virtual BoxのTips(ホストOSとの共有フォルダ―設定、ホストキーの変更)
感想
- LinuxやVPNの基本がわかっていれば、「あ、ここは設定しなくても大丈夫そうだな」みたいな判断ができて、全体的にスムーズに進められる印象。
Day2:はじめてのハッキング
詰まった点
- 特になかった。
得られた知識
- nmap
- dirb
- smbclient
- 辞書攻撃の実践(rockyou.txt)
- hydra
感想
- 終盤は「残りは皆さんでやってみてください」スタイルになるが、初心者には正直ハードルが高く感じた。なので、もし続きが一人で進められなかったとしても、「自分には向いてないのかも…」と心配する必要はまったくない。
備考
- Day2のみ、「残りは皆さんでやってください」スタイルだが、下記サイトのWriteUpが分かりやすい気がする。
https://hack-lab-256.com/tryhackme-basic-pentesting-writeup/501/
Day3:悪用厳禁のエクスプロイトを試してみる
詰まった点
- なお、xfreerdp コマンドを実行しようとしたところエラーが出たが、xfreerdp3 を使うことで正常に動作した。コマンドラインで xfreer と入力して Tab キーを押すと自動補完され、xfreerdp3 が候補として表示されたので、そのまま使用した。
$ xfreerdp /u:Jon /v:10.〇.〇.〇 /p:alqfna22 /cert:ignore /sec:rdp
Command 'xfreerdp' not found
得られた知識
- vuln
- Metasploit
- hashdump
- レインボーテーブル
- xfreerdp
感想
- 学ぶハードルが高く、初心者にはとっつきにくいMetasploitにしっかり取り組める構成になっているのは素晴らしい。
Day4:よくある脆弱性を使って怪しいショップで遊ぶ
詰まった点
- 特になかった。
得られた知識
- Burp Suite
- SQLインジェクション
- 辞書攻撃(SecLists)
- OSINT
感想
- Burp Suite も同様に、初心者にとってはとっつきにくいツールのひとつだが、この本ではちゃんと手を動かして試せるように構成されているのがとても良い。
Day5:Webフォームから侵入する
詰まった点
- シェル(ターゲットマシンの操作権限)を取った状態で、Tabキーや矢印キーを押しても
^[[D
や^[[B
のような文字が表示されてしまい、思ったように動作しなかった。いわゆる「TTYなしシェル」ではよくある現象で、補完やコマンド履歴が使えないのは普通らしい。 - ポートスキャンは完了までに3分ほどかかった。「あれ?止まった?」と思っても、実はちゃんと動いていたので、焦らず待つのが正解。
得られた知識
- BurpSuite
- リバースシェル
- nc
- SUID
- GTFOBins
感想
- BurpSuiteをさらに深掘りできる内容があり、とても勉強になった。また、GTFOBinsのような「システム内の誤設定を突いて特権昇格を狙うテクニックを集めたサイト」の存在も初めて知り、驚いた。正直、GTFOBinsに書かれている内容は難しくてほぼ理解できなかったが、「ハッキングしてる感」は非常に強く、楽しかった。技術が分からなくてもワクワク章だったと思う。
Day6:Active Directoryのハッキング実践
詰まった点
- hosts ファイルの記載ミスで詰まった。ターゲットマシンの IP を書くべきところに、うっかり自分のローカル IP を書いてしまっていた。GetNPUsers.py(Impacket)を実行するとエラーが出て、原因に気づくまでに20分ほどかかった。
/etc/hosts
127.0.0.1 localhost
127.0.1.1 kali
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.17.57.14 spookysec.local # ❌間違い:ここのIPアドレスはターゲットマシンのものにすべき
10.10.157.10 blog.thm
- hostsファイルのspookysec.localのIPアドレスをローカルのIPアドレスにしてしまっていた場合、実行時に下記のようなエラーが表示された。
- ちなみに、spookysec.local の IP を全く関係ないアドレスにしていた場合は、パスワードEnter後に何も出てこない状態になる。
感想
「Active Directory(AD)が狙われやすい」という話はよく耳にするが、その一端を実際に体験できたのはとても良かった。仕事でもADに触れる機会はあるので、なんとなくの理解はあったが、改めて「ADって奥が深いな」と実感する章だった。まだまだ自分の理解は浅いと感じたが、ADについてもっと詳しくなれば、この章でやっていることの背景もよりクリアに見えてくる気がした。
Day7:WordPressのハッキング実践
詰まった点
- P263の exploit コマンドがどうしても上手くいかず苦戦したが、原因はパスワードの読み間違いだった。ユーザー “kwheel” のパスワード「cutiepie1」の最後の文字が数字の「1」であるにもかかわらず、書籍のフォントだと英小文字の「l(エル)」に見えてしまい、ずっと間違ったパスワードを入力していた。見た目で混乱しやすいので、このあたりは注意が必要かも?。
- LinPEASが書籍の方法だとインストールできなかった。wgetコマンドを使うことで上手くいった。Virtual Box外でダウンロードするとWindows Deffenderでブロックされたので、もしかしたら関係あるかも??
$ wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
得られた知識
- CMS
- steghide
- wpscan
- Metasploit
- LinPEAS
- ltrace
- export(環境変数を設定するコマンド)
感想
情報収集の途中で追加の調査が必要になる「寄り道」が何度かあり、リアルなハッキングの雰囲気を感じられて面白かった。最終章ということもあり、実践的で難易度も高めな気がした。ただ、「なんとなく理解できた」というレベルでも、十分に手応えがあり、リアルな攻撃手法の一端を体験できた感覚があった。
編集memo
・課金額
TryHackMe
https://tryhackme.com/why-subscribe
Hack the Box
https://www.hackthebox.com/hacker/pricing
・Free版ではRetired machineが使えない
・すなわち、Write upもない
・これも初学者に難しい理由かも