본문 바로가기
정보보안/안드로이드해킹

안드로이드 모의해킹 ) 취약점 진단 및 분석 도구

by _miiiiiin_zzang_ 2020. 7. 28.

ADB : 안드로이드 에뮬레이터나 pC 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 하나

         명령 라인을 통해 사용자가 명령어를 입력하여 안드로이드 기기와 통신하도록

        위치 : C:\Users\pushj\AppData\Local\Android\Sdk\platform-tools

클라이언트

안드로이드 개발 시스템에서 실행

서버        

안드로이드 개발 시스템에서의 백그라운드 프로세스

데몬

에뮬레이터나 장치에서 백그라운드 프로세서로 동작하는 인스턴스

 

클라이언트 시작 가장 먼저 서버 프로세서가 실행중인지 점검

-> 서버 프로세스가 실행상태가 아니면 구동시킴(모든 클라이언트는 tcp 5037 통신)

기기 연결 하고 켰을 나옴 / 맞는 화면인지 모르겠음

 

ADB 명령어

  1. 디바이스 장치 선택
      1. 장치 없음 에러
    1. -d : USB장치 / -e : 에뮬레이터 장치        
      1. 연결 성공
    2. 만약 여러 장치 연결할 경우 -s 사용 : adb -s 장치이름 명령어
  2. 디바이스 장치 목록 : 장치가 제대로 연결되었는지 확인할 , 선택할
      1. 아무것도 없음 : 리스트 아래 목록이 없으니 없다는 , 원인 확인 결과
        1. sdk 경로 : C:\Users\pushj\AppData\Local\Android\Sdk
        2. 설정 변경 재시작

 

  1. 장치 설정 확인
  2. 기본 출력 목록 : 시리얼 번호 - 연결된 에뮬레이터나 장치를 구분하기 위해 장치 타입과 함께 콘솔 포트 번호를 포함, 상태 - device, off
  1. 디버그 기능 - logcat, bugreport, jdwp
    1. 로그캣을 이용한 로그 분석
      1. 안드로이드 장치에서 발생하는 로그 메시지를 화면으로 출력하거나 파일 형태로 저장하는 기능 제공
      2. 시스템 디버그 출력 정보를 확인하거나 수집하는 기능 제공
      3. 수집된 정보들은 각종 애플리케이션과 시스템에서 수집하는 정보들이며 사용자는 로그캣 명령어를 이용하여 메시지 확인 가능
        1. adb logcat
        2. adb shell

#logcat

  1. 모든 로그는 태그보다 우선순위를 가짐
    1. D/dalvikvm : dalvikvm 이라는 요소에서 발생한 로그 메시지라고 판단

V

Verbose - 가장 일반적인 수준

D

debug

I

info

W

Warning

E

Error

F

Fatal

S

Silent - 가장 높은 우선순위

 

  1. 로크켓옵션

-b

로그 버퍼 확인

        

radio : radio/telephony 관련 메시지

events : 이벤트 관련 메시지                

main : 메인 로그 버퍼 (기본값)

adb logcat -b radio

adb logcat -b events

adb logcat -b main

 

-c

기록된 로그 메시지 삭제하고 종료

 

 

 

-d

기록된 로그 메시지 덤프하고 종료

 

 

 

-f

로그 메시지 저장, 파일명은 대상 장치의 /경로명/이름으로 작성

-d 옵션과 함께 사용해야

adb logcat -d -f /경로/이름 -b radio

 

-g

선택된 버퍼 크기를 출력하고 종료

 

adb logcat -g -b main(기본값)

 

-n

저장되는 로그 파일 개수 지정, 기본값은 4

 

 

 

-r

로그 메시지를 파일로 저장

 

 

 

-s

기본 필터 종류를 S 변경, 옵션 뒤에 필터를 입력하면 특정 로그 메시지를 확인 가능

 

adb logcat -s ActivityManager:I

 

-v

로그메시지는 메타데이터 필드와 태그, 우선순위를 가짐

 

 

 

  1. bugreport 이용한 버그 보고서 확인 : 연결된 안드로이드 장치에 대한 정보를 한번에 출력하는 것이 목적 but 한꺼번에 너무 많은 정보 입력되기 때문에 별도의 파일로 저장 추천

dumpsys

현재 연결된 안드로이드장치의 애플리케이션 장치 정보를 자세히 표기        

meminfo, cpuinfo, account, activity 등        

adb sheel dumpsys meminfo

dumpstate

현재 연결된 안드로이드 장치의 모든 사태 정보 출력        

 

adb shell dumstate

logcat

안드로이드 시스템에서 발생하는 로그 정보 표시

 

 

  1. jdwp 이용한 프로세스 정보 확인
    1. 연결된 안드로이드 장치에서 사용할 있는 프로세스 목록을 출력
    2. 특정 애플리케이션의 프로세스 번호를 알아내고 이를 디버거에 연결하면 디버깅을 수행할 있음
      1. 명령어 일단 수행 취소한 디버깅 대상 어플리케이션 실행 다시 명령어 입력
      2. 마지막에 추가된 프로세스 번호가 실행 애플리케이션 프로세스 번호
  1. 데이터 기능

install

연결된 안드로이드 장치에서 사용자가 원하는 애플리케이션을 설치할 있도록 기능 제공

설치되는 어플의 확장자 명은 apk

 

만약 이미 동일한 어플이 있다면 Failure [INSTALL_FAILED_ALREADY_EXISTS] 에러 출력

-r 옵션 사용 삭제 없이 재설치 가능

uninstll

어플 삭제

대상 어플은 패키지 이름으로 삭제

패키지 이름 확인 방법

 

어플 삭제

 

-k : 어플 데이터는 삭제되지 않고 어플만 삭제됨

pull / push

연결된 장치나 어플에서 pc 파일을 복사하거나 파일을 장치에 붙여넣는 기능 제공

파일의 위치는 임의 변경 가능

pull : 애뮬레이터에서 pc 붙여넣기

push : PC에서 애뮬레이터로 복사하기

실습을 위해 우선 애뮬레이터에 텍스트 파일 생성

  1.  
    1. 접속 위치 확인
  2.  
    1. sdcard에서 파일 생성할 것이므로 cat이용하여 파일 생성

adb pull /sdcard/test.txt C:\Users\pushj\Desktop\test.txt

 

========================================================

pc -> 애뮬레이터로

adb push C:\Users\pushj\Desktop\test2.txt /sdcard/test2.txt

 

 

 

  1. 포트와 네트워킹 기능

forward

특정 로컬 포트를 안드로이드 장치의 특정 포트와 소켓 통신이 가능하도록 포워딩 해주는 기능 제공

명령어 사용하려면 대상 장치에서 USB 디버깅 옵션이 활성화 되어야

tcp - portnum

local -unix domain socket name

dev - character device name

jdwp - pid

jdwp 이용하면 특정 어플을 대상으로 디버깅을 위한 설정 가능

  1. jdwp 이용하여 pid 번호 알아내기
  2.  
    1. forward 프롬프트 상태로 돌아옴
  3. jdb 활용하여 대상 어플에 대한 디버깅 활성화
    1.  
      1. 에러발생! unable to attach to target VM
    2.  
      1. 위에 명령어ㅇ에 포트 번호와 달라서 생긴 문제
    3. 이제 디버깅이 가능한 상태로 대상에 대한 디버깅 가능해짐
  1. 스크립팅 기능

사용자에 의해 제작되는 스크립트에 연결된 자잋 시리얼 번호나 기기 정보와 같은 특정한 정보 등을 출력하는 사용

get-serialno

연결된 장치의 시리얼 번호를 문자열로 출력

 

get-state

연결괸 장치 문자열로 출력

 

wait-for-device

연결되는 장치가 구동될 때까지 adb 통한 명령 실행을 멈추고 device 상태가 되면 명령어 실행

 

  1. 서버 기능

abd start-server

시작

adb kill-server

종료

  1. 기능

원격 사용 가능

adb shell

댓글