Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
nOBEX — nOBEX allows emulating the PBAP, MAP, and HFP profiles to test vehicle infotainment systems and similar devices using these profiles | Kitploit
ツール/GitHubGitHub/nccgroup/nobex
Embedded Systems SecurityBluetooth SecurityFuzzingWireless SecurityPenetration Testing
GitHubnccgroup/nobex

nOBEX

nOBEX allows emulating the PBAP, MAP, and HFP profiles to test vehicle infotainment systems and similar devices using these profiles

リポジトリを見る
96165年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

nOBEX

はじめに

nOBEX は、PBAP、MAP、HFP プロファイルをエミュレートすることで、車載インフォテインメントシステムおよびこれらのプロファイルを使用する類似デバイスをテストできます。nOBEX は、実機のスマートフォンからこれらのプロファイル用の本物の仮想ファイルシステムを複製するための PBAP および MAP クライアントを提供します。つまり、電話帳全体とすべてのテキストメッセージをダウンロードします。生の vcard、XML リスティング、および MAP BMSG 構造が保存され、ネガティブテスト用に自由に変更できます。nOBEX はその後、PBAP および MAP サーバーとして動作し、車両やその他のデバイスが接続して電話帳やメッセージ情報を取得できるようにします。Vcard、BMSG、および XML リスティングは保存されたとおりに送信されるため、不正に変更されたデータもそのまま通過します。ほとんどの車載ヘッドユニットは PBAP と MAP を使用しようとする前に HFP サポートを必要とするため、nOBEX は HFP の基本的なサポートも提供します。車両のヘッドユニットから送信される AT コマンドに対して、ユーザーがカスタマイズ可能なプリセット応答を返します。これにより、実際の携帯電話を模倣できます。

nOBEX は、David Boddie による PyOBEX プロジェクトの上に構築されています。このツールは、David が OBEX を扱いやすく身近なものにしてくれた多大な貢献がなければ実現しませんでした。nOBEX は PyOBEX を拡張し、大きなマルチパート OBEX メッセージ、HFP エミュレーション、PBAP および MAP サーバー、MAP クライアント、改良された PBAP クライアントのサポートを追加しています。

nOBEX(および PyOBEX)は、BlueZ Bluetooth スタックを使用して、Service Discovery Protocol (SDP) 経由でサービスをアドバタイズし、RFCOMM 接続を確立します。nOBEX/PyOBEX には、クライアントロールとサーバーロール向けの OBEX 仕様のスタンドアロン実装が含まれています。Python 2 と 3 の両方がサポートされています。

クライアントモードでは、nOBEX は BlueZ を使用してサーバーが提供するサービスを照会します。要求されたサービスが利用可能であることを検出すると、SDP で指定されたポートの RFCOMM 経由でサーバーに接続します。OBEX 要求は、使用中のプロファイルに従って構築され、サーバーに送信されます。応答は解釈されてディスクに保存されます。PBAP および MAP のクライアントモードは、実機のスマートフォンを複製するために使用できます。

サーバーモードでは、nOBEX は SDP 経由で利用可能なサービスをアドバタイズします。クライアントがアドバタイズされたポートに RFCOMM 接続を行うと、サーバーは OBEX 要求を受け入れて処理します。要求に対する OBEX 応答は、ディスク上のデータを使用して送信されます。PBAP および MAP サーバーは、それぞれのクライアントが生成したものと一致するファイル/フォルダ構造を提供します。

インストール手順

以下のセットアップ手順は、Fedora 24、27、および 29 でテストされています。他の最近のディストリビューションでも動作する可能性がありますが、結果は異なる場合があります。お使いのディストリビューションに sdptool が同梱されていない場合は、レガシーな bluez ツール(sdptool を含む)をインストールする必要があるかもしれません。また、OBEX サーバーは、共有 Bluetooth アダプタを使用する仮想マシン内では機能しない傾向があることに注意してください。Linux をネイティブで実行するか、VM 専用の USB Bluetooth アダプタを用意してください。

SDP でローカルのアドバタイズ済みサービスを調べてみてください:

root@kitploit:~
sudo sdptool browse local

最近のディストリビューションを実行している場合、BlueZ 5 の破壊的な API 変更により、おそらく失敗するでしょう。bluetoothd を互換モードで実行することで修正できます。bluetoothd の systemd サービスを編集します。

root@kitploit:~
sudo vi /usr/lib/systemd/system/bluetooth.service

ExecStart 行に --compat を追加します:

root@kitploit:~
ExecStart=/usr/libexec/bluetooth/bluetoothd --compat

次に bluetoothd を再起動します:

