政府のIoT機器侵入調査「NOTICE」をハニーポットで捕捉してみた

総務省と国立研究開発法人情報通信研究機構(NICT)が、2019年2月からNOTICE(National Operation Towards IoT Clean Environment)という取り組みを実施しています。
日本国内にあるIoT機器を対象に、脆弱なパスワードが設定されていないか調査をして、問題があれば利用者に注意喚起をするというものです。

NOTICEのアクセスが自宅にも来たので、どんなアクセスをしてきたのかログを調べてみました。

目次

NOTICEとは?

NOTICEは、総務省と情報通信研究機構(NICT)が実施している取り組みです。
国内のIoT機器に対して、脆弱なIDとパスワード(password、123456など)の組み合わせ約100種類を用いてログインを仕掛けて、もしログインできてしまったらプロバイダ経由で利用者に注意喚起するというものです。

実際には、国内全てのグローバルIPアドレス約2億件に対して、TCP22、23ポートあたりを狙って、総当たりでログイン試行するようです。
アクセス元となるNICTのIPアドレスが公開されているため、ログを見れば、この取り組みによるアクセスかどうか確認ができます。

参考:
IoT機器調査及び利用者への注意喚起の取組「NOTICE」の実施(総務省)
IoT機器調査及び利用者への注意喚起の取組「NOTICE」で使用するIPアドレスについて(NICT)

特定アクセス行為

政府による不正アクセスじゃないか!という声もあるかもしれませんが、実は2018年に施行された「電気通信事業法及び国立研究開発法人情報通信研究機構法の一部を改正する法律」に定められた、NICTの正式な業務であり、合法になります。

法律で「特定アクセス行為」というものが定められており、不正アクセスの例外という扱いのようです。

国立研究開発法人情報通信研究機構法
附則第八条
2 機構は、第十四条及び前項に規定する業務のほか、平成三十六年三月三十一日までの間、次に掲げる業務を行う。
一 特定アクセス行為を行い、通信履歴等の電磁的記録を作成すること。
二 特定アクセス行為に係る電気通信の送信先の電気通信設備が次のイ又はロに掲げる者の電気通信設備であるときは、当該イ又はロに定める者に対し、通信履歴等の電磁的記録を証拠として当該電気通信設備又は当該電気通信設備に電気通信回線を介して接続された他の電気通信設備を送信先又は送信元とする送信型対電気通信設備サイバー攻撃のおそれへの対処を求める通知を行うこと。

4 この条(第一項及び次項から第七項までを除く。)において、次の各号に掲げる用語の意義は、それぞれ当該各号に定めるところによる。
一 特定アクセス行為 機構の端末設備又は自営電気通信設備を送信元とし、アクセス制御機能を有する特定電子計算機である電気通信設備又は当該電気通信設備に電気通信回線を介して接続された他の電気通信設備を送信先とする電気通信の送信を行う行為であって、当該アクセス制御機能を有する特定電子計算機である電気通信設備に電気通信回線を通じて当該アクセス制御機能に係る他人の識別符号(当該識別符号について電気通信事業法第五十二条第一項又は第七十条第一項第一号の規定により認可を受けた技術的条件において定めている基準を勘案して不正アクセス行為から防御するため必要な基準として総務省令で定める基準を満たさないものに限る。)を入力して当該電気通信設備を作動させ、当該アクセス制御機能により制限されている当該電気通信設備又は当該電気通信設備に電気通信回線を介して接続された他の電気通信設備の特定利用をし得る状態にさせる行為をいう。

アクセスに気付くためのログ監視

過去に前例のないことが全国規模で行われる訳なので、ブログのネタになりそうセキュリティエンジニアとして、全貌を理解しておかなければ!ということで、さっそく準備です。

ずっとログを見ているわけにもいかないので、自動でログ監視を行い、NICTからアクセスが来たらアラートを出すようにします。
もともとZabbixで監視環境を作っていたので、自宅FWのアクセスログをsyslogサーバ経由で読み込み、NICTのIPアドレスが引っかかったら検知するようにしました。

そして3月13日夕方に、ついにアクセスを検知!
スマホのSlackアプリに、通知が届きました。

以下のメッセージを検知しました。
発生日時 2019.03.13 18:19:40
ホスト: aiyabushi-log01
検知内容: ログ[sansagari01.log] NICTからのアクセス検知
深刻度: Information
アイテム名: ログ[/var/log/syslog/firewall/sansagari01/sansagari01.log]

