電気ひつじ牧場

技術メモ

セキュリティ・キャンプ全国大会2018参加体験記

IPAが主催するセキュリティキャンプの全国大会に参加してきたので、体験記ブログを書きます。
受講した講義の概要を書いたので、難易度等が参加を考えている方の参考になればと思います。

セキュリティ ・キャンプとは

www.ipa.go.jp
言わずと知れたセキュキャンです。2004年から開催されてます。

今年はそれぞれ4つのトラックに分かれた選択コースと集中開発コースに応募することができ、私は選択コースの脆弱性マルウェア解析トラックに参加しました。
今年から選択コースにフィジカルトラックというハードウェア寄りのコースが設置されたため、より幅広い層から参加者が集まったようです。
集中コースは言語処理系開発、TLS1.3、DB、リバースエンジニアリング、OS開発、Cコンパイラ開発、ベアメタル、アンチウイルスなど数多くのゼミに分かれており、自分の好きなものを存分に開発できます。小中学生から募集をかけたジュニア限定ゼミもあるため、合わせて中学生から大学生まで多くの人が集まりました。

交通費や、4泊5日の宿泊費などは全て支給していただけるので、参加にかかる費用はありません。学生ってやっぱり素敵。

応募課題

応募課題を晒すような流行があるようですが流石に恥ずかしいので掲載はしません(しません)。本気出して書きましょう。興味のある分野を必ず聞かれると思いますが、指示がある場合はただ答えるだけでなく手元の環境で実験して、それを元に書くと高評価のようです。
例)
△ webアプリの脆弱性、特にXSSCSRFに興味あります。
◎ webアプリの脆弱性に興味あるので簡単なwebアプリ作ってそこにXSSかけてみました。ソースコードは〜・・・攻撃手段は〜・・・

0日目

始まりの日

収監

私のように遠隔地からの参加者は現地に前入りできます。

研修施設の中はこんな感じ。綺麗で良いところでした。

f:id:cha-shu00:20180819143122j:plain

なお現地入りした後は原則施設から出ることはできません。朝のコンビニツアー(通称:仮釈放、15分外出券など)だけが例外です。

1日目

ドキドキワクワクの初日

顔合わせ、開会式

いよいよ他の受講者、チューター、講師の方と顔合わせです。去年SecHack365で一緒だった人と久しぶりに再会したり、Twitterの中にしか存在しないと思っていたすごい人が講師だったりと、多くの人との出会いがありました。大量に持ってきた名刺をばら撒き、同時に大量の名刺を頂きました。名刺は分厚いので残数がまだ多いと思っていても実は足りなかった・・なんていう残念な事にならないようたくさん持って行きましょう。

講演

セキュリティ基礎

昨年度お世話になった園田センター長による講演でした。「人間は全てを台無しにする権限を持ち、それを防ぐためには過去の失敗から学ぶ必要がある」という話から始まり、ではそのために必要なことは何か?という議論をしました。こういった問題は失敗学と呼ばれる学問領域の一つだそうです。情報漏洩やシステムの破壊といったセキュリティインシデントも何かしらの人為的なミスが原因となって発生するケースが多いため、それをシステム側でなるべく防ぐことが重要であるという結論に至りました。

特別講演(1)「 自由なエンジニアとは何か ~OSCを全国各地で150回以上やって分かったこと~ 」

OSC(Open Source Conference)の運営をしている方の講演で、OSC開催の経緯や歴史、アウトプットすることの大切さを聴かせて頂きました。私は7月に行われたOSC札幌に初めて一般参加したというだけのOSCビギナーですが、今後は運営スタッフ、ブース展示などの形で参加してみるのも面白そうだと感じました。

特別講演(2)「ハッカーは法律を破るのか」

警察庁の技官出身で現在弁護士というすごい経歴の方による講演で、個人的にとても興味深い内容でした。実際に起こった、または起こりうる事案を取り上げ、それらがどのような法律に抵触するのかを解説していただきました。具体的に言うと、Coinhiveを自分のサイトに設置したことで逮捕者が出たという事件がありましたが、サイトを訪問してきた人の計算資源を用いて仮想通貨のマイニングをすることのどの部分が法律に触れる可能性があるのか、などと言ったことです。講演の中では、「一般に認識すべき」といった相対的な言葉(何が一般的かは人、または時代によっても大きく変化するため)が何度か登場し、何が一般的とみなされるか、つまりどのあたりが合法/違法ラインとなるかはITの発展とそれによる社会の変化によっても変わるのだろうと思いました。

LT大会

