연구진이 Hirudo라는 새로운 Android 악성 코드를 발견했다. 이 악성 코드는 기기 내 정상적인 은행 앱을 변조된 버전으로 교체해 은행 서비스 사용자를 공격한다. 모바일 기기 보안 기업 ThreatFabric의 보고서에 따르면, 이 악성 코드는 코드 삽입 엔진을 사용해 앱 서명 검사와 접근성 서비스 및 Play Integrity 검사를 우회한다.
8개 은행 앱의 악성 버전이 발견됐으며, 여기에는 최소 7개 인도네시아 은행의 앱이 포함됐다. 또한 이 캠페인은 중국, 인도, 멕시코, 모로코, 태국의 금융기관을 표적으로 삼았지만, 피해자 수는 아직 알려지지 않았다.
Hirudo는 어떻게 기기에 침투하는가?
이 악성 코드는 일반적으로 쇼핑이나 엔터테인먼트 콘텐츠 기능을 제공하는 정상적인 앱처럼 보이는 앱을 통해 유포된다. Shopora, 1V1 X, ZoyaTV, KoiShort 등이 그 예다. 이러한 앱은 악성 코드의 다운로더로 작동한 뒤 가짜 업데이트 알림을 표시해 사용자가 접근성 권한을 비롯한 추가 권한을 부여하도록 유도한다.
권한이 활성화되면 악성 앱은 실제 은행 앱을 제거한 다음 변조된 버전을 내려받아 설치하려고 한다. ThreatFabric은 이 과정이 공격자에게 위험하다고 설명한다. 사용자가 두 단계에서 이를 중단할 수 있기 때문이다.
보호 메커니즘을 우회 수단으로 전환
변조된 버전은 은행 앱의 원본 코드 대부분을 유지하지만, 오픈 소스 프레임워크인 YAHFA와 Dobby를 기반으로 한 엔진을 추가한다. 이 엔진은 은행 앱 프로세스 자체에서 작동하므로 앱 외부에서 공격하는 대신 검사 결과를 조작할 수 있다.
- 조회 시 원본 서명 인증서를 교체한다.
- 활성화된 접근성 서비스를 숨긴다.
- 스크린샷 보호를 비활성화해 원격으로 화면을 보고 녹화할 수 있도록 한다.
- 키와 연결된 증명서를 수정하고, 운영자가 통제하는 서버를 통해 Play Integrity 요청을 전달한다.
공격자는 무엇을 훔칠 수 있는가?
Hirudo는 은행 계정 비밀번호, 비밀 결제 코드, 기기 잠금 해제 비밀 정보, SMS 메시지를 훔칠 수 있으며, 휴대전화 화면을 스트리밍하고 두 대의 카메라를 제어할 수도 있다. 또한 가짜 결제 페이지를 사용해 결제 코드를 수집한 뒤 데이터 탈취를 숨기기 위해 가짜 성공 결과를 표시한다.
ThreatFabric은 보안이 설정되지 않은 백엔드 패널에서 앱 인증 정보가 포함된 수천 개의 기록을 발견했으며, 여기에는 기기 데이터와 잠금 화면, 금융 파일도 포함돼 있었다. 보고서는 이 데이터가 모든 피해자 또는 일부 피해자에 관한 것인지는 밝히지 않았다.
제한 사항과 대응 방법
우회 기법이 아무런 제한 없이 작동하는 것은 아니다. 내장된 증명 키가 공개적으로 유출됐을 수 있으며, Google은 해당 키에서 파생된 인증서 2개를 손상된 인증서 목록에 포함했다. 이에 따라 서버는 서버 측 인증서 폐기 검사를 수행할 때 위조 작업을 감지할 수 있다.
ThreatFabric은 Hirudo가 Android 은행 계정 탈취 악성 코드의 수법을 한 단계 발전시킨 사례라고 평가한다. 앱 내부의 보호 메커니즘을 표적으로 삼기 때문이다. ThreatFabric은 은행에 무결성 검증과 인증을 서버에서 수행하고, 검사를 세션 및 민감한 작업과 연계하며, 행동 및 거래 위험 통제를 유지할 것을 제안한다.
사용자는 기기를 업데이트하고, 비공식 스토어에서 APK 파일을 받지 않으며, Play Protect를 사용해 정기적으로 검사하는 것이 좋다.