ホーム » 「CTF」タグがついた投稿
タグアーカイブ: 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
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 という大会がある。といっても、全国の大会だとレベルが高すぎるので、まずは興味を持ってもらうための基本問題を作ったので公開しておく。
KOSENセキュリティコンテスト2019
KOSENセキュリティコンテスト2019が2019/10/26(土)石川高専にて開催されています。ネットワーク開催なので、福井高専の演習室から2チームがリモート参加しています。
- 「妖怪旗よこせ」チーム
- 「旗何本取れる?」チーム
CTF講座・K-SEC第3ブロック学生向け講習会に参加
高専機構の情報セキュリティ人材育成プロジェクトの一環として、岐阜大学サテライトキャンパス(岐阜高専主幹)にて8/28(水)に開催された、CTF講座・K-SEC第3ブロック学生向け講習会に3EI学生1名が参加しました。
CTFとは
CTFとは、Capture The Flags という、情報セキュリティの知識を使ってクイズを解く競技です。
例えば、簡単なものでは、
- PGS{fnzcyr} からフラグを見つけよ。# rot13暗号化
- SQLインジェクションでデータ漏洩が発生するWebシステムが用意されていて、SQLインジェクションが発生するようなデータを入力させて情報を見る。
といった問題があります。複雑な問題では、
- C言語で生成された機械語があって、通常では何も表示されないけど、逆アセンブルして条件判断の一部をバイパスさせて、データを表示させる。
といった、OSや機械語の知識が要求されるものもあります。
初心者には大変だったかな
今回、4年はインターンシップなどで参加者があつまらず、初心者の3年の学生さんに参加してもらいました。CTFの初心者向け講習会ということで、基礎的演習もあるかと思いましたが、いきなりの簡易版CTF大会となりました。知識が不足していて、苦労していましたが基礎的問題をいくつか解けていたようです。
最後に、講習会の修了証をもらいました。