ホーム » 「CTF」タグがついた投稿

タグアーカイブ: CTF

2024年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

検索・リンク

セキュリティワークショップin鯖江

セキュリティワークショップ

鯖江公民館でのセキュリティワークショップにて、CTFの問題作りと解説を担当させて頂きました。
コロナ感染の拡大で、中学校や高校からの参加予定者が急遽参加できなくなったりで、リモートでの参加者も多かったのですが、無事終えることができました。
{CAPTION}

新しく作ったCTF問題(簡単)

このCTFのために、新しく作った問題を以下に掲載しておきます。

壊れかけたHDDから取り出したファイルを復元

知り合いのパソコンが壊れかかっていたようで、chkdsk.exe が動き出し、File0000.chk, File0001.chk といったファイルが作られた。そのファイルの1つが zip 圧縮で送られてきた。そのファイルの中から CTF のフラグ FLAG{xxxxx} といった情報を見つけてください。

この川の名前がフラグ

この写真に写っている川の名前を答えてください。ただし、流域全体で呼ばれている名前ではなく、この地区で呼ばれている名前が答えです。


この問題、File0000.chk をメールで送ったりすると、最近のメーラやブラウザは頭がいいので、答えがすぐに見えたりするので、zip 圧縮の設定にしたり、担当者の方に川のファイルを Facebook メッセンジャーで送ったら、Exif 情報が消されたりと、色々とデータのやり取りで手間取りました。

サイバー攻撃の手口と守り方

総務省後援のサイバー攻撃の手口と守り方ー情報セキュリティ入門ーというイベントが2/6(土)に鯖江公民館で開催され、セキュリティーワークショップを担当し、参加中高生に CTF (Capture the Flag) の問題の体験をしてもらい、その解説をしました。

{CAPTION}

{CAPTION}

「サイバー攻撃の手口と守り方」の準備

2/6(土)に「サイバー攻撃の手口と守り方~情報セキュリティ入門~」にて、CTFを中高生に体験してもらう準備のお手伝い中。

コマンドラインをたたいてもらう体験の部分は、クラウド上に準備した noVNC を使い、ブラウザさえあれば参加可能。問題は、以前 K-SEC 主催の CTF 問題から「いんすぱいぁ(≠ぱくった)」されて作った問題を少々。

CTF実験: unix 系開発環境のインストール

CTFでは、様々な unix 系の開発環境のコマンドが用いられる。

これらの環境を構築するためのメモを記載。

Windows の場合

macOS の場合

macOS で unix 系の開発環境を使う場合には、homebrew や MacPorts を用いることが多い。

CTFでよく使われるunix系パッケージ

((ファイル系))
file - ファイルの種別判定
zip  - zip,unzip(ファイル圧縮解凍)
gzip - gzip,gunzip(ファイル圧縮解凍-GNU)
nkf  - nkf(日本語漢字フィルタ)
hexcurse - hexcurse(バイナリエディタ)

((OS系))
gcc  - gcc(コンパイラ-GNU)
gdb  - gdb(デバッガ-GNU)
binutils - objdump(逆アセンブラ) ,
         - nm(オブジェクトファイルのシンボル出力) ,
         - strings(文字部分の出力)

((ネットワーク系))
telnet - telnet(telnetクライアント)
netcat-openbsd - nc(TCP/IP 汎用ツール)
bind9-dnsutils - nslookup, dig(DNS参照ツール)
whois - whois(ディレクトリサービスクライアント)

((ブラウザ系))
w3m  - w3m(テキストブラウザ)
wget - wget(テキストブラウザ+ダウンローダ)
curl - curl(ダウンローダ)

((使用上要注意))
nmap - nmap(ネットワーク調査ツール)
wireshark - wireshark(パケットキャプチャ)
          - windows用とかmac用のバイナリの方が便利

各unix系のインストールコマンド

((WSL2の場合))
$ sudo apt-get install gcc binutils

((Homebrew の場合))
$ sudo brew install gcc binutils

((MacPorts の場合))
$ sudo port install gcc binutils

x64 Assembly Language

CTFの問題を追加してみた

CTFの問題を追加してみた。学生さんに興味を持ってもらうために、仕組みが分かればすぐに解けるように作ってある。

CTFのためのLinuxメモ

  • WSL2 のインストール
    • Linux環境を使う場合が多いので、WSL2(Windows Subsystem for Linux)をインストールしておきましょう。

ファイル関連

  • データ形式 encode / decode
    • MIME – メールで、テキストを文字コードを考慮して変換
    • base64 – バイナリファイルの変換
    • URL encode – WebアクセスでURLに情報を埋め込む
  • file – ファイルの種別判断
  • zip, unzip, gzip, gunzip – ファイルの圧縮解凍コマンド
  • strings – ファイルの中の文字として読める部分の抽出
  • more, less, lv – ページャ(ファイルビューア)
  • grep – 指定した特定パターンの行だけ出力
    • パイプ
  • hexcurse – バイナリエディタ
    • 4EI学生によると VSCode のプラグインで同等のものがあるらしい。
    • big endian, little endian, network byte order

