honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

ATOM Cam解析準備

※こちらは初代ATOM Camに関する記事になります。
技術的に共通する部分も多いですが、ATOM Cam2に関する記事は
↓こちらに記載していますのでこちらもどうぞ

 

 

 

---------------------------- 

激安防犯カメラ「ATOM Cam」

一部界隈で話題になった、クラウドファンディング形式で発売することが報じられ、一時期は達成は全然無理かと思われた「ATOM Cam」ですが

 

internet.watch.impress.co.jp

 

最終的には十分な投資を集めて無事発売、にこぎつけたようです。

そして、こちらの製品をリターンとして受け取りました。

 

Image

なんとマスクがおまけでついていました!

 

なんで安いの?セキュリティは?

防犯カメラとしてはかなり安価に設定されているため、当然一から自社開発しているとは考えにくいです。そのため、どこかのメーカのOEM製品に、自社開発のアプリを乗せたものとして発売されると予想していました
(し、そのように商品ページにも掲載されていました)

 

 

 この「Atom Cam」の売りとしては、自社・国内生産によるアプリ・自社サーバを利用した安全性のようです。実際に投資した人のコメントを見ると「中国製のは信用ならん」とか「国内ソフトなら安心」とかいうのがたくさんありました。

 

 …このご時世、別に国内だから、中国だから安心・危険、っていうことはないです。
それぞれの単体製品ごとにセキュリティホールがあったり、バックドアがあったり、ポンコツだったりして安全・危険が決まるわけです。
国内メーカがやったからって、安全になるわけではありません。

 

で、どこのOEMだった?

さて、Amazonやらなにやらの画像検索を駆使し、発表直後にOEM元として想定していたカメラ「Wyzecam v2」の外観がこちらです。

Wyze Cam | 1080p HD Smart Home Camera With Free AWS Cloud

 

まんまやんけ。

それならば事前にこいつを買ってしまえ、と米アマゾンでポチって見たのですが、
うっかりクレカの設定をミスってキャンセルされていましたw

 

あーあ、と思っていた先日、公式のアナウンスで内部基板が変更になったということが報告されました。

 

なんと、ここにきて基板変更??
よくよく見てみると、CPUの変更や小物変更というレベルではなく、
まったく別の基盤になっているという状態です。
これは、OEM元の製品が切り替わった、ということでしょう。
しかし、基板に記載されているロット日付は2020。
すでに出来合いの大量生産品ではない可能性があります。
これはどういうことでしょう。

さらに調べていくと、「iSC5C1」という文字列を見つけました。
どうやらこの文字列、先ほどのWyzeCamのさらにOEM元、
iSecurityなんとかいう会社で製造しているiCameraベースの製品コードのようです。
しかし、WyzeCamの新製品が出ているという様子はありません。

さらに調べていくと、Xiaomiからも似たようなカメラが出ていることがわかりました。

kazuhiro-geek.com

 

このように、何種類かのカメラがこのiSC5Cベースの製品として製造されています。
その中で、今回ATOM Camが採用した2020-02-26ロットの製品は、おそらく最新版で
まだほかのメーカから発売されていないように見えます。

とりあえず分解しよう

せっかくなのでちゃんとした分解写真を載せたいところですが、
もうすでに何人か分解されているようなので、ここではリンク先をご覧いただくことでお茶を濁してみたいと思います。
うちでは、うちでしかわからないことを調べます。

 

まず、シリアルコンソールを接続します。

ずらずらとブートログが現れます。
そして、ログインプロンプトが表れますが、パスワードがわかりません。
製品をそのままにしてハッキングを頑張る方法もありますが、
ここではあっさりとシステムの入っているFlashを取り外し、
ROMリーダで吸い出してしまい、Linuxファイルシステムとして中身を覗いてみます。
このような方法は、機器が実際に手元にある時には非常に手っ取り早いです。

Image

搭載されているのは128Mbit(16MByte)のフラッシュです。

吸い出したイメージは16MBになります。

これをLiunxマシンにもっていって、とりあえずbinwalk -eします。

f:id:honeylab:20200501113203p:plain



すると、フラッシュ内に含まれたsquashfs内のrootファイルシステムがファイルとして抽出されます。

/etc/passwdを見てみると、root:x: ですので、shadowを見てみます。

 