root@kitploit:~
sudo service bluetooth stop
sudo systemctl daemon-reload
sudo service bluetooth start
sudo hciconfig -a hci0 reset

ローカル SDP サービスの参照を再度テストします(今回は機能するはずです):

root@kitploit:~
sudo sdptool browse local

nOBEX を取得してインストールします:

root@kitploit:~
git clone https://github.com/nccgroup/nOBEX.git
cd nOBEX
sudo python3 setup.py install

使用手順

PBAP

電話帳を複製したい携帯電話の MAC アドレスを見つけます:

root@kitploit:~
hcitool scan

既存の電話の PBAP コンテンツを複製します(正しい MAC と、できれば空または存在しない宛先ディレクトリを使用してください):

root@kitploit:~
python3 examples/pbapclient.py 5C:51:88:8A:EC:5B ~/pbap_root/

または、examples/pbap_root フォルダにある PBAP サンプルデータツリーを使用します。

必要に応じて、PBAP ダンプディレクトリ内の vcard とリスティング XML を変更します。次に、複製した電話帳を使用して PBAP サーバーを実行します:

root@kitploit:~
sudo python3 examples/multiserver.py --pbap ~/pbap_root/

また、PBAP クライアントをコンピュータ(PBAP サーバー)とペアリングする必要があります。

MAP

電話からメッセージデータを取得して、テスト用の MAP ツリーを確立します:

root@kitploit:~
python3 examples/mapclient.py 5C:51:88:8A:EC:5B ~/map_root/

または、お使いの携帯電話が MAP を適切にサポートしていない場合は、examples/map_root フォルダにある MAP サンプルデータツリーを使用します。

必要に応じてサンプルデータを変更します。次に、MAP ツリーのルートを探す場所を指定してサーバーを実行します。

root@kitploit:~
sudo python3 examples/multiserver.py --map ~/map_root/

HFP HF

HFP クライアント(ハンズフリー、カーキットエミュレータ)は、HFAG(電話/モデム)と通信するための AT コマンド CLI を提供します。RFCOMM サーバーであるにもかかわらず、HFAG(電話/モデム)の「クライアント」であるため、私はこれを「HFP クライアント」と呼んでいます。「サーバー」(HFAG)が RFCOMM 接続を開始する側であるにもかかわらず、HF エミュレータ(「クライアント」)を使用して HFAG に AT コマンドを送信します。

HF エミュレータを実行するには:

root@kitploit:~
sudo python3 examples/hfpclient.py

電話をペアリングする前に、HF エミュレータを起動して、自分が HF であることを SDP 経由でアドバタイズする必要があるかもしれません。HF エミュレータが実行されていると、電話は AT コマンド RFCOMM 接続をエミュレータスクリプトに対して開始します。このプロセスを迅速化するには、電話の Bluetooth 設定でペアリング済みのコンピュータをクリックして、接続/再接続をトリガーできます。

HFAG(電話/モデム)が接続を開始すると、通常、HFP セッションを構成するための限られた時間枠(30 秒から 1 分)があります。有用な AT コマンド(電話の発信など)を送信する前に、その限られた時間枠内で一連の AT コマンドを送信する必要があります。そうしないと、HFAG が切断される可能性があります。次の初期 AT コマンドシーケンスは、ほとんどの電話で機能するはずです:

root@kitploit:~
AT+BRSF=39
AT+CIND=?
AT+CIND?
AT+CMER=3,0,0,1
AT+CHLD=?
AT+CCWA=1
AT+CLIP=1
AT+NREC=0

HFP HFAG

HFP サーバー(オーディオゲートウェイ)はかなり基本的で、選択したコマンドに対して事前設定された応答を返します。サーバーは初期状態で一般的な HFP コマンドをサポートするように設定されていますが、車両ごとに追加のコマンドや応答の変更がおそらく必要になります。カスタム応答は、各行にコマンドと応答のペアをタブで区切ったテキストファイルで設定できます。サンプル設定ファイルは examples/bbeast フォルダにあります。

他のサーバーとは異なり、nOBEX HFP AG 実装は実際には RFCOMM 接続を受け入れません。HFP 規格では接続の確立方法があいまいであり、HF と AG の両方が接続を受け入れ、開始することが許可されています。接続確立の慣行に関しては、ヘッドユニットによって動作が異なります。ただし、ほとんどの HF デバイスは、AG が自身のポートで接続を受け入れない場合、AG から接続されることを受け入れる傾向があります。したがって、nOBEX HFP AG「サーバー」は、ペアリング済みデバイスから HF サービスをサポートするものを検索し、nOBEX は HF デバイスに接続します。

