상세 컨텐츠

본문 제목

APP Store 검증을 우회할 수 있는 앱 ZergHelper 발견!

국내외 보안동향

by 알약(Alyac) 2016. 2. 26. 09:00

본문

APP Store 검증을 우회할 수 있는 앱 ZergHelper 발견!


앱 스토어에 앱을 업로드 하고 싶다면 까다로운 검증 절차를 거쳐야만 하고, 이러한 절차 덕분에 애플 사용자들은 안전한 모바일 사용환경을 유지할 수 있었습니다. 하지만 최근 보안 연구원들은 Apple의 심사를 우회할 수 있는 악성앱을 발견하였습니다. 


이번에 발견된 앱의 이름은 “开心日常英语(HappyDaily English)”로, 현재는 앱스토에서 삭제된 상태입니다. 


이 앱은 중국iOS 사용자들을 타겟으로 만들어진 복잡한 형태의 앱으로, 서드파티 마켓에도 존재하며, 이미 기업서명이 포함된 버전도 있는 것으로 확인되었습니다. 연구원들은 아직 해당 앱의 악성 행위를 포착하지는 못했지만, 이미 악성앱으로 정의하였고, ZergHelper라고 명명하였습니다. 


이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/



ZergHelper에는 다음과 같은 위험성이 존재합니다. 

App Store를 위장하여 안전하지 않은 iOS앱 제공
기업 인증서와 개인 인증서 서명을 마음대로 사용하여 앱을 배포, 그 중에는 애플 검증을 우회할 수 있는 코드가 포함 
사용자의 AppleID의 탈취를 시도하며, 탈취에 성공하면 해당 계정정보를 이용하여 Apple 서버에 로그인 하여 마음대로 조작
제작자는 코드의 업데이트를 통한 기능추가를 시도, 이 과정에서 iOS 보안정책을 우회가능  
이 앱이 사용하는 기술들은 iOS의 생태계 위협 가능

ZergHelper은 GPS 정보를 기반으로 다른 행위를 함으로서 Apple의 검증과정을 우회하려고 시도하였습니다. 

이 앱은 원래 영어 교육 앱으로, 중국 이외의 국가에서는 일반 영문 교육 앱으로 실행 되지만, 만약 중국에서 해당 앱을 실행할 때에 비로소 악성 기능이 활성화 되는 것입니다. 

ZergHelper는 2015년 10월 30일에 최초로 앱스토어에 업로드 되었으며, 그 후 2016년 2월 19일까지 정체를 들키지 않고 앱스토어에 존재하였습니다. 현재는 앱스토어에서 삭제되었습니다. 

ZergHelper의 주요 기능은 해적버전과 다른 iOS앱들과 충돌을 일으킬 수 있는 앱들을 제공하는 가짜 앱스토어를 제공하는 것입니다. 이 앱은 중국의 한 개발회사가 개발한 것으로, 이 회사의 원래 제품은 XY Helper입니다. ZergHelper는 XY Helper의 탈옥되지 않은 버전 및 “official App Store”버전인 것으로 확인되었습니다. 

이 악성앱은 기업 인증서를 마음대로 사용할 뿐만 아니라, 새로운 기술을 사용하여 탈옥을 하지 않은 기기상에도 마음대로 앱을 설치할 수 있었으며, Apple iTunes 윈도우 버전을 통하여 로그인, 구매 및 앱 다운로드 등의 행위를 할 수 있습니다. 동시에 Xcode IDE 기능을 이용하여 자동으로 무료 개발인증서를 생성할 수 있었는데, 이는 즉  공격자가 이미 Apple의 프로토콜 및 8월개 전에 공개된 개발 계획들에 대해 완벽히 분석했다는 것을 의미합니다. 

ZergHelper는 매우 복잡한 코드로 이루어져 있으며, 현재까지 이 앱이 사용자의 계정정보를 탈취하여 서버로 전송하는지 여부는 확인되지 않았습니다. 하지만 확실한 것은, 이 앱은 서버에 기기정보를 전송하여 정적 추적을 하는데 사용하였으며, Lua를 이용하여 언어를 바꾸어 확장성을 높혔습니다. ZergHelper가 사용하는 프레임을 분석한 결과, 이 앱은 애플이 검증을 하지 않는 상황에서만 업데이트를 진행하였습니다. 

현재까지  기업 인증서를 사용한 ZergHelper 앱이 50개 이상 발견되었으며, 이들은 각각 다른 경로로 유포된 것으로 추정되고 있습니다. 

ZergHelper의 유포 및 기능

ZergHelper는 다음과 같은 방식을 이용하여 설치가 됩니다. 

만약 iOS 사용자가 중국에서 XYHelper 홈페이지를 방문하면, 메인 페이지의 광고영역에서 App Store에 가서 XY Apple Helper을 내려받을 수 있다는 팝업이 뜨며, 정식 App Store를 자동으로 실행하며, Happy Daily English를 설치할 수 있다고 안내해줍니다. 

[공식 웹페이지에서 다운로드 유도 팝업 및 앱스토어에서 보여지는 화면 ]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/



Happy Daily English의 원본 소스코드는 HappyEnglishSentences8k라는 프로젝트 명이며, OSChina 홈페이지에서 찾아볼 수 있습니다. ZergHelper 제작자는 이 코드를 새로 빌드하였으며, 프로젝트 내부 명칭을 XYFactory로 수정하였으며, 앱 내부 명칭을 AppStore_4.0.1로 수정하였습니다. 


만약 사용자가 PC이나 혹은 다른 플랫폼에 있는 iTunes 클라이언트 브라우저로 해당 앱을 볼 경우, 이 앱의 이름은 “开心日常英语”로 보이지만, iPhone 혹은 iPad에 설치를 하게되면 아래Info.plist 문서 중 CFBundleDisPlayName값 처럼 “XY助手”로 이름이 바뀌어 보이게 됩니다. 



이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


앱을 실행하면 xyzs.com 페이지에 접속하며, 서버에서 전송되는 http reply값에 따라 클라이언트에서의 행위가 달라집니다. 예를들어 만약 IP위치가 중국이 아니라면, 웹페이지는 404 오류를 띄우게 되는데, 이 때는 일반적인 영어 앱의 역할을 하게되는 것입니다만약 중국에서 앱을 검증하는 경우, 검증 기간동안 페이지를 닫아놓는 형태로 검증을 우회하였습니다.

[http reply를 통한 각기 다른 명령 반환]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


[GPS 정보에 따라 보여지는 화면이 다름]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


또한 사용자의 GPS 정보에 따라 다른 플랫폼이 노출되었습니다. 또한 이 앱을 실행 후 2개의 "안전성 문제를 해결할 수 있는" 설정 파일들을 설치하도록 유도하는데, 이 때 Enrollment Chanllenge와 web clip을 설치합니다. 이 설정문서들은 xyzs.com의 디지털서명을 이용하며, 이 인증서는Go Daddy Secure Certificate Authority 에서 2015년 12월 2일에 인증해준 서명으로 확인되었습니다. 


이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


이 앱은 앱스토어처럼 인기있는 앱들을 포함한 다량의 앱 및 게임앱등을 제공해줍니다. 이때 제공되는 앱들은 모두 무료로, 합법적인 해적버전을 위장하고 있습니다. 

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


설정 탭에는 iOSpre-9.0 버전 사용자들은 Apple 계정정보를 넣으라고 유도하며, 사용자가 계정정보를 입력하면 ZergHelper는 해당 정보들을 기억해 둡니다. 또한 화면 아래는 “애플 계정이 없는 사용자는 무료로 하나의 계정정보를 받아가세요”라는 버튼이 있는데, 아직까지 이 Apple ID가 어디에서 오는건지는 확인되지 않았습니다. 



이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


탈옥하지 않는 디바이스에 서드파티 마켓을 설치하는 새로운 방법


ZergHelper은 새로운 방법을 이용하여 탈옥되지 않은 디바이스에도 서드파티 마켓을 설치하고, 이를 통하여 해적버전의 앱을 유포할 수 있었습니다. 그 중 앱스토어를 우회하는 두 가지의 새로운 방법이 확인되었습니다. 


iTunes 클라이언트 위장

ZergHelper는 PC상의 iTunes 클라이언트와 Apple 앱 스토어 서버 사이의 통신 프로토콜을 알아냈으며, 앱은 아래와 같은 기능을 갖고 있습니다. 

App Store 로그인, 캐쉬로 인증 데이터 및 로그아웃 계정정보 캐싱
서버 약관 클릭
다른 앱 정보 획득
앱 구매
구매한 앱 다운로드

