Advertisement
Advertisement

More Related Content

Similar to 모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전(20)

Advertisement

모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전

  1. 0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011 0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011 | 정보보호 전문가(모의해킹) 과정| ㈜타이거팀아카데미 Andorid 악성앱(Kaokao.apk) 코드 분석
  2. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 2
  3. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 3
  4. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 4 AndroidMenifest.xml (설치시 요청할 권한 내역) 권한 내용 ACCESS_WIFI_STATE WIFI 상태 접근 권한 CHANGE_WIFI_STATE WIFI 상태 변경(인터넷 권한) WAKE_LOCK 알람 WRITE_EXTERNAL_STORAGE 외부 저장장치에 쓰기 권한 READ_PHONE_STATE 폰 상태 관련 권한 SEND_SMS SMS 문자 보내기 권한 RECEIVE_SMS SMS 문자 수신 관련 권한 READ_CONTACTS 주소록 읽기 권한 WRITE_CONTACTS 주소록 쓰기 관련 권한 RECEIVE_BOOT_COMPLETED 부팅 완료 관련 권한 MODIFY_PHONE_STATE 폰상태 변경시 접근 권한 CALL_PHONE 전화 통화 권한 INSTALL_SHORTCUT 바로가기 버튼 생성 권한 UNINSTALL_SHORTCUT 바로가기 버튼 삭제 권한 RECEIVE_BOOT_COMPLETED 부팅 완료 관련 권한 RESTART_PACKAGES 특정 패키지 실행 종료 및 알림 권한 (API Level 8에서 제거된 권한) GET_TASKS 테스크 관련 권한 KILL_BACKGROUND_PROCESSES 백그라운드 프로세스 종료 권한 RESTART_PACKAGE와 차이점은 중요도에 따라 선별적 종료 SYSTEM_ALERT_WINDOW 시스템 알림창 표시등의 권한 READ_LOGS 로그 읽기 권한 VIBRATE 진동 관련 권한 MODIFY_AUDIO_SETTINGS 오디오 설정 변경 권한 INTERNET 인터넷 권한 ACCESS_NETWORK_STATE 네트워크 상태 접근 권한 서비스 기능 대비 과도한 권한을 요구할 경우 악성적인 기능의 존재 여부를 의심할 수 있음
  5. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 5 첫 시작 Activity로 분석 시작 클래스가 됨 SMS 수신시에 동작하는 코드(클래스) 폰 상태에 따라 대응하는 코드(클래스) 패키지 추가, 삭제시에 대응하는 코드 (클래스) cn.gx3.notify 인턴트 발생시 디바이스가 부팅됐다고 알려주는 메시지로 시스템에서만 보냄 디바이스 관리자 권한 획득시 처리 코드 ADMIN 권한 처리할 내용 정의 (화면잠금 권한)
  6. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 6 실행시 클래스의 시작지점 그 외 생성자 지점 분석 디바이스 관리자 권한 체크 및 강제 락걸기 악성행위 방해 금지를 위해서 차단시키고 아래 무한루프로 현 상황유지 (wipeData(0)는 모든 데이터 삭제 명령) CoreService 클래스 코드 실행 아이콘 숨기기 함수 인턴테를 통해서 추가 정보 설정 관리자 권한 획득 및 카카오톡으로 보이도록 설정 핸드폰 번호 가져옴 Activity 종료 함수 윈도우 프레임에 대한 타이틀 제거
  7. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 7 새로운 쓰레드를 생성시켜서 전화번호 특정 서버로 전달 인턴트 추가 등록. 다음과 같은 메시지 발생시 MyBroadcastReceiver()를 호출 등록 2011년에 나온 안드로이드 3.0으로 허니콤 버전 이상을 말함 안드로이드 3.0부터 네트워크 통신등을 쓰레드로 지원하는데 시간 지연등의 문제 발생시 이를 처리해 주기 위함 (이는 메인 쓰레드 성능 향상 등의 이유로 지원), 해당 쓰레드의 권한을 설정하는 코드임 새로운 설정값 등록 새로운 쓰레드 두개 실행. CoreService 핵심 동작
  8. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 8 전화번호 가져오기 가져온 전화번호 내용이 있다면 추가 쓰레드 생성시킴 무한 루프를 돌면서 해당 번호가 끝날때까지 실행시킴 전화번호와 IMSI(GSM/UMTS 유저) 값을 서버로 전달 아마도 IMSI 값을 기반으로 전화번호를 분류하기 위함인 것으로 판단 Config 클래스를 보면 관련 내용이 하드코딩되어 있음 SERVER_HOST = "http://kakapx.jetos.com"; SERVER_ADDRESS = "/kbs.php?m=Api&a="; 관련 내용 전달
  9. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 9 MyBroadcastReciver Class #1 CoreService 에서 등록한 인텐트 필터 정보가 수신되면 코드 동작 인자로 전달된 인텐트값 alert의 값을 받음 인텐트로 전달된 info 값을 받아서 URL로 저장 다운로드할 APK 값으로 저장(URL) 코드상 “#”을 구분으로 다운로드 이름, URL, 삭제패키지
  10. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 10 MyBroadcastReciver Class #2 Config에 등록된 은행 이름 길이만큼 무한루프 동작 다운로드 경로 및 다운받을 앱 이름으로 파일 다운로드 실행 다운로드 종료시 업데이트 알림 메시지로 해당 파일 설치 유도 다이얼로그 창 띄움. 설치 강제 유도 화면 BtnClick시 “app.download.complete” 인텐트 메시지 브로드캐스팅 BtnClick 날라온 인텐트 처리 로직, 패키지 삭제 명령 Config 클래스에 있던 은행명과 패키지명이 동일할 경우 아이콘 변수값 등록 App.auto.install 인텐트 메시지 수신시 autoChangeApk 호출 해당 메쏘드에서 apk 파일을 다운로드하고 설치 유도를 하는데, 위의 코드와 매우 유사함 (앱이 업데이트 되었을때를 대비한 코드로 판단됨)
  11. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 11 MyBroadcastReciver Class #2 Config에 등록된 은행 이름 길이만큼 무한루프 동작 다운로드 및 저장
  12. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 12 5초간 슬립 무한루프이므로, 약 120초마다 반복 실행되는 코드 패키지명을 읽어서 설치하고자 하는 악성앱이 없다면 설치 유도하는 메소드 Bank, upbank 배열 은행이 설치됐다면 관련 앱 패키지 정보 WIFI 모드라면, if 구문 내에서 수집한 정보를 인자값으로 포함하여 HTTP로 데이터 전달 SERVER_HOST = "http://kakapx.jetos.com"; //Config클래스 참조
  13. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 13 WIFI 모드가 아니면 아무것도 하지 않고, 속성값만 설정함. 아마도 안전한 WIFI 통신일때 데이터를 송신하도록 한 것으로 추정됨
  14. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 14 5초간 슬립 무한루프이므로, 약 120초마다 반복 실행되는 코드 패키지 관리자 권한 획득 설치된 패키지 정보 모두 가져오기 Iterator()로 처리하여 hasNext() 쉽게 사용할 수 있음 설치된 패키지가 하나도 없거나 마지막이라면~ 다음 패키지를 읽어서, 아래 플래그가 아닐때까지 루프돌면서 패키지 정보 저장 Flags 0x01 à FLAG_SYSTEM (시스템 이미지에 설치) Flags 0x80 à FLAG_PERSISTENT 검색된 패키지라벨 + # + 패키지이름 + | 은행명 배열 카운트만큼 동작 기 설치된 내역에 bank 패키명 존재여부 확인 upbank 배열 패키지명이 존재하는지 체크 autoChangeApk() 함수 호출시 1로 설정 즉, 설치된적 없음을 말함 앱 설치 인텐트 설정 및 브로드케스팅으로 전달 CoreService에서 해당 인텐트 필터를 등록했으며, MyBroadcastReceiver 클래스를 호출하도록 되어 있음 해당 클래스에서는 CoreService.autoChanageApk 메쏘드를 호출하도록 되어 있음 Config 클래스에 정의된 배열 정보
  15. 2. [사례1] 악성코드 분석 악성앱 코드 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 15 2초 슬립 디컴파일된 소스코드 상으로는 모두 주석처리 상태로 동작되는 내용이 없음
  16. 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 | 정보보호 컨설팅(모의해킹 분야) 전문가 과정 |
Advertisement