こんにちは、ぎんたです。
今回はTryHackMeで提供されている「Juicy Details」というルームの攻略の過程を記事にしています。
ルームはこちらからアクセスできます「Juicy DetailsのURL」。
このルームでは不正アクセスを受けたサーバのログ分析をとおして、ログ解析の基礎について学ぶことができます。
Linuxサーバのログ分析の基礎を知りたい方
が今回の対象です。
このルームも無料でアクセス可能なので、試してみたい方はぜひやってみてください。
スポンサーリンク
状況の紹介-Task1
Juice Shopのサイトが不正アクセスを受けたようです。
以下のことを確認してください。
- 攻撃者が使用したツールを明らかにする。
- どのパスに脆弱性があったのかを明らかにする。
- どの機密データが盗まれたか
サーバのログを含むZIPファイルを受取り、作業に取り掛かりましょう。
サーバのログには以下のログが含まれていました。
- access.log:Webサーバのアクセスログ
- vsftpd.log:FTPのログ
- auth.log:サーバの認証ログ
これらのログを各タスクで使用します。
偵察活動の痕跡調査-Task2
提供されたログを解析し、以下の項目を確認します。
- 攻撃者が使用したツール
- 攻撃者がどのパスを攻撃しようとしたか
- どのパスに脆弱性があったのか
Q.攻撃者はどのツールを使用しましたか?
一般的に使用されそうなツールの名前をaccess.logの中から探します。
調査したところ、以下のツールが使われていました。
nmap, hydra, sqlmap, curl, and feroxbuster
以下にsqlmapを使った痕跡を掲載します。
cat access.log
Q.ブルートフォース攻撃に対して脆弱だったパスはなんですか?
Hydraを使用した痕跡があったので、Grepでフィルタしてaccess.logを調査します。
cat access.log | grep -i hydra
「/rest/user/login」に対してブルートフォース攻撃をしているようです。
Q.SQLインジェクションの脆弱性があったのはどのパスですか?
sqlmapが使われていたので、Grepでフィルタしてaccess.logを調査します。
cat access.log | grep -i sqlmap
/rest/products/searchに対するアクセスが多数あるようです。
このパスに脆弱性があったと判断しました。
Q.SQLインジェクションに使用されたパラメータは何ですか?
先ほどのコマンド結果から「?q=」と確認できます。
Q.攻撃者がファイルを取得するために使用しようとしたパスは何ですか(/を含む)?
取得したログの中にvsftpd.logがあります。
ファイルのダウンロードを示すログが無いかを探すため、vsftpd.logを調査します。
cat vsftpd.log
FTPを用いてダウンロードに成功しているログがありました。
access.logにも同ファイル名のログが記録されています(/ftp以下で確認)。
こちらはステータスコード403エラー(閲覧禁止)がでています。
/ftpが答えです。
情報流出の痕跡調査-Task3
調査項目は以下の事項です。
- 攻撃者のウェブサイト上での動き
- ステータスコード
- 異常なクエリ文字列
Q.攻撃者がユーザーの電子メールアドレスをスクレイピングするために使用したのは、ウェブサイトのどのセクションですか?
ヒントによると、「ショッピングサイトでお客様がコメントできる場所はどこですか」と記載がありました。
この情報を元にaccess.logを確認します。
cat access.log
「/rest/products/〇/reviews」へのアクセスが大量にありました。
商品レビューに記載されたメールアドレスを収集していたようです。
product reviewsという文字が見えたので、こちらが答えです。
Q.ブルートフォース攻撃は成功したのでしょうか?もしそうなら、ログインに成功したタイムスタンプは何ですか?
Hydraを使ってブルートフォース攻撃を行ったことがTask2から判明しています。
ログイン成功とのことなので、まずはステータスコード200でフィルタし、access.logを確認します。
cat access.log |grep -i hydra | grep 200
1件のみのようです。
レスポンスバイトもこのログのみ831となっているようで、他のログは記載なしか26となっています。
ログイン成功のログと判断していいでしょう。
タイムスタンプは「11/Apr/2021:09:16:31 +0000」です。
Q.SQLインジェクションに脆弱なパスから、攻撃者はどのようなユーザー情報を取得することができたのでしょうか?
Task2でSQLインジェクション攻撃を受けた場所は「/rest/products/search」と判明しています。
Grepで上記パスをフィルタしてaccess.logを確認します。
cat access.log | grep -i ‘/rest/products/search’ | grep 200
emailとpasswordの情報を収集しているのが分かりました。
今回のケースで攻撃成功のログってどう見分けるとかあるかい?
ステータスコード200だと成功とみなしていいかな
ステータスコード200でも成功しているとは限らないから、僕はこのケースの場合レスポンスバイトも併せて確認してみるかな。
他のsqlmapによる攻撃試行ログではレスポンスバイトで記載なしとか30(キャプチャ外のログです)とかになっていたけど、突然3742とバイト数が変化しているからデータが取得されているかもと考えてみるとかね。
ステータスコードとレスポンスサイズを見て総合的に判断するということね。
そういうこと。
ステータスコード200以外でも普段と異なるログになっている場合は注意が必要だから確認した方がいいよ。
Q.脆弱なパスからどのようなファイルをダウンロードしようとしたのでしょうか?
Task2で確認できています。
cat vsftpd.log
coupons_2013.md.bak, www-data.bakがありました。
Q.前問のファイルを取得するために使用したサービスとアカウント名は何ですか?
vsftpd.logから、サービスはftp, アカウント名はanonymousと判断し、回答したら正解でした。
FTPで匿名ログインを使って前問のファイルをダウンロードしていたことが分かります。
Q.サーバにシェルアクセスするために使用されたサービスとユーザー名は何ですか?
受領したログの中にauth.logがありました。
ぱっと見たところ、SSHの認証失敗のログが多数ありました。
SSHのログの中から「accept」という単語でフィルタして、認証に成功したログを調査します。
cat auth.log | grep accept
www-dataユーザーで認証に成功しているログがありました。
まとめ
今回はTryHackMeで提供されている「Juicy Details」というルームの攻略の過程を解説しました。
- FTPでの匿名ログインでファイルをダウンロードされた
- SSHでのブルートフォース攻撃で認証を突破された
- SQLインジェクション攻撃で脆弱なパスが発見され、個人情報が窃取された可能性が高い
この記事が少しでも役に立てれば幸いです。
以上、ぎんたでした。
サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。
学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。
資格の記事については以下の記事がおすすめです。
ITエンジニアへの転職については以下の記事がおすすめです。
その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。
ぜひご覧ください!