web-dev-qa-db-ja.com

正確にはCTFとは何ですか?プログラマーとして、初心者に優しい人々とCTFを準備するにはどうすればよいですか?

私は学生時代に素晴らしいプログラマーであった私の旧友に連絡を取りました、そして彼は彼の大学グループと一緒にCTFイベントの1つに出席するように私を招待しました。

このグループは非常に初心者にやさしく、誰にでもオープンに見えますが、私はセキュリティ分野で参加するのに十分な知識を持っていないことをまだ恐れています。そこで、少し準備をして、これが何であるか、そして基本的なレベルに改善するために何ができるかを正確に調べたいと思います。インターネットの調査で、CTFとは何かについて非常に漠然とした考えが得られました。

私がすでに持っているのは、C#、PHP/Javascript/etc(基本)、C(非常に基本)、Javaを含むいくつかのプログラミング言語の基本的および中間的な知識です。これが役に立ったかどうかはわかりませんが、害はないと思いました。

CTFとは具体的には何ですか?完全に初心者として、自分でCTFイベントの準備をするにはどうすればよいですか?

80
MansNotHot

CTF(Capture The Flag)はゲーム内のコースのようなものです。いくつかのウェブサイトはロープを学ぶための簡単なものを提供し、難易度を上げるという単純な課題があります。たとえば http://overthewire.org/wargames/ は、チャレンジごとにツール(16進ダンプ、vi、端末自体)の使い方を教えてくれます。

主な目標は通常、ファイルに埋め込まれている(stegano)、サーバー内のファイルに隠されている、既知の脆弱性(通常のCTF)を悪用する必要があるコードを見つけるか、プログラムのソースコードを悪用して、秘密のパスワード(反転)。

プログラミングの課題と同じように、時間をかけてツールを学び、ヘルプや記事を探すことをためらわないでください(明らかに、達成しようとしているCTFではありません)が、使用するツールに関する洞察を提供できます。チャレンジのタイプによって異なります。

一部のリンク:

https://www.hackthebox.eu/ :上に説明したように、簡単なものから難しいものまで、さまざまなCTFのさまざまなカテゴリ

http://overthewire.org/wargames/ :サーバーに隠されたファイルを含むほとんどの通常のCTF、およびそれを検索/復号化するための特定のルール。初心者に最適、基本的なツールをお教えします

84
Elcan

「CTF」と言うのは「ビデオゲーム」と少し似ています。ビデオゲームにどのように準備しますか?まあ、それはゲームが何であるかに依存します!テトリスはマリオカートとは異なるスカイリムとは大きく異なります。

より多くの情報を知らなくても準備することができることはほとんどありません。 1つのCTFで、ネットワーキング、TCP/IP、Webアプリの設計、暗号化、およびメモリフォレンジックを理解する必要がありました。それが必要であることを知らずに、すべてを準備する方法はありません。

すべてのCTFに共通することの1つは、通常、多くのロジックパズルがあることです。

CTFを準備する最良の方法は、CTFを実施することです。 CTFの楽しみのほとんどは、あなたが知る必要があることを知らないことと、それを理解するために必要なものをすばやく学ぶことではありません。

22
schroeder

CTFとは何ですか?一意の文字列である「フラグ」をキャプチャし、ポイントのスコアリングインフラストラクチャに送信するため、これはCTFと呼ばれる一種のコンピューターセキュリティ競争です。 CTFはほとんどの場合、時間制限があり、多くの場合24〜48時間程度です(通常、週末にかけて継続するため、世界中の競合他社にタイムゾーンに関係なく公平なショットが与えられます)。 CTFには主に2種類あります-危険と攻撃/防御です。 JeopardyスタイルのCTFは整理が簡単で、再生も簡単です。また、新規プレイヤーの処罰も少なくなります。危険なスタイルのCTFでは、主催者は一連のチャレンジ(クラウド上で実行される脆弱なバイナリサービスまたはWebサービス、クラックミータイプの逆チャレンジ、ディスクイメージまたはパケットキャプチャに隠されているもの、または暗号化されたメッセージ)を書き込み、それぞれにポイント値を割り当てます挑戦し、それらを競合他社が利用できるようにします(多くの場合、難易度やカテゴリ別に整理された挑戦があります(バイナリの悪用、リバースエンジニアリング、Webの悪用、暗号化、およびフォレンジックが典型的なカテゴリです))。コンテストが始まると、参加者は一連のチャレンジにアクセスし、それらを解決してポイントのフラグを送信します。最後に、最も多くのポイントを獲得したプレイヤーが勝ちます(通常、タイは時間までにブレークして勝ちポイントの合計に到達します-速いほど優れています)。 。

