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 프로젝트를 기반으로 구축되었습니다. OBEX를 쉽게 접근하고 다루기 쉽게 만든 David의 큰 노력 없이는 이 도구가 존재할 수 없었을 것입니다. nOBEX는 대용량 다중 부분 OBEX 메시지 지원, HFP 에뮬레이션, PBAP 및 MAP 서버, MAP 클라이언트, 그리고 개선된 PBAP 클라이언트를 추가하여 PyOBEX를 확장합니다.

nOBEX(및 PyOBEX)는 BlueZ 블루투스 스택을 사용하여 서비스 발견 프로토콜(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 서버는 공유 블루투스 어댑터를 사용하는 가상 머신에서는 작동하지 않는 경향이 있습니다. Linux를 네이티브로 실행하거나, VM 전용 USB 블루투스 어댑터를 사용하십시오.

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 에뮬레이터를 시작하여 SDP를 통해 자신이 HF임을 광고해야 할 수 있습니다. HF 에뮬레이터가 실행 중이면 휴대폰이 에뮬레이터 스크립트와 AT 명령 RFCOMM 연결을 시작합니다. 이 과정을 빠르게 하려면 휴대폰의 블루투스 설정에서 페어링된 컴퓨터를 클릭하여 연결/재연결을 트리거할 수 있습니다.

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 서비스를 지원하는 장치를 검색한 다음 해당 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

이 인터페이스에는 두 가지 간단한 명령만 있습니다:

  • 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(파일 전송 프로파일) 클라이언트를 사용하면 nOBEX를 실행하는 다른 컴퓨터나 Bluetooth File Transfer 앱을 실행하는 Android 휴대폰과 같은 OBEX FTP 서버의 파일을 탐색할 수 있습니다. examples 디렉토리에 FTP 클라이언트 샘플 프로그램이 있습니다.

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

블루투스 MAC 주소만 인수로 사용하여 예제 FTP 클라이언트를 실행하면 서버의 OBEX FTP를 통해 액세스할 수 있는 모든 파일의 재귀 디렉토리 목록이 출력됩니다. 선택적 save_directory 인수를 제공하면 스크립트는 서버에서 액세스 가능한 모든 파일을 다운로드하여 컴퓨터의 지정된 저장 디렉토리에 저장합니다.

FTP 서버를 사용하면 클라이언트가 지정된 폴더 내의 컴퓨터(서버)에 있는 파일을 탐색할 수 있습니다.

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

OPP

OPP(개체 푸시 프로파일) 클라이언트를 사용하면 컴퓨터의 파일을 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 명령을 수동으로 퍼징할 수 있습니다.

도구 다운로드