【ハッカー入門】日本語解説付 無料で始めるHacktheBox Academy

hackthebox HackTheBox

~無料で学べる HTB Academyの準備と実践~

目的

CTF に挑戦したいけど、どこから手をつければいいか分からないという方も多いのではないでしょうか。HTB Academy は、まさにそんなあなたのためのプラットフォームです。
今回は「Hacking」勉強するための人気プラットフォーム “HacktheBox” の始め方をご紹介します

hackthebox
hackthebox

前回紹介した、TryHackMeと比較されることが多いです。
HTB が提供する実践的なセキュリティトレーニングプラットフォームであり、ゲーム形式で様々な脆弱性を発見し、エクスプロイトを作成する経験を通して、実戦的なスキルを習得できます。
その名も「HTB Academy」を始めようと思います。

おすすめポイント

「初心者脱却にはもってこい」というところです。

巷では初心者にはTHMの方が優しいと口コミがあります。

review

その一方で、HTB Academyの難易度と内容の濃さが初心者脱却したい人や
少しサイバーセキュリティについて勉強した経験のある人にとっては
むしろいいと意見があります。

htbreview
htbreview

よって、経験者にとってはがっつり勉強できるコンテンツがそろっているということです!

準備

OpenVPN接続設定
openvpn

HTB Academyにログインし、表示される画面(DashBoard)の自分のアイコンをクリック
VPN Setting”を選択する。

openvpn1

表示された画面を下にスクロールして、”VPN Servers”のところで”PROTOCOL”をTCP443に変更してダウンロードする(DOWNLOAD VPN CONNECTION FILE)

openvpn

ダウンロードしたファイルをKali Linux(攻撃マシン環境)上に保存します。

ここからは、TryHackMeのOpenVPNとは違うやり方をします。
LANポートのマーク > VPN Connections > Add a VPN connection… の順に選択

openvpn3

“Fortinet SSLVPN”を、”Import a saved VPN configuration…”に変更し、Create を選択

openvpn4

OpenVPN接続設定ファイル(academy-regular.ovpn)を保存した場所まで移動して選択する。表示された画面の Save を選択

・接続確認
LANポートのマーク > academy-regular
VPN Login Message
VPN connection has been successfully established.が表示されます。
同時に、LANポートのマークの横にIPアドレスが表示されます。
これで接続確認完了です。

Module実践

HTB academyはFreeプランの場合、与えられたcubeを使用してModuleという問題集を解いていきます。なので、cubeがなくなると新しいModuleにチャレンジしたい場合には購入する必要があります。ただ、ModuleをCompleteするといくらかのcubeをgetすることができます。

※うまく使っていくことで無課金でも楽しめると思います!

たくさんModuleをやりたいという人には有料プランもあるので、検討してみてください。
また、興味のある分野をやってみたいのであればSkill pathsというものがあり、関連のModuleをまとめて学習しやすい形にされているので利用してみてもいいかもしれません。

では実際にModuleをやっていきます。
今回は「Web Requests」をやります。

hackthebox1

HyperText Transfer Protocol(HTTP)

SSHで接続する
Target: Click here to spawn the target system!をクリックし、しばらく待つとIPが表示される。
表示後、 「ssh htb-student@<表示されたIP>」コマンドを実行して、yesを入力し、パスワード(HTB_@cademy_student!)を入力後、接続完了。

To get the flag, start the above exercise, then use cURL to download the file returned by ‘/download.php’ in the server shown above.

J:フラグを取得するには、上記の演習を開始し、curl を使用して、上記のサーバーに「/download.php」によって返されたファイルをダウンロードします。

curl -s -O http://<表示されたIP:Port>/download.php」コマンドを実行し、現在いるディレクトリ(pwdで確認できる)にダウンロードされたファイルの内容を確認する。
-s silent 結果を表示しない(-sなしで試してみるとわかる)
-O 指定した URL の内容をそのままファイルとしてダウンロード

HTB{64$!c_cURL_u$3r}

HyperText Requests and Responses

What is the HTTP method used while intercepting the request? (case-sensitive)

J:リクエストをインターセプトするときに使用される HTTP メソッドは何ですか? (大文字と小文字を区別)

GET

Send a GET request to the above server, and read the response headers to find the version of Apache running on the server, then submit it as the answer. (answer format: X.Y.ZZ)

J:上記のサーバーに GET リクエストを送信し、レスポンス ヘッダーを読んでサーバー上で実行されている Apache のバージョンを見つけ、それを回答として送信します。 (回答形式:XYZZ)

curl -X GET -I http://<表示されたIP:Port>」コマンドを実行し、Serverの項目を確認
-X HTTP メソッドの指定(GETやPOSTなど)
-I HTTPレスポンスヘッダーの取得

2.4.41

HTTP Headers

The server above loads the flag after the page is loaded. Use the Network tab in the browser devtools to see what requests are made by the page, and find the request to the flag.

J:上記のサーバーは、ページがロードされた後にフラグをロードします。ブラウザの開発ツールの [ネットワーク] タブを使用して、ページによってどのようなリクエストが行われているかを確認し、フラグへのリクエストを見つけます。

ChromeなどのブラウザにTarget(IP:Port)を入力する。画面が表示された後、右クリックして”検証”(Inspect)を選択する。
“Network”タブを選択し、更新をかけるとロードされるファイルが表示される。その中から”flag~”から始まるファイルの中身を確認する。

HTB{p493_r3qu3$t$_m0n!t0r}

GET

The exercise above seems to be broken, as it returns incorrect results. Use the browser devtools to see what is the request it is sending when we search, and use cURL to search for ‘flag’ and obtain the flag.

J:上記の演習は間違った結果を返すため、壊れているようです。ブラウザの devtools を使用して、検索時に送信されているリクエストを確認し、cURL を使用して「フラグ」を検索し、フラグを取得します。

ChromeなどのブラウザでTargetを入力し、ログインする。Devtools(検証)Networkタブを開き、虫眼鏡マークのところに任意のwordを入力する。そうするとsearch.php(検索)のリクエストが新たにできる。
そこを右クリックして Copy > Copy as cURL (bash)を選択する。ヘッダーはAuthorizationの部分以外は削除し、Search=? のところをflagに変更する。
curl ‘http://IP:Port/search.php?search=flag’ -H ‘Authorization: Basic YWRtaW46YWRtaW4=’ 」コマンドを実行する。

HTB{curl_g3773r}

POST

Obtain a session cookie through a valid login, and then use the cookie with cURL to search for the flag through a JSON POST request to ‘/search.php’

J:有効なログインを通じてセッション Cookie を取得し、その Cookie を cURL とともに使用して、「/search.php」への JSON POST リクエストを通じてフラグを検索します。

ログインして、検証 > Network > リクエスト (IP)> Header > Cookieを取得する。
curl -X POST -d ‘{“search”:”flag”}’ -b ‘PHPSESSID=mnvo6v82624g68jucbfl4d4p6i’ -H ‘Content-Type: application/json’ http://83.136.251.226:58519/search.php」コマンド実行
-d data
-b Cookie指定
-H ヘッダーの項目指定
json形式のデータを送りたいとき
curl -d ‘{json}’ -H ‘Content-Type: application/json’ https://example.com

HTB{p0$t_r3p34t3r}

CRUD API

First, try to update any city’s name to be ‘flag’. Then, delete any city. Once done, search for a city named ‘flag’ to get the flag.

J:まず、都市の名前を「flag」に更新してみます。次に、都市を削除します。完了したら、「flag」という名前の都市を検索して旗を取得します。

city_nameをflagにupdate:「curl -X PUT http://83.136.251.211:41066/api.php/city/London -d '{“city_name”:”flag”,”country_name”:””}’ -H ‘Content-Type: application/json’」コマンドを実行
cityをdelete:curl -X DELETE http://83.136.251.211:41066/api.php/city/Portland
curl -s http://83.136.251.211:41066/api.php/city/flag

HTB{crud_4p!_m4n!pul4t0r}

まとめ

今回はHack The Box Academyを取り組みました。
HTB Academy は、HTB CTF に挑戦するための最高の準備場所です。段階的に学習を進め、様々な種類の脆弱性に対する対策を学ぶことで、実戦的なスキルを身につけることができます。継続的に学習し、実践を重ねることで、あなたはきっと素晴らしいハッカーへと成長できるでしょう。
学習できたらHacktheBoxにチャレンジしてみてください!

ほかにもたくさんの勉強プラットフォームがあるのでおすすめを紹介したいと思います。

TryHackMe

【ハッカー入門】TryHackMeを始めよう OpenVPN設定の仕方
画像たくさんでわかりやすい! ハッカー入門のためのTryHackMeを始める方法とOpenVPNの設定手順を詳しく解説します。初心者でも安心して学べる内容です

PortSwigger

【ハッカー入門】「PortSwigger Academy」Burp Suiteを活用してWebセキュリティ完全攻略
PortSwiggerでWeb Securityをマスターしてホワイトハッカーに。トピック「 SQL Injection」解いてみた。Webセキュリティの王道ソフト「BurpSuite」を学び、脆弱性診断やペネトレーションテストのスキルを向上させよう。

VulnHub

【ハッカー入門】「VulnHub」で実践演習 CTF対策に最適!
「Kioptrix: Level 1.1 (#2)」解いてみた。仮想マシンを活用した超実践ハッキングの世界へようこそ。初心者卒業にうってつけの勉強プラットフォーム、セキュリティスキルを向上させましょう

注意点

違法行為は絶対に行わない: 許可なく他人のシステムに侵入することは違法行為です。必ず、合法的な範囲内で実験を行いましょう。
倫理観を持つ: ハッキングは、倫理的な側面も考慮する必要があります。
情報漏洩に注意: 実験中に個人情報や機密情報が漏洩しないよう、十分に注意しましょう。