전세계로 퍼지는 HummingBad 악성코드 주의
From HummingBad to Worse
지난 5개월 동안, 체크포인트 모바일의 연구원들은 중국의 사이버 범죄 그룹에 은밀히 접근할 수 있었습니다. 이 그룹은 안드로이드 기기의 제어권을 얻어 한 달에 $300,000의 부당한 광고 이득을 벌어들이고 있습니다. 또한 전 세계 85백만 대의 모바일 기기들을 무기로 삼아, 이를 악의적으로 제어하고 있습니다.
체크포인트는 사이버 범죄 그룹이 가장 높은 금액을 제시하는 다른 단체에 모바일 기기에 대한 접근 권한을 팔아 넘길 수 있으며, 그에 따라 유사한 악성코드가 유행될 가능성이 있다고 밝혔습니다.
연구원들은 2016년 2월, 안드로이드 기기들에 끈질긴 루트킷을 설치하여 부당 광고 이득을 취하고, 사기 앱들을 추가로 설치하는 악성코드인 HummingBad를 처음으로 발견했습니다. 이후 해당 악성코드의 감염 수가 증가하는 것이 감지돼, 이 캠페인의 진원지를 추적해 왔습니다.
* 중국의 치타 모바일에서는 해당 악성코드 패밀리에 대하여 Hummer라고 명명하였습니다(자세히보기)
체크포인트는 조사를 통해 공격자들이 어떻게 악성코드 캠페인을 실행하는지 알아냈습니다.
HummingBad 캠페인은 합법적인 광고 분석 비즈니스와 함께 운영됩니다. 기술 및 자원들을 공유하며, 이를 수 천만대의 안드로이드 기기에 적용합니다.
이 캠페인은 한 달에 $300,000을 벌어들입니다. 이러한 공격을 통해 금전적인 이득을 취할 수 있다는 것이 입증됐습니다.
경제적인 이득은 그저 빙산의 일각일 뿐입니다.
이 그룹은 하루에 수천대의 기기에 루팅을 시도하며, 이 중 수백 건을 성공시킵니다.
이 기기들을 통해, 그룹은 봇넷을 생성하여 기업이나 정부 기관 등에 타겟 공격을 실행할 수 있으며, 심지어는 블랙 마켓에서 다른 범죄자들에게 이에 대한 접근을 판매할 수도 있습니다.
이 기기에 저장된 모든 데이터는 유출될 위험이 있습니다.
공격자들이 이 기기 및 기기에 저장된 민감 데이터에 접근한다면, 또다른 엄청난 수입을 올릴 수 있을 것입니다. 그들의 경제적, 기술적 자립으로 인해 더욱 대담해진 공격자들은 그들의 기술을 앞세워 사용자, 기업, 정부 기관 등을 위험에 빠트릴 것입니다.
HummingBad 코드를 분석한 결과, 이는 공격자들이 운영하는 캠페인으로부터 추적 및 분석 서비스인 Umeng에 알림을 보내고 있었었습니다. Yingmob의 Umeng 계정을 추가로 분석한 결과, HummingBad 캠페인의 규모를 밝혀낼 수 있었습니다.
이 제어판에는 200개에 가까운 앱이 등록되어 있으며, 이 중 대부분은 동일한 코어 앱의 서로 다른 변종들이었습니다. 체크포인트는 이 앱들 중 25%가 악성인 것으로 추정하고 있습니다. 이 캠페인은 총 8,500만 대의 기기들을 포함하고 있습니다.
<이미지 출처 : http://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf>
아래의 누적 사용자 수 그래프를 보면, 활동이 2015년 8월에 시작되었다는 것을 알 수 있습니다.
<이미지 출처 : http://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf>
대시보드 대부분의 앱을 분석한 후, 연구팀은 1,000만 명에 가까운 사용자들이 이 악성앱들을 사용하고 있는 것으로 추정했습니다. 피해자들은 전 세계로 확산되고 있으며, 인도와 중국이 가장 많았습니다. 탑 20 국가는 각각 100,000명 이상이 감염되었습니다.
<이미지 출처 : http://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf>
HummingBad는 아래와 같이 모든 안드로이드 OS 버전을 사용하는 사용자를 대상으로 공격합니다.
<이미지 출처 : http://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf>
이 캠페인의 흥미로운 측면 중 하나는, 사용자와 광고주들에 미치는 영향입니다. 공격자는 많은 광고 서버 SDK들을 어뷰징하고 수익을 위해 악용합니다. HummingBad는 광고 표시, 클릭 생성, 악성 앱 설치를 포함한 모든 유료 이벤트의 스펙트럼을 사용합니다. 이러한 불법 행위를 통해 HummingBad의 개발자들은 법을 지킬 때 보다 훨씬 많은 수익을 얻을 수 있었습니다.
개발자들은 Yingmob의 Umeng 인터페이스의 “Developer Defined Events” 섹션에서 각각의 카테고리의 앱들의 유효성을 추적해보았습니다. 각각의 Umeng은 원하는 이벤트를 앱에 설정할 수 있었습니다. HummingBad의 경우, 대부분의 필드가 광고 사기와 관련이 있습니다. 연구팀은 이 캠페인으로부터 아래의 데이터를 추출해낼 수 있었습니다.
이 앱은 하루에 2,000만번 이상 광고를 디스플레이했습니다.
Yingmob은 불법적인 방법으로 12.5%의 높은 클릭율을 달성했으며, 하루 클릭 수는 250만번 이상입니다.
HummingBad는 하루에 50,000개 이상의 사기 앱을 설치합니다.
이는 엄청난 수익으로 연결됩니다.
Yingmob의 클릭 당 수익(RPC)은 $0.00125(USD)입니다.
하루 당 클릭을 통해 벌어들인 수익은 $3,000 이상입니다
악성 앱 설치 시 하나당 $0.15를 지급받으며, 이는 하루에 $7,500 이상입니다.
Yingmob은 하루에 $10,000, 한 달에 약 $300,000을 벌어들입니다.
모든 공격자들에게 수익은 강력한 동기가 됩니다. Yingmob의 분명한 자급자족 및 조직 구조는 그들이 제어하는 8,500만 대의 안드로이드 기기로의 접근을 제품화하는 것을 포함하여, 새로운 비즈니스 벤처로 확장할 수 있게 했습니다. 이는 Yingmob의 또 다른 수익으로 이어질 것입니다. 범죄자 또는 핵티비스트들이 전 세계 기업이나 정부 기관에 연결된 모바일 기기 내 민감 데이터에 빠르고 쉽게 접근할 수 있게 되면, 이를 통해 거대한 부당 이득을 편취할 수 있으며 그로 인한 악영향은 거대해질 것입니다.
따라서 이러한 의심스러운 활동을 탐지하고 멈출 수 없다면, 수백만의 안드로이드 기기 및 그에 저장된 데이터가 계속해서 노출될 위험이 있습니다.
자세한 분석: HummingBad의 동작 방식
체크포인트 연구팀이 처음 발견한 감염 메쏘드는 드라이브-바이 다운로드 공격이었으며, 악성 페이로드를 제공하는 성인물 사이트도 발견했습니다. HummingBad는 매우 정교한, 두 개의 메인 컴포넌트를 이용한 다단계의 공격 체인을 사용합니다.
첫 번째 컴포넌트는 다수의 취약점을 악용하는 루트킷을 이용해 기기의 루트 권한을 얻으려고 시도합니다. 이에 성공할 경우, 공격자들은 기기로의 전체 접근 권한을 얻게 됩니다. 루팅이 실패할 경우, 두 번째 컴포넌트가 작동됩니다. 가짜 시스템 업데이트 알림을 사용해 HummingBad에 시스템레벨의 권한을 부여하도록 사용자들을 속이는 것입니다.
루팅의 성공여부와는 관계 없이, HummingBad는 가능한 많은 사기 앱들을 다운로드합니다. HummingBad 캠페인의 악성앱들은 악성 컴포넌트 몇 개를 섞어 만들어졌으며, 기능은 동일하지만 조금씩 차이가 있습니다. 또한 일부의 경우, 악성 컴포넌트는 감염된 앱이 설치된 후 동적으로 다운로드됩니다.
※ SSP
첫 번째 악성 컴포넌트는 SSP로, 불법 광고들을 디스플레이하며 사기 앱들을 설치합니다. 이는 기기 부팅, 스크린 온/오프, 사용자가 활동 중임을 감지, 연결에 일어난 변화가 감지되었을 때 촉발됩니다.
이것이 촉발되었을 경우, SSP는 악성 로직을 초기화하고 앱이 사용하는 광고 네트워크를 시작하는 서비스인 Se를 시작합니다. HummingBad의 서로 다른 변종은 Mobvista, Cheetah, Apsee, Startapp과 같은 서로 다른 광고 네트워크를 사용하고 있습니다.
SSP는 매 10초마다 LockTask를 실행하는 스케쥴 타이머를 시작합니다. 모든 조건 (타임 딜레이, 인터넷 연결, 서버로부터 내려받은 세팅)이 만족할 경우, LockTask는 Se의 서버를 재시작하고 악성 페이로드를 활성화시키는 MainActivity 프로세스를 시작할 것입니다.
MainActivity 프로세스가 시작되면, 악성코드는 광고 배너를 “close”버튼과 함께 표시합니다. 악성코드는 홈 스크린으로 돌아가거나 뒤로 가려는 모든 시도를 차단하고 사용자가 배너를 클릭하도록 유도합니다. 사용자가 “close” 버튼을 클릭하면, 악성코드는 배너 자체에 클릭이 되도록 합니다. 배너가 클릭되면 SSP는 APK로 연결되는 링크를 리턴하는 서버에 요청을 보냅니다. 이후 서버로부터 APK를 내려받습니다.
APK가 다운로드되면, 앱은 해당 기기가 다른 컴포넌트를 통해 루팅되었는지 체크합니다.
기기가 루팅되었을 경우에는 은밀히 APK를 설치합니다. 그리고 루팅되지 않았을 경우에는 사용자 대화창을 통해 설치를 시도합니다. 설치가 완료되면 SSP는 이를 실행하고 GP(Google Play로 추정)로부터 설치가 실행되는 것처럼 꾸밉니다. 그리고 광고 네트워크로부터 수익을 얻기 위해 서버로부터 받은 정보를 사용하여 INSTALL_REFERRER를 브로드캐스팅합니다.
업데이트를 내려 받고 보고서를 보내기 위해서, SSP는 d1qxrv0ap6yf2e.cloudfront[.]net/domain/xxx.json으로부터 다운로드 한 JavaScript Object Notation (JSON) 파일의 C&C 도메인을 받습니다.
※ 구글 플레이 프로세스 인젝션
SSP는 구글 플레이의 프로세스에 라이브러리를 주입합니다. 이로 인해 악성코드가 구글 플레이 내 설치/구매/허가 버튼에 클릭을 위조할 수 있게 됩니다. 그리고 주입된 라이브러리를 통해 필요한 버튼이 활성화되어 있는지, 구글 플레이의 어느 창에 디스플레이 되는지 알아냅니다.
이 악성코드는 잘 알려진 Ptrace 접근법을 사용하여 구글 플레이 프로세스에 라이브러리를 주입합니다. SSP는 Ptrace 시스템 콜을 사용하여 다른 앱을 제어하며, 메모리 읽기/쓰기 및 등록을 실행합니다. Ptrace 호출들을 조합해 자기 자신의 라이브러리를 다른 프로세스의 메모리 및 호출에 로드합니다. 인젝션된 라이브러리는 프로세스에 dex-code(안드로이드용으로 컴파일 된 Java 코드)를 동적으로 로드합니다.
로드된 dex 코드는 구글 플레이 앱의 컨텍스트에서 서비스를 시작합니다. 구글 플레이 내에서 주기적으로 뷰를 스캐닝하며, 설치/구매/허가 버튼이 나타나면 그 위 클릭을 위조합니다.
※ RightCore
HummingBad의 첫번째 샘플에서 2016년 2월에 발견된 RightCore 컴포넌트는 해당 멀웨어의 루팅 기능을 포함하고 있습니다. 다른 샘플들은 이를 내려받지만, 일부는 이 페이로드를 가지고 있습니다.
감염된 앱은 기기가 루팅된 상태인지 확인합니다. 루팅되지 않은 상태라면, 부모격의 악성코드가 RightCore를 복호화합니다. (모든 문자는 XOR, 85로 암호화됩니다.) 버전에 따라, RightCore는 서버로부터 익스플로잇 팩을 다운로드 하거나 자신이 가지고 있는 것을 복호화시킵니다. 이후 기기의 설정을 분석하여 익스플로잇을 실행하기 위한 가장 좋은 방법을 찾아냅니다.
익스플로잇이 성공적이었다면, 앱은 그가 가지고 있는 페이로드를 디코드하고 은밀히 설치를 시도합니다. 루트 바이너리들은 일반적으로 사용되는 su 대신 ipm과 ppm으로 네이밍되었습니다. 이는 탐지를 피하기 위한 것으로 보입니다. Umeng 인터페이스에 따르면, HummingBad 캠페인은 매일 수천대의 기기에 루팅을 시도하며, 이 중 수백 건이 성공합니다.
※ CAP
CAP 컴포넌트는 정교한 테크닉을 사용하여 사기 앱들을 설치합니다. CAP이 기기에서 실행되면, 그가 가지고 있는 module_encrypt.jar를 복호화하고 메인 악성코드 기능을 포함한 코드를 동적으로 로드합니다. 또한 그가 가지고 있는 네이티브 데몬 바이너리를 복호화한 후 실행합니다. 이 바이너리는 앱을 깨우기 위해 주기적으로 커맨드를 실행합니다.
CAP은 모든 브로드캐스트에서 데이터가 변경되었는지 확인합니다. 만약 데이터가 변경되었을 경우, 앱은 모든 미결 다운로드, 알림, 이벤트들을 클리어하고 고유의 액티비티에 대한 파라미터 몇 개를 체크합니다. (시작부터 소요된 시간, 이전에 보내진 요청의 개수 등) 파라미터가 미리 조정된 조건에 부합할 경우, CAP은 사기 앱을 내려받기 위한 요청을 서버에 보냅니다.
CAP은 페이로드를 내려받은 후 설치를 시작합니다. 기기가 루팅되어있는 상태라면 은밀히 시도하고, 루팅되어 있지 않다면 사용자 상호작용을 통합니다. 이 메커니즘은 해커들이 매일 설치되는 앱의 양을 제어할 수 있게 하여, 사용자의 관심을 낮춰 의심을 피하도록 하기 위함입니다.
앱은 주기적으로 플러그인의 액티비티에 대한 통계를 서버로 보내고 업데이트를 체크합니다. 이 통계에는 기기가 루팅되었는지, 되었다면 언제인지 등의 정보가 담긴 액션의 식별을 포함합니다.
※ 가짜 IMEI 인젝션
CAP은 가짜 '고유의' 15자리 IMEI(International Mobile Station Equipment Identity)번호를 생성하고, 추가 기기에서 액티비티를 모방하고 추가 사기 행위를 시도합니다. 이를 통해 CAP은 동일한 기기에 같은 앱을 두번 설치하지만 두개의 서로 다른 기기에 설치한 것으로 간주된 금액을 받을 수 있습니다. CAP은 com.android.phone 또는 android.internal.telephony 프로세스에 라이브러리를 주입하고, 가짜 IMEI 번호를 세팅하기 위해 이 프로세스의 인터널 클래스들을 호출합니다.
※ 구글 플레이에서의 클릭킹 시뮬레이션
CAP은 광고를 통해 제안되는 앱을 구글 플레이에서 오픈함으로써 구글 플레이를 위한 '외부' 클릭킹 시뮬레이션을 시행합니다. 구글 플레이가 오픈되면, 악성코드는 '설치'버튼과 '허가'버튼을 누르는 연속적인 스크린 클릭을 시뮬레이트합니다. 악성코드는 구글 플레이 버튼의 좌표를 얻기 위해 UI 자동화 API를 이용한 레이아웃을 덤프합니다. 클릭 이미테이션은 버튼의 좌표와 함께 'input tap X Y' 유틸리티를 실행하는 것으로 실시됩니다.
Yingmob은 수준높은 체계성과 경제적으로 자급자족이 가능한 범죄 그룹입니다. 그들은 이번에 대중에게 처음 알려졌지만, 앞으로도 그와 비슷한 범죄 그룹이 계속해서 생겨날 것입니다. 미래에는 다른 범죄 그룹들이 Yingmob를 학습하여 더욱 거대하고 정교한 공격 캠페인을 실행할 수 있을지도 모릅니다. 따라서 보안업체는 새롭게 생겨나는 보안 위협에 더욱 철저히 대비하고, 사용자 또한 보안의식을 더욱 더 고취해야겠습니다.
출처 :
http://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf
SQLite 취약점, 크롬, 파이어폭스 등으로부터 민감한 데이터 노출시킬 수 있어... 주의! (0) | 2016.07.08 |
---|---|
암호화를 우회하는 안드로이드 취약점 발견 (0) | 2016.07.08 |
안드로이드 누가(Nougat), 랜섬웨어의 기기 패스워드 리셋 예방 기능 추가 (0) | 2016.07.06 |
일본 거대 여행사 JTB, 793만명 사용자 정보 유출 (0) | 2016.07.05 |
Foxit 취약점 발견! (0) | 2016.07.04 |
댓글 영역