セキュリティキャンプ九州 in 福岡 2017に参加してきた。
今週のお題「読書の秋」
9/1 ~ 9/3に行われたセキュリティキャンプ 九州 in 福岡 に参加してきました。
このキャンプのテーマはwebセキュリティでした。
1日目
1. オープニング
このキャンプでは
・分野を超えてつなげる
・仲間とつなげる
・将来につなげる
を意識して挑んでくださいというお話。
今までwebを中心に勉強していて他の分野の話になるとわからなくなって困るというのはよくあったのでとても刺さるお話でした。
2. 情報セキュリティ技術の使い方をケースで考えよう
倫理的なお話。犯罪になるケースと犯罪にならないケースを考えて犯罪になる場合は該当する犯罪の説明をしていただいた。前日に参加していたSANS NETWARSでも法律のお話を聞いていたので復習になった。
3. そうだ!セキュリティ・キャンプ、行こう
セキュリティキャンプ全国大会にいこうぜ!って感じのお話
僕は年齢制限に引っかかって参加できないので無限に羨ましかった。コアキャンプの紹介もあった。ただただ羨ましくて辛かった。
4. いじって壊して遊んでハッカーになろう
ターゲットはPythonのpeeweeとbottleで作られたwebサーバー。
DjangoとかFlaskは聞いたことあったけどbottleは知らなかったので既に知見でした。bottleにはORMがないのでpeeweeを使うという感じらしいです。そもそもpythonでwebアプリを作ったことがないのですがソースコードを読んでいる限りとても簡単そうで自分でもつくってみたくなりました。
講義のに内容はXSSからOSコマンドインジェクションまでのwebの基礎的な攻撃をハンズオンで学びました。
ネットワークの構成を直前で変更したみたいでハンズオン環境が落ちてしまうなどのトラブルに見舞われ、急遽上野さんの「そうだ!セキュリティキャンプ全国大会へ行こう!」と順番が入れ替わりました。
僕はトラブルシューティングが好きなのでチューターの方のトラブルシューティングに混ざって僕もやりたいなーなんて思っていました。
夜
LINEのmeetupに参加
Ken Thompson HackingやMorris wormなど過去に行われた衝撃的な事件や発表を解説していただきました。
Ken Thompson Hackingがヤバすぎてやばかったです(難しかったのであまり理解できていません)
Ken Thompson Hacking
http://boscono.hatenablog.com/entry/2016/06/05/165745
Morris wrom
https://blog.kaspersky.co.jp/morris-worm-turns-25/1950/
2日目
1. Webセキュリティ基礎講座
対象のwebアプリに対して診断を行う感じの講義でした。いろいろな脆弱性が盛り込まれていて楽しくハンズオンをしていました。
感覚的にはMBSD Cyber Security Challengesの対象がwebアプリのみといった雰囲気でした。
脆弱性はバグの一種なのでプログラム自体の品質を高くしてバグを減らせば脆弱性も減るというお話を伺い、自分の作ったアプリもバグ多いなーとか、バグがあるのがわかっていても修正しないときとかあるので考えを改めようと思いました()
2. ログ解析基礎講座
標的型メール訓練のログ解析を行いました。初めはログを解析して、欲しい情報を切り出すプログラムを書けという感じで課題を与えられて、がんばって書いていました。pythonでやろうとおもったのですが、shellのほうが早いかなと思ってawkでなんとかやっていました。
ログの分析については自分の分析能力が低くてかなり苦労しました。ネットワークの知識が全然足りていないのでそもそも発想が出てこないとか色々反省するところがありました。
後半はハニーポットのcowrieを使って収集したログを分析しようという内容でしたが他の受講者の方が頂いたイメージをインポートする時にMACアドレスを初期化していなかったみたいでsshが繋がらない問題でいろいろこけてあまり進まなくて途中で終わってしまいました。Elastic searchを使うところまでいけなくて悲しい…
ちょうどSANSでT-Potを建てたい気持ちになっていたのでキャンプ後に自分で挑戦します。
3. Game Security Hands-on
個人的に一番楽しみにしていた講義。
Unityのandroidアプリを解析してチートを行うといった内容でした。
具体的にはGame Guardianでメモリ改ざんを行ったり、BurpSuiteで通信改ざんしたり、 Assembly-CSharp.dllをdnspyでデコンパイルしてdll overwirteしてチートしようぜって感じです。
課題があって
メモリ改ざんで敵の体力を1にする
通信改ざんでスコアを1000にする
ローカルストレージを買い換えて攻撃力を1000にする
Dll改ざんでチートする
といった課題に取り組みました。
自分はあまり進捗がよくなくて、1日目は他の人よりも遅れて2日目が終了しました。
夜
ゲームチートの講義がめっちゃ楽しかったので学校の後輩とその部屋の人を誘って朝まで解析をしていました。
Dllを改ざんした後、apkを再構築してインストールするためにGameに署名を行うのですがそこで随分ハマりました。
少しチート対策されたアプリに対してチート行うために過去のCEDEC ChallengeのスライドやAVtokyoのスライドなどを見て取り組んでいましたが、IL2CPPでコンパイルされたプログラムを解析できずに死にました。
3日目
1. Game Security Hands-on
昨日の続き。writeupをしていただきました。
課題への対策には
メモリチート ->メモリの内容を暗号化
リクエスト改ざん -> SSLを使う。SSL piningを行う
ローカルファイル改ざん -> ローカルファイルを暗号化する。ローカルファイルのhashを持っておいて、サーバー側がhash値を検証する
Dll改ざん -> 難読化を行う
などで対策を行いましょう。だけど対策をしても完璧ではなくてあくまで解析されにくくするだけだし、ゲームによっては対策も変わるというのがゲームチート対策の難しいところなんだろうなと思いました。
IL2CPPの問題に対しては迂回して解く方法を志賀講師から伺ったので、また試そうと思います。
CEDEC Challengeの問題に取り組んだ時は何もわからなかったのでここで知見を持ち帰れてとてもよかったです。
課題に取り組むときに参考にしたサイト
https://engineering.linecorp.com/ja/blog/detail/110
https://www.nevermoe.com/wp-content/uploads/2016/11/avtokyo_jp_re.pdf
http://bbottait.hatenablog.com/entry/2016/09/10/073601
2. 攻撃の検知と防御
脆弱なwebアプリに対して、pythonで自動攻撃ツールを書いて攻撃が通った確認した後、WAFの検知ログを除いて分析して、次は改ざん検知のプログラムを書くという内容でした。
攻撃ツールは僕は事前課題で作っていたのでそれをちょっと改変するだけでした。
WAFはmod_securityを使っていて、それのログを分析するのですが、僕はmod_securityのログの味方がわからず、ググりながら設定ファイルを読んだりしてどんなアラートがでているかを分析していました。
改ざん検知のプログラムはどうやって作るかとても悩んで結局対策できているのかどうかもわからない感じのプログラムをつくって発表したので恥ずかしかったです。他の人の発表を聞いてなるほどーと思っていました。
この講義では攻撃ツールを作るのがとても楽しくて事前課題は一番力を入れて取り組んだのでキャンプ終了後も開発に取り組んで汎用性を高めたりしようと考えています。
まとめ
2泊3日という期間、初めて福岡を訪れたのに豚骨ラーメンも明太子も食べずひたすらセキュリティを学ぶというキャンプでしたが、とても楽しく勉強させていただきました。
ゲームチートやログ分析など、これから学びたい分野ができてとても嬉しいです。
次はチューターとして参加したいとか思ったりしているのでこれからも自分の技術を磨いて行こうと思います。
MVP記念
九州キャンプMVPは、西谷くんに。おめでとうございます! #spcamp #seccamp pic.twitter.com/k5mfAo3VSF
— セキュリティ・キャンプ (@security_camp) 2017年9月4日