# 스마트 홈 디바이스 해킹 (2024)

> Clean Markdown view of GeekNews topic #20355. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20355](https://news.hada.io/topic?id=20355)
- GeekNews Markdown: [https://news.hada.io/topic/20355.md](https://news.hada.io/topic/20355.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-04-16T09:50:09+09:00
- Updated: 2025-04-16T09:50:09+09:00
- Original source: [jmswrnr.com](https://jmswrnr.com/blog/hacking-a-smart-home-device)
- Points: 1
- Comments: 1

## Topic Body

- **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 체크섬**을 확인하여 패킷 데이터의 무결성을 검증함

## Comments



### Comment 37211

- Author: neo
- Created: 2025-04-16T09:50:09+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43688658) 
- 장기적인 해결책은 지역 제어를 무시하는 가정용 제품을 구매하지 않는 것임
  - WiFi 비밀번호가 필수라면 제품을 반품할 것임
  - 보안과 프라이버시를 희생하고 싶다면 개인의 선택이지만, 기능 손실 없이 거부할 수 있는 옵션을 제공해야 함
  - RTSP를 지원하지 않는 도어벨 카메라는 구매하지 않을 것임

- 공기청정기가 실내 공기질이 떨어질 때 작동을 강화하는 것은 IoT 기기, 앱, 무선 통신, 허브가 필요하지 않음
  - 공기청정기에 공기질 센서와 작은 LCD를 부착해 설정을 조정하면 충분함
  - 복도 조명이 자동으로 켜지는 것은 클라우드, HomeAssist, WiFi, Zigbee, 앱, 배터리 교체 없이 동작함
  - 지난 10년간 네트워크가 다운되어도 문제 없이 작동함

- ESP32 기반 IoT 기기 판매자에게:
  - 스마트 홈 시스템과 통합하기 위해 스마트 기기를 업그레이드하는 것은 다른 인스턴스나 클라우드 서비스에 영향을 주지 않음
  - 민감한 제품 데이터는 모호화되거나 삭제됨

- ESP32 기반 IoT 기기 소유자에게:
  - 스마트 홈 제품의 클라우드 제거 및 디버깅을 위한 오픈 소스 프로젝트를 생성하며 기술적 측면을 많이 배움
  - 이 게시물 작성에 많은 노력을 기울였으며, 형식에 대한 피드백을 받으면 좋겠음

- 기기의 보드에서 어떤 핀이 연결되어 있는지 파악하고 ESPHome으로 완전히 플래시하고 사용자 정의 yaml 구성을 작성할 수 있을지 궁금함

- IoT 기기 설계 팀에 있을 때마다 보안에 중점을 둔 엔지니어가 부트 보호를 담당했음
  - 펌웨어를 덤프하고 다시 플래시하는 것에 저항이 없었다는 것이 놀라움
  - 플래시 암호화를 하지 않는 이유가 궁금함

- 기사에 대한 피드백:
  - 장치 키 사용에 대한 노트는 장치별로 키가 있는 것이 가장 명확함
  - 장치별 키 관리의 복잡성과 위험에 대한 피드백을 공유하고 싶음
  - 장치 암호화는 공장에서 많은 문제를 일으킬 수 있으며, 제품이 감당할 수 있다면 무시하는 것이 좋음

- 표준화된 솔루션을 사용하지 않은 이유가 궁금함
  - 자체 솔루션을 만드는 것보다 비용 효율적일 것 같음

- ESP32 IoT 기기에서 펌웨어 암호화를 사용하는 경우가 드물었음
  - 펌웨어를 읽을 수 없으면 인증서를 만들기 어려웠을 것임
  - 그러나 동시에 인상적임

- 서비스 엔지니어들이 DTLS 같은 표준 프로토콜을 구현하지 않기로 결정한 것에 대한 의견
  - 각 기기가 고유한 개인 키를 가지고 있는지 확실하지 않음
  - 모든 기기가 동일한 펌웨어 개인 키를 공유하면 단일 기기를 역설계하여 다른 기기에 MITM 공격을 할 수 있음

- 스마트 기기를 사용하는 사람들은 DD-WRT, OpenWrt, Tomato, Asuswrt-Merlin을 사용하여 기기를 개인 네트워크와 분리된 VLAN에 격리해야 함

- 구매한 제품을 사용하기 위해 해킹할 필요가 없어야 함
  - "렌트 시킹" 경제는 규제되거나 금지되어야 함
