ペネトレーションテスト&バグバウンティ
バグハンター(Bug Hunter)とは、コンピューターソフトウェアやウェブサイトなどのプログラムに存在するバグ(不具合)を発見し、報告することを趣味や仕事とする人々のことを指します。
いま、絶対に学んだ方が良い技術として、サイト(WEBシステム)のバグを見つけるバグハンターの技術が、最高に必要にされると考えます。
あと、5年から10年ぐらいの近い将来、バグハンターの需要が増え、当たり前の職業になっているかもしれません。
学習するにあたって言えることは、
- 新しい技術の習得が必要
- 詳しい情報は外国語の方が多い
と私は思っています。
「何かを始めるのに遅過ぎるなんて事はない」ですよね。
年齢は関係ありません!!
学生から爺まで、やる気があれば誰でもできます。
「あの時、やっていればよかった。」とならぬように、行動してみてはいかがでしょうか。
「とにかく、ひとつずつ、やってみる」と言うことです。
以下、私が学習するにあたり、何を学習すれば良いか具体的にまとめ、自分が持っている書籍、購入した動画をご推奨します。
※あくまでも私見になります。
バグバウンティに必要な知識
バグバウンティに取り組むためには、以下のようなスキルや知識が必要だと考えます。
- セキュリティに関する基礎知識
バグバウンティに参加するには、セキュリティに関する基礎知識が必要です。一般的なセキュリティの脅威や攻撃方法、暗号化技術、セキュリティプロトコルなどについて理解する必要があります。
- プログラミング言語の知識
バグバウンティでは、アプリケーションのコードに対して脆弱性を見つけるために、プログラミングの知識が必要になります。一般的なプログラミング言語(例: C、C++、Java、Python)について理解する必要があります。
- ツールの使用方法
バグバウンティでは、様々なセキュリティツールを使用することができます。例えば、スキャンツール、ペネトレーションテストツール、脆弱性スキャナーなどがあります。これらのツールの使用方法について理解する必要があります。
- セキュリティテストができる環境作り
誰にも迷惑をかけずにセキュリティのテストをするには、自分のパソコンでテスト環境を作る必要があります。
- 実践的な経験
バグバウンティに取り組むためには、実践的な経験が必要です。自分でプログラムを書いたり、既存のアプリケーションをテストしたりすることで、セキュリティの問題を見つけるための洞察力を磨くことができます。
- コミュニティ参加
セキュリティの専門家たちが交流するコミュニティに参加することで、最新の攻撃方法やセキュリティのトピックについて学ぶことができます。また、コミュニティに参加することで、より多くのプログラムにアクセスできる可能性があります。
- バグハンターに求められるモラル
バグハンターは、プログラマーやシステムエンジニアと同じように、技術的なスキルとともに、高い倫理観と責任感を持って活動することが求められます。
セキュリティに関する基礎知識を学ぶツール
書籍と動画をご推奨します。
【書籍】情報セキュリティマネジメント
IPA(情報処理推進機構)の「情報セキュリティマネジメント」の学習
情報セキュリティマネジメントを取得することにより、情報セキュリティマネジメントの計画・運用・評価・改善を通して組織の情報セキュリティ確保に貢献し、脅威から継続的に組織を守るための基本的なスキルを学習します。
※セキュリティに関する基礎知識が学べます。
【書籍】TCP/IP ネットワーク入門
実際に手を動かしながら試行錯誤することで、TCP/IP についてより実践的な知識を学べるところがポイントです。
【書籍】安全なWebアプリケーションの作り方
Webアプリケーションにはなぜ脆弱性が生まれるのか。脆弱性を解消するにはどうプログラミングすればよいか。が、PHPサンプルへの攻撃を通して脆弱性が生まれる原理と具体的な対処方法が学べます。
【動画】20時間で【Linux】マスター!
Linuxを業務で使いこなせるようになるために学習します。
プログラミング言語の知識
書籍と動画をご推奨します。
【動画】一週間で身につくC/C++言語
過去にC言語で開発経験があるので復習の意味で学習します。
【動画】はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス
【書籍】Java Script「超」入門
Java Scriptとハッキングは切っても切れない関係で、ハッカー言語とも呼ばれているそうです。
Java Scriptは初めてなので、書籍でじっくり学習します。
ツール
ハッキングで使われているツールは沢山あるのですが、簡単に構築できるツールを紹介します。
Kali Linux
Kali Linuxは、セキュリティテストやペネトレーションテストに特化したLinuxディストリビューションです。
Kali Linuxには、多数のセキュリティテストツールが事前にインストールされており、ネットワークスキャン、ペイロード生成、脆弱性評価、パスワード攻撃など、多くのテスト用ツールが含まれています。Kali Linuxには、Metasploit Framework、Nmap、Wireshark、Aircrack-ng、John the Ripper、Burp Suiteなどの有名なセキュリティテストツールが含まれています。
※当サイトでもKali Linuxのコマンドの説明をさせて頂いております。
Burp Suite(Kali Linuxに含まれています。)
Burp Suiteは、ウェブアプリケーションの脆弱性診断やペネトレーションテストに使用される統合ツールセットです。Burp Suiteは、ウェブアプリケーションのセキュリティテストに必要な様々な機能を提供し、プロキシ、スキャナ、インターセプタ、リピータ、シーケンサ、インターセプトプロキシ、スパイダーなどのツールを備えています。
セキュリティテストができる環境作り
私は、ディスクトップパソコンに仮想環境を作成してKaliをインストールと脆弱性のある「やられ」サーバーを構築しています。
実践的な経験
書籍と動画をご推奨します。
【書籍】リアルワールド バグハンティング
実践的ではないですが、バグハンターになって、バグバウンディで稼ぐためには、ハッキング事例からウェブの脆弱性を学ぶ必要があります。
そこで、セキュリティの脆弱性を発見し、アプリケーションの所有者に報告するエシカルハッキング(倫理的ハッキング)の事例から、ソフトウェアのバグを見つける方法と手順を解説されています。
どんな事例があるか確認しておくのは良いと思います。
※日本語の「バグハンティング」の書籍はこれしかありません。買っておいて損はないと思います。
実践的な経験(バグバウンディ行うための準備)として、まずはCTF(Capture The Flag)で訓練したいと思います。
CTFでは主に、以下のカテゴリーについて学習します。
- Webセキュリティ
Webアプリケーションに対する攻撃や脆弱性をテストする課題が与えられます。
- リバースエンジニアリング
バイナリファイルやソースコードを解析することで、フラッグを獲得する課題が与えられます。
- フォレンジック
不正アクセスやマルウェアなどの事件を再現し、犯人を特定するための課題が与えられます。
CTFの学習に必要な情報
書籍と動画をご推奨します。
【書籍】入門セキュリティコンテスト
SECCONなどのCTFの過去問を解きながら、CTFの流れや定石を学びつつ、問題を解くのに使う「暗号」「脆弱性」「リバースエンジニアリング」といった、セキュリティに関する実践的な知識についても解説します。
【書籍】詳解セキュリティコンテスト
情報セキュリティ技術を競うコンテストCTF(Capture the Flag)に臨むための技術について理論と実践から学んでいく一冊です。現代CTFの主流であるWeb(Webアプリケーションへの攻撃)、Crypto(暗号解読)、Reversing(バイナリ解析)、Pwnable(低級プログラムの掌握)の4ジャンルについて取り扱います。
【書籍】サイバーセキュリティテスト完全ガイド
情報システムのセキュリティを考えるとき、敵を知らなければシステムを守ることはできません。昨今では攻撃者視点での安全性評価の重要性が広く認知され、自分達のシステムに対してセキュリティテストを実施する企業や組織も多くなっています。
本書では、そうしたセキュリティテストと同様に、攻撃者がどのようなツールを使ってシステムへの侵入を試みるのか、どのような手口でシステムの脆弱性を探すのかといった攻撃者視点でのシステムの見方を紹介しています。
【動画】【サイバーセキュリティ 実践】Boot2Root CTF(Try Hack Me、HackPark)
ペネトレーションテスターとして、アクセス制御されたシステムにアクセスするための権限取得に関する方法論について学びます。具体的な攻撃手法を習得するために「TryHackMe」と「Hack The Box」を使った演習を行います。
CTFサイト
無料で参加できるCTFサイトは以下の通り。
【海外】picoCTF
初心者向けのCTFプラットフォームで、様々なカテゴリの問題が用意されています。
【海外】CTFtime
国際的なCTFイベント情報を提供するウェブサイトで、主に競技の開催情報や結果、ランキングを提供しています。
【海外】TryHackMe
ゲーム感覚で学べるCTFプラットフォームで、実践的な課題が多数用意されています。
【海外】HackTheBox
リアルなセキュリティ環境でCTFができるプラットフォームで、様々なレベルの難易度があります。
【国内】SECCON
日本発の国際的なCTFイベントで、日本のセキュリティ研究者や企業から多数のチームが参加しています。
【国内】CODE BLUE CTF
日本のセキュリティカンファレンスCODE BLUEの一環として開催されるCTFイベントで、様々なセキュリティ課題が用意されています。※現在、COVID-19 などの予期せぬ理由により、まだ開催されていません。(2023/04/02)
コミュニティ
コミュニティのあるサイトは以下の通り。
【海外】Open Bug Bounty
オープンソースプロジェクトや非営利団体に対して、無料でバグバウンティを提供するプラットフォームです。
Bug Bounty Community Forum(バグ報奨金コミュニティ フォーラム)があります。
【国内】JPCERT/CC
政府機関である情報処理推進機構(IPA)のサブセットであるJPCERT/CCが、一部のプログラムでバグバウンティを提供しています。
バグハンターに求められるモラル
バグハンターに求められるモラルとしては、以下のようなものがあります。
- 誠実さ
バグハンターは、発見したバグについて正確かつ正直に報告することが求められます。情報を隠したり、報酬を得るために報告を隠したりすることは、誠実でなく、モラル的に問題があるとされます。
- 責任感
バグハンターは、発見したバグを報告することで、ソフトウェアやウェブサイトの利用者たちを守ることに貢献しています。そのため、報告したバグの重要性に関わらず、責任感を持って報告することが求められます。
- プライバシーの尊重
バグハンターは、プログラムのテストを行う際に、プログラム内に含まれるユーザー情報などのプライバシーを尊重することが求められます。これらの情報を収集することは、違法行為になりかねません。
- 倫理的な問題に対する配慮
バグハンターは、発見したバグが社会的な問題を引き起こす可能性がある場合には、その問題について配慮をする必要があります。例えば、人種差別的なコンテンツが表示されるバグを発見した場合には、その問題を報告することで社会に貢献することが求められます。
バグハンターは、プログラマーやシステムエンジニアと同じように、技術的なスキルとともに、高い倫理観と責任感を持って活動することが求められます。(=ホワイトハッカー(Ethical Hacking)ハッカーのことですね。)
English(おまけです)
私は英語が大嫌いです。(^^;
でも、セキュリティの情報をwebで詳しく調べものをしていると「海外のサイト」に必ずぶち当たります。
普段ならパスするのですが、そうはいきません。
なので、ブラウザ(chrome、Microsoft Edge)の翻訳機能を利用します。
これで、おおよそ事足りるのですが・・・
毎回、翻訳するのも大変なので、将来に向けてこちらも一から学習しています。
duolingo(お薦めです)
Duolingoは、無料の言語学習アプリです。
ユーザーが楽しみながら、自分のペースでスキマ時間を利用して、日本語は出てきませんが、なんとなく理解できます。意外と楽しく英語を学ぶことができます。
このアプリの良いところは、その日に学習していないと夜に「学習していない」とメールが飛んできます。(私はスマホにメールがきます。)
1レッスン5分ぐらいで終了するので、23時頃にあわてて学習しています。
バグハンターになって、バグバウンディで稼ぐための道のりのまとめ
すべてを学習するのも良いですが、ある程度学習したのちに、得意なカテゴリー(Webセキュリティ、リバースエンジニアリング、フォレンジックなど)を見つけて、そのカテゴリーに特化したエキスパートになるのも有りだと思います。
そこから、派生して他のカテゴリーを学習してはいかがでしょうか。
バグハンターの学習は「一朝一夕」で出来るものではありません。
でも、ハッキングの方法をマスターする意味では「楽しく」学習できるのではないでしょうか。
特に、CTFはゲーム感覚で楽しめると思います。
「継続は力なり」です。
さあ、バグハンターを楽しみましょう。