ペネトレーションテスト

防御のためのハッキング入門 TryHackMeのはじめかた

how-to-start-tryhackme

ハッカーを題材にした漫画やアニメやドラマや映画も多いです。サイバーセキュリティを学んでいる方は、一度はハッキングに憧れた事があるのではないでしょうか?

カチャカチャ、ターン!ってかっこいいなあ、スーパーハッカーになりたいよ。

ただ、防御のためにはまず攻撃を知る必要がある、というのがこの世界の面白くて不条理なところです。

黒い画面に緑色の文字のアレ、超かっこいい。そうは言っても、何をしたらいいかわからない…そんなあなたにオススメの、初心者に必要な全てが用意されていて簡単に始められるラーニングプラットフォームがTryHackMe(トライハックミー)です。

TryHackMe | Cyber Security Training

そんなTryHackMeについて日本語で説明してるページが少ない気がしたので、この記事は入門者の最初の一歩の手引きとして書きます。

なお、本当はハッキングじゃなくてペネトレーション(テスト)って呼ぶほうが正しそうな気がするので、この記事ではこれ以降ペネトレーションと表記します。

ペネトレーションテスト – Wikipedia

この記事はこんな方向けに書いてます
  • ペネトレーションに興味があるが、何から始めたらいいかわからない方
  • セキュリティの勉強をしている(情報処理安全確保支援士など)が、もっと実践的なことに取り組んでみたいと思う方

前提

TryHackMeを使うメリット

ターゲットの環境構築をしなくて良い

個人的に、ペネトレーションで初心者が最初につまずくのが、脆弱性のある攻撃対象を用意するところだと思ってます。

そのへんのサイトを攻撃するわけにいかないからね〜

悪気がなくても他人のサイトで攻撃を試すのは絶対NGです。CTFのターゲットになってるとかの特別な場合意外は、捕まる可能性もあるのでほんとにダメ。

なので、ペネトレーションの勉強のためにはまず、他人に迷惑をかけない環境(やられ環境)を自分で準備する必要があります。

世の中にはvulnhubのような、脆弱性のある仮想環境を配布しているサイトもありますし
OWASP Juice Shopのような、わざと脆弱性を作り込んだ「やられアプリ」のようなものはたくさん公開されています。
しかし、まずそれを自分の環境で作るのが難しい!自分でできるけど面倒くさい!ダウンロードするの時間かかってうざい!そうこうしているうちにうっかりTwitter見ちゃって時間が無限に過ぎる!(自業自得)
…そんなとき、TryHackMeならいつでもボタンクリックひとつで環境構築が完了します。超便利。

次は何をすればいいか指示があるので初心者にやさしい

なんとかかんとか環境構築がおわった後に初心者が次につまづくのが

…で??なにすればいいの?

ってところです。
TryHackMeは「タスク」という形で、次になにをすればよいか逐一指示が出てきますので安心です。
与えられるクエストをクリアしていくと自然とレベルアップしていくって感じですかね。入門の手前で何もできずに佇んで終わるということがありません。

ゲーミフィケーション要素で継続できる

最後に、何事も学習の継続に必要なのは「自分の成長を実感できること」や「頑張ってる仲間の様子がわかること」だと思います。

TryHackMeでは学習を進めていくとポイント(経験値的なもの)が貯まってレベルアップしたり

ユーザー別のランキングが表示されて切磋琢磨できるようになっていたり

クリアした内容に応じてバッジがコレクションできたりします。

いわゆるゲーミフィケーション(ゲームに使われている構造を、ゲームとは別の分野で応用すること)ってやつだと思うのですが、楽しく継続するのに一定の効果がありそうです。

TryHackMeの欠点

説明書きが全部英語なので苦手な人は苦労するかも

何を隠そう私も英語苦手な方ですが、基本的にセキュリティを勉強するなら避けて通れないので観念して勉強のためにがんばって読んでます。

日本語ネイティブ的には、ここはもうがんばるしかないとしか言えないのですが。
とはいえ、Google翻訳を駆使すればだいたい何書いてあるかはわかるレベルのやさしい英語なのでほぼ問題なく進められるとは思います。

あきらかに現実的ではない環境も多い

問題をつくりこむという性質上、ある程度仕方ないとは思うのですが

  • 管理者パスワードが簡単すぎる
  • ftpサーバにanonymousログインできる
  • しれっと秘密鍵が置きっぱなし
  • コメントアウトで大ヒントが書いてある

などなど…。流石に非現実的では?と思うことも多いです。
中級レベル以上の人には物足りなさを感じるかもしれません。

必要なもの

  • (必須)パソコン

OSは何でも良いですが、仮想環境などでKali Linux(カーリーリナックス)を準備しておくと捗ります。Kali Linuxは、ペネトレーションテストによく使われるDebianベースのディスリビューションです。

Linuxなんか使ったことがないしKaliってなにそれ?


要するに、このOSを使うと便利なツール類予めインストール済み全部入りパックにしてあるので、スムーズに学習を進めることができるよ〜ってことです。しかも無料。

