きなこもち。

(´・ω・`)

CTF初心者が考えるCTF入門

2023/07/22 『初めてのマルウェア解析』を追加しました。

2022/12/25 『実践バイナリ解析』を追加しました。

2021/8/22 『詳解セキュリティコンテスト ~CTFで学ぶ脆弱性攻略の技術』を追加しました。

2021/2/20 Web Security Academyの紹介を追記しました。

2021/1/1 一部の参考書を刷新いたしました。

2020/5/3 記事を書いて1年以上経ったので、大幅に加筆&修正いたしました。

 

どうも、きなこです(´・ω・`)

 

先日ツイートしたCTF初心者についての内容がちょっとばかり反響があったこと、そして、私自身がCTFに関して右も左も分からない状態から、ある程度経験を積んだことにより、簡単な問題なら解けるようになったので、今日はCTF初心者から考えた、CTF初心者向けの学習の道筋を書こうと思います(´・ω・`)

 

 

ちなみに私はSECCON等各種大会に出場経験は一切ありません(´・ω・`)デタイ

 

 

 

読者対象

  • CTFに興味があるけど何をしたらいいか分からない人
  • いわゆるハリネズミ本を購入してみたものの、よくわからずCTFを投げた人
  • 身の回りでCTF for beginnersのようなイベントが開かれない地域に住んでいる人

 

 

1.まず敵を知る

CTF初心者がまずすべきことは、CTFをよく知ることです。

野球をプレイするには、野球のルールを知らなければなりません。

それと同じで、まずはCTFのルールやジャンルを知りましょう。

 

CTFのジャンルに関しては、後に参考になる本やリンクと共に詳しく解説しているので、このまま読み進めてください。

ルールに関してはググってね(´・ω・`)

 

 

また、初心者の方はいわゆるハリネズミ本( セキュリティコンテストチャレンジブックという本 )↓を読むといいかもしれません・・・が、この本はいきなりBinaryとPwnという、初心者が前提知識0で読むと意味不明の分野(後述)から説明しているので、かつての私のような右も左も分からない初心者は「CTF難しすぎる・・・諦めよう」となりかねません(´;ω;`)

 

そういった事態を避けるためにも、後述するcpawCTFなどである程度経験を積んでから読むことをおすすめします。

 

 

セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-

セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-

 

 ( いわゆるハリネズミ本。私は大学3年の春に購入しましたが、その難易度からすぐに投げ、1年経った現在やっと6割くらいは分かるようになりました。。。 )

 

 

2021/8/22追記:

長らく日本国内におけるCTFのバイブルであったハリネズミ本に続き、『詳解セキュリティコンテスト ~CTFで学ぶ脆弱性攻略の技術』が出版されたようなのでこちらで紹介しておきます🙇‍♂️

2021年現在からCTFを始めるor始めた方はこちらを優先的に購入することをおすすめいたします。

 

 

 

 

 

CTFで出題されるジャンル(と個人的な偏見)

Cryptography(Crypto)

  • 暗号に関する問題。簡単なものでシーザー暗号、難しいものでは数学の深い知識(数論)が要求されるものもある。
  • 各種暗号はネット上に解いてくれるWebサイト・ツールが転がっているので、素直に使った方が楽。でもコード書いても勉強になる。

 

--参考書籍-- 

 

暗号技術のすべて 

暗号技術のすべて

暗号技術のすべて

 
  •  「ハッカーの学校」「ハッキングラボの作り方」で有名なIPUSIRONさんによる、暗号論のテキストです
  • 2017年出版ということもあり、内容が他の暗号の本より新しく、適度にボリュームもあります
  • 読者対象に、「CTFのCrypto分野を得点源にしたい人」との記述がありましたので、紹介しておきます(暗号のみならず、乱数やHTTPSの仕組みまで解説してあります!)
  • 余談ですが、意外と本が柔らかい(?)です

 

 

 はじめての数論

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

 
  • 中高生向けに書かれた初等整数論のテキストです。
  • 中身はバリバリの数学書なので、読み終えるにはそれなりに時間をかける必要があります

 

 

