2P by neo 11달전 | favorite | 댓글 1개

블루투스 LE LED 조명 컨트롤러 역공학, 또는 내 크리스마스 조명을 어떻게 망가뜨렸는가

  • 블루투스 LE를 통해 통신하고 앱이 있는 장치는 집안 자동화 시스템에 통합될 가치가 있음.
  • 예산 친화적인 LED 라이트 스트립을 역공학하여 자동화하는 데 상당한 시간을 할애함.
  • 최근에는 가장 저렴한 £2.38짜리 블루투스 LE 제어 5M 비주소 지정 스트립을 몇 시간 만에 Home Assistant에 연결하는 데 성공함.

1단계. 전선을 통한 바이트

  • 자체 소프트웨어에서 장치를 제어하려면 앱에서 장치로 보내는 블루투스 바이트를 검사하는 것이 첫 단계임.
  • 안드로이드는 이 과정을 쉽게 함. 개발자 모드를 활성화하고, 조명 앱을 설치한 다음 개발자 설정에서 Bluetooth HCI snoop를 활성화하여 로그를 기록함.
  • Wireshark로 로그를 열어 정확한 바이트를 확인하고, 값의 패턴을 찾아 각 동작에 대한 바이트 시리즈를 식별할 수 있음.

2단계. 재생 공격

  • 단순히 조명을 켜고 끄는 것이 목표라면 관찰한 반복 바이트 시리즈가 전원 제어에 충분할 수 있음.
  • gatttool을 사용하여 BLE 장치에 연결하고 바이트를 보내 테스트할 수 있음.

3단계. 안드로이드 앱 디컴파일

  • 앱의 APK를 다운로드하고 jadx에서 열어 내부의 비밀을 확인함.
  • 소스에서 AES를 참조하는 것을 발견하여 암호화된 프로토콜 가능성을 시사함.
  • 암호화된 데이터는 매번 변하지 않으며, 저전력 MCU에서 빠른 복호화가 필요하고, 각 장치마다 고유하지 않은 고정 키가 있을 가능성이 있음.

4단계. 모든 기능

  • 각 앱 기능을 작업하며 보내진 바이트를 기록함.
  • 각 동작을 기록하고, 반복하며, 패턴을 발견하고 캡처된 바이트와 메모를 상관시키는 데 도움이 됨.

5단계. 자동화된 전자 폐기물 생성기

  • 색상 변경을 탐색하는 동안 앱이 빨강, 초록, 파랑에 대해 0x1F 이상의 값을 보내지 않는 것을 관찰함.
  • 8비트 값을 시도해 보고 더 밝은 색상이 잘 작동하는 것을 발견함.
  • 추가 효과가 있는지 궁금해져 간단한 루프로 시도해 봄.
  • 10번째 효과까지는 잘 작동했으나, 11번째에서 비밀 모드를 발견했고, 12번째에서 어둠이 찾아옴.
  • 재부팅을 시도했지만 조명은 다시 켜지지 않았고, 블루투스 광고도 하지 않아 더 이상 연결할 수 없음.
  • 버퍼 오버플로우로 펌웨어가 손상된 것으로 추정됨.
  • 그러나 LED 자체는 표준 주소 지정 가능 LED이므로 다른 마이크로컨트롤러에 연결하여 사용할 수 있음.

내 조명을 어떻게 망가뜨릴 수 있을까

  • 문제가 발생했음에도 불구하고 대부분의 프로토콜을 문서화하고 Home Assistant 사용자 정의 구성 요소를 포함한 Github 프로젝트를 생성함.
  • 작동하지만, 위험을 감수하고 진행해야 함.

GN⁺의 의견

  • 이 글에서 가장 중요한 것은 개인이 집에서 사용하는 스마트 조명을 자동화 시스템에 통합하려는 DIY 정신과 역공학에 대한 열정임.
  • 역공학 과정은 기술적 지식뿐만 아니라 문제 해결 능력과 창의성을 필요로 하며, 이는 초급 소프트웨어 엔지니어에게도 매우 흥미로운 주제임.
  • 실패의 경험을 공유하는 것은 다른 이들이 같은 실수를 반복하지 않도록 도움을 주며, 이러한 공개적인 지식 공유는 오픈 소스 커뮤니티의 핵심 가치 중 하나임.
Hacker News 의견
  • 해독된 패킷 분석

    • 패킷 해독 시도 결과, 고정된 헤더와 5번째 바이트가 켜짐과 꺼짐을 나타내는 1과 0으로 전환되며, 나머지는 0으로 채워진 것을 확인함. 이는 명령어 길이, 명령어("TURN"), 인자(0 또는 1)를 나타내며, 16바이트로 패딩된 것으로 추정됨.
  • 전원 공급 문제

    • WS281x LED 스트립이 매우 밝게 빛나며 많은 전류를 소모함. 100개의 스트립을 모두 최대 밝기로 구동하기에 12V, 3A 전원 공급 장치가 겨우 충분함. 펌웨어가 최대 밝기 255 중 31만을 사용하는 것으로 보아 퓨즈가 나갔을 가능성을 시사함.
  • 암호화된 조명 역공학 시도

    • 암란 60d와 SmallRig RM75 배터리 LED 조명을 역공학하려 했으나 암호화되어 있음을 발견함. 두 조명 모두 같은 협상 과정을 사용하지만 다른 라이브러리를 사용함. Diffie-Hellman 키 교환 과정을 모방하려 했으나, 추가적인 단계에서 무작위로 보이는 숫자(또 다른 키?)의 목적을 파악하지 못해 포기함. 이 글을 읽고 하드코딩된 키를 시도해볼 생각을 하게 됨.
  • BLE 조명에 대한 의견

    • BLE를 사용하는 조명 세트에 대해 충분히 읽었으며, 저자가 언급한 것에 감사함. 이는 아날로그 기술 연결 비디오를 떠올리게 함.
  • BLE 연결 크리스마스 조명 자동화 시도

    • BLE 연결 크리스마스 조명을 자동화하려 했으나 전자 폐기물을 만들어냄. 이제 당신도 만들 수 있음.
  • 메시지 암호화에 대한 의문

    • 메시지가 왜 암호화되어 있는지, 이것이 표준인지에 대한 의문 제기.
  • 암호화에 대한 댓글

    • "공중을 통해 평문을 보낼 수 없다, 안전하지 않다"라는 말과 "걱정 마, AES 암호화를 추가했다"라는 댓글.
  • 조명 해킹에 대한 유머러스한 댓글

    • "내 조명을 어떻게 해킹할 수 있는지 말해줘"라는 말에 "하하! 사랑한다"라는 반응.
  • Govee 조명 역공학에 대한 초보자 질문

    • Govee 조명과 같은 WiFi 조명을 역공학할 수 없는 이유가 무엇인지, MITM(중간자 공격)이 더 어려운 것인지에 대한 초보자 질문.