【CTF】†ハッキング†をしてみませんか?
こちらはCCS Advent Calendar 2023 1日目の記事となります。
CCS OBのちにむるひと申します。現在はWebサイトに脆弱性(セキュリティ上の欠陥)がないかを診断するお仕事をしています。
突然ですが、†ハッキング†に興味はありませんか?本記事では以下のような方向けにゲーム感覚で遊べるハッキングを紹介していきます。
セキュリティに興味はあるが何をしたら良いか分からない人
就活に向けて何かしら経験を積みたい人
新しい趣味が欲しい人
脳汁を出したい人
人類
はじめに
注意事項
たとえ善意だとしても、自身の管理外もしくは許可されていないサーバに擬似攻撃を行うと、場合によっては犯罪行為となる可能性があります。自らの管理下、または許可されたコンピューターに対してのみ実施するようにしてください。
ゲーム感覚でハッキングをしてみよう
本記事では情報セキュリティに関する技術力を競い合うゲームCTF (Capture The Flag)を紹介します。競技プログラミングをご存知の方は、そのセキュリティ版のようなものだと思って頂ければと思います。
CTFの紹介
どのようなことをするの?
過去に開催されたCTF、CakeCTF 2023のCountry DBという問題を例に説明します。
セキュリティ上本来ならば閲覧できない情報「フラグ」を手に入れることを目指します。
Country Codeを入力すると、それに対応した国名が表示されるサービスがあります。(例:JPと入力したらJapanと返ってくる)
Searchボタンを押下した時の通信をBurp Suiteというツールを使って見てみると、以下のような内容を送信していることがわかります。
{"code":"JP"}
配布されている、このサイトのソースコードを確認すると「フラグ」がデータベースに存在することが予測できます。
FLAG = os.getenv("FLAG", "FakeCTF{*** REDACTED ***}")
conn = sqlite3.connect("database.db")
conn.execute("""CREATE TABLE country (
code TEXT NOT NULL,
name TEXT NOT NULL
);""")
conn.execute("""CREATE TABLE flag (
flag TEXT NOT NULL
);""")
conn.execute(f"INSERT INTO flag VALUES (?)", (FLAG,))
また、セキュリティの穴をソースコードやアプリケーションの動作から探します。(詳しくは割愛します。)
ここで、Searchボタンを押下した時の通信をBurp Suiteを使って良い感じの攻撃文字列に書き換えて送信します。
{"code":[ 0, ")UNION SELECT flag FROM flag; -- "]}
この結果、セキュリティ上本来ならば閲覧できない情報「フラグ」を手に入れられます。
この「フラグ」を報告することでポイントが獲得できます。
解けると脳汁が出ます。解けそうで解けない寸止めを喰らうと最悪の気分で休日が終了します。
これはWebジャンルの問題の一例です。CTFには様々なジャンルの問題があり、これらの問題を解いて獲得したポイントを競い合います。
問題のジャンル
CTFには様々なジャンルの問題があります。ジャンルの一例を紹介します。
私は基本Web問題しか解かないのでその他はエアプの意見です。
Web
Webアプリケーションが持つ脆弱性を突く問題。Webサイトの脆弱性診断等の仕事にも繋げられます。これを学んで僕と一緒に働きませんか?
Pwn
プログラムの脆弱性をつく問題。最近だとIoTデバイスの脆弱性診断等の仕事に繋げられるかも。
Crypto
暗号技術に関係した問題(RSA、xorパズル等)。競プロ経験者は解きやすいかも。
Reversing
実行ファイルの解析(リバースエンジニアリング)に関係した問題。簡単に言えばソフトウェアを解析して内部の設計や動作を調査します。
ゲームの割れやチート対策等に興味がある人におすすめかも。
Misc
その他コンピュータの雑学などの問題。
他にも様々なジャンルがありますので是非調べてみてください。全てのジャンルを一度に学ぶことは現実的ではないため、まずは興味の湧いた一つのジャンルに絞ってやっていくと良いでしょう。
開催されているCTF
開催予定のCTFはCTF TIMEで確認できます。
また、こちらのサイトではWrite up(回答例)等など様々な情報が確認できます。
週末開催のCTFが多いです。明日から開催されるものあるので是非…と言いたいところですが、予備知識なしだと太刀打ちできないものも多いです。
そこで、初学者におすすめのサイトを紹介します。
オススメの学習サイトの紹介
XSS Game(Web問題)
Web問題に少し興味を持ってもらった人におすすめ
Web問題の中でもクロスサイトスクリプティング(XSS)という脆弱性のみに着目したものです。特別なツールがなくてもWebブラウザのみでゲーム感覚で遊べます。
XSSとはどういうものか、Googleで検索をかけながらやってみましょう。CTFにおいて一番大事なものは必要な情報を検索する力と根性です。
また、Write up(回答例)をブログ等に上げている人が多いこともオススメの理由です。少し考えて分からなければWrite upを見て攻撃パターンを学びましょう。
DVWA(Web問題)
Web問題に本格的に興味が出てきた人におすすめ
環境を構築する必要があるため手間がかかりますが、Webアプリケーションの基本的な脆弱性について、それぞれLow・Medium・Highの難易度の問題が用意されています。
常設のCTF(全てのジャンル)
CTFに興味が出てきた人におすすめ
様々なジャンルの問題が用意されており、初心者向けの問題も用意されています。
SECCON Beginners(全てのジャンル)
CTFに興味が出てきた人に非常におすすめですが、次に開催されるのは来年の春〜夏かな…
初心者〜中級者向けのCTF。CTFの開催だけでなく、CTF 問題解説等も行ってくれます。
まとめ
本記事では、セキュリティに関する技術力を競い合うゲームCTF (Capture The Flag)を紹介しました。
CTFはセキュリティ上本来ならば閲覧できない情報「フラグ」を手にいれるゲーム
CTFには様々なジャンルの問題がある
CTF TIMEで開催予定のCTFやWrite up(回答例)などを確認できる
CTF TIMEに記載されているCTFは初学者向けではないものが多いため、まずは学習用のサイトで試してみるのがオススメ
IT系と言えば開発を目指す人が多いため、セキュリティ系は人手不足に感じます…
新卒の人が来る度に、何をきっかけにセキュリティの方に行こうと思ったんですかと話題になるくらい。
この記事で、少しでもセキュリティに興味を持つ人が増えると幸いです。僕と一緒に働きましょう。
この記事が気に入ったらサポートをしてみませんか?