f:id:honeylab:20200501113258p:plain

 

f:id:honeylab:20200501113414p:plain

ありました。
最近いじったshadowパスワードは、新しい形式である$1$などで始まるものだったので知らなかったのですが、この形式のものは非常に古いとされるDESアルゴリズムによるもので、現在はあまり使われない形式らしいです。

 

さて、このパスワード文字列をhashcatという解析ツールに食わせます。

 

f:id:honeylab:20200501092426p:plain

約20分ほどでパスワードが解析できました。

このパスワードを使うと、このカメラのシリアルコンソールに直にログインできます。

 

f:id:honeylab:20200501092643p:plain

netstatを見てみます。
アプリの実行中は、ローカルホスト内でプロセス内通信をしているものと、
おそらくカメラサーバと思われるamazon awsサーバへの通信が確立しているだけで
不用意にtelnetポートが開いて居たりはしません。

f:id:honeylab:20200501105321p:plain

この状態であれば、いきなりカメラ映像をのぞき込まれたりはしなそうです。
このあたりについて、これから追って解析していきたいと思います。

いよいよ楽しいOSSの時間です

例によって、このカメラはLinuxベースの製品ですから、当然Linuxソースコードが存在し、GPLに従って要請に基づき提供される必要があります。

もし、この製品のLinuxの部分が完全にwyzecamなどと同じであれば、それと寸分たがわぬものでしょうからリンクなどを示すことでもいいかもしれません。
しかし、新しいハードウェアを使用していますし、全く同じということではなさそうです。また、u-bootも同様にGPLと思われます。

ブートログを見る限り、ファームウェア更新の仕組みなど多くの手が入っていますから、これも同様に提供される必要があります。

Linuxのバージョン表記は

Linux version 3.10.14__isvp_swan_1.0__ (xuxuequan@ubuntu) (gcc version 4.7.2 (In
genic r2.3.3 2016.12) ) #17 PREEMPT Mon Dec 23 09:43:27 CST 2019」

となっています。

u-bootのビルド情報は

「U-Boot 2013.07 (Mar 04 2020 - 15:05:06) Board: ISVP (Ingenic XBurst T31 SoC)」

です。

 

ドン・キホーテの「スマモッチャー」では、アプリ本体のバイナリにGPLソフトがスタティックリンクされているように見えながら、ソースコードを公開しないなどアレげなところもありましたが、本品の類似製品ではわりとライブラリ周りが整理されていたので、本品にはそういう部分は無いのかもしれません。

ソースコードの提供は、Webサイトなどでユーザがダウンロードできる形式にする、などの方法がありますが、今のところ、発売元のWebサイトには無いようです。
後ほど、提供方法についてお問い合わせフォームから問い合わせてみたいと思います。

尚、この情勢で発送が遅れたり、発送業者が変わったりしてすったもんだして大変そうなので、ちょっとぐらいは待ちますw(が、本当は本体提供と同時なのよ…?)

 

アプリの安全性は?

先述したように、例えば国産だから安心、とかそういうことはもはやありません。
ちなみに、アプリ自体の根幹部分などはほぼ全部チップ・ハードウェアメーカ及びOEM生産元から提供を受けているものでしょうから、純国産ソフトはあり得ません。
実際には、サーバの設定やローカライズだけをやっているものと考えられます。
通信自体はきちんとSSLですし、カメラ自体の認証も行っているように見えるので、
全然知らないユーザに覗き見られることはなさそうです。
映像送受信の仕組み自体はもともとの生産元と思われる「hualai」のサーバアプリの仕様に基づいているようです。
スマモッチャーではそのOEM元の提供するycc365のようなアプリから相互接続できるような、ある意味便利な機能がありましたが、ATOM Camでは 販売元のサーバによるカメラ認証を行っているため、そのようなことはなさそうです。
デバッグ出力に、[curlpost:152]dbg: (curl_post) url:[https://api.atomtech.co.jp:443/device/v1/p2p
id/get] のように、メーカのAPIサーバと通信している部分が見つかります。)

 

さて、とりあえずなんとなく解析の準備が整いました。
ところどころ、いじれそうなところがあるのでこれから試してみたいと思います。

あ、というわけでソースコード請求しなきゃ