アクセスしてきた内容

帰宅後、さっそくアクセスログを確認。

18:09~18:17にかけて1分間隔で、TCP22番ポートに対するアクセスを9件検知していました。

具体的なアクセス内容を確認するため、ハニーポットサーバのcowrieのログを確認します。
(ハニポサーバは国際標準時の設定なので、9時間ずれています)

[root@biologicalamount:/data/cowrie/log]# cat cowrie.json | egrep "(153\.231\.215\.1[1-4]|153\.231\.216\.179|153\.231\.216\.18[0-2]|153\.231\.216\.18[7-9]|153\.231\.216\.190|153\.231\.216\.219|153\.231\.216\.22[0-2])"
{"eventid": "cowrie.session.connect", "src_ip": "153.231.215.13", "src_port": 47286, "timestamp": "2019-03-13T09:09:22.590887Z", "message": "New connection: 153.231.215.13:47286 (172.29.0.2:22) [session: a020e68d6fe7]", "dst_ip": "172.29.0.2", "system": "cowrie.ssh.factory.CowrieSSHFactory", "protocol": "ssh", "isError": 0, "session": "a020e68d6fe7", "dst_port": 22, "sensor": "4ee2d0f61953"}
{"macCS": ["hmac-sha1", "hmac-sha1-96", "hmac-md5", "hmac-md5-96", "hmac-ripemd160", "hmac-ripemd160@openssh.com"], "session": "a020e68d6fe7", "kexAlgs": ["diffie-hellman-group14-sha1", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group1-sha1"], "message": "Remote SSH version: SSH-2.0-libssh2_1.4.3", "system": "HoneyPotSSHTransport,1469,153.231.215.13", "src_ip": "153.231.215.13", "version": "SSH-2.0-libssh2_1.4.3", "sensor": "4ee2d0f61953", "eventid": "cowrie.client.version", "timestamp": "2019-03-13T09:09:22.628323Z", "keyAlgs": ["ssh-rsa", "ssh-dss"], "isError": 0, "compCS": ["none"], "encCS": ["aes128-ctr", "aes192-ctr", "aes256-ctr", "aes256-cbc", "rijndael-cbc@lysator.liu.se", "aes192-cbc", "aes128-cbc", "blowfish-cbc", "arcfour128", "arcfour", "cast128-cbc", "3des-cbc"]}
{"eventid": "cowrie.login.failed", "username": "root", "timestamp": "2019-03-13T09:09:22.948849Z", "message": "login attempt [root/xc3511] failed", "system": "SSHService 'ssh-userauth' on HoneyPotSSHTransport,1469,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "session": "a020e68d6fe7", "password": "xc3511", "sensor": "4ee2d0f61953"}
{"eventid": "cowrie.session.closed", "timestamp": "2019-03-13T09:09:23.995059Z", "message": "Connection lost after 1 seconds", "system": "HoneyPotSSHTransport,1469,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "duration": 1.4031720161437988, "session": "a020e68d6fe7", "sensor": "4ee2d0f61953"}
{"eventid": "cowrie.session.connect", "src_ip": "153.231.215.13", "src_port": 47510, "timestamp": "2019-03-13T09:10:24.133492Z", "message": "New connection: 153.231.215.13:47510 (172.29.0.2:22) [session: 3ae14ca22d67]", "dst_ip": "172.29.0.2", "system": "cowrie.ssh.factory.CowrieSSHFactory", "protocol": "ssh", "isError": 0, "session": "3ae14ca22d67", "dst_port": 22, "sensor": "4ee2d0f61953"}
{"macCS": ["hmac-sha1", "hmac-sha1-96", "hmac-md5", "hmac-md5-96", "hmac-ripemd160", "hmac-ripemd160@openssh.com"], "session": "3ae14ca22d67", "kexAlgs": ["diffie-hellman-group14-sha1", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group1-sha1"], "message": "Remote SSH version: SSH-2.0-libssh2_1.4.3", "system": "HoneyPotSSHTransport,1473,153.231.215.13", "src_ip": "153.231.215.13", "version": "SSH-2.0-libssh2_1.4.3", "sensor": "4ee2d0f61953", "eventid": "cowrie.client.version", "timestamp": "2019-03-13T09:10:24.183258Z", "keyAlgs": ["ssh-rsa", "ssh-dss"], "isError": 0, "compCS": ["none"], "encCS": ["aes128-ctr", "aes192-ctr", "aes256-ctr", "aes256-cbc", "rijndael-cbc@lysator.liu.se", "aes192-cbc", "aes128-cbc", "blowfish-cbc", "arcfour128", "arcfour", "cast128-cbc", "3des-cbc"]}
{"eventid": "cowrie.login.success", "username": "root", "timestamp": "2019-03-13T09:10:24.485131Z", "message": "login attempt [root/vizxv] succeeded", "system": "SSHService 'ssh-userauth' on HoneyPotSSHTransport,1473,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "session": "3ae14ca22d67", "password": "vizxv", "sensor": "4ee2d0f61953"}
{"eventid": "cowrie.log.open", "ttylog": "log/tty/20190313-091024-3ae14ca22d67-0i.log", "timestamp": "2019-03-13T09:10:24.905866Z", "message": "Opening TTY Log: log/tty/20190313-091024-3ae14ca22d67-0i.log", "system": "SSHChannel session (0) on SSHService 'ssh-connection' on HoneyPotSSHTransport,1473,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "session": "3ae14ca22d67", "sensor": "4ee2d0f61953"}
{"eventid": "cowrie.session.params", "timestamp": "2019-03-13T09:10:24.913387Z", "sensor": "4ee2d0f61953", "system": "SSHChannel session (0) on SSHService 'ssh-connection' on HoneyPotSSHTransport,1473,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "session": "3ae14ca22d67", "arch": "linux-x64-lsb", "message": []}
{"eventid": "cowrie.command.input", "timestamp": "2019-03-13T09:10:24.967074Z", "message": "CMD: echo foo", "system": "SSHChannel session (0) on SSHService 'ssh-connection' on HoneyPotSSHTransport,1473,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "session": "3ae14ca22d67", "input": "echo foo", "sensor": "4ee2d0f61953"}
{"eventid": "cowrie.log.closed", "timestamp": "2019-03-13T09:10:25.014073Z", "message": "Closing TTY Log: log/tty/20190313-091024-3ae14ca22d67-0i.log after 0 seconds", "ttylog": "log/tty/20190313-091024-3ae14ca22d67-0i.log", "system": "SSHChannel session (0) on SSHService 'ssh-connection' on HoneyPotSSHTransport,1473,153.231.215.13", "src_ip": "153.231.215.13", "session": "3ae14ca22d67", "duration": 0.10831880569458008, "sensor": "4ee2d0f61953", "isError": 0, "size": 342}
{"eventid": "cowrie.session.closed", "timestamp": "2019-03-13T09:10:25.113628Z", "message": "Connection lost after 0 seconds", "system": "HoneyPotSSHTransport,1473,153.231.215.13", "isError": 0, "src_ip": "153.231.215.13", "duration": 0.9793009757995605, "session": "3ae14ca22d67", "sensor": "4ee2d0f61953"}

~以下略~

SSHに対するログイン失敗、成功両方のログが、複数件出ていました。

ざっと調べたところ、以下のようなID、パスワードでログイン試行しているようです。

ID:root、admin
パスワード:admin、default、888888、123456、その他ランダムな英数字が数種類

【2019年3月14日追記】
翌日、9時から11時まで連続して、同様のアクセスを1分間隔で検知しました。
予告されている通り、約100件のID/パスワードの組み合わせを試行したものでした。
最初に数種類を試す→引っかかったら、約100件の組み合わせをがっつり試す、という流れのようです。

 

また、ログイン後の挙動を見るため、ttyログを見たら、こんな感じでした。

[root@biologicalamount:/data/cowrie/log/tty]# /opt/cowrie/bin/playlog 20190313-091125-35afee883b8b5-0i.log

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@ubuntu:~# echo foo
foo
root@ubuntu:~#

echo fooコマンドを実行して、値が返るか調べているようです。

まとめ

報道では、ログインできるか確認したら、そのまま立ち去るという話でした。
実際にはechoコマンドの実行までやっていたので、想定よりも少し踏み込んできたかなという印象です。

これを機に、脆弱なIoT機器が世の中から減ってくれたらうれしいですね。

コメントを残す

メールアドレスが公開されることはありません。

関連記事