参加しよう!hardening project #h10v #h・v

44
参加しよう! Hardening Project <社内勉強会「インフラトーク(仮)」向け資料> 株式会社サイバーエージェント DCソリューション クラウドエンジニア 仲山 昌宏

Upload: masahiro-nakayama

Post on 20-Feb-2017

2.916 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 参加しよう!Hardening Project #h10v #h・v

参加しよう! Hardening Project <社内勉強会「インフラトーク(仮)」向け資料>

株式会社サイバーエージェント DCソリューション クラウドエンジニア

仲山 昌宏

Page 2: 参加しよう!Hardening Project #h10v #h・v

内容

1. Hardening 10 ValueChain の紹介

2. Team4 「セキュ子の部屋」の反省会

3. Softening Dayを踏まえた他チームの分析

4. 次回勝つために

Page 3: 参加しよう!Hardening Project #h10v #h・v

Hardening Projectってなんぞ?

• 渡されたシステムを攻撃から守り切るセキュリティの競技

Page 4: 参加しよう!Hardening Project #h10v #h・v

Hardening Projectってなんぞ?

• 渡されたシステムを攻撃から守り切るセキュリティの競技 サービス運用

• 「セキュリティ技術」だけに偏らない全般的なサービス継続の能力が問われる総合競技 • 脆弱性調査・対応

• 影響範囲の調査・封じ込め

• 性能チューニング

• 商品の在庫管理

• 広報・お詫び

• 社長の説得

主催:Web Application Security Forum(WASForum) 年二回開催(2014年から沖縄) 今回の Hardening 10 ValueChain で7回目

Page 5: 参加しよう!Hardening Project #h10v #h・v

Hardening 10 ValueChain

• 11/07,08 @ 沖縄県宜野湾市 沖縄コンベンションセンター

• 渡されたECサーバに対して • 堅牢化を施すことで • 評判(繁盛レベル)を上げ、 • 売上を伸ばす競技です。

• 11/07 Hardening Day (8時間耐久競技)

• 11/08 Softening Day (振り返り+表彰)

Page 6: 参加しよう!Hardening Project #h10v #h・v

競技環境(サービス環境+踏み台+α)

複雑な競技環境 (21台)

• 公開サーバ 8台

• 踏み台サーバ 6台

• 社内サーバ 5台

• ルータ 1台

• 社外確認用クライアント 1台

OS別に見ると

• CentOS 13台

• Windwos Server 2台

• Windows 5台

• vyOS 1台

今回は、競技環境の資料が 前日夕方(18:22)に送られてきました!

Page 8: 参加しよう!Hardening Project #h10v #h・v

http://www.iij.ad.jp/company/development/tech/techweek/pdf/151112_2.pdf

実際にはこの先に 「インターネット」

があります。 (お客様・攻撃者など)

「踏み台」を経由して サーバに接続しないと いけない(ルール)

有線で素直に 接続できるけど

踏み台で 「メール」を読み書き

(社長・社外との会話) ここでのサービスを 死守!!!!!!!

Page 9: 参加しよう!Hardening Project #h10v #h・v

動いているサービス

• ショッピングサイト • 売上の要

• コーポレートサイト

• 新卒エントリー受付システム

• 問い合わせフォーム

• 売り上げ管理システム

WordPress

Struts/Tomcat

PHP

Page 10: 参加しよう!Hardening Project #h10v #h・v

評価(ECサイト売上+加点ー減点)

加点

• インシデント対応時に 適切なアクション

• 未修正の脆弱性への対応、 マルウェアの検知など

• ファインプレー

• 終了時の在庫数×単価×40%

減点

• インシデント発生時

• 社内ルール違反

• Hardening 10 ValueChain ルール違反

• 終了時にhardeningユーザでログインできない場合

Page 11: 参加しよう!Hardening Project #h10v #h・v

その他の評価項目

• 技術点 • 技術的な対策の実施状況 • 脆弱性への対応、マルウェアの対応など

• 対応点 • インシデントの対応能力 • インシデント復旧時間、サイト全体の稼働率など

• 顧客点 • ユーザの対応方法 • サポート能力、ユーザ保護の取り組みなど

• 経済点 • マーケットプレイスの活用状況 • サービスや製品をたくさん使って市場を活性化したかなど

Page 12: 参加しよう!Hardening Project #h10v #h・v

技術チーム kuromame6

• 競技環境の準備

• 競技における「攻撃者」役 • 競技環境に様々な攻撃を行う

• Hardening競技の真の支配者

• 10人×6チーム=60人でkuromame6に勝つ競技でもある

• 各チームの評価も行う • 売上となる「お客さん」クローラー

• 攻撃や脆弱性に対する対応の判断

• 各チームの対応に基づいて「繁盛レベル」を操作 ⇒ クローラーの巡回頻度=売上が上がる!

