1P by GN⁺ | ★ favorite | 댓글 1개
  • 중국에서 구입한 Ethernet-to-USB 어댑터가 악성코드를 내장했다는 주장이 퍼졌지만, 확인된 단서는 구형 RJ45-to-USB 칩의 드라이버 배포 방식에 가까웠음
  • CrowdStrike Falcon 스캔의 “러시아어 요소”는 Igor Pavlov의 7-Zip 자동 압축 해제 EXE 특성과 맞물렸고, 파일 내용도 CoreChips Shenzhen의 SR9900용 공개 드라이버와 일치해 보였음
  • SR9900은 정보가 거의 없는 칩이지만 Realtek RTL8152B의 직접 클론으로 보이며, USB 2.0·100BASE-TX 장치가 자체 저장소로 드라이버를 제공하던 Windows 7 전후 맥락과 맞음
  • PCB의 25x40형 512 kB SPI 플래시는 패킷 탈취 저장소가 아니라, 생산 도구가 ISO 9660 이미지와 Windows 드라이버를 그대로 기록해 가상 CD-ROM처럼 쓰는 구성으로 확인됨
  • SR9900 내부 USB·Ethernet 마이크로컨트롤러 코드는 남은 미확인 영역이지만, 이번 사례만으로 “이상한 하드웨어”를 곧바로 악성으로 단정할 근거는 부족함

공급망 악성 하드웨어 의혹의 출발점

  • 정보보안 분야에서 대규모 공급망 사보타주 주장은 자주 등장하지만, 실제로는 대부분 거짓인 경우가 많다는 전제에서 출발함
    • 이런 공격이 불가능해서가 아니라 실행이 복잡하고 오래 걸리며 위험하기 때문임
    • 현실적으로는 자격 증명을 훔치거나 악성 파일을 내려받게 만드는 방식이 더 단순함
  • 한 젊은 창업자가 중국에서 구입한 Ethernet-to-USB 어댑터에 악성코드가 사전 탑재됐다고 소셜미디어에서 주장하면서 논란이 커짐
    • 주장에는 가상머신 회피, 키 입력 캡처, 러시아어 요소 사용 같은 표현이 포함됐음
    • 관련 게시물은 수백만 조회수를 얻었지만, 구체적인 기술 정보는 불명확했음

공개 스캔과 드라이버 파일 확인

  • 게시자가 공유한 CrowdStrike Falcon 스캔 보고서는 모호했고, 결정적 증거라기보다 혼선을 주는 단서에 가까웠음
  • 분석 대상 바이너리는 Igor Pavlov가 만든 오픈소스 압축 프로그램 7-Zip 기반의 자동 압축 해제 EXE였음
    • 러시아어 요소는 작성자의 국적에서 비롯된 흔적으로 볼 수 있음
    • 드라이버를 설치하는 자동 압축 해제 아카이브라는 점이 의심스러워 보인 동작 대부분을 설명함
  • 아카이브 내용은 CoreChips Shenzhen이 만든 RJ45-to-USB 칩용 서명된 공개 드라이버 2.0.7.0과 일치해 보였음
    • 동봉된 .inf 파일에서는 회사가 Corechip Semiconductor라는 이름도 사용함

SR9900 칩과 구형 설계 맥락

  • 드라이버는 SR9900이라는 칩을 참조함
    • 칩과 제조사에 대한 공개 정보는 거의 없음
    • 조사 결과 SR9900은 Realtek RTL8152B의 직접 클론으로 보였음
  • 영어 제품 소개에는 “SR”이 “Supereal”을 뜻한다는 암시가 있고, Supereal이라는 브랜드명은 과거 업계에 문제를 일으킨 가짜 FTDI FT232RL 칩 맥락에서도 등장함
  • 이 계보가 중요한 이유는 원본 Realtek 설계가 2013년 데이터시트 기반의 오래된 설계이기 때문임
    • 장치는 100BASE-TX와 USB 2.0을 지원함
    • Windows 7 시절의 주변기기 관행과 맞닿아 있음
  • 당시에는 CD-ROM 드라이브가 사라지는 중이었지만, 모든 컴퓨터가 항상 온라인이라고 가정하기도 어려웠음
    • 일부 주변기기가 자체 드라이버를 담은 대용량 저장 장치로 자신을 노출하는 방식은 그 시절 맥락에서 자연스러웠음
    • 보안 관점에서도 드라이버 파일을 전달하는 다른 임시 방식보다 특별히 더 낫거나 나쁘다고 보기 어려웠음

