Hacking Robotics

35
ロボットのハッキング 出村 賢聖 @ken_demu

Transcript of Hacking Robotics

Page 1: Hacking Robotics

ロボットのハッキング

出村 賢聖 @ken_demu

Page 2: Hacking Robotics

高校2年生です。

生活支援ロボットの研究開発を行っています。

Page 3: Hacking Robotics

NII (国立情報学研究所)SIGVerse Project Developer

Page 4: Hacking Robotics

D.K.T.というロボット教育団体の代表

を務めています。

Page 5: Hacking Robotics

背景

セキュリティキャンプ 2014全国大会

● Raspberry piの IDS

https://github.com/kendemu/embeddids● 家具インジェクションファービーちゃん、 Roombaのハッキング

Page 6: Hacking Robotics

世界で最も人気のオープンソース

ロボットミドルウェア /OS

Page 7: Hacking Robotics

Robot Operating Systemの特徴

・可視化ツール・メッセージ送信( IPC)・豊富なパッケージ・並列プログラミング / クラスタリング・画像 /PointCloud処理・ロボットモデリング / シミュレーション・クロスプラットフォーム・動作計画 /ナビゲーション・ P2P通信アーキテクチャによる プログラミングの拡張性 .etc

Page 8: Hacking Robotics

疑問

ROSはセキュアなのか

Page 9: Hacking Robotics

ROS Technical Overview

・メッセージ送信はメッセージ型が簡単に 指定できる XML-RPC(HTTPベース )

・普段は TCP上を流れる、設定すれば UDPも・プロセスのネームシステムであるMasterが サービスクライアントの管理を行う http://wiki.ros.org/ROS/Technical%20Overview

Page 10: Hacking Robotics

1.サービスがMasterに Nameを登録する2.サービスがMasterに他のサービスを問い合わせる3. サービスが他のサービスとの TCP/IP通信を確立する4.サービスと他のサービスが通信ヘッダを交換する5. サービスがシリアル化されたメッセージを要求する6. 他のサービスがシリアル化されたメッセージで応答する

Node(プロセス /サービス )の通信

Page 11: Hacking Robotics

通信暗号化については?

資料見当たらず

Page 12: Hacking Robotics

実験:パケットキャプチャしてみた

Page 13: Hacking Robotics

協力

ロボットのセキュリティについて一緒に実験をしてく れた じとめすきー 氏

ありがとうございます!

Page 14: Hacking Robotics

背景Intel Edisonに Debian入れて config弄ったら壊れた (Intelつくば本社で壊してひんしゅく )

Page 15: Hacking Robotics

ネタになりました

Page 16: Hacking Robotics

テスト環境Gazebo Simulator with Turtlebot

http://qiita.com/kendemu/items/f915c7c2498b04e097cc

Page 17: Hacking Robotics

Nodeのネットワーク図

Page 18: Hacking Robotics

結果:XML-RPCが生で流れていた

Page 19: Hacking Robotics

ROSの通信の I/O Graph(赤)

Page 20: Hacking Robotics

ROSの XML-RPCパケットの長さ

Page 21: Hacking Robotics

テスト環境2 :Roomba

Page 22: Hacking Robotics

Nodeのネットワーク図

Page 23: Hacking Robotics

Follow TCP Stream

Page 24: Hacking Robotics

モータ制御命令が丸見え

Page 25: Hacking Robotics

何が可能か /まずいか1. パケット改ざんで遠隔操作が可能

2. パケットの改ざん方法

  TCPスプーフィングを行う

3. 最近のロボットはクラウドAI/アプリ連携等

 インターネットにつながるものが多い→

 ネットワークセキュリティが弱いことは現代のロボット

 では致命的な問題

Page 26: Hacking Robotics

解決策SSH,IPSec,SLL/TLSで暗号化

問題:ロボットの制御には遅い

→高速暗号化プロトコルが必要

※ IPSecや VPNでは生パケットに比べ 6倍以上の

速度差がある

http://d.hatena.ne.jp/nori_no/20100919/1284875253

※ROSの XML-RPCパケット長は計測結果

400~600バイトくらい (496±99.8バイト ) 

Page 27: Hacking Robotics

結論

ROS自体のセキュリティは弱い

Page 28: Hacking Robotics

付録: Pepperの ReverseEngineering(合法(草) )

Page 29: Hacking Robotics

Pepperをクロス開発でなく

本機でソフトウエア開発したい

通常だとこの GUIプログラミングソフトだけ

※ Pepperには NaoqiOSという

独自 LinuxOSが入っています

Page 30: Hacking Robotics

Nmapepper:Pepperポートスキャン

ftp, ssh, http, teradataordbms, hydap

サービスがポートオープン

Page 31: Hacking Robotics

SSHが遅い ......と思っていると

MicroUSBと Ethernetを発見!

Page 32: Hacking Robotics

MicroUSBを Pepperに繋ごう!

Page 33: Hacking Robotics

ttyで Pepperにログイン

gcc/g++, openni,opencv,gdb,wget,pulseaudio入っている

X環境 ,パッケージマネージャーはありません

Page 34: Hacking Robotics

擬似パッケージマネージャー:Pepperに gitを入れよう

Make入っていなかったのでビルドできず泣

Page 35: Hacking Robotics

まとめPepperは多分本機でソフトウエア開発可能Pepperは改造しやすい→パワフルなロボットになる