WEST-SEC CTFとは

1.CTFとは

CTFは、そのフルスペルに「旗を取れ(Capture The Flag)」とあるように、答えとなるFLAGを探すセキュリティのコンテストです。
セキュリティ知識や技術、経験を駆使しながら、FLAGの手掛かりを探し、時間内に答えを出すというプロセスは、謎解きゲームに通じるところがあると思います。
f:id:seeeko:20210921103649j:plain

2.どんな大会があるの?

日本ではSECCON(Security Contest)が有名です。

世界では、ラスベガスで開催されるセキュリティ技術者(ハッカーという言葉がしっくりくる人もいると思います。)向けのハッキングコンテストであるDEFCON CTFがあります。
https://www.defcon.org/

3.どんな問題が出るの?

ジャンルとしては、暗号、フォレンジック解析、Webアプリケーション、バイナリ解析など、完全に技術者向けの問題です。プログラムの知識、シェルを含むLinuxのコマンドの知識、Wiresharkなどの各種ITツールを駆使する必要があります。

4.難易度は?

めちゃくちゃレベルが高いです。参加は誰でもできますが、駆け出しのセキュリティの技術者では、手も足も出ないという状態の可能性もあります。2,3問解ければ上出来、なんてことはよくあると思います。

5.WEST-SEC CTFは?

InternetWatchにて紹介していただきました。
internet.watch.impress.co.jp

現在は、特定企業・大学様などに個別に実施しているものと、connpassを使ってオープンに実施しているものがあります。どなたでも参加できるのは、後者になります。
west-sec.connpass.com

「8割解けるCTF」を目指すWEST-SECのCTFは、SECCONやDEFCONなどのCTFとは全く別物です。

違い①難易度

SECCONなどのCTFは非常に難易度が高いです。一方、WEST-SECのCTFは、難易度がかなり低く、また、チームで相談したり、調べたりすることで、誰もが8割を正解できることを意識して作問しています。
 短い時間ですが、問題の難易度を下げ、また、チームで相談できるため、問題をたくさん解いてもらうことができます。結果として、幅広いセキュリティの知識に触れることができます。

違い②内容

CTFはプログラミング技術やLinuxのコマンドを駆使したりして、フラグを見つけるものが中心です。WEST-SECのCTFでは、基本的なセキュリティ用語を学ぶため、単純な知識問題もたくさんあります。また、一部、コマンドを投入したりWiresharkを見たりすることもありますが、その場合でも高度な技術スキルが求められるわけではありません。

CTFのツールを活用しますが、相手と競う「競技」というよりは、みんなで学ぶ「学習」です。
f:id:seeeko:20210126122411j:plain

6.WEST-SECの開催履歴

過去のWEST-SEC開催履歴(一部)を紹介します。

