diaryこの広告は、90日以上更新していないブログに表示しています。2016-08-15セキュリティ・キャンプ2016全国大会に参加しました8月9日~13日の4泊5日にわたって開催されたセキュリティ・キャンプ全国大会2016に参加してきました。組み込みリアルタイムOSとIoTシステム演習DAY1会場到着まで事情により参加が遅れたため、多くの方と同時に交流できるチャンスの1つを逃してしまうというところから私のセキュリティ・キャンプは始まりました。遅れて参加した私にも到着早々話しかけてくださった方に本当に感謝感謝です。特別講義サイバーディフェンス研究所の福森さん、日本サイバー犯罪対策センター(JC3)の間仁田さんによる講義が行われました。福森さんの講義では技術とは何か、技術を何に使うのかを考える機会になりました。間仁田さんの講義では、犯罪とは何か、セキュリティに関する犯罪をどのように複数の機関で解決するか、といったことを考えさせられました。DAY2専門(1)、専門(2)概要:前半でPC上でパケットを生成やキャプチャーするプログラムを自作することにより、パケットの構成を理解します。ル出力のみを使って10BASE-Tのフレームシーケンスを実際に送出する演習を行います。この講義で、前半ではOSI参照モデルにおける2層のレベルでパケットに触れ、後半では1層のレベルでパケットに触れて講義が行われました。Arduinoのボードからパケットを送信する、といったことを行いました。普段マイコンで遊ぶことの多い私には、ArduinoからEthernetフレームが送信できていることが大変新鮮でした。Spoofing)にも触れられて、大変興味深い講義でした。午前8時30分から午後5時30分まで1日中演習を行っていたのですが、楽しくてあっという間でした。Piを舞台にFlagを集め、得点を競うというものでした。私は今回が初CTFでした。Piが舞台ということで、まず適当にポートスキャンした結果SSHとHTTPに加えて2つ怪しげにポートが空いていたので、そのあたりはWebあたりに強いチームメイトにお任せしました。Piの初期ユーザとパスワードは体が覚えていたのでSSH接続を試みた結果あっさりログイン出来てフラグがあったので驚きました。Piに保存されていたバイナリの解析を行いました。1つはどうやら引数の値からFlagの値を計算していたようで、解析すると連立方程式の解がFlagに対応することがわかりました。解の組み合わせをできるだけ多く試すスクリプトを書いて総当たり的にFlagを計算しました。出力されたそれらしい値を提出すると整数解の最小の組み合わせ(基本ベクトル)がそのままFlagを生成していたらしく、正攻法とは言えないかもしれませんが総じて2問分の得点だけチームに貢献できてよかったです。私がこれらのことをやっている間に、チームメイトが他の問題(Web系などなど)を攻めて得点につなげてくれていて、なんと私のグループは優勝できました!チームメイトに感謝感謝、と言いながら、ひとえにCTFと言っても様々な形(問題形式)があるのだなぁ、と思い、とても興味がわきました。機器を始めとした製品に対して脆弱性発見に挑戦していただきます。そこから検証コード作成を含めた脆弱性報告の仕方についても実践していただきます。ファジングを行ってその結果を観察しました。実際に脆弱性が発見された、といったことはなかったのですが、実際にツールがファジングに使っているデータが興味深いデータばかりでした。専門(4)オンラインゲームのプログラムなどによる自動プレイは、不正行為として禁止されているケースがほとんどです。不正行為自体はなくならず、近年では、自動化のみならずチートなどの行為も横行しており、対策に追われることも少なくありません。本講義では、オンラインWebゲームを運営する側とプレイする側に分かれて、運営側と攻撃側を体験します。講義で使用されたゲームについてはこちらに詳しく書かれています。講義は前半と後半に分けられ、私はプレイヤー側と運営側の両方を担当することができました。プレイヤー側では、自分がゲームをプレイしやすいようにするためのコントローラが完成直前で時間切れになったため悔しい思いをしました。サーバ側では、サーバのログを逐次見ながら、明らかに人為的なものではない(プログラムで実行されたような)挙動が発生した際に逐次対応できるよう努めました。セキュリティの脆弱性以外にも、攻撃者によっていかに攻撃を効率よくさせないか、といったようなことと関連があるのでは、と思いました。programming(ROP)で利用可能なコード断片(ROPガジェット)を探索するツールを自作・利用していきます。着目した講義で、ROPガジェットを見つけて構成するという講義でした。講義では、libcのバイナリに対してシェルを起動することを目的に、ROPガジェットをツールを用いて探し、構成しました。ここでは4つのlibcが用意され、次のことを行う、といった演習でした。1つのlibcに対してシェルを起動するよう、ROPガジェットを構成する×42つのlibcに対して1つのプログラムで両方ともシェルが起動できるようにROPガジェットを構成する3つのlibcに対して1つのプログラムで(以下略4つ(以下略キャンプが始まる前までは全く未知の分野で、理解できるか大変不安でした。講義が始まってひととおり説明を受け、実際にROPガジェットを探して組み合わせ始めると、途端に楽しくなって、1つROPが完成できたときには大変興奮しました。私はlibcに対してシェルを起動するプログラムを2つまで作ることができました。ほかの方の中には複数のlibcに対して同時に起動するものを作成できた方もいました。講義を受けるまで不安が多かったのですが、講義後にはとても気持ちよく、引き続き勉強したくなりました。この講義はスケジュールの都合上、他の講義より時間が短く、物足りなさも感じました。使ったアダプタで各人のPCからCANバスにアクセスし、流れているメッセージを受信し解析する方法を、LinuxとPythonの環境を使ったハンズオン形式で行う予定です。この講義では、CANのパケットを受信して、その内容をフォーマットに基づいて解析する、といったことを行いました。CANのデータフォーマットについても丁寧に解説いただき、スクリプトを組んで実際にデータが解析できて大変面白かったです。CANのデータフォーマットとその意味について説明があり、個人的には「なるほど...!!」と感動しました。専門(7)組込み/IoTシステムに搭載される組込みリアルタイムOSと通信ミドルウェアの仕組みについて、実機による演習を通して学んでいただきます。異なる、組込み/IoTシステムの世界を、ソフトウェアを中心に知ることができます。普段マイコンをOSなしの環境下でプログラムを組む私にとっては、組込み用リアルタイムOSはまるで別の世界でした。ふたを開けてみれば、形は違えどまるで通常のOSのようなスタイルでプログラムを組むことができて、大変便利だと感じました。一方で組み込み特有の事情に起因する違いもあって、新鮮でした。私のグループは「小規模企業におけるセキュリティ対策」について考察しました。発表まで(ほとんど前日)に調査、考察をする中で、他のグループのテーマとも深く関わりがあるように思えてきて、「もともとそのような意図からこのグループワークは始まったのでは・・・?」と思いながら資料を作成しました。実際に他のグループの発表を聞きながら自分のチームの発表を終えると、(冷静に考えれば容易にわかることかもしれないけれど)内容をうまく絞ることができていなかった、と反省しました。他のグループの発表を聞きながら、その発想はなかった、と思うことも多々あって、個人的によい刺激になったと思います。キャンプを終えてセキュリティ・キャンプの5日間は本当に濃く、(感覚的に)短いものでした。参加者の皆さん、チューター、講師の皆さんには大変感謝しております。本当にありがとうございました。夜でも外が明るかったので、明るいと寝付けない私にとってはなかなか辛かった。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!je6bmqさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。