Network

  • ネットワークに関する問題。Wiresharkを使ったパケット解析など。
  • 暗号化が施されていない通信プロトコルからフラッグを見つける初歩的な問題を解いていくのが王道。
  • この記事を書いて早一年、野良CTFではあまり見かけなくなった印象...(出題されてもUSBのパケット解析が多いような?)
  • 個人的にこのページが大変参考になりました。

CTF ネットワーク問題の基本問題(1) - namdicul's blog

 

--参考書籍--

 

マスタリングTCP/IP-入門編-(第6版)

  • 言わずと知れたマスタリング本。1年前は第5版が最新でしたが、新版が出たので刷新。
  • パケット解析だけなら、次に紹介するパケットキャプチャの教科書のほうが詳しいです 

 

 

パケットキャプチャの教科書

パケットキャプチャの教科書 (Informatics&IDEA)

パケットキャプチャの教科書 (Informatics&IDEA)

 
  • Wiresharkを用いたパケット解析の本。
  • 結構ボリュームが多いです。L2からL7まで解説しているので、マスタリング本に劣らずプロトコルの勉強には有用

 

 

Binary Exploitation(Bin) & Reversing(Rev)

  • BinはBinary Exploitation。バイナリファイルを解析するジャンル
  • RevはReversingで、リバースエンジニアリングに関するジャンルです
  • stringsコマンドでFLAGが手に入るもの簡単なものから、かなり経験を積んだ人しか解けないようなものもある。
  • C言語アセンブリ言語の知識が前提。加えて、メモリやレジスタの知識も要求される。
  • WindowsのexeファイルからLinuxのelfファイルなどによって諸々異なるので、覚えることやや多し。 
  • RevではIDAやGhidra、gdbを用いた解析がメイン。ツールの使い方を習得することが必要で、問題を解く準備期間が長くかかるかもしれない(が、後述する資料があれば大丈夫!)

 

--参考書籍--

 

 

 リバースエンジニアリングツールGhidra実践ガイド

  • ↑の冴えないIDAの育て方の著者様が最近出版した、Ghidraというリバーシングツールを解説した本 
  • 2020年出版ということで、非常に内容が新しくかつ初心者の環境でも構築しやすいと思うのでこの本が1番おすすめです

 

Hacking: 美しき策謀

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

 
  •  言わずと知れた策謀本
  •  2011年出版(10年前)64bit環境がデフォとなった今、再現できないコードが多いです
  • 用いるテクニックなどは今と変わらないので一読しておいて損はないですが、なるべく↑のGhidra本など新しい書籍を読み終わり、余裕がある時に読んだ方が挫折せずに済むと思われます

 

2022/12/25追記:

2018年に出版された原著Practical Binary Analysisを翻訳したものが2022年に出版されているこの実践バイナリ解析ですが、かなり有用と感じたため追記しておきます。

後述のリバースエンジニアリングバイブルは2013年出版なので内容の古さが気になる!という方はこちらから入門するのも良いと思います。

 

 

 

 

初めてのマルウェア解析

 

  • x86、x64両方の環境におけるWindowsマルウェア解析の入門本です
  • Revに必要なアセンブリ言語の説明に結構ページを割いており、Revを学びたい人にも有用です
  • Process Injectionなど、実際の現場で使われるテクニックなども包括しているのでMalware Developmentなどの参考にもなります

 

書籍以外にも、以下のスライドが参考になるかも知れません(; ・`ω・´)

CTF for ビギナーズ バイナリ講習資料

 

 

Web Exploitation(Web)

  • Webセキュリティに関する問題。
  • クライアントサイドの問題と、サーバサイドの問題に二分できる。
  • クライアントサイドでは、XSSJavaScriptの難読化などがメイン。
  • サーバサイドはSQLインジェクションパストラバーサル、JWTなどのセッション関連、XXEなどなど列挙するには多すぎるほどジャンルが多いです...
  • よって解くに当たって求められる言語の知識が多く、JavaScriptからPHPPerlSQLなどの知識が求められます。
  • それ以外にも、各データベースの差異、言語の関数の特徴などなど。しかし、解いていくうちに慣れるので心配しなくてOKです

 

--参考書籍--

 

体系的に学ぶ 安全なWebアプリケーションの作り方(第2版) 

  • 業界では知らない人はいない、通称徳丸本。
  • PHPで書かれていますが、スラスラ読むことができると思います。PHPが不安な方は独習PHPあたりを読んでおけば無問題!(; ・`ω・´)
  • 初版ではなく第2版を買いましょう

 

 

