Security Issues

RCE in major Android Tools(Developper and Reverse Engineers)

체크 포인트 리서치 팀 (Check Point Research Team)의 최근 연구에 따르면 몇 가지 취약점이 밝혀졌습니다.
모든 유형의 Java / Android 개발을 수행하는 모든 조직은 해당 취약점에 노출될 수 있다는 소식인데요. 세계에서 가장 큰 애플리케이션 커뮤니티 인 Android 애플리케이션 에코 시스템이 사용하고 있습니다. 보안 분석가와 리버스 엔지니어가 자신의 작업을 수행하는 데 동일하게 사용하는 툴 대부분이 해당 취약점이 존재한다고 합니다.

 

취약 한 제품은 다음과 같습니다.

Android IDE – Google의 Android Studio 및 JetBrains의 IntelliJ IDEAEclipse는 물론 주요 APKTool, Cuckoo-Droid 서비스 및 Android 애플리케이션 용 리버스 엔지니어링 툴들.
Google과 JetBrains는 보안 문제를 해결하고 이후 수정 사항을 효과적으로 배포했습니다.

 

올해 초 WikiLeak의 ‘Vault 7’릴리스에서 볼 수 있듯이 CIA와 NSA는
전 세계 모든 규모의 회사 제품의 취약점을 찾고 이를 이용합니다.
CCleaner, Notepad ++ 및 더 많은 것을 해킹하는 CIA 사건에서 악성 코드가 조직에 유입되어 회사와 사용자에 대한 정보를 수집한다는 것을 알게 되었습니다.

 

 

기술적 세부 사항 – XXE에서 RCE로

APKTool(Android Application Package Tool)을 기반으로 해당 취약점을 알아보도록 하겠습니다. 해당 툴은 Android 앱 리버스 엔지니어링을위한 가장 인기있는 도구로 APKTool이 사용자 정의 플랫폼 지원, 응용 프로그램 분석 및 기타 Resource 수정등이 가능합니다.

APKTool의 두 가지 주요 기능은 다음과 같습니다.
1. APK 파일 디 컴파일.
2. APK 파일 만들기.

APKTool은 위 두 가지 주요 기능에서 취약점을 내포하고 있습니다.

APKTool의 소스 코드를 보면 XML External Entity(XXE) 취약점을 확인 할 수있습니다. APKTool의 XML 파서가 XML을 파싱할때 외부 Entity참조를 확인 하지 않기 때문에 발생합니다.
취약한 함수는 loadDocument() 이며 두 핵심 기능 모두에서 사용되고 있습니다. (현재는 수정됨)

이 취약점으로 인해 APKTool 사용자의 OS 파일 시스템 전체가 노출되므로 공격자는 XXE 취약점을 이용한 악의적인 “AndroidManifest.xml”파일을 사용하여 피해 PC의 파일을 검색 하거나 원격 서버로 전송할 수 있습니다.

이 공격 시나리오는 해로운 결과를 초래할 수있는 많은 XXE 공격 기술 중 하나 입니다.

[ 체크포인트 팀 취약점 시연 xml ]
[ 체크포인트 팀 취약점 시연 결과 ]

이 문제는 다른 오픈 소스 프로젝트에서도 취약한 XML 파서를 발견할 수 있습니다. 또한 Intellij, Eclipse 및 Android Studio를 비롯하여 Android 응용 프로그램을 빌드하는 데 사용되는 가장 많이 사용되는 IDE가 영향을 받는다는 사실을 확인했습니다.

Android 프로젝트의 일부로 악성 “AndroidManifest.xml”파일을로드하기 만하면 IDE가 공격자가 구성한 파일을 뱉어 내기 시작합니다.
이 취약점을 입증하기 위해 GitHub에 악의적 인 프로젝트 라이브러리를 업로드하고이를 Android Studio 프로젝트에 복제했습니다.

 

Example of a malicious Github project with the XXE payload:

 

