非エンジニアがHack The Boxを始めてHackerになるまで


２月某日、HackTheBoxでHacker Rankに到達することが出来ました。
ITエンジニアでも、理系大学卒でもない私がHackerになるまでやってきたことを振り返ってみようと思います。

#自己紹介 
- ニックネーム：とみー
- 職業：IT営業（代理店営業）
- 年齢：27歳
- 保有資格：
 - [情報セキュリティマネジメント](https://www.jitec.ipa.go.jp/sg/)
 - [CompTIA CySA+](https://www.comptia.jp/certif/cybersecurity/comptia_cysa/)

- 勉強開始時点のTryHackMe HackTheBoxのRank
 - TryHackMe Rank : level 1
 - HackTheBox Rank : noob
- HackTheBox Hacker到達までに費やした期間:6ヶ月

# HTB Hackerを目指した理由

セキュリティエンジニアにキャリアチェンジしたいと思ったためです。


- [ハッキングラボのつくりかた](https://www.amazon.co.jp/dp/B07JJKLZNW/ref=cm_sw_r_tw_dp_Q4AZPVJCRKQSTM7FY7BH) との出会い
- [ゆるいハッキング大会](https://sys-guard.com/post-tag/%E3%82%86%E3%82%8B%E3%81%84%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E5%A4%A7%E4%BC%9A/)への参加
- [大和セキュリティ勉強会](https://yamatosecurity.connpass.com/)への参加

３つの出来事を通じて、セキュリティエンジニアになりたいと考えるようになり、その中でもペンテストや脆弱性診断業務に強く興味を持ちました。

上記の理由から、未経験でも業界にアピールできるような実力や知識を蓄えるために、
マシンハックを学べるオンラインプラットフォームである　[HackTheBox](https://www.hackthebox.eu/)と[TryHackMe](https://tryhackme.com/)にチャレンジしました。
※以下よりHackTheBox=HTB TryHackMe=THMと呼称します。

そして学習の成果としてHTB Hacker を目標としました。Hackerを目標にしたのは、初心者でも半年〜１年ほど学習を続ければ到達可能かつ、業界からも評価を得られると考えたからです。
HTBのランク制度はActive Machineと言う、公に答えの明かされていないMachineを攻略する必要があるため、それなりの実力が必要になります。
なので、このHackerを目標に学習をすることに決めました。

以下Hackarになるまでにやったことになります。

#1ヶ月目

Hackingへの興味のきっかけは"ハッキングラボのつくりかた"との出会いでした。Hackingを学ぶ前にやっていたことは以下の通りです。

- [N予備校](https://www.nnn.ed.nico/pages/programming/):プログラミング入門Webアプリコース 
- [Paizaラーニング](https://paiza.jp/works):Python

上記を３か月ほどかけて修了させました。
当時はHacking関連への興味はあまりなく、ただプログラミングはどのようなものか体験してみたかった。くらいのモチベーションでした。
そのためコースは終了させましたがほぼ写経に近く、概要程度は理解できたものの自分でプログラミングができるか？と言われれば全くできない。というようなステータスでした。

また、サーバーやネットワーク関連知識についてもITパスポートに毛が生えた程度の実力で実際になにかを構築し作業をした。ということもありませんでした。


N予備校の上記コースも終了し、次は何をやろうかと考えていたときに出会ったのが"ハッキングラボのつくりかた"です。

ハッキングラボのつくりかたはkali linuxを使ったことのないような初心者（実際に私がそうでした）でもハッキング用の環境を構築し、Windows環境,Linux環境への攻撃を体験できる非常に面白い本です。
脅威情報や攻撃方法など常に収集するように努めてきましたが、実際に試したことはなく、「きっとこういう攻撃ができるのは超絶頭のいい人なのだろう」とボンヤリ考えていましたが、
この本を読んで認識を改めました。

実際に本にあるとおりに環境を構築し、攻撃を実施するとあまりにも簡単に攻撃を成功させることができたからです。
攻撃先のIPアドレスや環境情報を知っているから、攻撃が成立するのは当たり前じゃないかと思われるかもしれませんが、当時の私は衝撃を受けました。

「公開されている攻撃コードを使うだけで攻撃が成立するケースもあるのか。。。。」

実際に手を動かしてみて、攻撃を行ってみて、初めてセキュリティの大切さを感じることが出来ました。
この体験をきっかけに

- ハッキングラボのつくりかたでの環境構築と実際の演習
- DVWA（やられサイト）Easyレベルへの攻撃

上記を中心に　ハッキング関連の勉強を開始しました。

いろんな方に 

- 基礎を勉強してないのにハッキングからやるのは無謀すぎる。
-  プログラミングも出来ないのにハッキングなんて。

と言われた記憶がありますが、今思えば私はこの意見に大賛成です。
勉強を進めるうちに基礎理論の壁にぶち当たるのは確かですし、今現在も改めて基礎からやり直そうと、
[Recursion](https://recursionist.io/)というサイトでプログラミングをやり直しています。

ですが、初めのきっかけは「できる喜び」から始めてもいいのでないでしょうか。
とりあえず攻撃してみる。という経験がなかったら私はハッキングに興味を持っていなかったと思いますし、
ITの勉強にプライベートの大半を割くこともなかったかなと思うので。

#2ヶ月目 〜 4ヶ月目　

ハッキングラボのつくりかたで、ハッキング関連の勉強モチベーションが高まった私が次に出会ったのが
"ゆるいハッキング大会"でした。

"ゆるい"という言葉にまんまと騙されて参加し、
「全然ゆるくないじゃあないか！！」と思ったのを今でも鮮明に覚えています。

LTに爆笑し、CTFでは惨敗しましたが、リアルにセキュリティをお仕事にしている人たちに出会い非常に刺激を受けました。

モチベーションも十分高まったので、次に"TryhackMe"というペネトレーションテストの学習プラットフォームに登録し、マシンハックの勉強をはじめました。
TryhackMeでは上位者向けのCTFやマシンハックルームから、初学者向けの学習用ルームまで非常に幅広いルームがありまして、それぞれのレベルにあったルームで学習を進めることが出来ます。

具体的に初学者ルームはどんなものがあるかというと、Linux操作コマンドの解説やBurp、Nmapといったツールの使い方講座などです。
また、それぞれのルームを束ねたコースも存在しております。
この時期の私は下記２つのコースで学習を進めていました。

- [Complate Beginner](https://tryhackme.com/path/outline/beginner)
- [Comptia Pentest+](https://tryhackme.com/path/outline/pentestplus)

Beginnerコースでは

- Linux windowsの使い方
- Nmap Burp Hydra hashcat gobusterなどのハッキングツールの使い方
- Web Application へのハッキング方法（OWASP Top10をもとに） 
- 基本的な特権昇格の方法

上記を学びました。

Linuxのコマンドラインを使ったこともなかったので、このコースでの学習内容は非常に有用でした。
このあたりから、「なんで非エンジニアなのにそんなツール詳しいの？」と驚かれることが増えてきたように思います。
本当にTHM様様です。

THMの良いなと思うところは、必ずルームで身につけた知識を使う機会があることです。
実際に学んだツールや、知識を使いFlagを取りに行かなければRoomをクリアすることが出来ないようになっているので、
嫌でも手を動かすことになります。

またTHMはゲーミング要素も含んでおり、やればやるほどポイントを獲得することが出来、Rankが上がって行く仕様になっています。
この仕様にどっぷりハマってしまった私は毎日毎日THMに時間を費やしておりました。。。

下図はそのころの記録です。
※登録は9月にしていたのですがどっぷりハマったのは10月中旬頃からです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183260/dd56bf23-6219-3ba6-512f-b8f7df0971eb.png)


またこのころTMCIT × 大和セキュリティ ペネトレ超入門への参加しました。

同僚からの紹介で大和セキュリティを知りました。
ペネトレ超入門の会はリアル開催で一日中缶詰で勉強会が実施されました。

https://yamatosecurity.connpass.com/event/185689/

THMで初学者なりに勉強していたので、超入門CTFはほぼNoヒントで無事クリア！

また、"白船（田中ザック）(@yamatosecurity)"さんのセキュリティに対する考え方は非常に勉強になりました。

 
- ペンテストや脆弱性診断で判断できるのはセキュリティ全体の本の一部であること
- Redチーム側、Blueチーム側それぞれ協力することで初めてペネトレーションテストは意味をもつこと

など多くの学びがありました。

この勉強会をきっかけに脆弱性診断士へキャリアチェンジすることを決めました。
勉強会以降はTHMに費やす時間が更に増加し、平日でも4時間〜5時間ほど時間をかけていたと思います。

ちょうど[Advent Of Cyber2](https://tryhackme.com/room/adventofcyber2)も開催しており毎日毎日THMのルームを攻略していました。
結果的に抽選から漏れてしまい景品を受け取ることは出来ませんでしたが、主に下記を学ぶことが出来ました。

- 基本的なインジェクション攻撃
- 初歩的なバッファオーバーフロー
- WireSharkを使ったログ解析

このころにはビギナーコースも修了しておりましたので、Advent Of Cyberは学んだことを実践するとてもいい機会になったと思います。
毎日課題を課せられるますし、課題のジャンルが非常に広かったのも良かったです。
自分でRoomを選ぶと得意分野に偏りがちですが、強制的に他のジャンルを学べましたので。

#5ヶ月目

この時点で2021年が始まっており、年末年始休暇の大変の時間を使いTHMのRoom攻略をしていました。
THMでは攻略ポイント数に応じてランキングが表示されるのですが、瞬間最大風速で3位になったりしました。
※1月9日時点なのでたった9日間ではありましたが。その後1月末にかけては６〜８位を推移していたと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183260/0b3fe0ce-63d6-8b61-dd05-59b5a0e44b20.png)

このころTHMのEasyRoomはほぼクリアし、MedeiumRoomもそれなりに攻略出来ていたのでHackTheBoxにチャレンジを考えました。
THMのマシン攻略は現実的ではない。という声が多く聞こえてきましたし、HTBのハッカー到達はもともとの目的だったので。

ということで１月中旬以降からやったことは下記の通りです。

- HTBのリタイアマシンを攻略
　→わからない部分はWriteUpを見つつ攻略しました
- HTBリタイアマシンで出てきた脆弱性や未知だった技術をTHM Roomで復習

HTBにチャレンジしてみて、やはりTHMとの差を感じました。
具体的には、ブルートフォースで解ける問題がほぼないこと。HTBには既知の脆弱性を探索しそれを利用して攻撃するケースが多いこと。
現実にありそう？（実地経験はありませんが。。。）なマシンが多いように思いました。
脆弱性を探し、攻撃コードを探し、それを利用するのは実際の攻撃をしているようでとても愉しかったです。

また、この頃から攻撃コードを読むためのプログラミング力やLinuxの基本的な仕様など基礎力のなさを実感し始めていました。
理解しないまま攻撃をコードを利用し攻撃に成功してもなんとなく虚しさを感じるようになってきたのです。

#６ヶ月目

６ヶ月目にやったことは下記の通りです。

- Recursion（初級コース　HTML/CSSコース）
- HTB ActiveMachine攻略
- THM CTF Collection

リタイアマシンを１０マシンほど解いたところ、ほぼほぼWriteUpなしでも解けるようになってきましたので、アクティブマシンに挑戦しようと思いました。

初めてに解いたActiveMachineはScriptKiddyというアクティブマシンでした。
マシンの概要を書くことは禁じられているので、ここに記載することは出来ませんが、チャレンジした当初は全く歯が立たず１２時間ほど考えてもリバースシェルすら取れず悔しかったのを覚えています。
解くことが出来たのは執念と運だと思います。脆弱性がありそうな箇所を片っ端から調べ、攻撃を実施しました。
結果的に攻撃には成功し、無事攻略することが出来ました。
初めてアクティブマシンを解き、やっとHackerたちの仲間入りが出来たような喜びでいっぱいになったのもつかの間、同僚に「その解き方は甘えですよ」と言われ肩を落としました。。。

悔しかったので他のアクティブマシンを攻略に手を付けはじめEasyマシン（Linux）とMedeiumマシン１台、チャレンジ（HTBのCTFのようなもの）４問程度をこなしたところ
無事Hakcer Rankに到達することが出来ました。

アクティブマシン攻略の際に活かすことが出来たのは、"THMの学習ルームでの知識"と"Recersion 初級コース,HTMLコースの知識"でした。
具体的には探索の方法や、コードの見方、書き方などです。
自信のない部分は以前攻略したマシンやTHMのルームを見直したり復習をしつつマシン攻略をしました。
どうしてもわからない部分は公式ドキュメントやGitHubの情報を確認し攻略に当たりました。

マシン攻略と同時にPicoCTFやCpaｗCTFにチャレンジしました。
これまで学んだ知識で解ける問題も多く、知識の整理に役に立ったように思います。

#まとめ
最後に現在の TryHackMe HackTheBoxのRankを置いておきます。

- TryHackMe Rank : GOD
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183260/6075092b-38e3-3d30-ee9e-4205b37dc1fb.png)

- HackTheBox Rank : Hacker
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183260/3ce1e4fe-8651-d119-343c-c3616dd07e9a.png)

非常に長くなってしまいましたが、Hackerになるまでにやったことをまとめると、

- THM ビギナーコース Pentest+コース　の修了
- THM Easy Medeium ルームの攻略
- HTB リタイアマシンの攻略(WriteUpを見ながら)
- HTB チャレンジの攻略
- [PicoCTF](https://picoctf.org/)
- [CpawCTF](https://ctf.cpaw.site/)
- Recursion(初級コース,HTML/CSSコース)
- ゆるいハッキング大会への参加
- 大和セキュリティ勉強会への参加
- ハッキングラボのつくりかたでの学習

この他にも
[動かしながらゼロから学ぶ Linuxカーネルの教科書   末安 泰三] (https://www.amazon.co.jp/dp/4296106953/ref=cm_sw_r_tw_dp_31T0RC3QRKWZ9EJT9N23)
[サイバーセキュリティテスト完全ガイド ~Kali Linuxによるペネトレーションテスト~   Peter Kim] (https://www.amazon.co.jp/dp/4839959552/ref=cm_sw_r_tw_dp_BNT66068A48DN9S2VS2E) 
[パケットキャプチャの教科書 (Informatics&IDEA)   みやた ひろし] (https://www.amazon.co.jp/dp/4797390719/ref=cm_sw_r_tw_dp_4CBGWATD3KHQ0PC0CG5Y)
などでネットワークやサーバについて学習をしておりましたが詳細は長くなってしまうので割愛します。

#これから

無事HackerRankになったわけですが、相変わらず知識は不足していると自覚しておりますので今後はハッキング関連だけでなく、プログラミング力やサーバー関連、ネットワーク関連知識、基本的なセキュリティの考え方を身に着けてたいと思っております。

またキャリアチェンジにあたり、資格を取得したいと思っておりまして、現在考えているものは下記のとおりです。
- [Lpic1 , 2](https://www.lpi.org/ja/)
- [情報安全確保支援士](https://www.jitec.ipa.go.jp/1_11seido/sc.html)
- [Comptia Pentest＋](https://www.comptia.jp/certif/cybersecurity/comptia_pentest/)
- [ウェブ・セキュリティ基礎試験(徳丸基礎試験）](https://www.phpexam.jp/tokumarubasic/)
- [Oracle Master](https://www.oracle.com/jp/education/index-172250-ja.html)

資格を取るメリットは実力の証明は勿論体系的に知識を得られることだと考えております。
資格取得をしつつ、Recursionでの学習や、CTFやマシン攻略を継続する予定です。


私はIT基礎を学んできておりませんし、ハッキング関連知識も一切なく、ただ興味だけで学習を続けてきました。
きっと他の皆さんはもっと効率良く学習をし、HTB Hackerなんてラクラク到達されるのだろうなぁと思いますが、
もし未経験の方の参考になればと思い本記事を書かせていただきました。

少しでも私と同じような方の参考になれば幸いです。