【問題のみ】第16回春だからログ解析するぞシェル芸勉強会
Sat Apr 18 13:37:05 JST 2015 (modified: Sun Sep 15 09:30:07 JST 2019)
views: 3335, keywords:ログ,apache,CLI,Linux,shellshock,UNIX/Linuxサーバ,USP友の会,勉強会,シェル芸,シェル芸勉強会 この記事は最終更新日が5年以上前のものです。
始める前に
イントロのスライド
使用するログ
/?page=05649内の、danger_log.gz(ShellShockのログ)とaccess_log.nasa.gz(NASAの公開データ。上田改)です。
環境
今回はLinuxで解答例を作りましたので、BSD系、Macな方は以下の表をご参考に・・・。
Mac,BSD系 | Linux |
---|---|
gdate | date |
gsed | sed |
tail -r | tac |
gtr | tr |
gfold | fold |
準備0
ログをとってきましょう。
wget http://file.ueda.tech/DATA_COLLECTION/danger_log.gz
$ wget http://file.ueda.tech/DATA_COLLECTION/access_log.nasa.gz $
準備1
danger_log.gzとaccess_log.nasa.gzについて、日付と時刻を次のように正規化しておきましょう。
###修正前###
ueda@tencore:~/tmp/nasa$ zcat access_log.nasa.gz | head -n 1
199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
###修正後###
ueda@tencore:~/tmp/nasa$ cat access_log | head -n 1
19950701 000001 199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
準備2
NASAのログを各日付のファイルに分けておきましょう。ログはQ1で作ったものを使います。1,2行目の8桁日付、6桁時刻は残っていても構いません。
Q1
NASAのログについて、ステータスコードを抽出して、どのコードがいくつあるか数えてみましょう。
Q2
NASAのログについて、ファイルを開かずに、ログの多い日を探しだしてみましょう。
Q3
NASAのログについて、(Q3-1)ログの件数が一番多い曜日はどれでしょうか。(Q3-2)ログの件数が一番多い時間帯(時間帯というのは0時台、1時台、・・・、23時台のこと)はどれでしょうか。
Q3-2については高速な方法を考えてみてください。
Q4
ShellShockログ内にあるIPアドレス(IPv4)がすべて192.168.から始まることを確認して下さい。IPアドレスはレコードの先頭だけでなく、インジェクションするコードの中にもあるのでご注意ねがいます。
Q5
ShellShockログについて、レスポンスのデータ送信量が大きいものを、IPアドレスと共に上から10件を挙げてみましょう。
Q6
NASAのログについて、7月8月のうち、ゼロ件の日を列挙してみてください。
Q7
ShellShockのログから、(Q7-1)インジェクションが試みられたコード(「() { :;};」から後ろ)を抽出してみて傾向を話あってみましょう。(Q7-2)出来る人はエスケープも掃除してコードを復元してみましょう。(Q7-3)更にできる人は最後の行のコードを実行してみてください。このログはIPアドレスを変換しているので安全ですが、普通のログでやると死にますのでご注意を。