Cloned to Android Studio:

 

결과 : 공격이 성공적으로 전달되었으며 보호 된 파일을 탈취 후 사용자가 알지 못하는 사이에 제시된 공격자의 서버로 전송.(아래 이미지 참조)

 

또한 XXE 페이로드가 포함 된 악의적 인 AAR(Android Archive Library)을 리포지토리에 삽입하여 대규모 Android 개발자를 공격하는 데 사용할 수있는 또 다른 공격 시나리오가 확인 가능 합니다.

예를 들어 감염된 AAR을 중앙 Maven 저장소와 같은 공개 저장소에 업로드 할 경우 아주 끔찍한 일이 발생할 수 있겠죠.

하지만 데모 목적으로 감염된 AAR을 로컬 저장소에 업로드했습니다.
희생자가 감염된 AAR을 저장소에서 복제하면 공격자는 구성 파일, 소스 코드, 회사 디지털 서명(인증서) 등의 민감한 파일을 훔칠 수 있습니다.

 

Uploading a malicious AAR to local repository:

 

Adding the AAR to Android Studio project:

 

결과 : 공격이 성공적으로 전달되었으며 보호 된 파일을 탈취 후 사용자가 알지 못하는 사이에 제시된 공격자의 서버로 보냈습니다. (아래 사진 참조)

 

APKTool에 대한 추가 연구를 통해 피해자의 PC에서 OS 명령을 실행할 수있는 추가적인 취약성을 발견하게되었습니다.

APKTool의 사용을 위해 “APKTOOL.YML”이라는 구성 파일이 있습니다.

이 파일에는 “unknownFiles”라는 흥미로운 섹션이있어 사용자가 APK의 재구성 프로세스에 올바르게 배치 될 비 표준 파일 위치를 포함 할 수 있습니다. 선택한 파일은 파일 시스템의 ‘Unknown’폴더에 저장됩니다.

일반적인 “APKTOOL.YML”은 다음과 같습니다.

“APKTOOL.YML”파일에서 “unknownFiles”섹션의 경로를 조작하여 파일 시스템의 임의 위치에 임의의 파일을 삽입 할 수 있습니다. 이는 APKTool이 압축 된 APK에서 알 수없는 파일을 추출 할 경로의 유효성을 검사하지 않기 때문입니다.
사실 파일 시스템의 임의의 위치에 임의의 파일을 삽입하면 완전한 원격 코드 실행(RCE)이됩니다. 즉, 악의적 인 APK를 해독하려고 시도하는 APKTool 사용자 / 서비스가 RCE에 취약합니다. (특히 온라인 디컴파일 사이트!!)

 

APKTool은 해당 서버의 wwwroot 폴더에 악의적 인 파일 (이 경우에는 PHP 웹쉘 을 사용함)을 추출합니다.

 

수정 된 구성 파일을 사용하여 APK를 만들면 악성 파일이 포함 된 압축 된 APK가 생성됩니다.

 

APK를 데모 사이트에 업로드하면 공격자가 웹 응용 프로그램 서버에서 OS 명령을 실행할 수 있습니다. 따라서이 공격은 APKTool을 사용하여 백그라운드에서 APK를 디코딩하는 모든 온라인 / 오프라인 서비스에 대해 취약점을 확인할 수 있습니다.

물론이 취약점을 입증하기 위해 선택한 방식은 전체 RCE를 달성하는 데 사용할 수있는 가능한 많은 공격 방법 중 하나 일뿐입니다. 실제로 Path Traversal method를 사용하면 파일 시스템의 임의 위치로 파일을 복사하여 공격 범위를 넓고 다양하게 만들 수 있습니다.

위에서 설명한 모든 공격 방법은 플랫폼 간 및 일반 사항이며 APKTool은 여러 운영 체제에서 작동하도록 설계 되었으므로 제한없이 작동하는 모든 시스템을 공격 할 수도 있습니다.

Demo:

-end 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *