2020-08-29 SC4Y('20#1)サイバーセキュリティ 脆弱性対応(防災訓練)に参加しました セキュリティ SC4Y SC4Yとは ShellShock どれくらい危険なの? なぜ題材にした? 事前準備で自PCのVirtualboxにLab環境を設定しました。 当日はpowershellでLabに攻撃(PoC 簡略すると確認用のテストコードを実行)しました。 コマンドが実行できるなら rm -rf ./は? Labでログ調査、変更ファイル探し 感想 SC4Yとは 北海道警察のサイバーセキュリティ本部が行うセキュリティのやつ (説明聞いてたけど忘れました。) sc4yはオンライン開催で行われ、zoomのブレイクアウトルームも活用し、大変手厚い対応の講習会でした。 ShellShock ハンズオンの題材はShellShockでした。 一言でいうと GNU bash における任意のコマンドを実行される脆弱性です。 どれくらい危険なの? 脆弱性情報データベースの基本値10.0(危険値) 10段階のマックス値! jvndb.jvn.jp なぜ題材にした? 比較的簡単かつ影響度の高い攻撃が成立した 影響範囲が広く、世界中で話題になった 過去の事件を学び明日に備えるから 主に以下の流れでハンズオンが進められました。↓ 脆弱性とは何かを知る 脆弱性情報の集め方 脆弱性を比較的安全に確認できるLAB環境の構築方法 PoCによる脆弱性の確認方法と対策 脆弱性の対処スキルを習 事前準備で自PCのVirtualboxにLab環境を設定しました。 当日はpowershellでLabに攻撃(PoC 簡略すると確認用のテストコードを実行)しました。 windowsの場合 (iwr -UserAgent ‘() { :;}; echo Content-Type: text/html; echo ; /bin/cat /etc/passwd’ http://127.0.0.1/test.php).Content 環境変数の文字列がコマンドとして実行されている。 GNUのパッチの中身を確認すると 渡された環境変数の文字列が関数なのかフィルタするために 条件分岐に () { がハードコーディングされている env x='() { :;}; echo vulnerable 関数扱いの条件をtrueにするための文字列 (){ 複数のコマンドを実行するために分離 :;} は文法が正しければ何でもいい 例 env x='() { echo;}; echo vulnerable' 環境変数に攻撃的なコードを埋め込めよう! (iwr -UserAgent "() { :; }; echo Content-Type: text/html; echo ; echo hacked > /tmp/backdoor" http://127.0.0.1/test.php).Content ※ Lab環境で後で確認 コマンドが実行できるなら rm -rf ./は? HTTPDで可能な操作はApache権限 /root を参照したり、データの削除は不可でできないらしい。 Labでログ調査、変更ファイル探し まず、攻撃された箇所を見つけたら検証する必要がある。その後の対応のため。 脆弱性が見つかったら、一人で抱え込まないで上司に相談する。 サービスとめたり、パッチ出したり、組織のルールにもとづいた行動をとる。 先ほどの (iwr -UserAgent "() { :; }; echo Content-Type: text/html; echo ; echo hacked > /tmp/backdoor" http://127.0.0.1/test.php).Content /tmp/backdoorに作ったファイルを確認する tmpにファイルがなかった! なぜ? CentOS6 以前の場合(initrd)は/tmp直下に配置される CentOS7 からはsystemdが採用され、セキュアになっているらしい そのため、 systemd-private-jkfajdsj/tmp/backdoor にありました。 github.com 感想 脆弱性の情報収集の仕方を知れたのはとてもありがたかったです。 今後気になる脆弱性を調べるときに参考になる内容でした。 ちな、ShellShock見つけた人はお風呂でひらめいたらしい。 (スゴ) 今後お風呂で脆弱性みつけたらIPAの窓口に報告します。 意義ある活動だよねSC4Y ありがとうございました。 www.virustotal.com