SPI 플래시의 실제 용도

  • 분해 사진에는 SR9900 옆에 25x40형 시리얼 플래시 IC가 장착된 단순한 PCB가 보였음
    • 512 kB 플래시가 펌웨어용인지, 탈취한 패킷 저장소인지가 핵심 의문이었음
  • SR9900과 RTL8152B 문서는 동반 플래시 IC의 목적을 충분히 설명하지 않았고, 회로도 이미지 검색에서도 원래 Realtek 칩의 시리얼 핀에 무언가 연결된 설계는 찾지 못했음
  • SPI 버스 자체는 단순함
    • 호스트가 원하는 속도로 클록 신호를 제공함
    • 매 클록 상승 에지에서 주변장치는 “serial in”의 1비트를 읽고, 호스트는 “serial out”의 1비트를 읽음
    • 핸드셰이크, 헤더, 패리티 비트, 흐름 제어가 없음
  • 일반적인 시리얼 플래시 읽기는 READ 명령 0x03과 3바이트 주소를 보낸 뒤 데이터를 연속으로 받는 구조임
    • 이 때문에 실제 동글을 구매해 메모리 내용을 덤프하는 방식도 가능했음
  • CoreChips 웹사이트에서 중국어 원문을 찾고 검색한 끝에 “SR9900 series chip Windows system mass production tool” 관련 오래된 중국어 포럼 글과 비밀번호·유료 다운로드 아카이브를 찾음
    • “SR9900(A)设计资料1018.rar”를 2.99달러에 받아 확인함
    • 아카이브에는 복고풍 UI의 SR9900Efuse 생산 도구가 포함돼 있었음
  • 함께 들어 있던 168 kB ISO 9660 파일시스템 이미지에는 자동 압축 해제 Windows 드라이버가 들어 있었음
    • 생산 도구는 .iso 파일을 SPI 플래시에 그대로 기록함
    • 칩은 물리 CD-ROM을 대체하는 “소프트웨어 정의” CD-ROM처럼 동작함
    • 디스크 이미지는 여기에서 받을 수 있고, 비밀번호는 rj45
  • CD-ROM 이미지는 “ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS”로 만들어졌음
    • UltraISO는 Windows XP 시절 느낌의 도구로 소개됨
    • 실행 조건으로 Intel Pentium 166MHz 이상이 필요함

선택적 가상 CD-ROM 기능과 남은 한계

  • 메인 아카이브에는 “SR9900(A)设计前必看.docx” 문서도 포함돼 있었음
    • 자동 번역된 문구에 따르면, SR9900을 USB 네트워크 카드로 사용할 때 Windows 드라이버 설치용 가상 광학 드라이브로 SPI를 쓸 수 있음
    • SPI 플래시에는 Windows용 SR9900 드라이버를 미리 구울 수 있음
    • 플래시 칩 사용은 선택 사항이라고 명시돼 있었음
  • 이번 사례의 이상한 점은 악성 동작이 아니라 구형 주변기기 드라이버 배포 방식에서 나온 것으로 정리됨
    • 하드웨어 연구실 없이도 공개 자료 검색과 인내심만으로 핵심 의문을 해소할 수 있었음
  • 완전히 확인하지 않은 영역은 SR9900 IC 내부의 두 작은 마이크로컨트롤러 코어임
    • 내부에는 USB와 Ethernet 코어가 있고 각각 내부 코드를 실행함
    • 칩 제조사가 연루됐다고 가정한다면 내부를 들여다보는 것이 가능할 수 있음
    • Realtek은 RTL8152용 오픈소스 Linux 드라이버를 제공하며, 해당 드라이버는 펌웨어를 메모리에서 패치함
    • 눈으로 보기에는 암호화나 서명이 적용된 것처럼 보이지 않았음
  • 악성 USB 동글 가능성은 완전히 배제할 수 없음
    • 이란 핵 프로그램 과학자라면 걱정할 만하다는 표현이 나옴
    • 전략적으로 중요한 민간 기업의 CISO라면 일정한 주의가 필요함
    • 가정용 네트워킹에서는 이번 사례만으로 즉각적인 위협으로 볼 근거가 부족함

댓글과 토론

