CTF班・第13回の活動をしました

2年部員の井上 (@sei0o)です。投稿が少し遅れましたが、CTF班第13回の活動を記録しておきます。1年生2人、2年生5人。

今日はいつもと違う場所で違うことをしてみました。上の画像の通り黒板ということは…2Eの教室です。ここ数回使っていたコミュニティスペースは合唱部に占領されていました。コンピュータとゲームと受験勉強しかしてこなかったのでああいう活動の楽しさがよくわかりません。いやコンピュータの楽しさもよくわかってないけれど。

CTF班ですが毛色を変えて、Hacktoberfestにみんなで参加してみました。これはDigitalOceanが主催しているキャンペーンで、10月中にGitHubでPull Requestを5回送ると先着50000名にTシャツが与えられるというものです。マージされなくてもよいというのがミソ。HackとOctoberの造語ですね。

簡単ではありますが、英語のUIとgitに慣れてもらうのにちょうどいいかなと思って選びました。部活の時間中に1個送って、残りはまったりと各自でやってもらうつもりだったのですが、1時間半で5個送る強者がチラホラ。内訳を見てみると有志が用意しているPull Request練習用のリポジトリに大量に送っていました。なるほどなー。あまりに無意味なスパムっぽいPull RequestはHacktoberfestでカウントされないだけなので、そのことを伝えPRを送りやすそうなリポジトリを紹介してみたところ、マトモな(?)PRを送るようになってよかったです。

あまりPRを送ったことがなかったので自分にとってもいい機会になりました。GitHubが草で埋まっているとカッコいいですよねー。イチから何かを作るのは考えることが多くて飽きてしまって続かないなあ。しかし最近はソースコードを読んで改造する機会が多いので、GitHub上のリポジトリでもそういうアプローチでcontributionを増やして能力向上に役立てられるんじゃないかと考えています(自分語り)。

10/27, 28の全国高専プログラミングコンテストが着実に近づいて来ていて、そちらとのバランスを取るのが難しい…まあ気合でどうにかこうにかなるでしょう。高専祭のほうは何も考えていません。

CTF班・第12回の活動をしました

2年部員の井上 (@sei0o)です。カナダから帰ってきてから生活リズムが元に戻らずつらい思いをする毎日です。これの原因は情研で喋り疲れたからということにしておきましょう。
今日もバイナリについて話しました。CyberRebeatCTFの続きをしようと思いましたが、回線が悪くて問題ファイルがダウンロードできなかった()ので、オフラインでできることをしてみました。具体的には、

  • 脆弱なCプログラムを書いてバッファオーバーフロー脆弱性、SSP(Canary)のありがたみを実感する
  • メモリマップを見つつASLRを無効にするなどして遊ぶ

デバッガ(gdb)にもだんだん慣れてきたんじゃないかなと思います。とりあえず私が一番慣れているPEDAを押し付けていますが、GEFといった他のgdb拡張や、lldbなどの他のデバッガのほうが合っている人もいるかもしれません(iOSアプリ開発で使うXcodeだとデフォルトはlldbだったような)。

完全に個人の趣味でMIPSとx86のアセンブラを見比べました。遅延スロットがチャームポイントだと思います。

次回はどうしようかな〜。やっぱり人に教えると自分のほうにもやる気が出ていいですね。

CTF班・第11回の活動をしました

2年部員の井上(@sei0o)です。夏休みが終わり後期が始まって1回目の活動です。累積ではたぶん11回目です。たぶん。
全く何も考えていなかったので、さあどうしようという感じでした。とりあえず行ってみて夏休み何した〜?と聞いてみると、CyberRebeatCTFに出た部員(ぴっちー)がいたので、その問題(SimpleBinaryというファイルを扱うreversing問)を解説しつつ、「binutilsの愉快な仲間たち」を紹介しました。2年生2人と1年生3人。

  • 実行可能形式のフォーマット(ELF, PEなどがあるんだよ〜みたいな, あとreadelf)
  • 動的リンク・静的リンク
  • x86アセンブラとスタックの関係(関数プロローグ・エピローグの話もしたかった)
  • gdb(+PEDA)を使った動的解析の体験

こんな感じです。

ELF, ローダについてはちょうどハッカソンで個人的に学習していた部分なので楽しく話すことができました。
ASLRとかPLT, GOTについても話したくなったけれど、きりがないのでまた今度にします。

ところで、これまでとホワイトボードが違うことにお気づきでしょうか。それまでは「情報メディアセンター」の演習室で活動していたのですが、なんとなく雰囲気が入りづらいよね〜という話になったので今日は3Fのコミュニティスペースを使ってみました。何も言われなかったので多分大丈夫でしょう。椅子の構造とホワイトボードの消しづらさに少し不満がありますが、まあ割とゆるくできたんじゃないかなと思っています。

大雨で延期になった新入生歓迎会は高専祭の打ち上げと同時に行うそうです。部長曰く、そこで私が部長の座を押し付けられる譲られるそうです。わーい。
高専祭何しようかな…。

