Site icon

StrandHogg는 은행 앱의 사용자 정보를 목표로 안드로이드의 멀티태스킹 취약점을 악용합니다.

노르웨이의 연구원들은 데이터나 자격 증명을 훔치기 위해 어떠한 앱이라도 악용될 수 있는 안드로이드 취약점을 발견했다고 알렸습니다. 노예로 팔거나 몸값을 얻으려고 가축이나 원주민을 포획하기 위해서 사용한 고대 바이킹의 해안 습격 전술에서 유래된 StrandHogg 취약점은 금융권에서 일하는 동유럽 보안팀에 의해 2019년 12월에 처음 발견되었습니다. 이 회사는 체코의 여러 은행을 이용하는 다수의 고객 계좌에서 돈이 사라지고 있음을 발견했습니다.

연구원들은 StrandHogg 취약점으로 인해 공격자는 안드로이드 디바이스를 루팅 할 필요없이 정교한 악성 코드 공격을 시작할 수 있다고 말합니다. 그들은 공격자가 ‘taskAffinity’라는 운영 체제의 제어 설정을 악용하여 공격을 시작한다고 말합니다. ‘taskAffinity’를 사용하면 앱이 운영 체제 내에서 모든 아이디를 유추할 수 있습니다. 연구원들은 이 취약점이 광범위한 작업 도용 공격을 허용할 수 있는 안드로이드의 멀티태스킹 기능에서 기인한다고 지적했습니다. 이를 통해 공격자는 UI를 스푸핑하고 사용자가 알지 못하는 사이에 스푸핑된 개체를 실제 UI처럼 보이게 할 수 있습니다.

연구원들은 이 취약성 때문에 상위 500개 앱이 모두 위험에 처해 있으며, 이는 안드로이드 생태계의 모든 앱이 취약하다는 것을 의미한다고 밝혔습니다. StrandHogg 취약점을 독특하게 만드는 것은 일반 앱에 비해 특별한 권한이 필요하지 않기 때문에 정교한 공격을 수행하기 위해 디바이스를 루팅 할 필요가 없다는 것입니다. 이 취약점은 공격자가 자신의 앱을 사용자가 신뢰하는 앱으로 가장할 수 있기 때문에 매우 쉽게 악용될 수 있습니다.

악의적으로 사용할 수 있는 이 안드로이드 취약점은 디바이스 사용자의 은행 및 로그인 자격 증명을 훔치는 데 사용됩니다. 안드로이드 보안 연구원에 따르면 사용자가 기기에서 앱을 열면, 멀웨어는 실제 앱 위에 가짜 UI를 표시할 수 있습니다. 이는 사용자가 합법적인 애플리케이션을 사용하고 있다고 생각하도록 속일 수 있습니다. 따라서 사용자가 앱에 로그인하기 위해 사용자 아이디와 비밀번호를 입력하면 공격자는 멀웨어를 통해 탈취한 정보를 이용하여 디바이스에서 즉시 해당 데이터를 수신하여 은행 앱과 같은 민감한 앱에 액세스 할 수 있습니다.

또한 이러한 공격은 악성 앱이 사용자를 속여 문자 메시지 읽기, 위치 데이터 보기, 전화 수신이나  디바이스 카메라 액세스 권한과 같이 일반적으로 허용하지 않는 권한을 부여하도록 유도하여 ‘권한 상승’을 수행하도록 허용 할 수 있습니다.

공포에 휩싸인 정부