Hacker News 의견들
  • 이 표현은 오해를 부름. 문제였던 건 가짜 칩 자체라기보다, 가짜를 감지하면 FTDI 공식 드라이버가 동작 중이던 하드웨어의 PID를 0000으로 바꿔 더 이상 인식되지 않게 만든 일이었음: http://www.rei-labs.net/changing-ftdi-pid/

    • 일부는 잘 동작했지만, 내가 가진 것 중에는 CBUS 핀에서 이상한 동작을 하는 것도 있었음
    • 가짜 칩은 불확실성을 만들고 여러 종류의 기기에 퍼져 오염시켰다는 점에서도 골칫거리였음. 조용히 섞여 들어간 위조 부품은 용납하기 어렵다
  • “Intel Pentium 166MHz 이상이 필요하다”는 문구에서 웃었음. 글도 재미있고, “똑똑한 사람이 지루해서 상식적으로는 뻔한 결론을 끝까지 파고드는데, 그걸 증명하려면 의외의 창의성과 근성이 필요한” 장르가 참 좋음

    • 메모리 칩 내용을 덤프하려고 Dark Web(amazon.com)에 가서 동글 하나를 살 준비가 되어 있었다는 부분도 빼놓을 수 없음
    • 진실은 복잡하고, 비싸고, 불편하다는 좋은 예임. 증거 없이 나쁜 계획을 가진 사악한 국가 단위 행위자를 가정하는 편이 이 글처럼 덤불을 헤치고 들어가는 것보다 훨씬 쉽고, 시간과 전문성 면에서도 훨씬 싸게 먹힘
      자신이 피해자이며 음모를 밝혀냈다고 말하는 편이, 이것이 그저 엔지니어링에서 흔한 짜깁기식 결과물이었다는 걸 받아들이는 것보다 편하기도 함. 글쓴이에게 박수를 보냄
    • 재미있기도 하지만, 이런 작업은 원글에 깔린 외국인 혐오를 드러낸다는 점에서 중요하다고 봄. 회로기판에 플래시 칩이 하나 있다? 세상에, 중국 스파이웨어임이 틀림없다!
      중국 스파이웨어가 문제가 아니라는 뜻은 아님. 하지만 그걸 판별할 기본 기술 역량이 없다면 “중국! 중국! 중국!” 하고 뛰어다니면 안 됨. 정치인들이 가짜 뉴스를 집어 들어 멍청한 정책의 핑계로 삼는 방식이고, 사회에 해롭다
  • 이 “악성” 동글 트윗을 보자마자 예전에 내가 작업했던 것과 똑같은 물건이라는 걸 알아봤음. 악성이라기보다 그냥 성가신 물건임
    https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
    내 경우에는 CD 드라이브로 보이지 않게 하려고 SPI 플래시 모듈을 비활성화했는데, 이 글의 작성자는 SPI가 선택 사항이라는 문서까지 찾아냈음. 재미있게도 이제 이 글은 리플래시해서 진짜 악성 RJ45 동글을 만드는 도구까지 제공하게 됨

    • 플래시 칩 사진 왼쪽 위의 U3는 무슨 일이 있었던 걸까?
      3핀 SOT23 패키지용 다이오드 풋프린트를 넣어 놓고, 특수 부품 재고가 없어서 SOD323 다이오드를 두 핀 사이에 30도쯤 기울여 붙인 것처럼 보임
    • 아이러니함. 보안 문제의 대부분은 선의로 하드웨어와 소프트웨어를 분해하고 “해킹” 방법을 설명하는 사람들이 만든다고 확신함
      의도치 않은 결과라면 애초에 잘해야 은닉에 의한 보안이었을 뿐이고, 사람들이 거기에 의존하지 않도록 드러나는 게 맞음
    • 가짜 CD에 autorun.inf를 추가할 수 있을까?
    • CS와 S0를 쇼트하면 왜 동작하지 않게 되는 걸까?
  • USB 기기가 저장장치처럼 가장해서 자체 드라이버를 제공하는 방식을 꽤 좋아함. 요즘의 “올바른” 방식은 Microsoft 서버에 이것저것 올려두고, 꽂히면 필요한 걸 내려받게 하는 것이겠지만, 수동으로 드라이버를 설치해야 하는 물건을 충분히 겪어봐서 그게 보기만큼 쉽지 않다는 걸 앎. 예를 들어 나는 벤더별 ADB 드라이버를 내려받아야 하는 일이 매우 잦음
    어쨌든 주변기기가 초기 설정을 도와주는 건 영리한 방식이고, 드라이버가 기기 안에 들어 있으면 정식 다운로드 출처를 찾아 헤매는 것보다 조금 더 쉬워짐

    • 애초에 자체 드라이버가 필요 없는 기기가 더 좋음. 특수 드라이버가 필요한 물건도 있겠지만, USB 메모리나 마우스 같은 건 기본 드라이버로 그냥 동작하고, 원하면 인터넷에서 업데이트를 받게 하는 편이 맞음
    • 리눅스에서 바로 동작하는 쪽이 더 고맙다. 실제로 대부분 그렇게 되고, 오늘날 리눅스가 최고의 플러그 앤 플레이 운영체제라고 봄
      하지만 여러 동작 모드는 4G/LTE USB 동글 같은 기기를 설정하기 어렵게 만들었음. USB 저장장치로 보이거나, 어떤 종류의 직렬 장치로 보이거나, CDC-ACM 모뎀 장치 비슷한 것으로 보이고, 올바른 모드로 바꾸려면 도구와 벤더별 AT 명령을 조합해야 함. 그냥 꽂으면 바로 제 역할을 하는 단순한 기기로 돌아가고 싶음
    • 이 경우에는 좀 더 말이 됨. RJ45 동글 드라이버를 설치해야 하는 상황이라면 대개 네트워크 연결이 없는 때일 가능성이 높기 때문임
    • NuBus와 비슷한 셈인가? 기억이 맞다면 초기 Macintosh용 카드는 보통 최소한의 기본 드라이버를 ROM에 담고 있었고, Forth나 680x0 어셈블리로 작성되어 있었음
  • 현재 최첨단이 어떤지는 모르겠지만, 오랫동안 USB 주변기기 IC에 작은 플래시를 붙여 VID/PID와 기타 USB 설정 정보를 저장하는 일이 흔했음. 그래야 꽂았을 때 장치가 제대로 열거되고 올바른 드라이버와 연결될 수 있었기 때문임. 설계 시점에 따라서는 공급망에서 쉽게 구할 수 있는 가장 작은 용량이 512kB였을 수도 있어서, 수십 바이트를 저장하려고 그런 칩을 쓰는 것도 이상하지 않았음
    ISO 부분은 조금 이상하지만, 솔직히 말하면 대용량 USB 저장장치를 제한하는 기업 IT 보안 정책을 우회하려는 창의적인 방식임. 광학 드라이브는 다른 장치 클래스를 써서 대부분의 제한을 피할 가능성이 있고, 광학 드라이브와 네트워크 어댑터가 결합된 복합 장치로 열거되면 “USB 드라이브”가 잠긴 컴퓨터에서도 자체 드라이버를 설치할 수 있을 것 같음

    • 한동안 Windows는 USB 메모리보다 디스크의 자동 실행을 더 쉽게 실행했음. 그 디스크가 에뮬레이션된 USB 디스크 드라이브 안에 있더라도 그랬음
  • 이상한 건 플래시는 추가해서 비용을 들이면서도 자기 절연 부품은 빼버렸다는 점임. 직렬 커패시터만 있고, 잭도 작아서 통합 자기 부품이 들어간 것 같지 않으며, 직렬 커패시터를 같이 넣는 것도 말이 안 됨

    • 와, 눈썰미 좋다. PCB가 자기 부품이나 직렬 커패시터 둘 중 하나를 넣을 수 있게 설계되어 있고, 커패시터 쪽은 DNP 처리되어야 했던 것으로 보임
      내가 산 USB 이더넷 동글에 자기 절연 부품이 없다는 걸 알게 되면 정말 화날 것 같음
  • “악성” USB 이더넷 동글이 있느냐면, 당연히 있음. 다만 이 물건은 아님
    https://hak5.org/products/lan-turtle

    • 글에서도 이 점을 명시적으로 인정함: 악성 하드웨어는 정보기관과 민간 침투 테스터가 모두 써온 전례가 많고, 10여 년 전에는 글쓴이도 업무용으로 악성 플라즈마 볼을 만들었다고 함. 여기서 중요한 질문은 악성 RJ45-USB 어댑터를 만들 수 있느냐가 아니라, 이번 물건이 정말 “중국이 또 그랬다”는 사례인지였음
    • 악성 이더넷 패치 케이블도 빼놓을 수 없음: https://imgur.com/Gpgj7w7
  • RJ45 엄격주의자 입장에서는 이건 8P8C라고 불러야 함. 이만 나가보겠음

    • 커넥터를 RJ45라고 부르는 건 괜찮지만, 이 물건을 “RJ45 동글”이라고 부르면 눈꺼풀이 떨림. 이건 이더넷 동글임. RJ45는 다른 여러 용도로도 쓰일 수 있음
      예를 들어 많은 네트워크 장비의 콘솔 포트용으로 USB를 RS232 직렬로 변환하는 “RJ45 동글”도 본 적이 있음
    • 오늘 배움. 이 커넥터를 25년쯤 써왔는데도 8P8C라고 부르는 건 처음 들었음. 예전에 Amiga끼리 연결할 때 동축 케이블을 썼듯 이더넷이 다른 물리 계층도 썼다는 건 알고 있었지만, 오늘에서야 8P8C를 알게 됨
    • Network+를 공부한 사람은 RJ45가 언급될 때마다 이 댓글을 달지 말지 고민하게 되는 것 같음
    • 나가지 말고 남아서 계속 알려줘야 함. 중요함. 둘은 양방향으로 서로 바꿔 쓸 수 있는 개념이 아니기 때문임
    • RJ31X나 RJ38X도 있음. 둘 다 키가 없는 구성의 8P8C 모듈러 커넥터를 사용했음
  • USB-1000BASE-T, 요즘은 2.5GBaseT 동글 전반에서 성능을 신경 쓰는 사람이라면, USB 장치인 것과 PCI Express 장치인 것의 차이를 알아두는 게 좋음
    최신 리눅스 커널을 쓰는 노트북에 핫플러그한 뒤 sudo lsusb -vsudo lspci -v 중 어디에 보이는지를 보면 됨
    네이티브 PCIe 장치는 훨씬 좋은 성능을 내고, 2.5GBASE-T 선속도까지 가능하며, USB 위의 Thunderbolt 구현을 통해 호스트와 통신함. USB 전용 장치도 괜찮게 동작할 수는 있지만, 싼 데는 이유가 있음. 물론 저가형 노트북에는 Thunderbolt 구현 자체가 없을 수도 있으니 그것도 고려해야 함

    • 2.5GBaseT만 있는 게 아님. 나는 [1]의 10GBase-T Thunderbolt 동글을 갖고 있음. 일반 동글보다 조금 크고, 내장 케이블 대신 USB-C 암 포트가 있으며, 따뜻해지긴 함
      그래도 기본적으로는 동글이고, Mac에서 iperf3로 9.4Gbit/s가 나옴. 당연히 PCIe 장치로 표시됨
      [1] https://www.amazon.com/gp/product/B0DHSWSSBY
    • USB 방식이 왜 더 나쁜지 자세히 설명해줄 수 있을까? Wikipedia에 따르면 2008년의 USB 3.0도 5Gbit/s에 도달할 수 있으니, 순진하게 보면 2.5GbE 선속도는 쉽게 나와야 할 것 같음
    • Realtek RTL8156, 즉 USB 2.5G 이더넷은 빠르고 매우 안정적임. 서버 용도로도 괜찮고, i225보다 이걸 택하겠음
    • Thunderbolt/USB4가 아니면 USB를 통한 PCIe는 없는 것 아닌가? 혹시 다른 게 있나?
      USB 포트만 있고 성능을 신경 쓴다면 더 큰 차이는 USB 이더넷 장치가 CDC-NCM을 구현했는지, 아니면 CDC-ECM만 구현했는지일 것임. CDC-ECM은 프레임을 하나씩 드라이버에 보내고 드라이버가 하나씩 확인·처리해야 해서 CPU 작업이 많이 생기는 반면, 더 새로운 CDC-NCM은 프레임을 묶어서 보냄
      내 노트북에서는 1Gbit ECM 동글로도 기가비트 속도는 나오지만 CPU 코어 하나를 100% 쓰고, 1Gbit NCM 동글은 CPU 사용량이 거의 없음
    • 실수로 PCIe 방식 동글을 샀다면 내가 연결할 USB 포트 어디에서도 동작하지 않을 것 같음. 내가 알기로는 USB 포트만 있으니까. 아니면 보통 USB 장치로 폴백해서 동작하나?
  • 이더넷 포트로 해로운 연결을 만드는 건 극도로 어렵지만, USB 포트로 해로운 연결을 만드는 건 매우 쉬움. 있는 그대로 불러야 함. 이건 이더넷 소켓도 달린 악성 USB 동글