CTF班・第8回の活動をしました

2年部員の井上 (sei0o)です。こいつはTwitterアカウントを書かないと気がすまんのか。今日も元気にCTF班!
今回は画像フォレンジックの問題を扱いました。資料はWikiに置いてあります。file, xxdコマンドでざっくりファイルの情報を確認した後、stegsolveを使って解析。その後スクリプトを書いてみる…までできればよかったのですが、そういえばプログラミングの講習をほとんどしていないのに無茶だと考え、仕組みを解説するに留めました。
フォレンジックは見た目的にもわかりやすく、割と興味を持ってもらえたようで嬉しいです。来週の火曜日はminiCTF2の解説をする予定ですが、全完されたら困るなあ(困らないけど)。作問も難しいですね〜
今日は割と資料にすべて書いて、余計なことを口走って混乱させないようにしつつ軽い解説とサポートを中心にしていました。そのためホワイトボードに書くこともほぼなくなりアイキャッチの画像が設定できません!w
まだLinuxに慣れていないのか、ツールの導入で詰まりやすいとわかったためこうしました。それでも「No such file or directory」ぐらいなら読んでほしいなと思います。
次は資料もプログラムも遅筆なのをなんとか改善したいと思いいろいろ調べているところです。1時間ぐらいでかければ文句ありませんが、現状では3時間以上食ってます…

CTF班・第7回の活動をしました

2年部員の井上 (sei0o)です。上の画面で中学生10人は釣れると思います。ちなみに今日はCTF班バーチャル回でした。

バーチャル回?

おっと(←わざとらしい)、バーチャル回の説明をしていませんでしたね。端的にいうとDiscordなりLINEなりで通話しながら部活しようぜというものです。遠隔で行うことで以下のような問題が解決されてほしいなあという期待。

  • 他の部活と曜日が重なって来れない人が結構いる(ロボ研などとは違って求心力のない部活なので部員は他を優先する傾向にある)
    • →バーチャル回は夜20:00からにしました
  • 情報センターはCTF班以外の人が多くてやりづらい・横並びに座るのでみんなの進捗が見えづらい
    • →顔が見えないのでやりやすい
  • 講義役が立ってホワイトボードに書き込む必要があるのでしんどい
  • そもそも前期で9回しか部活できない
    • →バーチャルやって週2にできる

感触はそれなりに良好で、話す側としても圧倒的に気がラクでした。実際に行って初めて気づいたメリットとして、音声通話だと相手は相槌を声で発する必要があり、より明確になることが挙げられます。うなずく動作だけだと曖昧にしか捉えられずこちらの言うことが伝わっているのか不安でした。
実は第4回第5回の講義は通常の火曜日の活動に加え、水曜日20:00から同じ内容を私の寮部屋で行っていました。男子寮生は寮部屋で、そうでない人は通話で参加です。
ただ同じ内容を2回話すとおそらく私が飽きてしまうので、今週から内容は変えることにしました。回も分けて第6回(通常回=オフライン回=オフ回)・第7回(バーチャル回)としています。

第7回の内容

angstromCTF 2018で出題された「Rev1」という問題を題材に、x86アセンブラ, デバッガの紹介をしました。とりあえず動かしてもらって、表示された文字列がどこからやってきたのか逆アセンブラ(objdump)やデバッガ(gdbでx/sとか)を駆使して探してみてもらいました。資料はWikiに置いています。
完成していない資料をその場で作りながらわりとざっくりした解説しか行っていないのですが理解できたみたいでよかったです。

CTF班・第6回の活動をしました

2年部員の井上 (sei0o)です。そろそろ名乗らなくてもいい気がしてきました。今日も講義っぽいことをしました。1年生が3人、自分を含めた2年生が2人です。
テーマはAndroidのアプリ解析です。資料はWikiに置いてあります。BSideSF CTF 2017: pinstore の題材に、FLAGを取る途中までをやってみようということで書いてみました。
APKからデータを取り出したりclassファイルをデコンパイルしたりしたかったのですが、実際はみんなの事前準備(dex2jar, jad, sqlitebrowserのインストール)がうまくいっていなかったようでそっちに時間を取られ深い説明ができませんでした…。jadが32bitバイナリで、私の環境では普通に動作したにもかかわらず、64bit上のUbuntuで動かなかったので詰まってしまいました。「インストールだけじゃなくて事前に動かしてみてね」と次からは書きます。
あと「これなら説明できるぞ」とか思って適当に題材を選ぶと自分にとっての常識であるSHA1, SQL, etc…について1から説明することになるのでなかなかつらい。うーん、どうにかしてこのあたりをスキップできないかなあ。
Volatilityとか使ったメモリダンプの解析も触ると楽しかったので勉強していつか紹介したいです。

CTF班・第5回の活動をしました

