본문 바로가기

악성 애플리케이션을 통한 몸캠 APK 분석 본문

해킹 & 보안/모바일 해킹

악성 애플리케이션을 통한 몸캠 APK 분석

Kai-RoS 2018. 12. 18. 21:34
※ 주의사항
해당 공격 코드는 연구 목적으로 작성된 것이며, 허가 받지 않은 공간에서는 테스트를 절대 금지합니다. 악의적인 목적으로 이용할 시 발생할 수 있는 법적 책임은 자신한테 있습니다. 이는 해당 글을 열람할 때 동의하였다는 것을 의미합니다. 해당 문서의 저작권은 Kai-Ros Team에게 있습니다. 저작권 위반 시 법적 조치가 가해질 수 있습니다.


1. 몸캠 피싱 개요 과정

1.1. 몸캠 피싱 개요

그림 31 몸캠 피싱 과정


범죄자는 스카이프(Skype) 스마트폰 채팅 어플을 통해 몸캠 피싱(음란 화상 채팅) 하자고 접근한다. 범죄자는 피해자와 음란한 행위를 하도록 유도를 하며 녹화한다. 피해자의 스마트폰에 악성 애플리케이션을 다운로드 하도록 유도하여 피해자 지인의 연락처를 탈취한 다음 지인들에게 녹화해둔 영상 또는 사진을 유포하겠다고 협박하여 금전을 갈취하는 범죄다. 스카이프 스마트폰 채팅 어플을 통한 몸캠 피싱은 여성을 고용할 필요가 없고 범죄 행위가 비교적 단기간에 종료되며 주소록을 이용한 `음란한 사진, 동영상 유출 협박 행위` 실효성이 높아 범죄자들은 조직화하여 움직이고 있다.



그림 32 스토어 있는 랜덤채팅


첫째, 범죄자는 타인 사진을 도용하여 여성으로 가장한 범죄자가 무작위 채팅 어플또는 모바일 메신저 등을 통해 피해자에게 접근 또는 채팅방을 만들어 피해자가 접근하기를 기다린다.

 

그림 33 영상통화 제의 악성 apk 파일 설치 유도


둘째, 범죄자는 미리 준비한 도용된 사진을 보내며, 친근감 표시를 한다. 영상통화를 제의한다. 영상통화 상대방의 목소리 영상이 보인다 속인 악성 apk 파일을 스마트폰에 설치해 달라고 피해자에게 유도한다. , 피해자 협박에 필요한 음란 동영상을 확보하기 위해, 얼굴이 나오게 하여 음란행위와 피해자의 얼굴과 중요 부위가 함께 화면에 나타나도록 요구한다.


그림 34 피해자 협박


셋째, 피해자에게 피해자 지인들의 명단과 연락처를 보여 주면서 동영상을 유포하겠다는 협박과 함께 돈을 요구한다. 연락처가 유출되지 않았더라도 "각종 게시판에 올리겠다" 협박하며, 대부분 동영상 유포, 송금하더라도 오히려 추가로 돈을 요구한다. 피해자가 돈을 송금하지 않은 사례도 있으나, 범죄자는 대부분 피해자 지인들로 채팅 그룹을 만든 피해자의 동영상을 유포한다. `돈을 보내지 않으면 동영상을 유포해 버리더라` 소문을 냄으로써 피해자의 심리적인 부분을 이용하여 돈을 보내게 하려는 의도적인 행위다. 그러나 피해자가 돈을 송금하더라도 범죄자는 협박을 멈추지 않고 오히려 추가로 돈을 요구한다.


2. 영톡방_apk 분석

그림 41 영톡방.apk 설치 아이콘


영톡방.apk 파일은 “3.2 몸캠 피싱 과정 거친 피해자가 설치 그림 4‑1 같은 아이콘이 표시된다. 해당 아이콘은 사용자를 속이기 위해서 ‘재생화면’ 아이콘을 사용하고 명으로 ‘영톡방’  사용한다.

 

그림 42 영톡방.apk 설치 실행 화면


사용자 기기의 버전을 확인과 여러 가지의 특정 권한을 요구하여 전화번호 기기 고유번호 탈취한다. 또한, 사용자의 전화번호를 탈취하여 C&C 서버에 전송 저장된다. 이때, 기기의 전화번호가 없으면 기기의 고유번호를 저장 또는 기기에 저장된 주소록과 유심칩에 저장된 주소록과 저장된 계정도 탈취한다. 탈취를 성공한 공격자는 주소록 계정을 악용하여 피해자의 주변 지인들에게 문자와 메일을 이용하여 '사용자의 몸캠 이용' 사실을 전송하겠다고 협박과 금전을 요구한다.


2.1. 영톡방.apk_ AndroidManifest.xml 분석

그림 43 영톡방.apk_AndroidManifest.xml - 1


먼저, apktool 이용하여 영톡방.apk 디컴파일 영톡방이라는 폴더가 생성된다. “영톡방폴더의 AndroidManifest.xml 열어 보면 그림 4‑3 같은 소스 코드를 확인할 있다. 영톡방 앱을 설치 피해자에게 불필요한 권한을 요구하는 소스 코드를 있다.

 

소스코드 번호

불 필요한 권한 요청 소스 코드

불 필요한 권한 내용

2

"android.permission.RECEIVE_SMS"

SMS 수신 권한

3

"android.permission.READ_SMS"

SMS 읽기 권한

4

"android.permission.GET_TASKS"

현재 Tasks 정보 권한

5

"android.permission.INTERNET"

네트워크 사용 권한

6

"android.permission.PROCESS_OUTGOING_CALLS"

수신 발신 정보 권한

7

"android.permission.RECEIVE_BOOT_COMPLETED"

부팅 완료 , 브로드캐스트를 받을 있게 하는 권한

8

"android.permission.SYSTEM_ALERT_WINDOW"

Android 윈도우(Overlay) 권한

9

"android.permission.WAKE_LOCK"

푸시(Push) 서비스 권한

11

"android.permission.WRITE_EXTERNAL_STORAGE"

외부 저장소의 데이터 쓰기 권한

12

"android.permission.READ_LOGS"

로그(Log) 정보 읽기 권한

13

"android.permission.ACCESS_WIFI_STATE"

WiFi상태_접근 확인 권한

15

"android.permission.READ_CALL_LOG"

전화 이력 접근 권한

16

"android.permission.READ_PHONE_STATE"

전화 상태 읽기 권한

17

"android.permission.WRITE_CALL_LOG"

수신 발신 통화 데이터 통화 기록 수정 권한

18

"android.permission.READ_CONTACTS"

주소록 읽기 권한

19

"android.permission.WRITE_CONTACTS"

주소록 수정 권한

20

"android.permission.ACCESS_COARSE_LOCATION"

기지국 정보를 이용한 위치 확인 권한

23

"android.permission.RECORD_AUDIO"

오디오 수신 권한

24

"android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

파일시스템 편집 권한

27

"android.permission.ACCESS_FINE_LOCATION"

Wi-Fi 통한 위치 확인 권한

29

"android.permission.ACCESS_NETWORK_STATE"

네트워크 상태 접근 권한

30

"android.permission.CHANGE_WIFI_STATE"

WiFi상태 변경 권한

41 영톡방 앱의 불필요 권한 요청


4‑1 그림 4‑3 중복된 권한 요청 소스 코드를 제거하여 정리한 표다. 영톡방 설치 sms 수신, 읽기, 외부 저장소 쓰기 20가지의 권한을 요청한다. , 피해자는 영톡방 설치할 경우 스마트폰의 모든 권한과 제어권을 공격자에게 제공하게 된다. 이후 공격자는 제어 가능한 피해자의 스마트폰 주소록을 이용하여 피해자 지인에게 사칭하여 돈을 요구하는 2 피해가 발생할 있다.


그림 44 영톡방.apk_AndroidManifest.xml - 2

그림 4‑4 영톡방.apk_AndroidManifest.xml 퍼미션(Permission) 이외의 액티비티(activity), 서비스(service) 소스 코드를 살펴본다. 2개의 액티비티와 3개의 서비스가 존재한다. 액티비티의 소스 코드를 확인한다.

 

<activity android:name="sakura.phonetransfer.MainActivity">

       <intent-filter>

         <action android:name="android.intent.action.MAIN"/>

          <category android:name="android.intent.category.LAUNCHER"/>

        </intent-filter>

</activity>

42 영톡방.apk_AndroidManifest.xml - 3


4‑2 그림 4‑4 38 ~ 46번째 줄에 해당하는 소스 코드다. 42 ~ 47 소스 코드를 보면, "android.intent.action.MAIN" 실행됐을 "sakura.phonetransfer.MainActivity" 클래스(Class) 실행된다. 영톡방.apk 파일을 dex2jar 디컴파일 디컴파일 영톡방.jar 파일을 jd-gui 불러와 "sakura.phonetransfer" 파일 분석한다.


2.1.1. 영톡방.apk_ sakura.phonetransfer 분석

그림 45 영톡방.apk 디컴파일 화면


그림 4‑5 dex2jar 디컴파일 디컴파일 영톡방.jar 파일을 jd-gui 불러온 화면이다. MainActivity.class, CallRcver.class, SendMail.class 3개의 클래스 파일을 분석한다. 먼저 MainActivity.class 분석한다.


2.2.1. 영톡방.apk_MainActivity 분석

그림 46 MainActivity_onCreat 메서드


그림 4‑6 MainActivity onCreat 메서드(Method). setContentView함수를 이용하여 Acp.getInstance(this).request 클래스를 실행한다. Acp.getInstance(this).request 함수에서는 권한을 요청한다. 권한 요청 onDenied 메서드를 이용하여 메시지를 출력한다.


 

그림 47 MainActivity_addGps 메서드


그림 4‑7 addGps 메서드는 해당 피해자의 위치 정보를 수집한다. 해당 메서드에서는 HashMap 사용한다. HashMap Map인터페이스의 종류로서 Key Value 값으로 데이터를 저장하는 형태를 가지고 있다. HashMap Map (Key), (Value) 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는 사용되며 key, value 값으로 저장한다. HashMap 이용하여 그림 4‑7 같이 공격자의 API 서버에 피해자의 위치 정보를 수집한다. 이외에도 private void addShe, private void addSms, private void addTel 메서드가 존재하며 정보 수집은 그림 4‑7 같다.


2.2.2. 영톡방.apk_ CallRcver.class 분석

그림 48 CallRcver.clss_onReceive


그림 4‑8 CallRcver.clss onReceive 메서드다. "NEW_OUTGOING_CALL" “PHONE_NUMBER” 행위가 있을 피해자의 스마트 폰에서 실행이 감지될 onReceive 메서드에서 “Context paramContext, Intent paramIntent” 받은 피해자의 연락처와 해당 로그들이 공격자에게 넘겨지는 것을 있다.

 

그림 49 CallRcver.clss_ModifyCall


ModifyCall 메서드에서는 if ((!TextUtils.isEmpty(outphone)) && (!TextUtils.isEmpty(tmpOutNumber))) 비교하여 “mContext.getContentResolver().update”에서 전화 기록을 실시간으로 업데이트한다.


그림 410 CallRcver.clss_기록 수집 로그


그림 4‑10 메서드들이 실행될 CallRcver 클래스에서 해당 로그 정보들을 문자열과 데이터 정보를 공격자가 있는 것이 확인됐다.


2.2.3. 영톡방.apk_Send Mail.class 분석

그림 411 영톡방.apk_SendMail 메서드

그림 4‑11 Send Mail.class SendMail 메서드다. SendMail 메서드에서는 공격자가 피해자의 메일 아이디와 패스워드 정보를 수집한다.


 

그림 412 영톡방.apk_initMessage & sendMessage 메서드


initMessage 메서드에서 피해자의 메일 계정 연동을 사용하기 위해 세션 연결을 시도한다. sendMessage메서드에서 MessagingException 사용한다. MessagingException 공격자가 피해자로 사칭하여 스팸발송위한 클래스다. 공격자는 피해자로 사칭하여 스팸메일이 정상으로 전송될 경우 “success” 반환한다.


그림 413 영톡방.apk_ setTxt & writeFiles 메서드


영톡방.apk_Send Mail 기능을 사용하기 위해 그림 4‑13 같이 “setText” “writeFiles” 기능이 있다. “setText” 기능은 메일 내용을 텍스트를 입력하기 위한 메서드이며, writeFiles 파일 첨부를 하기 위한 메서드다. 공격자는 writeFiles 메서드를 이용하여 피해자가 기업의 임원 / 간부일 경우 피해자를 사칭하여 해당 기업에 APT 공격의 2 피해를 유발할 있다.


3.1. 영톡방.apk_동적 분석

3.1.1. 영톡방.apk_ 서버 동적 분석

그림 414 영톡방.apk_ 서버 접근 화면


정적 분석 파트의 “4.2.1영톡방.apk_MainActivity 분석 그림 47에서 영톡방의 서버 주소를 찾았다. 해당 서버 접근 그림 414 같은 화면이 출력된다. 해당 서버에 접근하기 위해서는 계정명과 패스워드가 필요하다. 소스 코드상에서 공격자가 실수로 삽입한 하드 코딩된 계정과 패스워드를 검색했지만, 출력되지 않았다. 프록시 도구를 사용하여 해당 서버를 분석한다.


 

그림 415 영톡방.apk_ 서버 응답데이터 확인


영톡방.apk_ 서버 접근 버프스위트 도구로 응답 데이터 확인 별다른 정보가 출력되지 않는 것이 확인됐다.


그림 416 영톡방.apk_ 서버 상위 경로 응답 데이터 확인


영톡방.apk_ 서버의 관리자 페이지를 그림 4‑16 같이 유추 요청 (Request) 보낸다. 오른쪽 페이지에 관리자 계정과 접속 시간이 노출되는 것이 확인됐다. 해당 관리자 계정을 이용하여 인증 우회 해당 페이지에 접근을 시도한다.


 

그림 417 영톡방.apk_ 서버 로그인 시도

그림 4‑16에서 획득한 관리자 계정을 이용하여 그림 4‑17 같이 계정명과 패스워드는 임의로 입력 확인을 클릭한다.


그림 418 영톡방.apk_ 서버 응답 데이터 조작


영톡방.apk_ 서버 로그인 응답 데이터 “status” 값인 숫자 1 수정 응답 데이터를 전송한다.


 

그림 419 영톡방.apk_ 서버 접근


영톡방.apk_ 서버를 인증 우회 접근 그림 419 같이 피해자들의 연락처, 이름, 피해 시간 등이 출력된다. 또한, 추가로 SMS 정보와 GPS 정보까지 수집된 것을 확인할 있다.


Comments