Strings 명령어를 이용하면 바이너리 내 포함된 문자열을 확인 하실 수 있습니다. 

  ex) strings [Binary Path]

 

 

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

바이너리에 포함된 오브젝트의 심볼 목록을 확인하고 싶을때 사용한다.

ex)
nm [Binary Path] | head

 

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] Strings  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

  cat /proc/[PID]/maps 경로를 통해 프로세스 메모리 맵 확인이 가능하다. 메모리 맵을 보면 특정 파일을 생성 및 삭제 하거나 특정 영역에 파일을 생성한 기록을 확인 할 수 있다. 이 기록을들 바탕으로 스크립트를 작성하여 분석하고자 하는 파일을 추출 할 수 있다. 이렇게 수집된 파일들은 .ELF 헤더 정보를 가지고 있다. 이 파일에서 .dex 위치를 검색하여 처음부터 .dex 가 위치된 부분까지 삭제 한 뒤 .dex 파일로 저장한 뒤 분석을 진행한다.

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] Strings  (0) 2017.12.29
[Command] nm  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

 안드로이드 환경에 맞게 제작된 프로그램은 쉽게 디컴파일 되기 때문에 디컴파일 되더라도 프로그램의 기능이나 흐름을 파악하기 힘들도록 패키지나 클래스, 메소드 이름 등을 난독화 한다.
 다른 방법으로 실제 작동을 하는 프로그램은 암호화 하여 저장 한 뒤 랩퍼 프로그램을 통해 실제 동작하는 프로그램을 복호화 하는 방법을 사용한다.

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

 ADB를 통해 안드로이드 기기에 접근하는 방법은 다음과 같다.

 1) 장치 -> 로컬
  adb { options } pull [path to copy from] [local path to copy to]
 2) 로컬 -> 장치
  adb {options} push [local path to copy from] [path to copy to on avd]

ADB를 이용한 APK 설치 방법은 다음과 같다.
 adb {option} install [path to apk]

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

 안드로이드 앱을 동적으로 디버깅 하기 위한 절차는 다음과 같다.

  1) APK Tools 를 이용해 디버깅 모드로 덤프한다.
  2) APK Tools 를 이용해 디버깅 모드로 덤프한 것을 디버깅 모드로 다시 패키징한다.
  3) 디버깅 모드로 패키징한 apk 파일을 서명해 AVD에서 실행한다.
  4) Netbeans 를 이용해 1) 에서 진행한 코드를 프로젝트에 추가 하고 android.jar 파일을 라이브러리에 추가한다.
  5) DDMS를 이용해 대생 앱에 대한 포트를 확인 및 연결한다.
  6) Netbeans IDE 탭 메뉴에서 Debug > Attach Debugger > Select JPDA를 선택해 Host 와 Port 를 설정함으로써 원격 디버깅을 연결한다.
  7) 분석할 부분에 브레이크 포인트를 설정한다.
  8) 에뮬레이터에서 특정 이벤트를 발생해 브레이크 포인트 설정 부분의 라인을 실행하게 유도한 뒤 동적 디버깅을 시작한다.

출처 : 안드로이드 모바일 악성코드와 모의 해킹 진단

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

  안드로이드에는 액티비티(Activity), 서비스(Service), 콘텐트 프로바이더(Content Provider), 브로드캐스트 리시버(BroadCast Receiver)등 4가지의 주요 기능으로 구성된다. 기능을 간단히 정리하면 다음과 같다. 
  1) 액티비티 : 사용자에게 보여주는 디바이스 인터페이스이다. 메뉴를 클릭하거나 버튼을 클릭하는 등 특정한 액션에 의해 전환하게 되는 화면 마다 모두 액티비티라고 할수 있다.
  2) 서비스 : 화면에 보여주지 않고 백그라운드에서 실행된다. 네트워크 전송하거나 파일을 읽는 등의 작업이 있다. 액티비티가 화면에 보여주는 동안 이 기능이 같이 동작을 하는 경우가 대부분이다.
  3) 콘텐트 프로바이더 : 애플리케이션이 공유하는 공간이다. 데이터가 파일 시스템이나 다른 저장소에 있더라도 애플리케이션은 콘텐트 프로바이더를 통해 데이터에 접근한다.
  4) 브로드캐스트 리시버 : 실시간으로 시스템의 상태(배터리, 메일 알람 등)를 확인해 이벤트가 발생할 때 응답한다. 디바이스에 발생하는 노티피케이션 등을 이용해 사용자에게 알람을 발생한다.

1. 액티비티
  안드로이드 환경에서 액티비티는 대개 하나의 화면에서 표시된다.  예를 들어 메인 화면에서 하나의 버튼을 클릭하면 다음 페이지로 접근되며 그 다음에 다른 액션에 의해 다른 액티비티들이 실행 되어 사용자 화면에 보여준다. 액티비티의 생명 주기는 다음과 같다.
  1) 시작(Starting) : 액티비티가 시작 될 때 메모리에 해당 정보가 없을때 시작 상태로 작동 된다. 콜백 함수에 의해 동작이 이뤄지고 동작 상태로 전환된다.
  2) 동작(Running) : 사용자의 화면에 보여주는 상태이며, 액티비티에 실제 액션들이 이뤄지는 상태이다. 문자를 입력하거나 스크린에 터치를 하는 동안의 상태이다.
  3) 대기(Paused) : 사용자의 화면에는 아직 보이는 상태이지만, 포커스는 위치하고 있지 않는 상태이다. 특정 메시지로 인해 대화상자가 액티비티 앞에 발생 할 때를 예로 들 수 있다.
  4) 멈춤(Stopped) : 사용자의 화면에는 보이지 않지만 메모리 상에 존재하는 상태이다. 사용자가 다음 액티비티에서 실행하고 있다가 언제든지 빠르게 볼 수 있게 저장되어 있다.
  5) 파괴(Destoryed) : 메모리에 더 이상 존재하지 않는 상태이다.

2. 서비스
  사용자에게 보이지 않고 백그라운드에서 액티비티와 비슷한 프로세스로 동작 한다. 음악을 듣고 있을 때 다른 어플리케이션이 동작하면서도 백그라운드에서 실행되는 것은 이런 서비스의 기능 때문이다.

3. 콘텐트 프로바이더
  콘텐트 프로바이더는 애플리케이션 사이에 데이터를 공유하기 위한 인터페이스이다. 기본적으로 안드로이드는 애플리케이션 마다 샌드박스에서 동작하기 때문에 시스템에 있는 다른 애플리케이션들끼리 직접 데이터 접근은 격리된다. 작은 데이터들은 인텐트를 통해 공유된다. 콘텐트 프로바이더는 음악, 파일, 사진 등 용량이 큰 데이터를 공유하는데 적합하다.

출처 : 안드로이드 모바일 악성코드와 모의 해킹 진단

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

+ Recent posts