【問題のみ】第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年以上前のものです。

解答はコチラ

始める前に

イントロのスライド

20150418 第16回シェル芸勉強会スライド from Ryuichi Ueda

使用するログ

/?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アドレスを変換しているので安全ですが、普通のログでやると死にますのでご注意を。

ノート   このエントリーをはてなブックマークに追加 
 

prev:日記(シェルプログラミング実用テクニックの表紙、SoftwareDesign寄稿) next:【問題と解答例】第16回春だからログ解析するぞシェル芸勉強会

やり散らかし一覧

記事いろいろ