Page 13: 参加しよう!Hardening Project #h10v #h・v

今回の攻撃シナリオ

• 最近世の中で問題になっていそうなものを取り上げた。

11時 標的型攻撃 12時 在庫管理アプリからの情報漏洩 13時 DD4BC(DDoSによるNW停止) 14時 Malvertising 15時 マルウェア再度活動 16時 新卒採用受付からの情報漏洩

Page 14: 参加しよう!Hardening Project #h10v #h・v

Malvertising

• 昨今はやりのアレ • 「vvvウイルス」

• 現実にはメール主体のウイルスだったようですが…… (先日も某日報MLで流れていましたね)

• コーポレートサイトを表示したときに、 3回に1回 だけマルウェアが導入される素敵な広告♥

Page 15: 参加しよう!Hardening Project #h10v #h・v

新卒採用受付からの情報漏洩

• SQLインジェクションがあるJavaアプリケーション • ご丁寧にソースコード同梱

• よく見ると、わざわざバリデーション部分だけコメントアウト

• 既に環境がある人でないと修正/ビルドは面倒そう ⇒ 代替策 • WAFで防いだ

• メール送信のフォームプログラムに差し替えた

• メール送信の表示に差し替えた

Page 16: 参加しよう!Hardening Project #h10v #h・v

特定商品が売れない

• 一部のチームで「かりゆし1」だけ売れない事象

• かりゆし1を買う利用者(クローラー)だけ、リクエストのヘッダに特殊な文字列が挿入されている。 ⇒ 「かりゆし1」を買いたい人のアクセスがWAFで遮断

• WAFを入れた前後の影響をよく確認するべきという教訓

Page 17: 参加しよう!Hardening Project #h10v #h・v

バックドア

• 踏み台サーバは徹底的に取られている

• Windowsの遠隔操作 • 競技中に「話しかけられた」人も居る模様

• Linuxにはキーロガー • きれいにしないと、変更する端からパスワードが盗られる。

• 外に53/UDP (DNS) パケットを送り続ける謎の/bin/bash

• 他にもあった可能性?

Page 18: 参加しよう!Hardening Project #h10v #h・v

最終結果

順位 見込み販売力 技術点 顧客点 対応点 経済点

1位 31,142,860 2450 3140 3540 7300

2位 28,799,800 2150 2570 2880 1300

3位 28,367,320 3200 2570 2770 1100

4位 25,991,372 2750 2950 3210 1600

5位 25,145,656 2900 2570 3320 1100

6位 14,841,380 2300 3140 3320 500

Page 19: 参加しよう!Hardening Project #h10v #h・v

最終結果

順位 見込み販売力 技術点 顧客点 対応点 経済点

1位 31,142,860 2450 3140 3540 7300

2位 28,799,800 2150 2570 2880 1300

3位 28,367,320 3200 2570 2770 1100

4位 25,991,372 2750 2950 3210 1600

5位 25,145,656 2900 2570 3320 1100

6位 14,841,380 2300 3140 3320 500

Team4 「セキュ子の部屋」

Page 20: 参加しよう!Hardening Project #h10v #h・v

Team4 セキュ子の部屋

Page 21: 参加しよう!Hardening Project #h10v #h・v

わがチームの基本戦略

•ビジネスとして当たり前のことをやろう • 脆弱かわからないサービスをリリースする のはそもそもビジネスとしてありえない

• スタートダッシュに本気出し、 開幕メンテぶっぱで安全性を確保 「やられる前に塞ぐ」

• 漏洩事故を起こさず対応に力を入れる事で 評価点と後半の売上を確保しに行く

Page 22: 参加しよう!Hardening Project #h10v #h・v

スタートダッシュ

• 1時間のダウンタイムで固めるだけ固める

•数分以内で分かりやすい侵入経路の阻止 • パスワード変更

• auditdルール設定

• Sorry画面に切り替え

•細かい設定はまず止めてから

↑ この発想が諸悪の根源(準備不足)

Page 23: 参加しよう!Hardening Project #h10v #h・v

初手の失敗

• PC設定の不備でスタートダッシュに躓く • Sorry化に27分

• WordPressの保護に時間が掛かる • 開かない管理画面

• 不慣れなZIPファイル経由でのアップグレード

• WPのアップグレードに3時間

• 対象コンポーネントの取りこぼし • Tomcatに手が回らない、見れる人が足りない

• 結局なにも対策しないままの再オープン

Page 24: 参加しよう!Hardening Project #h10v #h・v

焦り

Page 25: 参加しよう!Hardening Project #h10v #h・v

後手の連続

• Windowsクライアントへの対応 • とりあえずKaspersky入れる方針ではあった

• 結局16時くらいまでずるずる引っ張った

• Windowsが止まるとメール送受信が滞る