ネットワーク関連

  • telnet – 特定のIPアドレス, ポートに接続して通信
  • nc – telnet より特化したもの
  • nslookup – DNS情報の参照
    • dig – nslookup をより汎用にしたもの
  • traceroute – ネットワーク経路
  • ping – ネットワーク死活確認
  • テキストブラウザ
    • wget – どちらかというと、ダウンローダ?
    • w3m – テキストブラウザ
    • curl – 様々なプロトコルで通信できる。
  • wireshark – パケットキャプチャ

OS関連

  • gdb – デバッガ
  • nm – オブジェクトファイルのシンボル情報出力
  • objdump – 逆アセンブラ

CTF問題とセキュリティ(4年実験)

この実験では、セキュリティコンテストのCTF問題(Capture The Flag競技)について、インターネットの仕組みを理解し、その問題の解き方を考え、新しく自分自身でCTF問題を作ってもらいます。

日程

実験は、4週にわたり、以下の日程で行います。

内容
1 (前半)暗号・ファイル・Web
2
3 (後半) プログラム作成・インターネット・OS
4

前半・後半でそれぞれ、問題例(もしくは自分で見つけたCTF問題)の1つの説明と、自作の問題を新しく作り説明をしてください。

提出物

  • 実験の目的
  • 問題例(or 自分で見つけたCTF問題)を1つ選び
    • 前半・後半それぞれについて
    • その問題が情報セキュリティにどう関係しているのか
    • 問題の解き方のしくみと解説
  • 自作問題について
    • 前半・後半それぞれ
    • その問題が情報セキュリティにどう関係しているのか
    • 問題の解き方、問題の作り方
    • しくみと解説
  • 提出先はこちらのTeams共有フォルダに。

Linux初心者向けCTF

オペレーティンス・システムの授業の中でちょっとしたLinux演習を授業中に行うことになった。

Linux 環境は、さくらクラウドの上に準備した。学校の教室にてBYODパソコンを用いて行いたいので、WSL や VMplayer などを各自でインストールして演習を行うことも考えたが、環境が違うと演習が行いづらいので、さくらクラウドを用いることとした。

演習サーバへの接続

教室は http, https での接続しかできないように設定してあるので、通常の方法ではクラウドに接続させるのは困難。そこで、さくらクラウドのサーバは、この演習専用とし、https(443)ポートを ssh に割り当て接続させる。

(( Windows 10 ならば cmd.exe にて ))
C:..> ssh -p 443 演習室ID@演習サーバ
Password: 演習室のパスワード
  -- この段階で20秒ほどかかる --
[~]$ 

CTF形式の演習

簡単に cd , ls , cat や ページャ(more,less,lv) と 漢字コード変換 nkf などを説明し、絶対PATH,相対PATHの概念を説明したあと、CTF形式の演習問題を用意した。

指定したフォルダ /home/Challenge の配下に、以下のフォルダを設け、ファイル内に記載された FLAG{答え} 形式のものを答えてもらう。

  • Task1 – 普通に探すだけ
  • Task2 – 複数行のファイルで ページャを使わないと見逃す様にしてあるファイルの中から探す。ファイルの中に空白を含むファイル名も置いておく。
  • Task3 – cmd.exe などの環境だと文字コードの問題があるので、nkf を使って読ませる。JIS, Shift-JIS, EUC-JP, UTF-8 などばらまいておく。
  • Task4 – シンボリックリンクでディレクトリが再起的ループするようにしたディレクトリの中から探す。ハイフンを含むファイル名や、chmod で読めないファイル、入れないディレクトリも置いておく。
    • これを通して、chmod , ls -al , などの説明を行う。
  • Task5 – セキュリティ意識を持ってもらうための演習。.bashrc には、PATH=.:/usr/bin:/bin となるように設定してある。この状態で、ディレクトリ内に、killall -KILL bash のシェルスクリプトを記載した、ls, cat, more, nkf を置いておく。
    • これを通して、サーチPATHの説明を行う。

答えの確認方法

答えといっても、ディレクトリ構造を cd , ls , cat しながら、さらうだけなので、大したことはない。Linux 管理者なら、以下で終わるネタ。

$ find /home0/Challenge -type f -exec nkf -w {} ¥; | grep FLAG

CTF の練習問題

情報セキュリティ関係の学生の興味を引き出すために、関連のイベントに学生さんに参加してもらっている。でも、なかなか基本知識がないと参加も難しい。

こういった情報セキュリティの基本に興味を持ってもらうために、Capture The Flag という大会がある。といっても、全国の大会だとレベルが高すぎるので、まずは興味を持ってもらうための基本問題を作ったので公開しておく。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー