공식 Chrome 인터넷 상점인 Chrome 웹 스토어에서 100개 이상의 악성 확장 프로그램이 발견되었다. 이들은 Google OAuth2 Bearer 토큰 탈취, 백도어 설치, 광고 사기 실행을 목적으로 한다. Socket 사의 연구진은 이들 확장 프로그램이 조직적인 캠페인의 일부임을 확인했다. 이 캠페인 내에서는 공통의 명령 및 제어 인프라가 사용된다.
공격자들은 5개의 서로 다른 개발자 계정 명의로 확장 프로그램을 게시했다. 확장 프로그램들은 여러 카테고리에 걸쳐 제시되었으며, Telegram 사이드바 클라이언트, 슬롯 및 Keno 형식의 게임, YouTube 및 TikTok 개선 도구, 텍스트 번역 도구, 그리고 다양한 유틸리티가 포함되어 있었다.
연구진은 이 캠페인이 Contabo의 VPS 호스팅에 위치한 중앙 집중식 백엔드를 사용한다는 사실을 밝혀냈다. 공격자들은 서로 다른 서브도메인을 통해 세션 가로채기, 식별 데이터 수집, 명령 실행, 수익화 작업을 구현한다. Socket 사는 이 캠페인 배후에 러시아어권 ‘멀웨어 서비스(Malware-as-a-Service)’ 모델이 존재한다는 징후를 발견했다. 코드 내 인증 및 세션 탈취와 관련된 주석이 이를 뒷받침한다.
데이터 수집 및 계정 탈취는 여러 방식으로 조직되어 있다. 78개의 확장 프로그램을 포함하는 가장 큰 클러스터는 innerHTML 속성을 통해 악성 HTML 코드를 인터페이스에 주입한다. 두 번째로 큰 54개 확장 프로그램 그룹은 chrome.identity.getAuthToken API를 사용한다. 이 API를 통해 공격자들은 사용자의 이메일, 이름, 프로필 사진, Google 계정 ID를 수집한다. 또한 이들은 수명이 짧은 액세스 토큰인 OAuth2 Bearer 토큰을 탈취하여, 애플리케이션이 사용자 데이터에 접근하고 사용자 대신 작업을 수행할 수 있도록 한다.
45개의 확장 프로그램으로 구성된 세 번째 그룹에는 브라우저 시작 시 실행되는 숨겨진 기능이 포함되어 있으며, 이는 백도어처럼 작동한다. 이 기능은 관리 서버로부터 명령을 수신하여 임의의 URL을 열 수 있다. 이 기능 활성화에는 사용자의 상호작용이 필요하지 않다. 연구진이 가장 위험하다고 평가한 확장 프로그램 중 하나는 15초마다 웹 버전 Telegram의 세션을 가로챈다. 브라우저의 로컬 저장소에서 세션 토큰을 포함한 데이터를 추출하여 공격자 서버로 전송한다.
해당 확장 프로그램은 수신 메시지 ‘set_session_changed’를 처리하여 역작업을 수행한다. 사용자의 로컬 저장소를 비우고, 공격자가 제공한 세션 데이터를 그곳에 기록한 후 Telegram을 강제로 새로고침한다. 이를 통해 공격자는 피해자의 브라우저를 다른 Telegram 계정으로 눈치채지 못하게 전환할 수 있다.
또한 연구진은 보안 헤더를 제거하고 YouTube 및 TikTok에 광고를 삽입하는 3개의 확장 프로그램을 발견했다. 하나의 확장 프로그램은 번역 요청을 악성 서버로 리디렉션한다. 또 다른 확장 프로그램은 비활성 상태였으며, 준비된 인프라를 사용하여 Telegram 세션을 탈취하도록 설계되어 있었다.
Socket 사는 이 캠페인에 대해 Google에 통보했다. 그러나 보고서 공개 시점까지 악성 확장 프로그램들은 여전히 Chrome 웹 스토어에서 다운로드 가능한 상태였다. 사용자는 Socket이 공개한 식별자 목록에 따라 설치된 확장 프로그램을 확인하고, 일치하는 항목이 있으면 즉시 제거할 것을 권고받는다.