• 在庫問題 • 初動が遅れている間に在庫数が改竄

• 調査に多大な時間が割かれる

• とっとと社長に聞けば良かった

• 事故に追い回される • スタートダッシュ戦略が完全に破綻

Page 26: 参加しよう!Hardening Project #h10v #h・v

敗因1: チームビルディング

• チームビルディングの失敗 • 3チームに分けて作業(これは良い)

• 全体の作業管理ができていなかった

• インシデント発生以後、必要な連携が取れず

• 意志決定者の不在 • 対応方針を決めきれない

• 優先順位が決められない

⇒ 本来優先すべき対応が進まない

⇒ 繁盛レベルが上がらない

Page 27: 参加しよう!Hardening Project #h10v #h・v

敗因2: 準備不足の積み重ね

• スタートダッシュ作業の作り込み • 資料を熟読し前日から当日朝まで時間を掛けていれば、

より早く完璧な守りが可能だった

• 作業環境の最適化不足 • 踏み台Windowsの取り合い

ブラウザだけならXvncなどもあり得た

• メールやりとりの共有 • 事前に枠組みを作っておくべきだった

Page 28: 参加しよう!Hardening Project #h10v #h・v

終了時点での仕掛かり作業

• 漏洩事故の該当者への連絡 • コーポレートサイトの侵入調査 • 問い合わせ・新卒フォームのWAF対応 • 改竄された在庫数の修正 • EC全体が遅い問題の調査 • vyattaの通信棚卸し • キーロガーの調査(おそらくBash) • WordPressプラグインアップグレード • 取られたWindowsクライアントの調査、封じ込め • なんかおかしいADの調査

Page 29: 参加しよう!Hardening Project #h10v #h・v

良かった取り組み

• サービス再開後、しばらくは安定できていた • ※ ただし後手に回り始めるまで

• 戦略そのものは正しかったという認識

• (当然ながら)きちんと防げた攻撃も多い • Wordpressバージョンアップ

• ShellshockとかBindとか

• 踏み台Linuxの不正トラフィックの検知 • Bashプロセスっぽいのでおそらくキーロガー?

なお間に合わなかった模様

きちんと準備して 1時間でやりきれていれば……

Page 30: 参加しよう!Hardening Project #h10v #h・v

マーケットプレイス

• 正直うまく活用できなかった • 結局Kasperskyだけ

• 守り切れなかった(Win10等)

• 気付いたときには遅かった • チームに不足しているスキルの拡充

• インシデント対応時の人手

• 買い占めという正義(他Tに使わせない)

Page 31: 参加しよう!Hardening Project #h10v #h・v

今回のアイドルPepper

• rootパス読み上げちゃん (震え声)

• 声がたまに聞こえなかった

• 天の声が(うちには)優しかった

https://twitter.com/MikumoConoHa/status/557495607326031872

Page 32: 参加しよう!Hardening Project #h10v #h・v

他のチームの分析

• Softening Day 各チームの振り返り • https://www.youtube.com/watch?v=I1Um1l_9Vw0

• まとめたメモがあるのでそのうち公開します。

• いくつかパターン化できるものがある • 初動

• インシデント対応

• マーケットプレイス

• コミュニケーション

Page 33: 参加しよう!Hardening Project #h10v #h・v

初動

• 脆弱性検査 • 今回は前回(Hardening 10 Marketplace)に近い環境だろうという

予想があった • 前日配布された競技資料を見れば、ほぼ確定できていた!

• 対象とする環境を対象に、最近はやりの脆弱性のリストアップ

• 診断系技術者が居るチーム(Team3など)は、がりがりとプロの腕で脆弱性を片っ端からチケット切るのも有効

• 事前準備したツールの持ち込み • 環境調査

• パッチ

Page 34: 参加しよう!Hardening Project #h10v #h・v

インシデント対応

• 1に報告2に報告 • 社長宛 • 関係組織宛 • 顧客宛 • 一般閲覧者宛(PR) • 「ゲームのルールを見極める」ことが勝利の鍵だった

• 前回は、後半が性能チューニング合戦だった模様。 とらわれすぎてはいけない。

• 5に質問 • 良い質問をすれば良い回答が得られる

• (実は)社長は技術がわかる • マルウェア配布していた広告のリンクを広告業者からもらいなおせる

Page 35: 参加しよう!Hardening Project #h10v #h・v

マーケットプレイス

• 人の時間を金で買えるなら金で解決するべき • 全部上手くいけば4800万円の売上

• 「想定される売上=予算」(Team5)

• WAFは正義(正しい時間稼ぎ手段) • まず入れてしまえばそれなりの確率で守ってくれる

• Packet BlackHole • 被害の影響調査が楽になっていた

Page 36: 参加しよう!Hardening Project #h10v #h・v