2年部員の井上 (sei0o)です。火曜日はCo+workの用事があったので今週は水曜日にずらしました。1年生が3人、自分を含めた2年生が2人です。
今日はpkcrackを用いたZIPファイルへの既知平文攻撃について話しました。資料はWikiに置いてあります。せっかくなので攻撃原理を学んで解説できるようになりたいな、と思い開発者による論文やそれに関係するスライドをまとめようとしたのですが、なかなか理解できず中途半端に終わってしまった・ただの翻訳になってしまったので外部ページ(資料末尾のリンク)に分けました。それゆえいつにも増して量が少ないです。早く書き上げたい。
ビット演算についても軽く話しました。プラレール加算器はすばらしい。
資料の内容が終わったあと「バイナリ解析興味ありま〜す」という人がいたので、Linuxの実行形式のフォーマットであるELFとx86アセンブラ、アーキテクチャのざっくりとした・初歩的な解説をしてみました。いきなりだったので、とりあえず知っていることをガーッと一方的に話してしまいました。その場で適当なソースをコンパイルしてからobjdumpとかで逆アセンブルしてもらえば手が動かせてよかったよなぁと反省しています。
汚い文字・不確かな内容・手ブレ写真のトリプルコンボ[/caption]
解散後に理解できたかどうか聞いてみると「全然(わからない)っすw」とのこと。(´・ω・`)どうしよう…

CTF班・第4回の活動をしました

2年部員の井上 (sei0o) です。地道に更新しています。今日もCTF班の活動をしました。自分含めた2年生が2人・1年生が2人です…人減ってない?やっぱり曜日戻した方がいいかもしれませんね。
授業が50分後にずれた都合上1時間だけです。資料はこちらに置いてあります。
XSSの基本の部分を解説しました。1年生がまだ授業でHTML, CSS, JavaScriptを扱っていないそうなのでそのへんもざっくり。数日前に「5000兆円コンバーター」に脆弱性が見つかった記事がITmediaに載っていたのでこれを題材にしてみました。
あ〜〜〜CTFできるようになりた〜い〜〜

情研Wikiをつくりました

2年部員の井上 (sei0o)です。最近はCTF班で1年生にバイナリをぶつけています。「ScrapboxとかSlackに保存されてバラバラになっている資料、まとめたほうがいいよね〜」ということでテスト勉強の合間にWikiを作りました。wiki.jyoken.netにあります。
もともとはこのブログ含めてHugoなどの静的サイトジェネレータでいい感じにサーバーレスにしたかったのですが、その場合コンテンツはgitでの管理になるので更新の障壁になると考えやめました。代わりに、ブログは現行のWordpressのままで、WikiにはDokuWikiというシステムを使うことにしました。php.netにも使われているみたいです。
導入はずいぶんラクで、ファイルをダウンロードしてnginxの設定を書き換えるだけでした(ドメインとHTTPS化はやってもらったけれど)。個人の好みでMarkdownプラグインも入れました。デザインが若干古臭いので気が向いたらテンプレートも探してみます。
ちなみに、Wikiのシステムは以下のようなことをぼんやり考えながら選びました。完全に独断です。

  • Wiki
    • 目的: 資料を公開する、知見を貯める(→実用?)
    • 具体例: CTF班資料、自己紹介、私的メモ、write-upもこっちか
    • 手段
      • MediaWiki なんかありきたり()
      • Wiki.js 日本語翻訳の怪しさがスパムウェアの域
      • GitHub Wiki 機能が貧弱
      • Moinmoin UECのMMAが使っている・最終更新が古い
      • Dokuwiki そこそこ開発が活発
  • ブログ
    • 目的: 外部に発信する、活動記録を残す(+ 私的感想?)
    • 具体例: 日々の活動、部会
    • 手段
      • 手軽なほうがみんな嬉しい→Wordpressかなあ

もともとのコンテンツ量が少ないのでこれからなんらかの方法で更新を増やしたいです。そのためにはまず活動をしてネタを作り出す必要が…

CTF班で第2回の活動をしました

2年部員の井上 (sei0o)です。5月23日、中間試験直前にCTF班で2回目の活動を行いました〜。1年生が7人と2年生が自分1人でした。私はHRで遅れたので講義っぽいことをしたのは1時間半だけです。
したことをまとめておきます。資料はWikiに置いています。

  • バイナリエディタでファイルを見てみた
  • バイナリかるたを見せてみた
    • 先頭=シグネチャを見る
  • 圧縮・解凍の話
    • DeflateとかZIPとか
  • 各Linux distroの紹介
    • OSはアプリとハードをつなぐもの (575
  • アーキテクチャ
    • x86 (x64)が普通のパソコン
    • ARMなどは携帯, 組み込みによく使われる
    • SPARCはスパコン京
  • 次はUSBの話とLinux Install Battle

CTFって結構前提知識いるんですね、全部雰囲気でやってるからよくわからなかった…。事前に資料を作っていても、そこから離れた基礎知識を伝える必要が出てきたとき(ZIPを知らない人がいた)にうまく説明するのが難しいな〜〜と感じます。
バイナリかるたを実際にプレイするところまでは行けなかった…ホームルームを許さない