ネットワークカメラについて調査した
今、ニュースでは全世界にあるネットワークカメラ(IP camara)の一部が閲覧可能になり話題となっている。
なぜ、全世界のカメラは閲覧可能な状態になっているのか?
どのようにネットワークカメラを探索しているのか自分なりに調査してみた。
●前提として、ネットワークカメラはインターネットに繋ぎ、遠隔から閲覧・監視するという用途で使う人がほとんどである。
同時にインターネットに繋ぐということは、他のインターネットに繋いだ誰でもデバイスから閲覧可能の状態になることを表している。(※全部にあてはまらない)
外部に公開する必要がない場合は、クローズドなネットワークにカメラを収容し、外部からのアクセスをさせないことが大切である。
現在流出(?)しているネットワークカメラのほとんどがパスワードなしに閲覧できる状態になっている。
-このような状態を回避する一番簡単な対策はパスワードを付けることである。これを怠ると誰でもカメラを閲覧できる状態になってしまうので注意が必要である。その他、アクセス制御や認証機能を追加する方法もある。
●ネットワークカメラを閲覧・探索できる理由
カメラが特定される理由は主に2つあると考えた。
内容は極めて単純なものである。
①グローバルアドレスで80番ポートとしてカメラを公開している
これはIPアドレスを総当り攻撃することで特定が可能になる
②メーカ毎にカメラにアクセスできるURL(パス)とポート番号がだいたい決まっている
メーカのホームページではネットワークカメラで開放するポート番号を掲載しているケースが多数見受けられた。
また、製品ごとにアクセスできるURLがまとまったサイトも発見できた(以下のページ)。
これらより、以下のことが推測できる。
P社の場合
・URL1:「http ://<IPアドレス>:ポート番号/cgi-bin/camera」
・URL2:「http ://<IPアドレス>:ポート番号/SnapshotJPEG?Resolution=640x480&Quality=Clarity」
よく使用されるポート:80,81,82,6001,6002,6003,8001,8080,50000,50001,60001
S社の場合
・URL:「http ://<IPアドレス>:ポート番号/oneshotimage」
A社の場合
・URL:「http ://<IPアドレス>:ポート番号/mjpg/video.mjpg」
①IPアドレス、②ポート番号、③パスがマッチングすればカメラの探索が可能になる。
例えば存在するIPアドレスを探索した後、そのIPアドレスとURLのパスを固定にし、ポート番号だけを変化させていく。その際、URLの存在チェックを行いマッチングしたものがネットワークカメラへのアクセスURLであると分かる。
これはPHPを使っても実装が出来る。
(※悪用厳禁)
LAN上にカメラがあってもグローバルにカメラが見えているのは、UPnP(NATトラバーサル)が動作しているとからだと考えられる。
ITレポート(動向/解説) - NATトラバーサル---端末を識別可能にする「NAT越え」、実現手法は用途によりまちまち(上):ITpro
その他分かったこと
NASでも似たような現象が起こっている
ネットワークカメラの探索モジュールは結構出回っているらしい。
そもそも何年も前からこのような問題が起きている。
おわりに
ネットワークカメラがどのように探索されているかについて調査をし報告した。カメラが誰にでも見えるようになっているのはパスワードやセキュリティ対策をせず、初期設定のまま運用しているからだと考えられる。
これらはカメラを設置する本人の知識不足に起因する問題である。
Insecamを見ると、日本で閲覧可能なカメラ台数が多いことから、セキュリティ意識が低いのか、単にカメラ台数が多いのかが不思議な感覚になった。