처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.08.24 24

차량 헤드유닛을 노린 첫 안드로이드 악성코드, 정식 업데이트로 침투했다

Hacker News 원문 보기

자동차 헤드유닛(head unit)은 멀티미디어 기능과 일부 차량 제어를 결합한 장치로, 요즘은 안드로이드를 운영체제로 채택한 제품이 많다. 안드로이드 소스코드가 이미 차량용 활용 사례를 고려하고 있고, 제조사가 빌드 과정에서 자체 시스템 앱을 손쉽게 심을 수 있기 때문이다. 문제는 스마트폰용으로 만들어진 대부분의 앱이 헤드유닛에서도 그대로 동작하며, 이는 악성코드에도 해당한다는 점이다. 카스퍼스키가 2026년 6월 발견한 신종 안드로이드 악성코드는 바로 이 지점을 파고들었다. 이 악성코드는 정상 앱처럼 설치되면서도 정상 소프트웨어로 위장하려는 시도조차 하지 않았고, 사용자 인터페이스가 아예 없었다. 사용자 모르게 기기에 도달했을 가능성을 시사하는 대목이었고, 실제로 조사 결과 정식 소프트웨어의 업데이트 기능이 감염 통로였음이 드러났다.

정식 업데이트 기능이 통로가 되다

감염의 핵심에는 DoFun 헤드유닛의 시스템 앱 TWCore가 있다. TWCore는 분석 데이터 수집과 소프트웨어 업데이트를 담당하는 정상 구성요소다. 업데이트 방식은 단순한데, cardoor.cn 하위 도메인에서 운영되는 MQTT 메시지 브로커가 어떤 APK를 내려받아 설치할지 알려주는 메시지를 헤드유닛으로 보낸다. 이 메시지 객체에는 installNotExists라는 불리언 플래그가 있어, 값이 false일 때만 TWCore가 해당 앱의 기존 설치 여부를 확인한다. 반대로 true로 설정하면 원래 기기에 없던 앱도 설치할 수 있다. 카스퍼스키 텔레메트리는 TWCore의 외부 캐시 디렉터리 아래 push/apk 경로에서 미확인 악성코드를 포착했고, 관측된 모든 사례에서 설치 주체의 패키지명이 TWCore와 일치하는 com.tw.core였다. 즉 공격자는 정상 배포 채널을 그대로 이용해 악성 APK를 밀어넣은 셈이다. 카스퍼스키는 이 배포 구조를 벤더에 통지했고, 벤더는 이후 보안 문제를 수정했다고 밝혔다.

여러 단계로 몸을 숨기는 페이로드

TWCore가 설치하는 것은 JarService라는 작은 드로퍼로, 역시 UI가 전혀 없다. 이 앱은 코드 내부에 암호화된 블록으로 저장된 데이터를 풀어내는데, 각 블록은 단일 바이트 키로 XOR 암호화되어 있고 그 키가 블록마다 선형으로 이동한다. 복호화된 데이터에는 다음 단계 페이로드의 버전과 진입점 정보가 담겨 있다. 분석된 버전에서 2단계 진입점은 com.c.j.qbh 클래스의 wa 메서드였다. 2단계는 악성 로더로, 암호화된 문자열을 클래스명으로 삼아 리플렉션으로 3단계를 실행하고, 임플란트 정보를 공격자 서버에 POST로 전송한다. 서버가 돌려주는 응답의 dexUrl 필드에는 3단계 다운로드 링크가 들어 있으며, 내려받은 데이터의 첫 단일 바이트 정수와 뒤이은 4바이트 부동소수점 값이 각각 문자열과 페이로드를 복호화하는 열쇠로 쓰인다. 3단계 진입점은 com.ast.sdk.BillingMain 클래스의 init 메서드였다. 연구진이 링크에 포함된 버전 번호를 바꿔가며 시도한 결과 서로 다른 7개 변종을 확보했는데, 가장 이른 3.57 버전은 다른 복호화 알고리즘을 써 초기 감염 체인의 로더가 달랐을 가능성을 보여준다.