準備の仕方がわからないという方は、TryHackMeの前に「ハッキング・ラボのつくりかた」の第一部を読むと懇切丁寧に解説されているので超おすすめです。

また、手元にあんまり使ってないパソコンがあるよ!という方は、仮想環境じゃなくてそのままOS入れ替えにチャレンジしてみてはいかがでしょうか?

結構便利で楽しいですよ。

そんなの面倒だ!俺は短気なんだ!今すぐ試したいんや!という方は。

  • (あると快適)月10ドルの課金

クレジットカードを用意してください。お金があれば大抵のことは解決できます。

後述しますが、TryHackMeには課金のしくみがあります。課金すると色々特典があるのですが、その中のひとつに「browser-based Kali Machine」っていうのがありまして、要するにブラウザの中でKali Linuxが動く仮想環境が使い放題になります。

↓こんな感じ

リモートデスクトップ的なやつです。

クリック一つで普通のブラウザ(画面左)の横に仮想デスクトップ(画面右)が現れます。面倒な諸々の環境の準備が一切不要。たいていの事象に銀の弾丸はないが金の弾丸はある

まあ、個人的には勉強のためにも自分で環境を用意したほうがいいと思うので(単純にbrowser-based使いづらいし)
この記事では自分のパソコンからTryHackMeの環境に接続する方法を説明します。

しかし、そういうのは全部すっ飛ばしてとにかくやってみたい!という前のめりな方は使ってみるのも良いのではないでしょうか。

用語の説明

ルーム
(Room)
TryHackMeにおける学習の単位。テーマ?というか、教科書における単元みたいなものと捉えるといいかも。
例えば「Linuxの基礎ルーム」とか「SQLインジェクションルーム」とかがある。複数ルームを並行してちょっとずつ進めることもできる。
マシン
(Machine)
ルームの中にある攻略対象のサーバのこと(文脈によって違うかも?)
一つのルームの中に複数台マシンがあることもあれば、マシンがないルームもある。VPN経由で接続する。
他のサービスだとルームのことをマシンと呼んでいたりするのでとてもややこしい。
タスク
(Task)
ルームの中にある課題のこと。タスクのなかに設問が複数あることもあるのでこれも文脈によって違うかもしれない。
マシンに対して○○コマンドを打って結果を答えろとか、ググって答えろとか、フラグを見つけろっていうCTFみたいなのものもある。
ラーニングパス
(Learning paths)
いくつかのルームを目的ごとにひとまとめにした枠組み。
例えば、初心者を脱するために基本的なことを身に着けるとか、特定の資格の範囲を網羅的に学ぶ、などなど。進捗が表示される。

前提の説明が長くなってしまった…

はじめかたの具体的な手順

まずはユーザー登録しよう

https://tryhackme.com/

サイトにアクセスして右上の「Join Now」をクリック

自分が希望するユーザ名、メールアドレス、パスワードを入力し、ロボットではありませんにチェックを入れて「Sign up」をクリック。

ちなみに2021/06/29現在、ユーザー名は後から変更できない仕様になっていますので、適当な名前をつけると後で後悔します。(ユーザー名は公開されます)

アンケートっぽい画面に遷移します。

今までの経験について聞かれています。自信がなければビギナーでよいと思います。(後から変更できます)

