ウェブサービスへの総当たり攻撃が身近で発生したので、サーバのログから不正アクセスの有無を調べる方法をまとめてみる。
ログ
アクセス解析に役立つログやツールには以下のようなものがある。
- Webサーバのアクセスログ・SSLアクセスログ
- DBのクエリログ
- アクセス解析ツール
この他にも、ソフトウェアからログを書き出すようにしていた場合や、KPIなどを集計していれば、そちらも参考にすることができる。
手順
今回は以下の手順に沿って、不正アクセスをログから見つけ出す。
- 不正アクセスの兆候を見つける
- 攻撃を受けている時間帯を絞る
- 不正アクセスが「成功」しているログを探す
- 不正アクセス時に発行されたSQLを調べる
以下より、手順ごとに説明する。
不正アクセスの兆候を見つける
不正アクセスが行われる際には、よく総当たり攻撃が行われる。アクセス解析ツールを導入している場合は、1日のアクセス数をまとめたグラフを見ることで、不正アクセスの兆候を発見することができる。グラフからは1日のページビュー数が急増していることが分かるので、総当たり攻撃が行われたかどうか、という判断の目安にすることができる。例えば、1日の平均ページビュー数が1万回のウェブサイトが、平常時に1日100万ページビューされていたとしたら総当たり攻撃が行われたと見るべきだろう。
攻撃を受けている時間帯を絞る
総当たり攻撃は攻撃用のプログラムによって行われ、攻撃用のプログラムが動いている時間に集中してアクセスが行われる。この時の特徴として、アクセスが繰り返される時間間隔が非常に短いことが挙げられる。Webサーバのアクセスログには、アクセスが行われた時間も記録されるので、特に集中してアクセスが行われている時間帯をある程度絞り込むことができる。
不正アクセスが「成功」しているログを探す
絞り込んだ、総当たり攻撃が行われた時間帯の中で、不正アクセスが「成功」しているログを探す。この「成功」の定義はウェブサービスごとに異なるので、一概には言えない。
ただ、総当たり攻撃では、とにかくアクセス失敗のログが多く記録されることが特徴なので、その中で数少ない、アクセスが「成功」しているログを探すにはエディタなどで文字列検索を行う必要があるだろう。
不正アクセス時に発行されたSQLを調べる
不正アクセスが「成功」しているログを発見したら、不正アクセスが「成功」している時間を見る。そこから同時間のDBのクエリログを確認する。DBのクエリログから攻撃者が不正アクセス時にアカウントに対してどのような重要操作を行ったかを調べることができる。
参考
上司との情報共有