-
ESP32 기반 스마트 홈 기기를 리버스 엔지니어링하여 Home Assistant와 통합함
-
모바일 앱을 분석하여 클라우드 서버와의 연결을 확인함
-
네트워크 트래픽을 가로채어 기기 제어를 시도함
-
ESP32 플래시를 덤프하고 분석하여 펌웨어 수정을 시도함
-
패킷 구조를 분석하여 암호화 및 체크섬을 이해함
소개
- 최근 Home Assistant에 모든 기기를 연결하려는 시도를 하고 있음
- 특정 공기청정기가 자체 앱 외에는 연결되지 않아 이를 해킹하여 통합하려고 함
-
인터넷 연결과 클라우드 계정에 의존하는 제품의 문제점을 지적함
계획
-
모바일 앱이 클라우드 서버와 연결되어 원격 제어가 가능함을 확인함
-
네트워크 트래픽을 가로채어 기기를 제어할 수 있는 방법을 모색함
모바일 앱 분석
-
Android 앱을 분석하여 React Native로 개발되었음을 확인함
-
WebSocket을 통해 클라우드 서버와 연결됨을 발견함
네트워크 검사
-
Pi-hole을 사용하여 DNS 쿼리를 확인하고 Wireshark로 트래픽을 분석함
-
UDP 패킷을 통해 기기와 서버 간의 통신을 확인함
패킷 분석
-
UDP 프록시를 사용하여 기기와 클라우드 서버 간의 트래픽을 중계함
-
Wireshark를 통해 패킷 구조를 분석하고 암호화 가능성을 확인함
물리적 분해
-
ESP32 기반의 기기를 분해하여 플래시 칩에서 펌웨어를 덤프함
-
esptool을 사용하여 시리얼 연결을 통해 데이터를 읽어옴
플래시 분석
-
esp32knife를 사용하여 플래시 데이터를 분석하고 파티션 테이블을 확인함
-
FAT 파일 시스템에서 중요한 파일들을 발견함
초기 정적 분석
-
Ghidra를 사용하여 펌웨어의 문자열을 분석하고 암호화 라이브러리 사용을 확인함
-
mbedtls 라이브러리를 사용하여 ECDH 및 HKDF 알고리듬을 구현함
펌웨어 수정
-
Ghidra를 통해 CapSense 기능을 비활성화하고 펌웨어를 수정하여 기기를 부팅함
-
체크섬 문제를 해결하여 수정된 펌웨어를 성공적으로 플래시함
패킷 헤더
-
패킷 헤더의 구조를 분석하여 시리얼 번호와 메시지 식별자를 확인함
-
클라이언트 요청과 서버 응답의 패턴을 파악함
패킷 체크섬
-
CRC 체크섬을 확인하여 패킷 데이터의 무결성을 검증함