1P by GN⁺ | ★ favorite | 댓글 1개
  • ESP32는 CCH에만 아마 수천 개가 쓰일 만큼 흔하지만, 핵심인 Wi‑Fi 스택은 폐쇄형이라 수정과 감사를 하기 어려움
  • 38c3 세션은 Wi‑Fi 주변장치 리버스 엔지니어링에서 출발해 오픈소스 Wi‑Fi 스택을 만드는 과정을 다룸
  • 목표는 단순한 대체 구현이 아니라, 민감한 데이터를 다룰 수 있는 소프트웨어를 직접 검증하고 고칠 수 있게 하는 것임
  • 새 스택이 자리 잡으면 ESP32는 일반 IoT SoC를 넘어 연구와 실험을 위한 저렴한 무선 플랫폼으로 확장될 수 있음
  • 기능이 충분히 열리면 펜테스팅 도구, B.A.T.M.A.N. 메시 라우터, AirDrop 클라이언트 같은 활용이 가능해짐

폐쇄형 Wi‑Fi 스택을 여는 이유

  • ESP32의 기존 Wi‑Fi 스택은 동작하지만 폐쇄형 구현이라 내부 동작을 확인하거나 필요에 맞게 수정하기 어려움
  • 오픈소스 Wi‑Fi 스택은 잠재적으로 민감한 데이터를 다루는 영역을 수정·감사할 수 있게 만드는 것이 핵심 목표임
  • CCH에는 아마 수천 개의 ESP32가 있고, 모두 이런 폐쇄형 Wi‑Fi 스택을 실행 중이라는 점이 문제의식을 키움

리버스 엔지니어링에서 새 스택까지

  • 프로젝트는 ESP32의 독점 Wi‑Fi 스택을 리버스 엔지니어링하는 데서 시작함
  • 이후 ESP32의 Wi‑Fi 주변장치를 직접 다루는 오픈소스 Wi‑Fi 스택 구현으로 이어짐
  • 이 과정에서 Wi‑Fi, ESP32, 일반적인 리버스 엔지니어링, 이런 프로젝트에 접근하는 방법이 함께 다뤄짐

ESP32가 열렸을 때의 활용

  • ESP32는 기능이 완전히 열리면 연구 도구와 IoT SoC로서 더 다양한 역할을 맡을 수 있음
  • 가능한 활용 예시는 다음과 같음
    • 펜테스팅 도구
    • B.A.T.M.A.N. 메시 라우터
    • AirDrop 클라이언트

세션 정보와 공개 조건

  • 발표자는 Frostie314159와 Jasper Devreker임
  • 38c3의 Hardware & Making 트랙, Saal 1에서 진행된 38분짜리 세션이며 날짜는 2024-12-27임
  • 영상과 오디오는 MP4, WebM, MP3, Opus 형식으로 제공됨
  • 자료는 http://creativecommons.org/licenses/by/4.0 조건으로 공개됨

댓글과 토론

Hacker News 의견들
  • 관련 글: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
    • 오픈소스 버전이 폐쇄형 API와 호환되면 장점이 클 듯함
      호환되면 인터넷에 이미 쌓인 도움말과 예제를 그대로 활용할 수 있고, 진입 비용도 낮아짐. MAC 계층을 아주 조금 고치고 싶은 사람도 새 API를 익히는 부담 없이 기존 방식대로 들어가 원하는 부분만 손볼 수 있음
    • 글쓴이임. 전체 글 시리즈도 https://esp32-open-mac.be/에 있음
  • Espressif만 WiFi 모뎀을 꽤 괜찮은 마이크로컨트롤러에 넣는 데 성공했다는 게 아직도 꽤 이상함
    ST는 이런 쪽에서는 여전히 많이 뒤처져 있음
    • 다른 예로는 BK72xx 계열(BK7231T, BK7231N), RTL87xx 계열(RTL8710BN, RTL8710BX), RP2040이 있음
      다만 RP2040 W 보드의 WiFi는 외부 모듈처럼 보임. 출처는 https://esphome.io
    • Espressif는 저렴함, 접근성, 쉬운 하드웨어, 쉬운 소프트웨어, 이상한 라이선스 제한 없음이라는 조합을 잘 맞췄음
      어디서나 1개 단위로 살 수 있고, USB 전원·프로그래밍 포트와 표시된 핀이 달린 여러 브레이크아웃 보드로 팔리며, 문서·예제·Arduino IDE·NodeMCU도 잘 갖춰져 있음. Arduino도 초반엔 비슷했지만 저성능 AVR 칩에 너무 오래 머물렀고 중국산이 아닌 보드는 비쌌으며 WiFi도 없었음. Raspberry Pi Pico는 기능은 좋지만 초반 수급이 어려웠고, 나머지는 DigiKey 같은 곳에서 사는 “원칩”에 가까워 배송비가 비싸고 문서가 600쪽 넘으며 첫 ping 하나 보내는 데 300쪽 이상이 필요하고, 보드에 납땜해야 하며 프로그래밍에도 보통 비싼 장비가 필요함
    • Nordic Semiconductor도 Bluetooth와 WiFi가 있는 마이크로컨트롤러를 갖고 있음. 다만 Espressif 솔루션보다 훨씬 덜 흔함
    • AliExpress의 TuYa 기반 모듈 대부분은 Beken
    • TI는 거의 10년 전부터 WiFi+Bluetooth 마이크로컨트롤러를 갖고 있었고, Cortex-M4도 제공함
  • 아직 영상을 보지 못해서 이미 다뤘다면 미안하지만, ESP32 무선 인증이 공식 블랙박스 펌웨어에 묶여 있는지 궁금함
    같은 하드웨어라도 오픈 펌웨어를 쓰면 FCC 등 인증 기관에 다시 보내 적합성 검사를 받아야 하는 걸까?
    • 그렇게 배포한다면 맞고, 최종 사용자가 직접 수정한다면 아님
      CFR 조항은 바로 기억나지 않지만, FCC는 누구나 소량의 미인증 장치를 사용할 수 있도록 명시적으로 허용함. 그 장치가 다른 규정을 어기면 여전히 위반이지만, 하드웨어나 소프트웨어를 수정했다는 사실 자체가 금지되지는 않음
    • 회색지대라고 봄. 크게 틀리지 않았다면 인증에서는 최악 조건의 무선 성능만 시험하고 문서화하며, 나머지 기술 문서는 PCB 제조 파일이나 펌웨어 빌드 스크립트 같은 현대적 설계 문서라기보다 상위 수준 블록도와 동작 이론을 담은 꽤 자세한 브로슈어에 가까움
      펌웨어의 존재는 거의 인정하지 않는 수준임. 이유도 하나는 있음. WiFi 같은 인증된 비면허 무선 장비는 공익을 위해 변조 방지가 기대되기 때문임. 그래서 FCC가 WiFi 라우터 인증 요건을 논의했을 때, 취약한 쓰레기 WiFi 라우터 전부에 보안 부팅을 의무화하는 식으로 소프트웨어까지 확장하는 방안을 검토했는데, 끔찍한 발상이어서 폐기됐음. 현재로서는 결과 펌웨어가 명확히 규격 밖 방사를 만들지 않는 한 반쯤 합법 또는 반쯤 불법에 가깝다고 봄. 법률가는 아님
    • 맞음
  • https://github.com/esp32-open-mac
  • 예전에 WiFi 비밀번호 프로비저닝 아이디어가 있었음. 패킷 길이를 변조해서 SSID와 비밀번호를 전송할 수 있음
    새 IoT 장치는 당연히 패킷을 복호화할 수 없지만 길이는 관찰할 수 있음. Linux용 샘플 구현도 만들었지만, 이걸 하기에 충분한 저수준 PHY 접근을 제공하는 IoT 칩을 하나도 찾지 못했음
    • TI의 SmartConfig가 길이 필드를 이용해 그렇게 동작함. 그러니 이를 구현한 IoT 칩을 쓰면 되고, TI가 그런 칩을 꽤 많이 제공함
    • https://www.keacher.com/xmas24/는 데이터 통신에 OOK를 쓰고, WiFi 신호에서 에너지를 수확해 배터리가 필요 없다는 장점이 있음
    • 최후의 수단으로 리버스 엔지니어링을 하면 되지 않을까, 아니면 불가능한 걸까?
    • 요즘이라면 그냥 WPA3를 쓰겠음
  • 곁가지 질문인데, 발표자 중 한 명이 DECT 번호를 공개했음. 기술 콘퍼런스에서 쓰려고 아직도 낡은 전화기를 들고 다니는 사람들이 있다는 뜻인가?
    • 행사 중 음성 통신을 위해 여러 네트워크를 운영함. 찾아보니 보통 DECT, SIP, GSM을 같이 씀
      행사 중 지표를 보여주는 상태 대시보드도 있음
      [1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
      [2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
    • 맞음. 해커 캠프에서는 꽤 편리하고, 나도 아직 하나 갖고 있음
      특히 캠핑 구역에서는 WiFi 커버리지가 들쭉날쭉할 수 있어서, 화장실 건물이나 주차장으로 걸어가도 전화를 받을 수 있음. 자체 주파수를 쓰기 때문에 WiFi, Bluetooth, Zigbee가 쓰는 대역을 더 붐비게 하지도 않음. 앱 같은 걸 쓸 수도 있겠지만 DECT는 매우 안정적이고 WiFi보다 도달거리도 훨씬 좋음. Nokia 8210 정도 크기의 괜찮은 Siemens 기기를 갖고 있어서 벽돌 같은 걸 들고 다닐 필요도 없음. 지금은 배터리가 거의 죽었겠지만, 그 시절 배터리답게 교체 가능함
    • 독일의 개인 주택 안에서는 DECT가 아직도 매우 인기 있음
      WiFi 위의 VoIP보다 훨씬 튼튼함
    • CCC 전통이라고 봄
    • 맞음. 다만 GSM이나 SIP도 쓸 수 있고, 실제로는 최신 네트워크를 쓰더라도 번호 공간이 같아서 흔히 DECT 번호라고 부름
      DECT가 먼저 있었기 때문에 내부 전화망의 일반명사처럼 굳어진 것임
  • 해킹이 얼마나 깊은 수준인지 궁금함. 프레임 전송이 단지 레지스터 몇 개를 설정하고 인터럽트를 기다리는 것처럼 보이는데, 실제 작업을 하는 다른 펌웨어 계층과 대화하는 것 아닐까 싶음
    Raspberry Pi Pico 보드가 떠오름. 메인 RP2040 SoC가 있지만 WiFi는 자체 Arm 코어를 가진 별도 WiFi/BT 모듈(CYW43xx)임. WiFi 모듈의 외부 레지스터 인터페이스도 공개 문서화되어 있지 않지만, 오픈소스 드라이버(https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...)가 있어서 명세를 추론할 수 있음. 하지만 이 드라이버도 결국 모듈 내부 Arm 코어에서 도는 소프트웨어와 통신하고, 그 코드는 제조사가 거대한 펌웨어 바이너리 블롭으로 제공함. 그 블롭은 링크된 저장소의 firmware 디렉터리 헤더 파일 안에 실제로 들어 있음. 이번 ESP32 해킹이 이 구조와 어떻게 대응되는지 궁금함
  • 발표자들이 정말 어려 보여서 인상적임. 그렇게 어린 나이에 저 정도 기술 지식을 쌓는 모습을 보는 게 흥미로움
    • 요즘은 모든 것이 공개되어 있음. 아이들이 점점 더 어린 나이에 원하는 것을 배울 수 있음
      체스가 완벽한 예임. 예전에는 많은 지식이 책에 있었고, 종종 외국어 책이었음. 지금은 모든 것이 공개되어 있고, 어느 정도 실력이 되면 상위 100위권 상대와도 가볍게 둘 수 있어서 성장 속도가 더 빨라짐
  • 무차별 모드를 지원하는 MicroPython 라이브러리에 한 걸음 더 가까워졌음
    • 왜? 그건 이미 ESP SDK에서 지원함
  • 다운로드 없이 보기: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...