2021/2/20追記:

Webセキュリティは環境構築などが比較的難しく、初心者が挫折してしまう場合もあります。

そこで、Burp suiteの開発元が提供しているWeb Security Academy(全て無料)をオススメしたいと思います↓

portswigger.net

 

Web Security AcademyはXSSやSQLiのみならず、XXEやSSRFなどの少し踏み込んだ脆弱性の内容を解説しているだけでなく、無料のラボ(Lab)で実際にBurp suiteなどを使いながら攻撃することができ、理論と実践を学ぶことができます。

 

f:id:kinako_mochimochi:20210220125615p:plain

たくさんのトピックとラボあり

 

一部のラボでは有料版のBurp suiteが無いと解くのが厳しいものがありますが、大半のラボは無料のcommunity editionで間に合いますし、writeupをyoutubeにアップしている方もいらっしゃるのでどうしても詰まったら駆け込みましょう(; ・`ω・´)

 

内容も随時更新されているので、上記の教材に飽きたらぜひWeb Security Academyで勉強してみてください。

(唯一の難点は全て英語なところですが、そこは気合いで...)

 

 

Pwn

  • プログラムの脆弱性を突く分野(エクスプロイトする、とも言う)。
  • 世間一般の人々が想像するハッカーがやってることに最も近いイメージで、かつ難易度がとても高い(; ・`ω・´)
  • Reversingなどの他分野の知識がかなり要求されるので、初心者がpwnから入るのはおすすめしない。
  • Pwnが解ける人はかっこいい

 

このSlideshareのスライドが大変わかりやすく参考になると思います

PWNの超入門 大和セキュリティ神戸 2018-03-25

 

Pwnの基礎固めとしておすすめのかたわれさんのブログ↓kataware.hatenablog.jp

  • 完全に余談ですが、1年前の5月はISPで夜間のサーバ監視のバイトをしていて、眠らなければ何してもOKだったのでこのかたわれさんのret2libcやret2pltの記事を写経していた思い出があります...あれから1年か。。。 

 

 

 

--参考書籍--

 

コンピュータハイジャッキング

コンピュータハイジャッキング

コンピュータハイジャッキング

 
  •  64bitのLinux環境を用いて、初歩的なバッファオーバーフローからシェルコードの仕組み、リバースシェルの張り方まで解説した本。
  • 2018年出版ということで、Pwn系の書籍に比べると内容が新しいので、策謀本やる前にこれを読むことを強く推奨します

 

Malleus CTF Pwn

 

解題pwnable セキュリティコンテストに挑戦しよう! (技術の泉シリーズ(NextPublishing))

解題pwnable セキュリティコンテストに挑戦しよう! (技術の泉シリーズ(NextPublishing))

  • 作者:草野 一彦
  • 発売日: 2020/12/18
  • メディア: オンデマンド (ペーパーバック)
 

 

 

  • ksnctfで有名なkusanoさんの本。簡単なBOFはもちろん、one_gadgetなどを用いたExploitなどをわかりやすく解説しています
  • 2020年出版なので前述のコンピュータハイジャッキングより内容が新しく、かつ発展的な内容を収録しています
  • heap問まで収録している。 入門から応用まで、用意されたDockerコンテナで学べる一冊

 

Forensics

  • フォレンジック。データから情報を抜き出しFLAGを探します。
  • fileコマンドでファイルの種類を調べたり、時には画像ファイルをバイナリエディタにぶち込んだりしてFLAGが紛れてないか調べます。
  • このQiitaの記事に載っている知識で結構解けます

qiita.com

 

 

 

 Forensicsにはステガノグラフィー(Steganography)と呼ばれる分野が含まれており、以下のページが大変参考になります。

digitaltravesia.jp

 

OSINT(Open Source INTelligence)

  • オシント。公開されている情報をもとに、個人を特定したり。ネットストーキング。
  • OSINTメインのCTFなどもあるらしい。

 

Miscellaneous (Misc)

  • 雑多を意味する。上記に該当しない問題。
  • base64系やPython、シェルのjail break系が多い印象。

 