StrandHogg 트로이 목마는 정부도 주목하게 했습니다. 숫자로 봐서, 인도는 인구 대비 전체 보급률은 낮지만, 중국 다음으로 스마트폰 사용자 수가 가장 많은 국가입니다. 2019년 12월 16일 인도 내무부는 멀웨어가 실제 애플리케이션으로 위장하여 모든 종류의 사용자 데이터에 액세스 할 수 있도록 허용하는 안드로이드 운영 체제가 직면한 StrandHogg 취약점에 대해 모든 지방 정부에 경고를 보냈습니다. 이 정보는 내무부 산하 인도 사이버 범죄 조정 센터의 위협 분석 부서에서 공유하였습니다. “해커가 휴대폰 사용자를 공격하기 위해 배포할 수 있는 이 멀웨어 때문에 최소 500개의 인기있는 앱이 위험에 처해 있습니다. 위협에 민감하게 반응하도록 모든 고위 경찰관에게 경보를 보냈습니다. StrandHogg에 대한 안드로이드 취약성에 대한 대중의 인식을 높이기 위한 조치가 취해질 것입니다.”라고 경찰 관계자는 말했습니다.

미국에서는 사이버 보안 정보 공유, 위협 분석 및 사고 보고를 위해 주 단위로 구성된 뉴저지 사이버 보안 및 통신 통합 셀(NJCCIC)과 뉴저지 국토 안보준비국(NJOHSP) 내의 구성 기관들이 Google Play나 3rd party 앱 스토어에서 의심스러운 앱을 다운로드 하지 않도록 사용자에게 권고하였습니다. 그들은 사용자가 이미 로그인한 상태에서 새롭게 로그인을 요청하는 앱, 앱 이름이 포함되어 있지 않은 권한 팝업, 광범위한 권한을 요청하는 앱, 그리고 앱 사용자 인터페이스의 오타나 앱 내의 잘못된 버튼 및 링크가 존재하는 것와 같은 디바이스 감염을 알려주는 동작을 감시하도록 사용자에게 요청했습니다.

StrandHogg 취약성의 동작 방식

연구원들에 따르면, StrandHogg는 멀티태스킹 중에 발생하는 결함으로, 특히 사용자가 다른 애플리케이션이나 운영을 위해서 작업이나 프로세스를 전환할 때 발생합니다. 안드로이드 운영체제는 프로세서의 파워를 현재 화면에서 사용중인 앱으로 전환하는 ‘작업의 부모 재지정(task re-parenting)’이라는 기술을 사용합니다. StrandHogg는 사용자가 정품 앱을 탭할 때마다 ‘task re-parenting’을 사용하지만, 앱의 악성 코드가 동시에 실행됩니다. 연구원들은 이미 악성코드가 동작중인 것을 이미 보았으며, 이러한 현상을 일반 사용자가 발견할 가능성은 낮다고 밝혔습니다.

그들은 이 취약점이 디바이스의 루트 권한을 요구하지 않으며, 정품 앱에서 요청한 권한에 비교하여 추가하는 권한 없이 모든 버전의 안드로이드 운영 체제에서 작동했다고 말하였습니다.

연구원들을 당황하게 한 것은 Google Play의 정기적인 점검 절차에서 해당 악성코드 검출이 되지 않아, 이 결함을 이용하는 악성코드의 확산으로 이어졌다는 사실입니다. 연구원이 분석한 특정 악성 코드 샘플은 앱 스토어에서 발견되지는 않았지만, Google Play에 배포된 여러 드로퍼(dropper) 앱이나 악의적인 다운로더를 통해 설치되었습니다.

연구원들에 따르면 악성 앱은 다운로더 앱 또는 2단계 페이로드로 ‘드로퍼’를 통해 Google Play 스토어를 통해 배포되었습니다. 2단계 페이로드는 사용자가 실수로 악성 앱을 설치한 후, 사용자가 알고 있는 상태로 공격 수행 권한을 가진 공격 앱을 다운로드하는 것을 의미합니다. 드로퍼는 게임, 유틸리티 또는 사진 편집 앱과 같이 인기있는 앱과 동일한 기능을 가진 것처럼 보이지만, 실제로는 백그라운드에서 악성코드를 포함하고 있는 애플리케이션의 설치를 수행합니다. 그 결과 합법적으로 보이는 드로퍼에 의해서 StrandHogg 취약점을 악용하는 멀웨어가 설치되게 됩니다. 

