WordPressのアタックログを解析する~解析編~

以前WordPressのアタックログを解析する~構成編~でハックノートはWAFで不正アクセスなどの対策をしていると書きました。

今回はそのログの解析編です

まず、残念なことに以前作成したLambdaが動いてなかったです。
今はリモートワークのため、本番環境に入って原因を解明するのは諦め、ログをPythonで解析したいと思います。
完全にパワープレイです。

hacknote.jpのログはs3に保存してあったので、4月1日から4月23日までのログをダウンロードしました。
s3のファイルをフォルダごとダウンロードするやり方 => S3 フォルダごとダウンロード

ログは全部で約900MBくらいありました。
このログを解析するのはかなり時間がかかりそうです。

どうやったか

まずは私が持っているMacBook Air(2018)で試しました。
結果はダメでした。

試しに1時間分のログ(gz圧縮で2MB)を解析しましたが、一向に終わらず…
MacBook Airのファンが全力回転し始めたので、処理を中断しました。

続いて私の自宅のWindowsです。
自作パソコンでCPUはRyzen5 1600Xなのでそこそこの処理能力はあります。
1日分のログがgz圧縮で44MBあるファイルでした。
これを自分で作ったPythonのプログラムで解析したところ、5時間くらいかかる見込みになりました。

「とてもじゃないけど、無理やな」

どのようなアクセスがブロックされているかを知りたいのだから、別に全部解析しなくてもいいかとなりました。
ちゃんと動かすときには、Lambdaでやらないとダメということがわかりました。

どのようなアタックが来ていたか

少し長いので折りたたみます。
uriの部分は改変&省略しています。
あと3行分くらいuriは長かったです。

AWS WAFでのブロックで今回検知出来たものは、すべてPOSTメソッドでした。
普通にwebページにアクセスするときはPOSTではなくて、GETになるはずです。

ということは。なにかデータを送ろうとしていますね。

この/wp-json/wp/v2/postsが何なのかをしらべたところ、jsonが表示されました。
これはREST-APIというものを使用して、外部からWordPressを操作するためのAPIです。
このREST-APIについてIPAが脆弱性について公表しています。

WordPress の脆弱性対策について

WordPress 4.7.0 から WordPress 4.7.1 でREST API の処理に起因する脆弱性が存在します。

古いバージョンのWordPressでの脆弱性のようです。
調べたところ、かなり有名な脆弱性らしく、現在は対策されています。

おわりに

今回はAWS WAFでブロックされたものを解析しました。
今回解析出来たものはすべてREST-APIの脆弱性を狙ったアタックでしたが、少なくとも1日1回くらいはCloudWatchでブロックアラートがなるので他の種類のアタックが来てることも考えられます。

解析するにあたってログを見ていたところ、アメリカやロシアからのアクセスがたまに来ていたんですよね。
GETなので普通に閲覧する意味でアクセスしてくれていると、ありがたいです。
私もやりますが、エラーや仕様などを確認するときに、英語圏のページのに飛ぶことがあります。

セキュリティと使いやすさはどちらかに特化させると、どちらかはおろそかになります。
今回のアタックはすべて外国からのアクセスなので、不正アクセスが怖いからといって、公開範囲を日本限定にするというのは賢い判断とは言えません。
WAFの導入などでブロックするものはブロックして、不正アクセスなどに対応する必要がありますね。