SlideShare a Scribd company logo
1 of 35
Download to read offline
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 1
M2M ネットワークのための
脆弱性診断システムの試作
ETNET2015(2015/3/5-6)
  からぼ
渥美 清隆
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 2
お願い
● スライドはSlideShareで公開します.
●
本発表の脆弱性診断システムのエンジン部分は
https://github.com/kalab1998e/ka-mitm
で公開されています.(まだαバージョン)
●
口頭で説明した内容については機微な情報も含ま
れるため,不要な口外をご遠慮願います.
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 3
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 4
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 5
プロジェクト概要
● 経済産業省の補助金による,1大学,2社による1年
間の共同プロジェクト
●
ある会社の製造デバイスを念頭に,様々なデバイス
に応用可能な脆弱性診断システムの開発
●
脆弱性診断エンジンにかかる部分はオープンソー
ス開発で合意
●
プロジェクト終了と共に雇用契約終了
●
現在は個人研究事業者
●
秘密保持契約により詳細は省略
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 6
M2Mネットワークの現在
● MCUの高性能化(ちょっと前のパソコン並み)
● USB, Ethernet, ZigBee, Bluetooth, Wifiなどの
ネットワーク到達性
●
ブラックボックス,グレーボックスなファームウェア,ソ
フトウェア
● M2Mネットワーク,機械同士が自動的にネットワー
クを構築,更新,拡張,回復
●
弱い相互認証
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 7
用語整理
●
統合テスト
– 全てのMCU(センサーユニット)の接続テスト
– 推移可能なあらゆる状況への推移テスト
– 仕様書の行間を含めた仕様書通りの動作をするかどうか
を調べる.
● 脆弱性テスト(可用性・完全性・機密性テスト)
– ノイズの混入,通信遮断
– 通信の耐タンパ性
– 悪意あるコードの注入
本研究は特に両者を区別しないこととする.
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 8
テストの課題
●
全ての状態推移を定義不可
●
推移可能数が多く網羅的テスト不可
●
実装の一部または全部がブラックボックス
●
単純な振る舞い模倣で再現しない問題
(Metasploitが使いづらい)
● Ethernet protocol外による外乱
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 9
今回の診断対象(外観)
Target1(host) Target2(device)
USB有線接続
外部
ネットワークへ
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 10
外部
ネットワークへ
今回の診断対象(ソフトウェア構造)
画像表示
AV管理
状態管理
など
管理アプリ
ナビアプリ
その他の
アプリ
Target1 Target2
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 11
今回の診断対象
● Target1, Target2はTCP/IP on USBで接続
● Target1, Target2の両方でサービス提供
● Target2のサービスの少なくとも1つはサービスポー
トが動的に変化
● TCP/IP以外のLayer1/2で並列に通信
● 全ての通信はTarget1の管理アプリが仲介
● 主にTarget2に対して脆弱性診断を実施
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 12
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 13
診断システム構成例1
(Metasploitなど)
画像表示
AV管理
状態管理
など
Target1 Target2
汎用脆弱性
スキャナ
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 14
診断システム構成例1の問題
● 脆弱性スキャナがTarget1(管理アプリ)を模倣不能
●
互いの状態に応じた適応が困難
●
予め決まった脆弱性診断だけがほとんど
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 15
外部
ネットワークへ
診断システム構成例2
(USBProxyなど)
画像表示
AV管理
状態管理
など
管理アプリ
ナビアプリ
その他の
アプリ
Target1 Target2
USB MitM
Controller
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 16
診断システム構成例2の問題
●
ソフトウェアによる中継
(30Mbps → 2Mbps)
● 多様なUSBコンフィグレーションへの追従困難
特にスマートフォンはUSBバスリセットで全く別のデ
バイスに変化
● USBのリセットなど電気的振る舞いまで模倣が必
要
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 17
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 18
外部
ネットワークへ
今回の診断システム構成
画像表示
AV管理
状態管理
など
管理アプリ
ナビアプリ
その他の
アプリ
Target1 Target2
ka-mitm
iptables
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 19
ka-mitmとiptables
● Target1とka-mitmはWifiにより接続
● ka-mitmは汎用Proxyのように振る舞い,データの
観察,変更が可能
● iptablesの設定を,特定portのみka-mitmが透過
Proxyとなるように設定
(機能的にはNAPTやWAFと似ている)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 20
ka-mitmの利点
●
通過するデータを入出力とするチューリングマシン
として振る舞える.
●
複数のプロトコルの複合的振舞にも適応できる.
●
観察だけなら簡単にできる.
● 転送速度が速い.(但しWifi実効性能1/4以下)
● M2Mの自動回復機能とMitM側の切断接続の繰り
返しにより,自動的に何度パラメータを変えて検査
できる.
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 21
ka-mitmの欠点
●
自由度が高すぎる.適切なシナリオの定義法がな
い.
● TCP/IPのみ.
● Target1にiptables相当を設定しなければならな
い.
● TCPだけのリセットではM2Mの回復機能が働かな
い場合がある.
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 22
動作の仕方
1. 事前にメタシナリオ等を定義する.
2. ka-mitmを通過させるようにした上で,検査対象の
検査機能を一通り実行し,キャプチャデータを得る.
3. メタシナリオとキャプチャデータから個別シナリオを
生成する.
4. 個別シナリオ数分だけ回線リセットを繰り返して,
検査を実施する.
5. 検査結果を得る.
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 23
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 24
シナリオの例1
[
{
"sort": ["VNC", "Handshake"],
"port": "/59[0-9][0-9]/",
"lead": [],
"trigger": ["to_client","/^RFB 003.00[3578]n$/"],
"injections": [ [["RFB 002.008n"], [""]],
[["RFB 003.001n"], [""]],
[["RFB 003.009n"], [""]],
[["RFB 004.008n"], [""]],
[["RFB 003.00800000...00000n"], [""]]],
"enable": true
},...
]
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 25
実行例1
(事前条件なし)
Server->Client: RFB003.008nRFB002.008n
(Clientからの応答なし)
(強制停止)
…
(事前条件なし)
Server->Client: RFB003.008nRFB003.008000000...000n
Client->Server: RFB003.008n
(以下,通常動作?)
(強制停止)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 26
シナリオの例2
{
"sort": ["VNC", "Handshake"],
"port": "/59[0-9][0-9]/",
"lead": [["to_client", "/^RFB 003.003n$/"]],
"trigger": ["to_server","/^RFB 003.003n$/"],
"injections": [ [["RFB 002.008n"], [""]],
[["RFB 003.001n"], [""]],
[["RFB 003.007n"], [""]],
[["RFB 003.008n"], [""]],
[["RFB 003.009n"], [""]],
[["RFB 004.008n"], [""]],
[["RFB 003.0030000000000000000000000000000...0n"], [""]]],
"enable": true
},
これは利用されない
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 27
シナリオの例3
{
"sort": ["VNC", "Handshake"],
"port": "/59[0-9][0-9]/",
"lead": [["to_client", "/^RFB 003.008n$/"]],
"trigger": ["to_server", "/^RFB 003.00[378]n$/"],
"injections": [ [["RFB 002.008n"], [""]],
[["RFB 003.001n"], [""]],
[["RFB 003.009n"], [""]],
[["RFB 004.008n"], [""]],
[["RFB 003.008000000000000000000000000...00000n"], [""]]],
"enable": true
},
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 28
実行例3
Server->Client: RFB003.008n
Client->Server: RFB003.008nRFB002.008n
(Serverからの応答なし)
(強制停止)
…
Server->Client: RFB003.008n
Client->Server: RFB003.008nRFB003.008000000...000n
(以下,通常動作?)
(強制停止)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 29
シナリオの例4
{
"sort": ["VNC", "Handshake"],
"port": "/59[0-9][0-9]/",
"lead": [["to_client", "/^RFB 003.00[78]n$/"],
["to_server", "/^RFB 003.00[78]n$/"]],
"trigger": ["to_server","/^[x01-x05].*$/"],
"injections": [[["x00","x00x00x00x01AAAAAAAAAAAAAAA...A"], [""]],
[["x05x00x01x02x05x06x0F"], [""]],
[["x01x00xFFxFFxFFxFFxFFxFFxFF...xFFxFF"],[""]]],
"enable": true
},
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 30
実行例4-1
server->client: RFB 003.008
client->server: RFB 003.008
server->client: ^A^A^M
client->server: x00
client->server:
x00x00x00x01AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
server->client: !not supported Authentication Type
(自動的に通信リセット)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 31
実行例4-1続き
server->client: RFB 003.008
client->server: RFB 003.008
server->client:
client->server:
server->client:
client->server:
server->client: � ��� TMDesktop
client->server: !������ �������
server->client: ����
client->server: ?
client->server: � �
server->client: enusenus � ��
client->server: enusenus {� �
(通常動作?)
(強制停止)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 32
実行例4-2
server->client: RFB 003.008
client->server: RFB 003.008
server->client:
client->server: x05x00x01x02x05x06x0F
server->client: !not supported Authentication Type
(自動通信リセット)
server->client: RFB 003.008
client->server: RFB 003.008
server->client:
client->server:
server->client:
client->server:
server->client: � ��� TMDesktop
(通常動作?)
(強制停止)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 33
実行例4-3
server->client: RFB 003.008
client->server: RFB 003.008
server->client:
client->server:
x01x00xFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFx
FFxFFxFFxFFxFFxFFxFFxFxFFxFFxFFxFFxFFxFFxFFxFFxFFx...
server->client:
server->client: !not supported Authentication Type
(通信自動リセット)
server->client: RFB 003.008
client->server: RFB 003.008
server->client:
client->server:
server->client:
(通常動作?)
(強制停止)
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 34
本日の発表内容
●
背景,課題
●
これまでの診断システムの構成
●
提案する提案システム
●
動作例
●
課題
ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 35
課題
●
シナリオ表現範囲の不足
●
複数プロトコルの連携に関するシナリオ記述方法
の検討
●
通信リセットの完全実行
● USB有線ケーブルへの直接介入
●
注入後応答の解析方法の確立
以下の場所にソフトウェアを公開しています.
https://github.com/kalab1998e/ka-mitm

More Related Content

Similar to Etnet2015.slide

脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)JPCERT Coordination Center
 
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1Masaya Aoyama
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要Yutaro Tamai
 
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンドここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンドVirtualTech Japan Inc.
 
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略EMC Japan
 
