Windows 10 (VMWare Virtual Machine)
CovidLock Android Ransomware Sample Download
unzip을 하면 apk 파일이 있다.
Coronavirus_Tracker.apk로 rename하여 분석했다.
App Name | Coronavirus Tracker |
Package Name | com.device.security |
Hash | D1D417235616E4A05096319BB4875F57 |
Malware Type | Ransomware, Adware |
Adware: 사용자 디바이스에서 악성 앱을 숨기고 계속 실행되도록 하는 malware로, Coronavirus Tracker 악성 앱의 경우 앱 아이콘을 숨겨서 background에서 계속 실행되도록 하는 Adware이다.
Ransomware: 피해자의 디바이스나 파일을 잠구고 피해자의 주요 데이터를 지키기 위해서는 ransom을 지불하도록 강요하는 malware 유형. Coronavirus Tracker 악성 앱에서 피해자의 파일을 잠군 후 비트코인을 유형하는 Ransomware이다.
coronavirusapp[.]site 악성 도메인은 infection2020[.]com(미국의 COVID-19 추적 위한 웹사이트)에서 가져오는 iframe과 악성 애플리케이션 설치를 권장하는 배너가 상단에 위치한다. 이후 coronavirusapp[.]site는 Coronavirus Tracker를 빙자한 악성 안드로이드 애플리케이션를 제공하는 사이트로 변경되었다.
현재 coronavirusapp[.]site 사이트에 접속하면 여전히 악성 안드로이드 애플리케이션을 제공인 것으로 보인다.
Coronavirus Tracker 앱을 다운받으면, 앱은 안드로이드 기기를 랜섬웨어에 감염시키고, 랜섬머니(비트코인) $100을 요구하면서 피해자 스마트폰의 잠금을 해제해준다고 한다.
반디집을 이용해서 unzip을 했고, classes.dex 파일을 얻을 수 있다.
classes.dex는 컴파일된 소스코드이므로, 해당 파일을 dex2jar로 jar 파일로 변환 후 Java Decompiler로 소스코드를 확인할 수 있다.
download: https://github.com/pxb1988/dex2jar/releases
d2j-dex2jar.bat classes.dex
dex 파일을 .class 파일로 변환하는데 사용한다. jar로 압축한 결과가 나오므로, JD-GUI 와 같은 Java Decompiler 툴로 소스코드를 볼 수 있다.
dex2jar 2.0 이하 버전으로 apk에서 jar로 convert를 진행하면 오류가 생긴다.
따라서 dex2jar 2.1 버전으로 변환을 진행해야 한다.
JD-GUI로 jar 파일을 열면, apk 내 포함된 소스코드들을 확인할 수 있다.
난독화가 되어있지 않은 것을 확인할 수 있다.
permission을 확인해보면, 3가지 permission을 사용한다.
(악성 파일이므로, 반드시 가상머신 내 안드로이드 애뮬레이터에 설치한다.)
앱을 실행하자마자 battery optimization 허용을 요청한다. 배터리 최적화를 허용하면 안드로이드는 배터리 성능 최적화 위해 앱을 닫지 않고 랜섬웨어가 백그라운드에서 계속 실행된다.
선택을 한 후, 위와 같은 화면을 볼 수 있다.
이후 앱은 안드로이드의 접근성 기능에 대한 액세스를 요청한다. 이는 악성코드를 지속적으로 유지시키도록 한다.
ACTIVATE 버튼을 누르면, 위와 같은 경고 창이 나온다.
이때 Uninstall App을 진행하면 된다.
"Activate this device administrator"을 선택하면, 앱에 대해 Lock the screen 권한을 허용한다.
AlertDialog 창으로 앱 사용자에게 코로나 바이러스 감염자 근처에 있을 때 알려준다는 글로 사용자를 속여서 관리자 권한을 요청한다. 클릭을 하게 되면 requestPermission 함수를 실행하여 앱에 대한 관리자 권한이 허용된다.
요청하는 관리자 권한으로는 screen lock과 storage encryption setting이다.
SCAN AREA FOR CORONAVIRUS 클릭 시 Toast 메시지 모든 권한을 허용해야 한다.
앱에서의 관리자 권한까지 모든 권한이 허용되면, 사용자가 "Scan Area For Coronavirus"를 누르자마자 핸드폰이 잠기고 잠금화면에 메시지가 뜬다.
원본 소스코드이다. APK 파일에서 비트코인 주소(18SykfkAPEhoxtBVGgvSLHvC6Lz8bxm3rU)는 하드코딩되어 있다.
wget으로 해당 URI의 web content를 가져오면, Pastebin 링크 내의 내용을 잠금화면의 내용으로 보여준다.
[Web Designus] 버튼을 누르면, 외부링크(Pastebin 링크)로 리다이렉트되고 다음의 내용으로 이떻게 돈을 보내는지에 대한 설명을 보여준다.
메시지에는 사용자에게 랜섬머니 $250(비트코인)을 요구하고, 이를 하지 않으면 공격자는 사용자의 개인 정보(사진, 비디오 등)를 유출한다는 내용이다.
AndroidManifest.xml 파일을 보면, <uses-permission>에 INTERNET에 대한 권한이 없으므로 인터넷을 사용하지 않는다. 따라서 공격자에게 개인 정보가 전달되지 않는다.
앱에는 암호화 프로토콜이 사용되지 않았기 때문에, 안드로이드 디바이스의 장금해제를 풀 방법은 간단할 것이다.
앱은 Kotlin 코드를 사용하였고, BlockedAppActivity 클래스 내 verifyPin() 함수에서 str이 4865083501과 동일할 경우 디바이스를 해제해주는 코드를 확인할 수 있다. descrytion key인 4865083501는 하드코딩되어 있다.
enter decryption code가 적힌 EditText에 4865083501을 입력하면 디바이스의 잠금을 풀 수 있다.
MainActivity.class 코드를 보면, 관리자 권한이 허용되어 있고 접근성이 허용되어 있으면 hideAppIcon 함수에서 앱 아이콘을 숨기도록 되어있고, Recent Apps 리스트에서 앱 활동을 삭제한다.
[Settings]-[Apps]로 애플리케이션 리스트에서 Coronavirus Tracker를 찾을 수 있고, 여기서 앱을 삭제할 수 있다.
만약 관리자 권한 때문에 앱이 삭제되지 않는다면, 앱에서 관리자 권한을 제거한 후 앱 삭제를 진행하면 된다.
Automating your .apk reverse engineering workflow
Android malware uses coronavirus for sextortion and ransomware combo
https://www.domaintools.com/resources/blog/covidlock-update-coronavirus-ransomware
[Android Malware] Anubis Analysis (0) | 2021.08.02 |
---|---|
[Google CTF 2020] android (0) | 2021.07.21 |
[Android Reversing] Android Pasteboard vulnerability (InsecureBankv2, 안드로이드 클립보드 취약점) (1) | 2021.07.06 |
[Android Reversing] Insecure Logging mechanism (InsecureBankv2, 로깅 취약점) (0) | 2021.07.06 |
[Android Reversing] Sensitive Information in Memory (0) | 2021.07.06 |