コミュニケーション

• Slack+Google Driveが圧倒的黄金パターン • 特にSlackはほとんどのチームが使っていたはず

• アナログ手段が有効 • Windows端末の使用権管理 ⇒ 紙のトークン(付箋など) • 近くに居るんだから無駄なデジタル化コストは不要だよね

• タスク管理 • 大きめタスクは付箋かんばん管理が最強っぽい? • 細かい脆弱性の潰し込みはスプレッドシートが有効そう

Team5のかんばんを 写真で数えたところ、49枚の付箋があって、40枚が完了になって

いた模様

追記:Team5の「付箋」については、 ・当初は完了付箋を捨ててしまっていたので、 実際に完了したタスクの数はこれより多い。 ・「付箋」の作業タスクを、さらに人に振れる 大きさに砕いて、作業チケットを切っていた とのことです。

Page 37: 参加しよう!Hardening Project #h10v #h・v

次回勝つために

• 全体でもまだまだ伸びしろは長い • 今回優勝したTeam5はマネジメントと対応力で勝っているが、

技術点は4位(1位チームの3/4)に過ぎない

• 技術点トップのチームでも、評価ポイントの1/3しか稼げていない

• 技術的に守り切った上で対応でも勝ちたい • 今回のTeam5の手法は見習うべき

• ITILみたいな視点ももっと戦略に取り入れていきたい

• その上で、技術的にもっと派手に「本気で」攻めに行く

Page 38: 参加しよう!Hardening Project #h10v #h・v

事前準備「段取り8割」

• 準備できるものは準備する • Linux系ホストは、SSH公開鍵認証+sudo+Fabricが有効そう

• 事前に競技用のSSH鍵対を共有

• Fabricで情報収集

• 既成の脆弱性診断ツール

• 想定される通信以外を記録してなる早で遮断

• 脆弱性でそう・使われそうなミドルウェアの最新パッケージ持ち込み

• 「開幕ぶっぱ」のスクリプト流し込みでどこまでできるか • 自分の想像力とkuromame6の戦い

Page 39: 参加しよう!Hardening Project #h10v #h・v

既に盗られている(かもしれない)環境

• 本質的には何も信頼できない • 既設のバックドアでリアルタイムで介入されたら勝てない • でもそれでは競技にならないので、現実的な「ゆるさ」がある

• 信頼できる場所を増やしていく • 脆弱性診断 • 信頼できるバイナリを持ち込む

• static linkバイナリ、特にSSHD、シェルあたり

• Windowsは一定の割り切りが必要そう • ウイルス対策ソフトの持ち込みも検討しても良いのでは

• 「現実的」なラインの見極めはセンスが要求される?

Page 40: 参加しよう!Hardening Project #h10v #h・v

自らのサービスの正しい把握

• 動いているサービスを「適切に」把握する • 正しく把握していないのに正しく運用できるわけないだろ馬鹿!

• ショッピングカートの仕様

• EC以外のサイトの仕様

• ヘルスチェック • 今回はそういう攻撃は無かった(ような気がする)けど、

各サーバの異常をいちはやく検知できる体制が必要そう

• 監視ツールのバイナリをパッケージングして持って行くと良さそう

Page 41: 参加しよう!Hardening Project #h10v #h・v

まとめ

• Hardening Projectはサービス運用の総合競技 • 「セキュリティ技術者」以外も積極的に参加すべき

• むしろディレクターとかも是非

• 得られる経験値は巨大

• 次は勝つ • 勝つためには「やりきる」ことが必要

• 6月頃?

• MINI Hardeningも出たい

Page 42: 参加しよう!Hardening Project #h10v #h・v

追加情報

• WASNight 2015 Year End = WASForum x OWASP Night • 12/21 (月) 18:30 - 22:00 • https://owasp.doorkeeper.jp/events/36238

• Softening Dayの動画 • https://www.youtube.com/watch?v=I1Um1l_9Vw0 • https://www.youtube.com/watch?v=nWPwbCbktIY

• 「情報共有」の重要性を身をもって体験: マネジメント力が勝利の鍵となった「Hardening 10 ValueChain」 - @IT • http://www.atmarkit.co.jp/ait/articles/1511/24/news019.html

• 中の人が振り返る「Hardening 10 ValueChain」 ――学びにつながった「トラブルの数々」とは (1/2) - @IT • http://www.atmarkit.co.jp/ait/articles/1512/21/news004.html

Page 43: 参加しよう!Hardening Project #h10v #h・v

おまけ:沖縄観光

• #ssmjp の人たちと沖縄観光 • 金曜:首里城

• 月曜:レンタカーで南部一周

• レンタカー安い • というか車無いと何もできない

• 北部に泊まらないと北部に行けない

Page 44: 参加しよう!Hardening Project #h10v #h・v