怒られない程度で超簡単にHack The BoxのChallengeの解き方メモを置いておきます。自分が見ればすぐに思い出して回答方法を再現できて、他の人が見たら結構大きめのヒントになる程度 (フラグそのものやそれに直結する情報は書かない) という感覚で書いていきますが、どうしても更なるヒントが欲しいという人がいたらコメントください。
全体共通 : Kaliに追加で入れるべきツール
- gdb-peda : CTFにおけるgdbの完全上位互換、Reverse系の問題がとても楽になる。
- ILSpy : .NETで開発されたプログラムのデコンパイルするツール。ReflexILをプラグインとして追加すると、バイナリファイルを直接編集することも可能になる。
Reversing
Baby RE
- CTFでバイナリを手に入れた時に、最初にやることをやればいいだけ。
Impossible Password
- パスワードの入力を求められる、よくあるやつ。
- 1つ目のパスワードはすぐにわかるはず。問題は二つ目だけれども、問題名を踏まえて対処方法を考えること。
Bypass
- fileコマンドで見ると、問題のファイルが.NETで作成されていることがわかる。これについてはWindowsのVMで解くのがいいだろう。
- よくあるパスワードを求められて、正しいものを入力するとフラグが得られるものだが、”Bypass” とあるとおり、正攻法ではなくてその処理をスキップすることを考える。
- 先頭で紹介しているILSpay + FlexILで頑張ればフラグまで辿り着けるはず。
Exatlon
- 今回はbypassではなくて入力するパスワードを得ることが目的。問題のファイルはUPXで圧縮されているので、まずunpackする。gdb-pedaで追ってゆくと、入力した文字列を別の文字列と比較しているタイミングがある。
- 直球ではないので、少し考える必要がある。よくわからない場合は、入力文字列のASCIIコードを念頭に、プログラマ向けの電卓を使って16進と10進を切り替えながら比較すると法則がわかるはず。
Hackybird
- 多分この問題はLinux環境でIDAで追っても解けない。素直にWindowsのVMを使うこと。ちなみに、問題文に登場する “Mr. Miyagi” は、”Karate Kid”という映画 (邦題は”ベスト・キッド”)に登場する主人公の空手の師匠のこと。達人の代名詞として利用されることが時々ある (Ninjaとかと同じニュアンスか)。
- (トライ中)
Stego
Pusheen Loves Graphs
- 問題文をよく読んで、その通りにやればいいだけ。
- Kaliに入れたIDAでは環境のせいか解けなかったけれども、Free版の7.0@Macで解けた。
Digital Cube
- 比較的簡単な割にはPOINTSは高い。サービス問題。
- 与えられたファイルの文字数をカウントした上で、問題文を改めてよく読んでみること。
- データ特性を理解できればあとは簡単なはず。よく探せばWebツールもある。
Forest
- 問題を解くには複数のツールの利用が必須となるはず。まずは与えられた画像を画像としていろいろな角度から眺めてみること。
- そこから得た情報を別のところで利用する。ちょっと気が付きにくいが、Steo系のCTFの問題にチャレンジする際には基本中の基本と言えるある著名CLIツールを使うのが一般的か。
- 最後の一段階は、上記の二段階に比べれば簡単。
Misc
misDIRection
- 問題名自体が大きなヒント。”多分こういうことなんだろうな”には、すぐに気がつくはず。
- 手動で頑張れなくもないが、この先はプログラミングの時間。管理人はsedの正規表現をパイプで繋げて頑張ったが、たぶん全くエレガントなやり方ではない。
Eternal Loop
- 課題ファイルを開いてみればやるべきことはすぐにわかるはず。理論上人力突破も可能ではあるが、それが本道ではないのはわかるだろう。
- 最後の一段階だけはそれまでの法則が通用しないので力任せに破る必要がある。Kali Linuxに同梱されているツールで解決できる。
- 最後のファイルは、正面からでも搦手からでも攻めることが可能 (管理人は搦手)。
Longbottom’s Locker
- index.htmlはとりあえず無視する。これが最後の砦で、これを正面突破することも可能かもしれないが、かなり困難な道のりだと思われる。
- これはWebではなくMiscの問題。あらゆる可能性を試してみること。
- 謎の文字列に出会ったら、とりあえずググってみること。
Web
まだない。
Forensics
Took the Byte
- 自分はCyberChefだけで解けたとだけ言っておく。回答した後で改めて問題のファイルを見直してみたが、CyberChefなしで解くのは困難だったと思う。
- 大量にあるOperationをひたすら試してみること。思わぬ発見があるかもしれない。
USB Ripper
- 最初は色々悩んだけれども、終わってみたら非常に単純だった。
- syslogとjsonファイルの2つを渡されるが、この2つのファイルを引数に取ってあるツールを実行した出力結果で、限りなく回答に近づくことができる。
- 問題文に “once you find it, “crack” it” とあるが、まったく大変な作業ではない。
Illumination
- 問題ファイルを回答してみれば、gitのリポジトリであるということは誰にでもわかる。
- gitとは要するに変更を追跡するシステムであるということを理解した上で、gitコマンドのヘルプを見ながら与えられたリポジトリを歩き回れば、解答に辿り着けるはず。
Reminiscent
- 見慣れないファイルと思う人がいるかもしれないが、imageinfo.txtの中身を見ればメモリダンプだとわかるはず。
- メモリダンプを扱えるツールは限られているが、自分は慣れているVolatilityを利用。手元のKali Linuxにはなぜか入っていなかったので、公式ページの手順で別途インストールを行った (昔のKaliにはデフォルトで入っていたようだが)。
- Volatilityの使い方は若干癖があるが、ヘルプが親切なので初学者でもそれほど難しくはない。イメージファイルを開いてプロセスリストを取得、いかにも怪しそうなプロセスがいくつかあるので、それらについて深く追っていけば、解答に辿り着けるだろう。
- 問題文にある”Find and decode the source of the malware to find the flag”が大ヒント。
MarketDump
- zipを解凍するとpcapが出てくる。CTFとかでもよくあるパターンで、この中から怪しげな通信データを探す。問題文の状況説明で、見るべきトラフィックは絞り込めるはず。
- 目的のデータが見つかったら、その中に明らかに異質なデータが紛れ込んでいるのがわかるはず。最後にもう一工夫が必要だが、ここまでくればフラグは目の前。
OSINT
Easy Phish
- 問題文で与えられている情報がドメイン名しかないので、それについて調べるしかない。
- Kaliに導入済みのとあるツールを使えばフラグの半分は簡単に獲得できるが、残りの半分については想像力が必要。
- “顧客がフィッシングメールに引っかかる理由”が求められていることを念頭に置きつつ、周辺情報を徹底的に手動で調査するしかない。半分エスパーかも。
Money Flowz
- Webでググって調べる & 画面内をクリックするだけでフラグを発見することはできるものの、暗号通貨に関する知識がないと少し苦しいだろう。
- キーワードとして与えられている名前でググるといくつかの情報がひっかかるものの、その中にはその本人が発していない情報も含まれているので、惑わされないよう注意が必要。
- 問題文は”…can you figure out where the money flows?”。つまり、お金が流れていく先を調査するという点がとても重要。
ID Exposed
- メールアドレスだけを与えられて、”last location”を探す問題。これはかなり苦労した。
- とにかくメールアドレスや@の前でググっても有意な情報がほとんど出てこない。最終的にとあるWebツールにアドレスを入れて一発で答えにたどり着いて拍子抜けする。
- Write-upをググるともっとインテリジェントなやり方もあるようだが、自分でそれにたどり着くことはできなかっただろうなぁと反省。
Infiltration
- ググる能力に加えて注意力が試される問題。与えられた情報でググると3秒でフラグが見つかった…と思うがそれはダミー。値自体に特にそれを示唆する内容はなく、入れてやっぱりねと思うやつ。
- でも、諦めずにそのままググり続ければ、すぐにフラグに辿り着けるはず。この手の問題としてはとても簡単な部類に入るし、エスパー要素は全くない。