攻撃/防御CTFでは、主催者は依然として一連の脆弱なサービスを構築しますが、各チームはこれらのサービスのコピーを実行する必要があります。これを防御する必要があります。他のチームをハッキングして旗を盗み、他のチームが同じことをしないように独自のサービスにパッチを当てようとします。 A/D CTFは、主催者(VPN、チームごとのターゲットホスト、&c)のために多くの追加のロジスティクスとインフラストラクチャの作業を伴います。また、踏みにじられた場合(または誰かがインフラストラクチャーに固執している場合)、それに対して何もできない場合は、新しいプレーヤーの意欲をそそる可能性があります。しかし、それらは非常に楽しいこともあり、バイナリパッチやリフレクションを悪用するなど、いくつかの異常なスキルを発揮します。

準備の面で:研究、実践、およびツール。ウォーゲームに関するフローレントウゲの提案は、実践に適しています。役立つと思われるその他のリソースには、次のものがあります。

  • Trail of Bits ' CTFフィールドガイド には、講義、ツールのリスト、および古いCTF問題のウォークスルーがあります。
  • picoCTF は、背景がほとんどない高校生を対象としたCTFです。コンテストは終了しましたが、主催者は人々が学ぶべき問題を残しました。始めるのに良い場所です。プログラミングの経験があれば、時代を先取りしているので、早い段階からかなり早い段階で対処できます。 10月にも新しいpicoCTFが来ると思います。
  • pwnable.kr には、実践するためのさまざまな優れたバイナリ利用の課題があります。
  • 多くの場合、過去のCTFからの挑戦の記事をオンラインで見つけることができます。これは、特にctfyのイディオムや、特定のctfで発生する可能性のある種類の問題に慣れるための良い方法です。 ctftime.org 今後のctfsのカレンダーをホストすることに加えて、書き込みを集約します。

ツールに関して言えば、スクリプト言語に強くなることです。 CTFは一般に時間的プレッシャーがかかっており、速度は完全な正確さよりも重要です。 Pythonは最も一般的な選択言語のようであり、python( pwntools 例)少し親しみを身につけるのも良いかもしれません。

17
lorimer

CTFは基本的にゲームで知られているものです。それは旗取りですが、盗む旗の代わりに、旗として機能する複数の目標を達成する必要があります。

たとえば、コンテストのフラグは、キー検証をリバースエンジニアリングしてキージェネレータを開発することです。

いくつかのプログラミング言語とこれらの基本原則を知っているので、ロジックの理解と調査のスキルを強化すると役立つでしょう。古いCTFを見て、いくつか実行してください。問題に遭遇した場合は、トピックを調査して、メカニズムを理解してください。

シュローダーのようにすでに言った。ほとんどの場合、タスクがどうなるかわからないため、準備は非常に困難です。

個人的なヒントとして:リラックスしてください。あなたは彼らと一緒に学び、システムの欠陥を探る楽しみを持っています。楽しい時間を過ごしてください。

12
Nico

ほとんどの回答は、「CTFの準備方法」という質問を回避しているようです。そのため、ここで説明します。

まず、オーガナイザーからすべてのCTFを実行する必要があります。特に、同じタイトルのCTFを実行します。たとえば、先週末開催された最近のTokyoWesterns CTF 2019(CodeBlue Qualifiers)で、昨年(2018年)のCTFの別のCTF質問である「Slack Emoji Converter」を参照する「Slack Emoji Converter Kai」という質問がありました。 Ghostscriptを使用した同様のエクスプロイトが必要であり、経験がない場合は、エクスプロイトについて読む/学ぶためだけに不必要な時間がかかります。

次に、オーガナイザーでOSINTを実行します。メンバーは誰か、最近メンバーが何を公開/発見したかを知りたい。

なぜこれを行う必要があるのですか?
前の例と同様に、CTFの質問作成者は、周囲のエクスプロイトからインスピレーションを得ています。古いエクスプロイトを参照していない場合は、おそらく新しいエクスプロイトを使用しています。 CTFがエクスプロイトを必要とするというPHPNoteの質問 6月に共同で公開されたメンバーのうち2人 。それに気づいたチームは、機能するエクスプロイトを作成するのに数時間しかかかりませんでしたが、準備ができていないチームは解決に12時間以上かかりました。 最近取得したCVEと最近の出版物についてお読みください。

最後に、過去1〜2年以内のすべての重要度の高いエクスプロイト(高レベルのCTFの場合)または一般的/人気のあるエクスプロイト(初心者のCTFの場合)を確認する必要があります。

これは通常のCTFにのみ適用されることに注意してください。私はまだDEFCONファイナルに向けて準備する信頼できる方法を知りません。

1
Yuu