チューター、参加者、講師の方によるLT大会です。会場の5箇所で同時並行して行われるというなんともカオスなLT大会で、集中して聞かないと隣の登壇者が話す声で聞き逃します。登壇者は多種多様で、頭がぶっ飛んでいる人から頭がぶっ飛んでいる人まで個性的で面白い人が多かったです。

2日目

これから始まる講義にみんな目がキラキラしてる

必修講義A1~3「インシデントレスポンスで攻撃者を追いかけろ」

Aトラックの必修講義で、3コマ連続で行いました。サイバー攻撃を受けた架空の企業の一ヶ月に渡るログ(プロキシなど)とインシデント対応時の社内PCのイメージファイルが与えられ、「マルウェアの感染原因となったURLを答えよ」、「マルウェアを特定しハッシュを答えよ」などの問題をCTF形式で解きました。7週間に渡る事前課題でフォレンジック・ログ収集ツールの使い方やマルウェアの動的解析をみっちり教わっていたため、当日は少しだけ講義を行い、それ以降は個人戦によるCTFでした。


私の最終結果は3位/15人でした。CTFはあまり経験がないのですが、flagを提出した際、correctと出てくるたびに脳汁ブッシャァだったので今後も継続していければと思います。
CTFの後はwriteupと講評の時間があり、今回のような企業に対する攻撃にどのように対処するか、またどうすれば被害を最小限に抑えることができるかを議論しました。アンチウイルスソフト、IDSなどの導入といった最も基本的なことに始まり、ITにあまり明るくない人のPCならコマンドプロンプトpowershellを封印する、検出して報告するといった意見が上がりました。議論を通して面白いアイディアを聞けただけでなく、同じトラックの受講者と仲良くなれたので良かったです。

3日目

疲れが出てくる。朝食チャレンジに失敗する人が散見される。

選択講義A4「IN-DEPTH STATIC MALWARE ANALYSIS」

マルウェア解析の講義です。2日目のインシデントレスポンスでは主にマルウェアの動的解析(実際にマルウェアを仮想環境上で動作させてその挙動を把握する解析手法)を行っていたのですが、この講義では静的解析(マルウェア機械語を読み動作を把握する解析手法)を取り上げました。最近の脅威動向から始まり、効率的なマルウェアの読み方まで講義を行い、その後実際のマルウェアアセンブリコードを読みました。マルウェアには重要な文字列(ファイルパスやドメイン名など)に対して暗号化処理を行っているものや、解析者による解析を妨害する機能が付随しているものがあり、そういった一筋縄ではいかないマルウェアに対してどう対処するかを手を動かしながら学ぶことができました。基本的に解析のキーとなるのはwin32APIなので、やはりマルウェア解析者にとってはwindowsの内部仕様は避けては通れない道なのだろうなという学びも得ました。

選択講義E5「Linuxカーネル脆弱性入門」

実際にLinuxカーネルの開発に関わっている方からの講義でした。バディアロケータ、SlabアロケータといったLinuxカーネル特有のメモリ管理機構の解説から始まり、Dirty COW (CVE-2016-5195)や参照カウンタオーバーフロー(CVE-2016-0728)といった脆弱性をサンプルコードを用いて攻撃しました。特に後者の脆弱性では、オブジェクトの参照カウンタにまつわる一見小さなバグによりシステムを掌握されてしまうという恐ろしさを実感しました。特にカーネル脆弱性が存在すると攻撃コードをrootで実行されるため、システム寄りのプログラミングをする際は注意が必要であることも学びました。

会員企業のお仕事紹介(1)

多くの協賛企業の中から興味ある企業を選んでお話を聞くことができます。私が選択した企業の話を紹介します。

リクルートテクノロジー

web開発業務に携わる方からのお話でした。会社全体でGoを推していることや、新人研修向け技術資料が一部公開されているという耳より情報を教えていただきました。「Dockerfileは教養」というパワーワードを頂いたため、これからは効率的で教養溢れるDockerfileを書こうと思います。

メルカリ

メルカリセキュリティチームの方からのお話でした。メルカリの社風やユーザー企業におけるセキュリティチームの仕事をお話していただけました。セキュリティ技術だけでなく、開発・運用から経営サイドまでの知識が必要になるため非常に高い能力が要求されるのだろうと思います。

4日目

疲労がピークを迎える。朝食会場はガラ空き。支離滅裂な思考・発言

選択講義A6「マルウェアの暗号処理を解析しよう 」

マルウェアの中でも、特に暗号処理部分に着目した講義でした。RC4やBlowfishといった暗号アルゴリズムに特徴的なルーチン、定数を学び、それをディスアセンブルしたマルウェアから見つけ出すといったことを行いました。目grepするのはあまりにも苦行なため、講義の後半はトレース結果(動的解析のログ)からテキスト処理をして暗号処理部分を抽出するプログラムを書きました。マルウェアの暗号処理部分は通信内容や重要な定数を隠すために行われるので、暗号解読は解析の重要ポイントとなります。そういった点でとても実践的な講義だったと思います。

選択講義B7「サーバーレス時代のシステム設計ワークショップ」

クラウド技術の復習に始まり、サーバーレスとはどんなものか、何ができるかを学んだのち、実際にAzure Funcitonを用いてSlack botを作成しました。今回作ったbotはチャンネル内の誰かが発言した内容をそのまま返すといった簡単なものでしたが、こういった簡単なものをサーバ管理の手間暇をかけずにサクッと作成できてしまうのがサーバーレスの大きな利点であることを学べました。


ずっとアセンブリやらOSカーネルやらが出てくる低レイヤーな講義を受けていましたが、最後の最後でwebの先端技術という高レイヤーに浮上してしまい、あまりの気圧差に心臓麻痺を起こすかと思いました。

会員企業のお仕事紹介(2)

TOYOTA

自動車セキュリティ技術者の方からのお話でした。アイドルの話(idleではなくidol)から始まり、自動車に対する攻撃の実際とその危険性を教えていただきました。自動車は今や機械ではなく移動するコンピュータである、という自動車産業の変遷が興味深かったです。

サイバーディフェンス研究所

webやIoT機器の脆弱性診断に携わる方からのお話でした。「身の回りをハックせよ」という話が特に面白く、講演でも触れていたようなICカードを用いた通信に興味が湧きました。

5日目

涙の卒業式

グループワーク

今年はキャンプ終了後に継続して取り組むことというテーマでレポートを書きました。私は
・ミニキャン、全国キャンプにチューターとして参加
・地域のITコミュニティに参加してOSCにブース展示やスタッフとして参加したい
GitHubにもっと草を生やす。
といったことを書きました。ありきたりに見えますが全部達成するのはなかなか難しいと思うので頑張ります。
あれ・・・グループワークの時間のはずなのにグループでワークしてないような・・・?

成果発表会

主に集中開発トラックの方々による成果物発表です。初っ端から自作ブラウザでプレゼンを始めるガチプロや、Cコンパイラ実装モンスターなどを筆頭としてとてもキャラの濃い面々による発表でした。発表内容に関しては集中コースの方々のブログに任せることにします。楽しみだな〜(チラッ..チラッ..)

頂いたもの

協賛企業様や講師の方々から技術書や各種グッズを頂きました!!うれしい!!!ありがとうございます!!!貧乏大学生にとって技術書をいただけるというのはとてもありがたいのです。

番外編:小ネタなど


会場LANがインターネットから隔離されるとすぐにこんな遊びが・・・これがセキュキャンクオリティのようです。あ、ちなみに画像中のあずにゃんペロペロWiFiは初日からずっと出てたのでそこは勘違いしてあげないでください。



NOC(Network Operation Center)チームが会場LANの敷設などを担当していたのですが、各講義室のアクセスポイントに対する接続数の増減やトラフィックの量から私たちの行動を分析して可視化していました。ただネットワークを設置するだけではないというのがすごい・・・。

感想

私は普段アセンブリをやったりweb開発をやったりと色んなレイヤーをつまみ食いして来たため、特に専門性があるわけでもありませんでした。どちらかといえばweb開発の方が好きかなという程度です。なら開発と運用トラックに出せよと思いますよね?私もそう思います。ではなぜマルウェア解析のトラックに出したかというと、おそらく今回のような機会でもなければマルウェアの解析をしたり、カーネルエクスプロイトをしたりすることはないだろうと思ったからです。結果的にはその選択は成功で、以前からやややハマり始めていたシステムプログラミングの沼にさらに引きずり込まれました。本当は結構Aトラック以外の選択講義にも希望を出していたのですが、ことごとく外されて結果マルウェアとにらめっこする日々になってしまったため私にとってはマルウェアキャンプでした。きっとこれも神(IPA)の思し召しだと思い、今後もちょっとずつマルウェア界隈にも関われたらなと思います。重症患者界隈のオタクにとってはマルウェアは恋愛対象らしく、お付き合いするだの育てて調教するだの言っている人がいますが、そう言った強い人たちに出会えた事も本当に良かったと思います。

最後に

控えめに言って最高なので興味ある人はぜひ参加しましょう!
参加者、講師の方々、チューターさん、事務局・運営の方々、本当にありがとうございました。
f:id:cha-shu00:20180819190508j:plain

本当に最後に

さっきの感想、真面目に書いとけばそのまま事後課題の感想欄にコピペできたのになと心底後悔している