3단계는 기본값으로 90분마다 /cpc/api/task로 화면 해상도, 기기 모델, 연결된 와이파이 SSID, MAC 주소 등 감염 기기 정보와 설정 버전을 담아 POST를 보낸다. 설정이 오래됐으면 서버가 새 C2 주소와 요청 경로가 담긴 최신 설정을 반환하며, 연구 시점의 최신 설정 버전은 3.82였다. 설정 갱신이 필요 없으면 서버는 공격자들이 productId라 부르는 정수 명령 식별자를 돌려주고, 악성코드는 이를 SharedPreferences에 직렬화 JSON으로 저장한다. 알 수 없거나 버전이 낡은 식별자에 대해서는 /cpc/api/xml로 명령 내용을 받아오며, 각 명령의 tagName이 실행 클래스에 매핑된다.

목표는 프록시 봇넷

조사 시점에 구현된 명령은 아홉 개였고, 광고 노출, 클릭커 역할의 광고 사기, 추가 악성코드 다운로드 등의 기능을 갖췄다. 다만 실제 공격에서는 소수의 명령만 쓰였는데, 보고서 발행 시점 기준으로 활용된 것은 loadlib2와 http였다. loadlib2로 내려받는 것은 zhima라는 리버스 프록시 모듈로, 노키아 딥필드 긴급대응팀이 비슷한 시기에 TV 셋톱박스에서 독립적으로 발견해 기술한 바로 그 모듈이다. 결국 공격자의 최종 목표가 프록시 봇넷 구축이라는 점이 확인된다. zhima 역시 다운로드 링크에 버전 번호가 있어 연구진은 버전 57을 가장 이른 변종으로 하는 8개 변종을 찾아냈다.

귀속 판단의 실마리는 2단계 로더가 만든 mosdk-host-loader라는 스레드 이름에서 나왔다. 이를 추적하자 com.abc.nexus 패키지명으로 여러 셋톱박스에 설치된 악성 앱이 나왔고, 그 안의 JarService 유사 드로퍼를 실행하는 서비스 이름이 AdmoyuService였다. 여기서 moyu는 BADBOX 악성코드 플랫폼과 연결된 행위자 중 하나인 MoYu Group을 가리키는 것으로 해석됐다. 네트워크 인프라의 광범위한 중첩까지 더해 카스퍼스키는 이번 공격을 MoYu Group의 소행으로 높은 확신을 갖고 귀속했다. 또한 zhima C2 중 하나인 128.14.210.58로 해석되는 admin.uipoxy.com에는 초대 코드만 있으면 누구나 가입할 수 있는 zhima 관리자 패널이 있었고, 이용약관 링크는 주거용 프록시 판매 업체 PXYEDGE의 pxyedge.com, 저작권 문구는 또 다른 프록시 업체 ProxyForU로 연결됐다.

헤드유닛도 이제 보호 대상

이번 사례가 국내 실무자에게 던지는 함의는 분명하다. BADBOX 봇넷을 무력화하려는 보안업계와 수사기관의 노력에도 관련 행위자들은 활동을 이어가고 있으며, 그 배포 방식은 사전 설치된 백도어부터 감염된 IPTV 앱 빌드까지 다양하다. 특히 이번처럼 시스템 앱의 정식 업데이트 기능을 그대로 악용하는 방식은 사용자가 개입할 여지가 거의 없고 정상 채널이라 탐지도 까다롭다. 무엇보다 이것이 헤드유닛을 겨냥한 최초의 악성 앱이라는 점은, 그동안 위협 모델에서 사실상 빠져 있던 차량용 안드로이드 플랫폼도 이제 스마트폰과 마찬가지로 방어 대상으로 다뤄야 함을 의미한다. 아프터마켓 헤드유닛과 셋톱박스처럼 인터넷에 상시 연결되면서도 관리 사각지대에 놓인 임베디드 안드로이드 기기의 공급망과 업데이트 서버를 점검 항목에 포함시킬 필요가 있다.

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

AI 도구, 직접 활용해보세요

AI 시대, 코딩으로 수익을 만드는 방법을 배울 수 있습니다.

AI 활용 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.