LTspiceを活用した昇圧回路のトポロジーシミュレーション
LTspiceを活用した昇圧回路のトポロジーシミュレーションLTspiceを活用した昇圧回路のトポロジーシミュレーション
LTspiceを活用した昇圧回路のトポロジーシミュレーションTsuyoshi Horigome
 
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語dell_japan_partner_se_team
 
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...Insight Technology, Inc.
 
20171219 量子コンピューターを支える物理学
20171219 量子コンピューターを支える物理学20171219 量子コンピューターを支える物理学
20171219 量子コンピューターを支える物理学Takayoshi Tanaka
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Weibo Corporation
 
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティングシスコシステムズ合同会社
 
もしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらもしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらTakuma Nakajima
 
Capture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ssCapture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ssMasahiro Fukuda
 
[Basic 2] 計算機の構成 / プログラム実行の仕組み
[Basic 2] 計算機の構成 / プログラム実行の仕組み[Basic 2] 計算機の構成 / プログラム実行の仕組み
[Basic 2] 計算機の構成 / プログラム実行の仕組みYuto Takei
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強Kiyoshi Ogawa
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CIkanabuchi
 
PSpiceを活用したハーフブリッジ回路シミュレーションの事例
PSpiceを活用したハーフブリッジ回路シミュレーションの事例PSpiceを活用したハーフブリッジ回路シミュレーションの事例
PSpiceを活用したハーフブリッジ回路シミュレーションの事例Tsuyoshi Horigome
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングShinya Takamaeda-Y
 