연구원들은 Google Play 스토어에 배포되어 있는 StrandHogg 취약점을 사용하는 36개의 악성 애플리케이션을 발견했습니다. 연구원들이 이러한 앱에 대하여 구글에 알린 이후, 해당 앱들은 앱 스토어에서 제거되었습니다. 그러나 2019년 12월 초까지 구글은 3개월 이상 경고를 받은 후에도 취약점에 대한 패치를 개발하지 않았습니다.

연구원들은 공격자가 이 취약점을 사용하여, 특히 모바일 뱅킹 사용자에게 심각한 피해를 입혔다는 실제 증거를 가지고 있다고 말합니다. 사용자의 뱅킹 자격 증명을 훔친 이후, 해커는 SMS를 통해 전송된 모든 코드에 액세스가 가능합니다. 따라서 디바이스에 대한 2-factor 인증 방법을 해킹하여 대상 뱅킹 앱의 모든 보안 기능을 우회할 수 있습니다.

iOS 디바이스 및 암호화 앱에 미치는 영향

현재 안드로이드 보안이 훼손된 것처럼 보이지만, 사실 iOS도 그다지 뒤지지 않습니다. 올해 초 구글의 위협 분석 그룹(TAG)은 해킹된 웹 사이트의 작은 모음을 발견했습니다. 해킹된 사이트는 아이폰 제로데이 취약점을 사용한 무차별 워터링 홀(watering hole) 공격에 사용되었습니다. TAG는 iOS 10에서 iOS 12에 이르는 거의 모든 버전을 포괄하는 5개의 개별적이고 완전하며 고유한 아이폰 취약점 체인을 수집할 수 있었습니다. 이것은 한 그룹이 적어도 2년 이상 일정 기간 동안 특정 커뮤니티에서 아이폰 사용자를 해킹하기 위해 지속적으로 노력하고 있다는 점을 보여주었습니다.

더 문제가 되는 것은 StrandHogg 취약점이 해당 유형의 유일한 소프트웨어가 아니라는 사실입니다. 개인용 컴퓨터를 감염시키도록 설계된 멀웨어 프로그램과 유사하게 암호 화폐를 포함하여 돈을 훔치기 위해 설계된 여러 스마트폰 앱이 지난 몇 달 동안 발견되었습니다. 블록 체인 자산의 가치가 높아짐에 따라 더 많은 사람들이 따라 올 것입니다. 다행히 StrandHogg의 결과로 암호 화폐 손실이 보고된 사례는 없지만, 분산기술의 특성을 고려할 때 도난이 알려지지 않았거나 잘못 해석되었을 가능성이 높습니다.

StrandHogg 공격 탐지

연구원들은 StrandHogg 공격을 식별하거나 차단하는 효과적인 방법이 없기 때문에 일반 사용자가 공격을 탐지하는 것은 사실상 불가능하다고 말했습니다. 그러나 그들은 대상이 된 디바이스 사용자가 몇 가지 불일치를 발견할 수 있다고 말했습니다. 이미 로그인을 했음에도 불구하고 로그인을 요청하는 앱이 대표적인 예라고 할 수 있습니다. 연구원들은 실제로 필요하지 않은 앱(예를 들어, GPS 권한을 요청하는 계산기 앱)의 비정상적인 요청을 사용자가 알고 있어야 한다고 말했습니다. 이 외에도 앱에서 작동하지 않는 버튼이나 예기치 않은 동작을 보여주는 뒤로 버튼을 발견한다면 사용자는 의심을 해야 합니다. 또한 철자 오류도 의심을 불러 일으킵니다.