Apple 서버가 통신할 때, ZergHelper는 다음과 같은 사용자 프록시를 사용합니다. 

l  iTunes/12.0.1(Windows; Microsoft Windows 7 x64 Business Edition iTunes/12.0.1)(Windows;Microsoft Windows 7 x64 Business Edition)


[iTunes 시뮬레이션을 통한 앱 구매]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


하지만 현재까지 ZergHelper가 이 기능을 이용하는 이유를 밝혀내지 못했으며, 이는 아마 무료로 제공하는 apple id에 사용하기 위해서가 아닐까 추측합니다.


Xcode 를 통하여 개인 개발인증서 신청 시뮬레이션


탈옥되지 않은 기기에 앱을 설치할 때, ZergHelper는 매우 기발한 방법을 사용하는데 바로 무료 개인 개발 인증서를 사용하는 것 입니다. 


예전에 Apple은 연 회비를 낸 사용자들에 한하여 iOS 개발인증서를 제공해 주었습니다. 개발자들은 앱에 서명을 하고 디바이스에서 정상적으로 동작을 하게 하기 위해서는 반드시 해당 인증서가 필요했습니다. 하지만 2015년 6월, 애플은 새로운 방법을 도입했는데, Apple ID를 갖고있는 사용자들은 모두 무료로 인증서를 발급받을 수 있게하는 것입니다. 이 기능은 Xcode 7.0에 포함되어 있으며, 현재까지 Xcode는 해당 방법을 이용할 수 있는 유일한 플랫폼입니다. 


ZergHelper는 Xcode를 위장하는 방법을 사용하였으며, Apple 인증서버로부터 무료로 개인개발인증서를 발급받을 수 있었습니다. Apple은 Xcode가 해당 과정을 처리하는 원리를 공개한적이 없는것으로 보아, 공격자들이 직접 Xcode 실행방법을 알아낸 것으로 추정하고 있습니다. 


[애플서버에 로그인]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/




[개발 인증서 획득]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


ZergHelper는 이 인증서를 이용하여 iOS 기기 앱에 서명 및 설치가 가능하게 하였습니다. 또한 ZergHelper를 분석한 결과, 아래 코드들이 판매되고 있는것을 확인할 수 있었습니다. 

모바일과 PC 호환 프로토콜을 통하여 Apple ID에 자동으로 로그인 기능
“보조도구”로 사용할 수 있는 PC버전의 DRM 앱을 제공 기능
Apple ID를 사용하여 개인개발인증서 생성 기능



PC에서 해적버전 프로그램 받기


ZergHelper서버에서 해적판 앱을 다운받을 때, 사용자에게  XY Helper Windows 버전을 이용하여 디바이스와 PC를 연결하라고 요구합니다. 연구원들은 Windows 버전 프로그램에 대하여 분석을 진행하지는 않았지만, 이 과정의 목적은 윈도우 버전의 iTunes를 위장하여 iOS 기기로 하여금 이미 PC의 인증을 받은 것으로 착각하게 하려는 것으로 추측됩니다. 


기업 인증서의 남용


ZergHelper는 iOS 악성앱들이 자주 사용하는 기업 인증서를 사용하는 방법을 이용하였습니다. 이런 종류의 앱들은 “install in a second”라는 알림을 보여주며, itms-service프로토콜을 이용하여 설치합니다. 하지만 다른 악성 앱들과 다른점은, ZergHelper는 C2서버에서 itms-service plist를 내려받을 뿐만 아니라, 로컬 포트를 열어 온라인으로 앱을 설치합니다. 이 기능은 개인디지털인증서가 적용되어 있는 앱에 이용하는 것으로 추정됩니다.



[PLIST 문서]

이미지 출처 : http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/


앱스토어에서는 2월 20일 해당 앱이 삭제되었습니다. 

만약 해당 앱을 설치한 사용자는 삭제를 해야하며, iOS 환경설정 문서 (설정 – 일반 – 프로필&디바이스 관리)에 들어가서 xyzs.com 웹페이지의 임의설정문서가 있으면 삭제를 해야합니다. 



출처 : 

http://researchcenter.paloaltonetworks.com/2016/02/pirated-ios-app-stores-client-successfully-evaded-apple-ios-code-review/








관련글 더보기

댓글 영역