日時 イベント 補足
1 2020/8/16 WEST-SEC#1 (https://west-sec.connpass.com/event/183701) WEST-SECの記念すべき1回目
2 2020/9/16 某大学様向けCTF セキュリティに興味をもつ学生と社会人向け
3 2020/10/27
2020/11/5
WEST-SEC#2 (https://west-sec.connpass.com/event/187261/) 参加者多数のため2回に分けて実施
4 2020/10/29 愛知総合工科高等学校様の学生向けにCTF授業#1 特別授業として講義させていただきました
5 2020/11/10 某企業のセキュリティエンジニア向け勉強会
6 2020/11/21 enPiT-Pro@九州大学(https://cs.kyushu-u.ac.jp/enpit-pro/2020_schedule/) 主に社会人の現役エンジニアのための 大学院レベルの教育プログラム
7 2020/11/27 大阪府立大学様の教職員様向けCTFによるセキュリティの基礎勉強会 セキュリティに明るくない利用者であっても楽しめる問題に調整。セキュリティ啓発目的
8 2020/12/11 某企業のCSIRT向けCTF
9 2021/1/17 SECKUN(https://cs.kyushu-u.ac.jp/seckun/schedule-2/) 九州大学サイバーセキュリティセンターが受託した厚生労働省教育訓練プログラム開発事業
10 2021/1/19 WEST-SEC#3
11 2021/2/9 WEST-SEC for Student セキュリティに興味がある学生様向け
12 2021/2/16 某企業でのグローバルイベント 某企業の世界中のセキュリティエンジニア向け
13 2021/2/19 SecurityDay2021春 Tokyo(https://f2ff.jp/introduction/4846?event_id=secd-2021-01-tokyo) 株式会社ナノオプト・メディアが主催する国内最大級のセキュリティイベント
14 2021/3/3 愛知総合工科高等学校様の学生様向けにCTF授業#2 高校生向けに問題をアレンジ
15 2021/3/23 WEST-SEC#4(https://west-sec.connpass.com/event/202601/) フォレンジック解析に関する出題あり
16 2021/6/15 WEST-SEC#5(https://west-sec.connpass.com/event/212032/) MicrosoftのADに関する出題あり
17 2021/8/31 WEST-SEC#6(https://west-sec.connpass.com/event/219227/) ADのログ分析問題、WiresharkとWebの連携問題含
18 2021/9/22 大阪府立大学様 CTF2021 教職員様向けセキュリティ啓発目的
19 2021/10/7 愛知総合工科高等学校様の学生様向けにCTF授業#3 学生向けに、セキュリティの謎解き系問題を多数出題
20 2021/11/6(予) enpit-pro  
21 2021/11/(予) WEST-SEC#7  
22 2021/12/上旬(予) 某企業向けセキュリティ研修  
23 2021/12/中旬(予) 日本CSIRT協議会(NCA)のAnnual ConferenceでのCTF(https://annualconf.nca.gr.jp/) CSIRT向けに内容をアレンジ

CTFサイトの操作説明

1.ログインの方法

以下に記載しています。
west-sec.com

2.問題の解き方

答えの正解(=FLAG)を入れて、submitを押すだけ!
f:id:seeeko:20210531180805p:plain
正解すると、緑で「collect」と表示され、問題も緑色になります。
f:id:seeeko:20210531181141p:plain
※同じチームですでに解いた人がいる場合は、その旨のメッセージ「You already solved this」が出ます。

3.スコアを見る方法

左上のスコアボードから見ることができます。
f:id:seeeko:20210531181332p:plain

その他、いろいろとボタンを操作してみてください。
f:id:seeeko:20210126123345j:plain

splunkの基本操作

1.ログイン

(1)ページにアクセス
指定されたURLに接続する。Splunkのログインは、以下のように8000番ポートを指定する場合もある。
http://52.0.3.107:8000
f:id:seeeko:20211116152431p:plain

(2)IDパスワードの入力
IDとパスワードを入力してログイン。
すると、ホーム画面が表示される。
f:id:seeeko:20211116152610p:plain

2.検索およびフィルタ

(1)検索概要

Splunk ホーム画面にて、左側App欄の[Search & Reporting]をクリック。
検索窓に文字列を指定することで、各種のフィルタや検索ができる。
f:id:seeeko:20211116152719p:plain

❶基本データを見る
検索窓に「index=main」を入力して検索
❷GUIを活用する。
コマンドで操作するより、GUIでの操作が便利である。
左側の条件をクリックして条件を絞っていく
❸条件を並べる
GUIを使うとその様子が見えるが、半角スペースを入れて、条件を並べることができる。たとえば、以下

index=main source="secure.log" action=failure

❹時間の指定
右上の緑の虫眼鏡マークの左にあるボタンで選択。「全期間」を選択すると、すべてのログを表示

(2)書き方の例

❶実行が失敗したログを指定
左側のフィールドで「action」を選択する。または、検索窓にaction=failure と指定する。

❷statsにより統計を取る
count,avg,sumといった関数を使用して集計
stats [関数] by [統計を取りたい対象]
例)・・ | stats count by user

❸timechartにより時系列に統計を取るコマンド
”span=“オプションで時間間隔を指定可能。
timechart [オプション] [関数] by [統計を取りたい対象]
例)・・ | timechart span= 1m count by user

(3)その他

❶ソート(sort)とカウント(count)
昇順/降順に検索結果を表示させるコマンド。
sortコマンド後に – (ハイフン)をつけると降順、つけないと昇順にソート。
”count”でソートすれば回数を数えることも可能。
例) ・・ | sort -count

❷ANDとOR
・ANDの書き方
例)AND 送信元「203.0.113.125」かつリクエストメソッド「GET」で検索
フィルタ:203.0.113.125 AND method=GET

・ORの書き方
例)例)AND 送信元「203.0.113.125」またはリクエストメソッド「GET」で検索
フィルタ:203.0.113.125 OR method=GET

❸パイプ
・|の使い方
基本的な使い方はLinuxコマンドと同じ。前のコマンドの出力が次のコマンドの入力になるように繋げる。
例)index=main ログの中から「XXX.log」という名前のログで、かつ、件数がTOP10のuseragentを検索

index=main source=XXX.log | top limit=10 useragent

❹カンマ
同じコマンドで複数対象選ぶ場合は , (カンマ)が使える。
例) index=main ログで「action,src」で集計し、回数でソートをかける

index=main |stats count by action, src | sort –count