펜실베니아 주립대학은 과거에 안드로이드 멀티 태스킹 기능의 설계 결함에 대한 우려를 제기하였으며, 이것은 작업 도용 공격에 취약함을 이끌었다고 밝혔습니다. 작업 도용 공격에 대한 자세한 보고서에서 대학의 연구원들은 운영 체제를 통해 서로 다른 앱의 활동이 동일한 작업에 함께 있을 수 있으므로 사용자가 작업을 통해 세션을 구성하고 앱 사이에 쉽게 전환할 수 있다고 설명합니다.

연구원들은 안드로이드 사용자는 널리 알려진 개발자의 앱만 다운로드하는 경향이 있다고 말합니다. 또한 사용자가 홈 화면으로 이동하는 것이 아니라 사용 후 앱을 종료해야 한다고 제안합니다. 이것은 완벽하지는 않지만 StrandHogg 공격을 막는 효과적인 방법입니다. 고급 사용자, 특히 기업내 사용자의 경우, 연구원은 모든 현재 작업 및 관련 앱 목록을 출력하는 adb shell dumpsys 작업을 실행하려면 USB 드라이브가 있어야 한다고 조언합니다. 이를 통해 고급 사용자는 악의적인 활동이 있는 경우, 이를 탐지할 수 있습니다.

연구원들은 앱 개발자가 Android SDK를 통해 몇 가지 기본 작업 정보를 검색할 수 있다고 말합니다. 그러나 만약 작업이 포그라운드에서 실행되지 않는다면, 개발자가 그렇게 할 수 있는지 확실하지 않습니다. 그래서 실행되지 않은 상태에서도 앱이 도용될 가능성이 있습니다. 안드로이드에는 작업이 도용된 경우 개발자에게 알리는 서비스가 없으므로, 개발자는 이를 알기 위해서 백그라운드에서 실행되는 모니터링 서비스에 액세스하여야 합니다. 또한 공격자는 앱 자체가 아닌 운영 체제의 취약성을 사용하여 공격하기 때문에 개발자가 앱을 모니터링하더라도 변경 사항이나 재패키징/서명 확인이 일어나지 않았을 수 있어, 이러한 유형의 공격을 차단하지 못할 수 있습니다.

연구원들은 앱 개발자가 모든 활동의 작업 친화도를 AndroidManifest.xml의 애플리케이션 태그에서 “” 또는 빈 문자열로 설정하여, 어떠한 작업이라도 친화력이 없음을 나타낼 수 있다고 알렸습니다. 그러나 이것은 위험을 어느 정도만 줄일 수 있습니다.

사용자는 StrandHogg를 취약점을 통해 악성코드가 있는 앱이 설치되어 있다고 판단된다면, 언제든지 디바이스를 초기화할 수 있습니다. 백업에서 복원하지 않고 새 디바이스로 설정하는 것은 데이터 백업에 주의하지 않는 사용자에게 손실을 초래할 수 있지만, 보안적으로는 좋은 솔루션으로 간주됩니다.

StrandHogg와 같은 보안 위협을 처리하는 방법 중 하나는 앱실링(AppSealing)과 같은 모바일 애플리케이션 보안 솔루션을 사용하여 안드로이드 디바이스를 보호하는 것입니다. 이와 같은 보안 소프트웨어는 작업 도용 공격에 대한 방어 기능을 제공하고 애플리케이션이 실행하는 동안 보안 기능을 제공합니다.

결론

지난 몇 년 동안 은행 앱에 대한 화면 오버레이 공격이 크게 증가했습니다. 이러한 트로이 목마가 사용하는 유비쿼터스 기술은 실제 은행 앱에 오버레이된 가짜 로그인 화면을 사용자에게 보여주어, 그들이 입력한 비밀번호와 기타 식별 정보를 획득하는데 사용합니다. StrandHogg 취약점의 경우에도 이와 동일합니다. 말할 필요도 없이, StrandHogg는 해커들에게 자산과 주요 정보에 대한 액세스 권한을 부여하기 때문에,  안드로이드 은행 앱 사용자는 물론 암호화 앱 사용자에게도 매우 실제적인 도전입니다.

Exit mobile version