HFP AG コードは、/var/lib/bluetooth/*/* の下にリストされ、HFP HF ロールをサポートすると主張するすべてのデバイスに接続を試みることに注意してください。したがって、HFP サーバーを使用する前に、そのディレクトリ内の誤ったペアリングを削除する必要があります。

スタンドアロンの HFP AG を実行するには(設定ファイルはオプションです):

root@kitploit:~
sudo python3 examples/multiserver.py --hfp [config_file]

HFP サーバー(HFAG)は、実行時に自動応答を編集したり、AT 応答を手動で送信したりできる対話操作もサポートしています。HFP サーバーは localhost のポート 7137 でコマンドを待ち受けます。以下のように netcat を使用して接続できます:

root@kitploit:~
nc localhost 7137

このインターフェースには単純なコマンドが 2 つだけあります:

  • send <atresp> - atresp を AT 応答として送信します
  • ursp <atcmd> <atresp> - atcmd の自動応答を atresp に更新/設定します

次のコマンド例は、着信をシミュレートします:

root@kitploit:~
ursp AT+CLCC +CLCC: 1,1,4,0,0,"1234567890",129
send RING

FTP

FTP(File Transfer Profile)クライアントを使用すると、nOBEX を実行している別のコンピュータや、Bluetooth File Transfer アプリを実行している Android スマートフォンなどの OBEX FTP サーバー上のファイルを参照できます。examples ディレクトリに FTP クライアントのサンプルプログラムがあります。

root@kitploit:~
python3 examples/ftpclient.py SERVER_MAC_ADDRESS [save_directory]

引数として Bluetooth MAC アドレスのみを指定してサンプル FTP クライアントを実行すると、サーバー上の OBEX FTP 経由でアクセスできるすべてのファイルの再帰的なディレクトリリストが出力されます。オプションの save_directory 引数を指定すると、スクリプトはサーバー上でアクセス可能なすべてのファイルをダウンロードし、コンピュータ上の指定された保存ディレクトリに保存します。

FTP サーバーを使用すると、クライアントは指定されたフォルダ内のコンピュータ(サーバー)上のファイルを参照できます。

root@kitploit:~
sudo python3 examples/multiserver.py --ftp PATH_TO_FTP_FOLDER

OPP

OPP(Object Push Profile)クライアントを使用すると、コンピュータ上のファイルを OBEX OPP サーバーにプッシュできます。

root@kitploit:~
python3 examples/pushclient.py SERVER_MAC_ADDRESS FILE_TO_PUSH

OPP サーバーを使用すると、クライアントは指定されたフォルダ内のコンピュータ(サーバー)にファイルをプッシュできます。

root@kitploit:~
sudo python3 examples/multiserver.py --opp PATH_TO_OPP_FOLDER

サーバーの組み合わせ

multiserver.py スクリプトを使用すると、HFP、MAP、PBAP、FTP、OPP サーバーの任意の組み合わせを同時に実行できます。上記の例の引数を組み合わせるだけです。HFP、MAP、PBAP を同時に実行するには:

root@kitploit:~
python3 examples/multiserver.py --map ~/map_root/ --pbap ~/pbap_root/ --hfp [config_file]

HFP と PBAP の組み合わせは、2012 Ford Focus で正常にテストされています。

アプリケーション

nOBEX の主な目的は、車載ヘッドユニット上の PBAP および MAP クライアントのネガティブテストとファジングを実行することです。HFP サポートと PBAP/MAP クライアントサポートは、この目標を容易にすることを目的としています。手動ファジングは、手作業で変更した XML リスティング、vcard、および BMSG を使用してサーバーを実行することで実行できます。OBEX は、マルチパートメッセージにまたがる多くのネストされた TLV 構造を持つ、豊富なファジングターゲットです。PBAP と MAP は、vcard、BMSG、および XML パーサーによって攻撃対象領域を大幅に拡大します。

nOBEX には自動ファジングの統合サポートはありませんが、Python で記述されているため、拡張は簡単です。ミューテーションエンジンと組み合わせてターゲットデバイスを計測することで、より強力なファジング機能を構築できます。

車載ヘッドユニット上の MAP と PBAP のファジングに加えて、nOBEX は、クライアントロールとサーバーロールの両方で PBAP、MAP、およびその他の OBEX プロファイル(FTP など)の通常のポジティブテストにも使用できます。PBAP および MAP サーバーは、Android 用の OBEX Commander アプリでテストされ、誤った OBEX 通信と不正なプロファイル固有データによって多くのクラッシュが引き起こされる可能性がありました。さらに、HFP サポートを使用して AT コマンドを手動でファジングできます。

ツールをダウンロード