高専機構の情報セキュリティ人材育成イベントK-SECにて、主管の石川高専さんにて、「ログ解析とSOC演習」の講習会がありました。
ログ解析
セキュリティ機器の設定や組織内のルールにて、防衛を行うことはできるが、完全に脅威を検知・防御することは難しい。通信ログやアクセス履歴などの取得・蓄積しログから脅威を検出することが重要。
ログ解析演習
Raspberry-Pi のサーバが学生1人毎に準備してあり、演習用のログデータから目的となる情報を探す演習を行なった。
$ ls -R ~pi/log/event1-5/pcap/sqlinjection.pcap ~pi/log/event1-5/web-log/access_log_yyyymmdd.log
まずは基本コマンド
$ cd log/event1-5/web-log/ $ ls -al access_log_yyyymmdd.log $ cat access_log_yyyymmdd.log | more
ユーザーエージェントの確認
$ cat access_log_yyyymmdd.log | cut -d ' ' -f 12- | more # cut 特定の項目を抜き出すコマンド # -d ' ' データの区切り文字は ' ' 空白 # -f 12- 12項目以降を出力 # more 出力をページ単位で出力 # 大量のLOGだと、長時間かかるよぉ…
ディレクトリパストラバーサルの確認
$ grep "¥.¥./" access_log_yyyymmdd.log # grep 特定の文字を含む行を抜粋して表示 # アクセス履歴のPATHを確認 $ grep "¥.¥./" access_log_yyyymmdd.log | awk '{print $7}' # awk '{print $7}' 各行の7番目を出力 ( cut -d ' ' -f 7 と同じ ) # アクセス成功の確認 $ grep "¥./" access_log_yyyymmdd.log | grep "¥" 200" # Webサーバのアクセスログには、データ取得成功=200 が記載されている行を抜粋 # 特殊なアクセスPATHを確認 $ grep /proc/cpuinfo access_log_yyyymmdd.log # 脆弱なphp,cgiだとアクセスのURLに、アクセスしたいPATHが含まれる # /proc/cpuinfo は、CPUの種別などの情報が取れる # 攻撃者のIPアドレスを確認 $ grep -h "¥./" access_log_yyyymmdd.log | awk '{print $1}' | sort | uniq -c # アクセスログの先頭 $1 には、IPアドレスが書いてある。 # sort 出力をソートする(同じ行を集めるためにソート) # uniq -c 同じ行が繰り返す行数をカウント
OSコマンドインジェクションの確認
脆弱性のあるメール送信ページへの攻撃の確認 # addressを含む行で@を含まないものを検索 $ grep -h address access_log-yyyymm*.log | grep -v @ # grep # -h 複数ファイルの処理で、ファイル名を出力させない # -v 含まない行を出力する。 $ grep -h address access_log-yyyymmdd.log | grep -v @ ¥ | awk '{print $7}' | nkf -w --url-input # nkf 漢字などの文字コードを変換 # -w UTF-8 で出力 # --url-input %20みたいなURLエンコードを復号 この実行結果には以下のようなものがあるかもしれない。 "address=;/bin/echo Permit_RootLogin yes >> /etc/ssh/sshd_config"
SQLインジェクションの確認
- 不正ログイン、情報漏洩、完全性損失、可用性損失 の可能性
SOC演習
大量のログでは、unixコマンドで解析するにしても、コマンド組み合わせを考えるのは大変。企業では、ログ解析専用ソフトを用いて解析を行う。ただし、専用の解析ソフトは高価。今回は、K-SEC事業で一時的な借り物で演習。