Interop2016-openstack-user-group-mizuno
Interop2016-openstack-user-group-mizunoInterop2016-openstack-user-group-mizuno
Interop2016-openstack-user-group-mizunoshintaro mizuno
 

Similar to Etnet2015.slide (20)

脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
 
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
 
180729 jtf open-audit
180729 jtf open-audit180729 jtf open-audit
180729 jtf open-audit
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要
 
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンドここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
 
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略
[OpenStack Days Tokyo 2015] Enterprise Elastic Cloudを実現するEMCのOpenStack戦略
 
LTspiceを活用した昇圧回路のトポロジーシミュレーション
LTspiceを活用した昇圧回路のトポロジーシミュレーションLTspiceを活用した昇圧回路のトポロジーシミュレーション
LTspiceを活用した昇圧回路のトポロジーシミュレーション
 
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語
サーバSEのためのネットワーク講座 #1 サーバ&仮想化インフラとネットワークの今昔物語
 
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...
[db tech showcase Tokyo 2015] D33:Superdome X 上の SQL Server 2014 OLTP 検証結果と S...
 
20171219 量子コンピューターを支える物理学
20171219 量子コンピューターを支える物理学20171219 量子コンピューターを支える物理学
20171219 量子コンピューターを支える物理学
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
 
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング
【Interop tokyo 2014】  君にもできる!CCNPで学ぶトラブルシューティング
 
もしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらもしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったら
 
Capture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ssCapture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ss
 
[Basic 2] 計算機の構成 / プログラム実行の仕組み
[Basic 2] 計算機の構成 / プログラム実行の仕組み[Basic 2] 計算機の構成 / プログラム実行の仕組み
[Basic 2] 計算機の構成 / プログラム実行の仕組み
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CI
 
PSpiceを活用したハーフブリッジ回路シミュレーションの事例
PSpiceを活用したハーフブリッジ回路シミュレーションの事例PSpiceを活用したハーフブリッジ回路シミュレーションの事例
PSpiceを活用したハーフブリッジ回路シミュレーションの事例
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミング
 
Interop2016-openstack-user-group-mizuno
Interop2016-openstack-user-group-mizunoInterop2016-openstack-user-group-mizuno
Interop2016-openstack-user-group-mizuno
 

Etnet2015.slide

  • 1. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 1 M2M ネットワークのための 脆弱性診断システムの試作 ETNET2015(2015/3/5-6)   からぼ 渥美 清隆
  • 2. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 2 お願い ● スライドはSlideShareで公開します. ● 本発表の脆弱性診断システムのエンジン部分は https://github.com/kalab1998e/ka-mitm で公開されています.(まだαバージョン) ● 口頭で説明した内容については機微な情報も含ま れるため,不要な口外をご遠慮願います.
  • 3. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 3 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 4. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 4 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 5. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 5 プロジェクト概要 ● 経済産業省の補助金による,1大学,2社による1年 間の共同プロジェクト ● ある会社の製造デバイスを念頭に,様々なデバイス に応用可能な脆弱性診断システムの開発 ● 脆弱性診断エンジンにかかる部分はオープンソー ス開発で合意 ● プロジェクト終了と共に雇用契約終了 ● 現在は個人研究事業者 ● 秘密保持契約により詳細は省略
  • 6. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 6 M2Mネットワークの現在 ● MCUの高性能化(ちょっと前のパソコン並み) ● USB, Ethernet, ZigBee, Bluetooth, Wifiなどの ネットワーク到達性 ● ブラックボックス,グレーボックスなファームウェア,ソ フトウェア ● M2Mネットワーク,機械同士が自動的にネットワー クを構築,更新,拡張,回復 ● 弱い相互認証
  • 7. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 7 用語整理 ● 統合テスト – 全てのMCU(センサーユニット)の接続テスト – 推移可能なあらゆる状況への推移テスト – 仕様書の行間を含めた仕様書通りの動作をするかどうか を調べる. ● 脆弱性テスト(可用性・完全性・機密性テスト) – ノイズの混入,通信遮断 – 通信の耐タンパ性 – 悪意あるコードの注入 本研究は特に両者を区別しないこととする.
  • 8. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 8 テストの課題 ● 全ての状態推移を定義不可 ● 推移可能数が多く網羅的テスト不可 ● 実装の一部または全部がブラックボックス ● 単純な振る舞い模倣で再現しない問題 (Metasploitが使いづらい) ● Ethernet protocol外による外乱
  • 9. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 9 今回の診断対象(外観) Target1(host) Target2(device) USB有線接続 外部 ネットワークへ
  • 10. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 10 外部 ネットワークへ 今回の診断対象(ソフトウェア構造) 画像表示 AV管理 状態管理 など 管理アプリ ナビアプリ その他の アプリ Target1 Target2
  • 11. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 11 今回の診断対象 ● Target1, Target2はTCP/IP on USBで接続 ● Target1, Target2の両方でサービス提供 ● Target2のサービスの少なくとも1つはサービスポー トが動的に変化 ● TCP/IP以外のLayer1/2で並列に通信 ● 全ての通信はTarget1の管理アプリが仲介 ● 主にTarget2に対して脆弱性診断を実施
  • 12. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 12 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 13. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 13 診断システム構成例1 (Metasploitなど) 画像表示 AV管理 状態管理 など Target1 Target2 汎用脆弱性 スキャナ
  • 14. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 14 診断システム構成例1の問題 ● 脆弱性スキャナがTarget1(管理アプリ)を模倣不能 ● 互いの状態に応じた適応が困難 ● 予め決まった脆弱性診断だけがほとんど
  • 15. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 15 外部 ネットワークへ 診断システム構成例2 (USBProxyなど) 画像表示 AV管理 状態管理 など 管理アプリ ナビアプリ その他の アプリ Target1 Target2 USB MitM Controller
  • 16. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 16 診断システム構成例2の問題 ● ソフトウェアによる中継 (30Mbps → 2Mbps) ● 多様なUSBコンフィグレーションへの追従困難 特にスマートフォンはUSBバスリセットで全く別のデ バイスに変化 ● USBのリセットなど電気的振る舞いまで模倣が必 要
  • 17. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 17 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 18. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 18 外部 ネットワークへ 今回の診断システム構成 画像表示 AV管理 状態管理 など 管理アプリ ナビアプリ その他の アプリ Target1 Target2 ka-mitm iptables
  • 19. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 19 ka-mitmとiptables ● Target1とka-mitmはWifiにより接続 ● ka-mitmは汎用Proxyのように振る舞い,データの 観察,変更が可能 ● iptablesの設定を,特定portのみka-mitmが透過 Proxyとなるように設定 (機能的にはNAPTやWAFと似ている)
  • 20. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 20 ka-mitmの利点 ● 通過するデータを入出力とするチューリングマシン として振る舞える. ● 複数のプロトコルの複合的振舞にも適応できる. ● 観察だけなら簡単にできる. ● 転送速度が速い.(但しWifi実効性能1/4以下) ● M2Mの自動回復機能とMitM側の切断接続の繰り 返しにより,自動的に何度パラメータを変えて検査 できる.
  • 21. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 21 ka-mitmの欠点 ● 自由度が高すぎる.適切なシナリオの定義法がな い. ● TCP/IPのみ. ● Target1にiptables相当を設定しなければならな い. ● TCPだけのリセットではM2Mの回復機能が働かな い場合がある.
  • 22. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 22 動作の仕方 1. 事前にメタシナリオ等を定義する. 2. ka-mitmを通過させるようにした上で,検査対象の 検査機能を一通り実行し,キャプチャデータを得る. 3. メタシナリオとキャプチャデータから個別シナリオを 生成する. 4. 個別シナリオ数分だけ回線リセットを繰り返して, 検査を実施する. 5. 検査結果を得る.
  • 23. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 23 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 24. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 24 シナリオの例1 [ { "sort": ["VNC", "Handshake"], "port": "/59[0-9][0-9]/", "lead": [], "trigger": ["to_client","/^RFB 003.00[3578]n$/"], "injections": [ [["RFB 002.008n"], [""]], [["RFB 003.001n"], [""]], [["RFB 003.009n"], [""]], [["RFB 004.008n"], [""]], [["RFB 003.00800000...00000n"], [""]]], "enable": true },... ]
  • 25. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 25 実行例1 (事前条件なし) Server->Client: RFB003.008nRFB002.008n (Clientからの応答なし) (強制停止) … (事前条件なし) Server->Client: RFB003.008nRFB003.008000000...000n Client->Server: RFB003.008n (以下,通常動作?) (強制停止)
  • 26. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 26 シナリオの例2 { "sort": ["VNC", "Handshake"], "port": "/59[0-9][0-9]/", "lead": [["to_client", "/^RFB 003.003n$/"]], "trigger": ["to_server","/^RFB 003.003n$/"], "injections": [ [["RFB 002.008n"], [""]], [["RFB 003.001n"], [""]], [["RFB 003.007n"], [""]], [["RFB 003.008n"], [""]], [["RFB 003.009n"], [""]], [["RFB 004.008n"], [""]], [["RFB 003.0030000000000000000000000000000...0n"], [""]]], "enable": true }, これは利用されない
  • 27. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 27 シナリオの例3 { "sort": ["VNC", "Handshake"], "port": "/59[0-9][0-9]/", "lead": [["to_client", "/^RFB 003.008n$/"]], "trigger": ["to_server", "/^RFB 003.00[378]n$/"], "injections": [ [["RFB 002.008n"], [""]], [["RFB 003.001n"], [""]], [["RFB 003.009n"], [""]], [["RFB 004.008n"], [""]], [["RFB 003.008000000000000000000000000...00000n"], [""]]], "enable": true },
  • 28. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 28 実行例3 Server->Client: RFB003.008n Client->Server: RFB003.008nRFB002.008n (Serverからの応答なし) (強制停止) … Server->Client: RFB003.008n Client->Server: RFB003.008nRFB003.008000000...000n (以下,通常動作?) (強制停止)
  • 29. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 29 シナリオの例4 { "sort": ["VNC", "Handshake"], "port": "/59[0-9][0-9]/", "lead": [["to_client", "/^RFB 003.00[78]n$/"], ["to_server", "/^RFB 003.00[78]n$/"]], "trigger": ["to_server","/^[x01-x05].*$/"], "injections": [[["x00","x00x00x00x01AAAAAAAAAAAAAAA...A"], [""]], [["x05x00x01x02x05x06x0F"], [""]], [["x01x00xFFxFFxFFxFFxFFxFFxFF...xFFxFF"],[""]]], "enable": true },
  • 30. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 30 実行例4-1 server->client: RFB 003.008 client->server: RFB 003.008 server->client: ^A^A^M client->server: x00 client->server: x00x00x00x01AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAA server->client: !not supported Authentication Type (自動的に通信リセット)
  • 31. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 31 実行例4-1続き server->client: RFB 003.008 client->server: RFB 003.008 server->client: client->server: server->client: client->server: server->client: � ��� TMDesktop client->server: !������ ������� server->client: ���� client->server: ? client->server: � � server->client: enusenus � �� client->server: enusenus {� � (通常動作?) (強制停止)
  • 32. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 32 実行例4-2 server->client: RFB 003.008 client->server: RFB 003.008 server->client: client->server: x05x00x01x02x05x06x0F server->client: !not supported Authentication Type (自動通信リセット) server->client: RFB 003.008 client->server: RFB 003.008 server->client: client->server: server->client: client->server: server->client: � ��� TMDesktop (通常動作?) (強制停止)
  • 33. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 33 実行例4-3 server->client: RFB 003.008 client->server: RFB 003.008 server->client: client->server: x01x00xFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFxFFx FFxFFxFFxFFxFFxFFxFFxFxFFxFFxFFxFFxFFxFFxFFxFFxFFx... server->client: server->client: !not supported Authentication Type (通信自動リセット) server->client: RFB 003.008 client->server: RFB 003.008 server->client: client->server: server->client: (通常動作?) (強制停止)
  • 34. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 34 本日の発表内容 ● 背景,課題 ● これまでの診断システムの構成 ● 提案する提案システム ● 動作例 ● 課題
  • 35. ETNET2015 (c) 2015 kiyotaka@ka-lab.jp 35 課題 ● シナリオ表現範囲の不足 ● 複数プロトコルの連携に関するシナリオ記述方法 の検討 ● 通信リセットの完全実行 ● USB有線ケーブルへの直接介入 ● 注入後応答の解析方法の確立 以下の場所にソフトウェアを公開しています. https://github.com/kalab1998e/ka-mitm