--参考書籍--

 

難読化シェル芸の世界 

難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版)

難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版)

  • 作者:kanata
  • 発売日: 2019/04/24
  • メディア: 単行本(ソフトカバー)
 
  • SECCON CTFで作問にも携わっているkanataさんの本。
  • (ごめんなさい、難読化シェルどころかシェルスクリプトのすら勉強していないのでまだ読めてないです...)
  • 当ブログを紹介してくださっているkanataさんリスペクト(; ・`ω・´)

 

 

 

今は全て覚える必要はなく、後述の常設CTFで問題を解きつつ覚えていきましょう。

 

 

 

 2.常設CTFで経験を積む

常設CTFとは、いつでもCTFの問題に挑戦できるWebサイトのことです。

 

常設CTFは国内から海外のものまで様々な種類があり、国内で有名なのはksnctfでしょうか。

 

 

 

 

 

 

 

 

 

 

 

初心者はまずcpawCTFを解きましょう。

初心者はまずcpawCTFを解きましょう。

初心者はまずcpawCTFを解きましょう。

 

 

 

 

 

 

 

 

 

 

・・・マジで。(´・ω・`)

 

 

 

 

 

 

 

 

 

 

 

私が人生で初めて挑戦したのはksnctfでしたが...

 

私の珍エピソード:村人A ( ksnctfにはVillager Aという有名な問題がある )

CTF超強い人「ksnctfの村人Aという問題おすすめですよ」

私「はい!解いてみます!」

 

 

 

 

 

 

私「」

(当時sshやncコマンドすら知らなかった私はそもそもリモートサーバに接続することも困難でした笑)

 

 

 

 

...お恥ずかしながら、この記事を書いていた当時はksnctfの問題はほぼ解けておりませんでした(´;ω;`)

なので、白紙の状態からCTFを始めた人が、これらの常設CTFの問題が解けずにCTFに取り組むこと自体を諦めないためにも、まず初心者向けに作られているcpawCTFから始めることを強く勧めます。

 

cpawCTF:

ctf.cpaw.site

 

ksnctf:

ksnctf.sweetduet.info

 

 

 

ちなみに、cpawCTFをだいたい解き終わり、次のステージに進みたい方は、海外の常設CTFになりますがpicoCTFに進むのがオススメです。

 

picoCTFは各問題にヒントが付いており、またCTFに必須ないくつかの技術、

例えば前述したncコマンドを用いたリモートサーバへのアクセスだとか、Binary分野を解く際に必要なstringsコマンドやForensicに必須のexiftoolコマンドの習得を目的とした問題がたくさん用意されているので、解きつつ必須の知識を学べるという初心者にとっては非常によいサイトだと思っています( ・`ω・´)

 

 

さらに、picoCTFに関してはYoutubeにwriteupをほぼ全てアップしている外国人の方がいらっしゃるので(英語も聞き取りやすい!)、詰まったらYoutubeに駆け込みましょう(; ・`ω・´)

 

 

 

また、kusuwadaさんという方がブログの方で詳細なwriteupを書いてくださっているので、ギブアップのときは参考にしてくださいね(´・ω・`)

 

picoCTF:

picoctf.org

 

kusuwadaさんのブログ「好奇心の足跡」↓

kusuwada.hatenablog.com

 

3.最後に 

どうしても解けない問題に直面した場合は、素直に答え(writeup)を見ながら解いてもいいと思います。

 

答えからどうやって解くかを学び、次似たような問題が出た時に瞬殺できるようになることができれば、それでいいと思います(´・ω・`)

 

自分のレベルにあった常設CTFを解きつつ、並行してCTFに関連する知識を積み上げていけば、必ずレベルアップすると思っています!(´^ω^`)

 

↓個人的なCTFや競プロに対する考え方↓

 

初心者のうちは、定石をひたすら頭に叩き込んで、あとは組み合わせていけばそれなりに解けるようになると思っています(´・ω・`)

 

つまり基本が大事ということですね(´-ω-`)

 

 

 

 

 

 

それではよいCTFライフを!(´^ω^`) 

 

 

 

 

 

 

おわり

 

 

 Twitter:

twitter.com