카스퍼스키, 앱스토어에서 스크린샷 염탐 악성코드 발견 주장
카스퍼스키 연구진이 애플 앱스토어에서 숨겨진 광학 문자 인식(OCR, Optical Character Recognition) 스파이웨어를 포함한 앱을 발견했다고 발표했어요. 이 악성코드는 암호화폐를 훔치도록 설계되었다고 하네요.
연구진은 ‘ComeCome’이라는 iOS 앱에서 악성코드를 발견했는데, 이 앱은 구글 플레이 스토어에서도 사용할 수 있으며 음식 배달 서비스를 제공한다고 주장하고 있어요. 카스퍼스키의 드미트리 칼리닌과 세르게이 푸잔에 따르면, 이 앱은 피해자의 암호화폐 지갑 키를 범죄자에게 전달하는 역할도 한다고 합니다.
어떻게 작동하나요?
이번 주에 이 앱은 “악성 SDK/프레임워크가 내장”되어 있어서 특정 시점에 OCR 플러그인을 해독한다고 해요. OCR 코드가 실행되면 앱은 모바일 장치에서 스크린샷을 검색하여 암호화폐 지갑 복구 문구, 즉 시드 문구(seed phrases)가 포함되어 있는지 확인하고, OCR이 이를 추출하여 스파이웨어가 빼돌리는 방식으로 작동합니다.
왜 시드 문구를 안전하게 보관해야 할까요?
훔친 시드 문구를 손에 넣으면 앱의 배후 조종자는 피해자의 지갑을 제어하고 자금을 빼돌릴 수 있어요. 그렇기 때문에 시드 문구를 비밀로 유지하고 오프라인에 보관하며 휴대폰에 이미지로 저장하지 않아야 합니다.
카스퍼스키 팀은 “저희 조사 결과 공격자들은 암호화폐 지갑 복구 문구를 표적으로 삼고 있었으며, 이는 피해자의 암호화폐 지갑을 완전히 제어하여 자금을 훔치는 데 충분했습니다.”라고 밝혔습니다.
앱 마켓의 허점
연구진은 “불행히도 공식 마켓플레이스의 엄격한 심사와 OCR 기반 암호화폐 지갑 절도 사기에 대한 일반적인 인식에도 불구하고 감염된 앱은 여전히 구글 플레이와 앱 스토어에 진입했습니다.”라고 덧붙였어요. 또한, 이 앱들은 “앱 내부에 숨겨진 악성 임플란트의 징후가 없고” 무해해 보이기 때문에 검사를 피했을 수 있다고 지적했습니다.
연구진은 “이번 사례는 iOS가 악성 앱의 위협에 영향을 받지 않는다는 신화를 다시 한번 깨뜨립니다.”라고 강조했습니다.
SparkCat의 등장
연구진은 이 시드 문구 탈취 악성코드를 SparkCat이라고 명명했으며, 이는 “이러한 문구뿐만 아니라 스크린샷에 캡처되었을 수 있는 메시지나 비밀번호와 같은 갤러리의 다른 민감한 데이터도 훔칠 수 있을 만큼 유연합니다.”라고 언급했습니다.
카스퍼스키 팀에 따르면, 이 암호화폐 절도 시도는 “최소한” 유럽과 아시아의 안드로이드 및 iOS 사용자를 대상으로 합니다. 구글 플레이 스토어의 여러 앱에 SparkCat이 포함되어 있으며, 이 앱들은 242,000회 이상 다운로드되었다고 합니다.
공급망 공격인가, 개발자의 고의적인 행위인가?
분석가들은 SparkCat이 공급망 공격으로 이러한 애플리케이션에 침투했는지, 아니면 앱 개발자의 고의적인 행위인지 확인할 수 없다고 해요. 카스퍼스키에 따르면 애플은 악성 ComeCome 애플리케이션을 iOS 스토어에서 삭제했습니다. 또한, 이 앱은 러시아 연구소에서 지명한 다른 앱들과 함께 구글 플레이에서도 사라졌다고 합니다.
SparkCat은 악성 앱 내의 Spark라는 고도로 난독화된 모듈을 지칭합니다. 이 스파이웨어는 주로 Java로 작성되었으며, 원격 명령 및 제어(C2, Command-and-Control) 서버와 통신하기 위해 Rust로 구현된 식별되지 않은 프로토콜을 사용합니다.
SparkCat의 작동 방식 (Android 버전)
C2 서버에 연결한 후 Spark의 안드로이드 버전은 구글의 ML Kit 라이브러리에서 TextRecognizer에 대한 래퍼를 다운로드하여 사용하여 이미지에서 문자를 추출합니다. 악성코드는 사진에서 라틴어, 한국어, 중국어 또는 일본어 문자를 인식하는 시스템 언어에 따라 다른 OCR 모델을 로드합니다.
만약 사용자가 합법적인 타사 Easemob HelpDesk SDK를 통해 제공되는 악성 앱의 지원팀과 상호 작용하는 경우, 소프트웨어는 장치의 사진 갤러리에 대한 액세스를 요청합니다. 액세스가 허용되면 OCR을 사용하여 스크린샷을 스캔하여 암호화폐 지갑 복구 문구를 추출하고 C2 서버로 보냅니다.
따라서 앱 개발자는 사용자가 두 가지를 하기를 바랍니다. 복구 문구의 스크린샷을 찍은 후 갤러리에 대한 액세스 권한을 부여하는 것이죠. 안타깝게도 이러한 앱을 만들 가치가 있을 만큼 충분한 사용자가 이러한 실수를 저지르는 것으로 보입니다.