お前は何のためにセキュリティを学ぶのだ…?という深淵な問いが投げかけられます(笑
ちなみに私は趣味でやってるので「As a hobby」を選びました。

最初のラーニングパスを選ばせる画面に遷移します。

無償版はこの3種類から選ぶらしいです(課金すると選択肢が増えます)初心者には、左側のコンプリートビギナーがよいと思います。

急に課金を促すバナーが出てきて一瞬びっくりしますが気にしない(課金したい人はしましょう)

登録したメールアドレス宛にメールが届いているので「Verify Email」をクリックします。

これで登録は完了です。かんたん!
コンプリートビギナーの最初の画面↓

Open VPNで接続する

※前述した「環境作りが面倒くさいから課金するぜ!」という心意気の方はここは無視していいです。

早速マシンにアクセスして問題に取り組みたいところですが、その前に
TryHackMeのネットワークに接続する必要があります。
まず、OpenVPNの構成ファイルをダウンロードするページに移動します。

Access via OpenVPN

緑色の「Download My Configuration File」をクリック

<自分のユーザー名>.ovpnという接続設定のファイルがダウンロードできます。

その後の手順は使っているOSによって違うので「OpenVPN」っていうオレンジのバナーっぽいところをクリックすると表示される説明を参考にして設定しましょう。

Linux(Kali)の場合の例(ターミナルを起動してコマンドライン操作)

# OpenVPNをインストール(入ってないとき)
sudo apt install openvpn 

# 接続用のファイル置き場をつくる
mkdir tryhackme  

# ダウンロードしてきたovpnファイルを移動させる
mv ~/Downloads/<username>.ovpn tryhackme/

# OpenVPNコマンド実行して接続 
sudo openvpn tryhackme/<username>.ovpn  

<username>のところは自分のユーザ名に読み替えてください。ファイル置き場作ったり移動させたりは、私が気になるからやってるだけで別に必須ではないです。

うまくいくと、わわ〜っと実行結果が表示されて、最後

Initialization Sequence Completed

で止まります。時々失敗することもあるので、うまくいかなかったらctrl+cを押して中断して最後のコマンドを打ち直すとよいです。

ブラウザに戻り、Connectedにチェックが入ってIPアドレスがなんかしら表示されることを確認します。

IPアドレスはその時々によって変わりますよー。
これで接続ができたのでTryHackMeを遊べるようになりました。

2回め以降スムーズにVPNにつなぐためにやっておくと良いこと(Kali・Ubuntu編)

初回は上記の手順で接続できますが、例えば1回パソコン落としたあとどうすんの?と疑問に思う方もいると思うので補足します。

パソコンを再起動したりすると、当然といえば当然ですがVPNの接続が切れます。
通常自動で再接続はしないので、KaliやUbuntuを使っている方は以下のコマンドを打つと再接続します。

# OpenVPNコマンド実行して接続
sudo openvpn tryhackme/<username>.ovpn  

え〜でも毎回打つのめんどくさい〜

そんな面倒くさがりなあなたはエイリアスの設定をしておくと捗ります。

# ホームディレクトリに移動
cd

# エイリアスのコマンド追加
echo "alias thm='sudo openvpn $HOME/tryhackme/<username>.ovpn'" >> .bash_aliases

# エイリアスの有効化
source .bash_aliases

# エイリアスできてるか確認
alias

# 試してみる
thm

KaliやUbuntuを使っている方は上記の設定をしておくと、今後はターミナルで「thm」と入力するだけでTryHackMeの環境につながるのでとっても便利です。

browser-based Kali Machineの起動(課金してる方のみ)

既に課金していて、browser-based Kali Machineを使いたいという方は「Start AttackBox」をクリックしましょう。(前述の「Open VPNで接続する」をやった人はこの項目はスキップしてください)

少し時間がかかりますがブラウザ右側に仮想デスクトップが立ち上がります、この環境が自分のローカル端末と思ってください。

コピペなどは仮想デスクトップ左端のところにある「クリップボード」というフォームを介して行います。使い方には結構慣れが必要かも。

終わるときは左下にある電源ボタンでデスクトップだけ閉じます。

最初のルームをクリアしてみよう!

https://tryhackme.com/dashboard

さて、ダッシュボード画面に行くと、いくつかルーム表示されていると思います。
基本的には好きなルームから攻略すれば良いのですが、この記事では最初のルームとしてチュートリアルルームを例に解説します。

攻略対象マシンの起動

まず、タスクをクリアするために攻略対象マシンを起動します。
矢印が書いてある緑色の「Start Machine」をクリックします。

しばらくするとマシンが立ち上がって「Active Machine Information」が表示されます。

最初のタスクはそのマシンにアクセスすることなので、IPアドレスをコピーして、ブラウザのアドレスバーに貼り付けてエンター押します。

IPアドレスはその時々によって変わりますよー(二度目)

前述のVPNが繋がっていれば、アクセス成功画面になってフラグ(答え的な意味です)が表示されます。

flag{**********}となっているところをコピーして、ルームに戻り、回答欄にペーストして「submit」をクリックします。

正解したら「correct」という緑の表示が右上に出るのでそのタスクは完了です。

これを繰り返してタスクが全部終わると、そのルームは完了です。

おめでとう!って表示されます。

もっと楽しむ

課金について

もしTryHackMeが気に入ったら、月10ドルの課金をすることをおすすめします。(私はしてます)

課金でできるようになること

前述のbrowser-based Kali Machineもそうですが、私がメリットに感じることは

  1. 課金者限定のルームが使えるようになる
  2. マシンの起動が早くなる(無課金⇒起動に5分かかることがある、課金⇒1分で起動、くらいの差です)

ってところですかね。月10ドルなら十分元がとれる感覚があるので、可処分所得の多い大人は課金して損はしないと思います。

でもまあ、無料で遊べるルームのガイドがあるってHayashiさんが紹介してくれたので、まず始めてみて気に入ったら課金するか考えるのが良いかなと言う感じがします。

チュートリアル後のすすめかた

基本的には興味のあるルームを遊べばよいと思うのですが、迷っちゃう方は自分が選択したラーニングパスに沿って順番にルームを攻略すると良いと思います。

進捗率が右上に円グラフで表示されます(私は寄り道しているせいでコンプリートビギナーが終わっていません…)

他に、ルームを検索することもできるので、興味のあるテーマのある方はここから検索して好きなルームをアラカルト的にとりくんでみるのが良いのではと思います。

Showの項目で「Free Only」を選べば無料のルームだけ検索できるよ。

まとめ

  • TryHackMeはペネトレーション初心者におすすめの勉強サイト
  • やられサイトがクリックひとつで簡単にできる
  • ローカル環境にはKali Linuxを準備する事をおすすめ(仮想環境でもよい)
  • 無料でも楽しめますが気に入ったら課金(10ドル/月)するとより楽しめます

以上です。そのうち思いついたことがあったらまた追記するかも。

もしオススメのルームとかあったら教えてください。Try Harder〜!