본문 바로가기

Hacking & Security/Android

(12)
Android APK Vuln analysis methodology Android APK Vuln analysis methodology Android APK 취약점 Web/ PC Software 뿐만 아니라 android APK에 대해서도 수많은 취약점이 존재한다. 모바일 OS 시장에서 구글 안드로이드의 독주가 두드러지고 있으며 이러한 모바일 OS 시장에서 안드로이드의 성장은 안드로이드 소프트웨어 발전에도 큰 영향을 주고 있다. 그러나, 안드로이드 소프트웨어는 그 구조상 Reverse Engineering에 취약하게 되어있다. 안드로이드 소프트웨어는 가상머신 위에서 동작하며 이는 자바를 기반으로 작성된 가상머신이다. 이렇게 생성된 software는 하나의 소스코드로 다양한 플랫폼에서 동작 즉, multi-platform 동작이 가능하다는 장점이 존재한다. 그러나 가상머신..
ARM Assembly Arm Assembly ARM (Advanced Risc Machine) x86으로 대표되는 CISC 라인과는 반대로 모바일이 대세가 되며 ARM(RISC) 프로세서도 많이 사용되어 지고 있다. 이번엔 ARM architecture 에 대해서 공부해본다. Thumb mode / Arm mode ARM 과 x86의 가장 큰 차이점은 Thumb 모드의 존재다. ARM 자체가 mobile/embedded 등 PC와는 다른 환경에 맞춰 설계하였기 때문에 저전력이 핵심 기술중 하나였으며, 처음 설계될 당시 임베디드 계열에서는 32bit가 아닌 16bit가 추세였다고 한다. 이러한 여러가지 상황에 맞추기 위해 2가지 모드를 지원하게 되었고 당연 리버싱을 하게 될 때도 이를 고려해야 한다. Thumb mode 레지스..
APK File APK ( Android Package ) > 안드로이드 플랫폼에서 어플리케이션 설치를 위해 배포되는 패키지 파일 - Android Package는 안드로이드 어플리케이션 파일이며 zip과 같은 하나의 압축 파일이다. 일반적으로 접하는 압축파일과 가장 큰 차이가 있다면 "서명된" 압축파일이라는 점이다. - 어플리케이션에 관계된 파일들을 하나로 압축해놓은 파일이기 때문에, 압축 프로그램을 사용하여 압축을 풀 수 있다. - APK는 앱 실행 파일이라기 보다는 설치 프로그램이라고 할 수 있음. - 애플 IOS의 IPA 확장자에 대응된다. 결론 : APK는 서명된 압축파일이며 파일 내부에는 데이터와 리소스, 자바 실행코드를 묶어놓았다. > 주요 구성요소 - AndroidManifest.xml : 앱에 대한 정보..
Android Architecture Android : 모바일 기기를 위한 Linux based kerenl & middleware & 핵심 애플리케이션을 포함한 소프트웨어 스택 1. 안드로이드 내부 구조 안드로이드 플랫폼 구조는 위 그림과 같다. Linux Kernel : 안드로이드는 리눅스 커널을 기반으로 하는 리눅스 계열 OS이다. 위 그림에서의 커널은 하드웨어와 우리가 사용하는 OS를 연결시켜주는매개존재로 운영체제에 있어서 핵심이다. HAL ( Hardware Abstraction Layer ) : 하드웨어 추상화 계층 하드웨어 추상화 계층에서는 같은 종류의 부품으로 다양한 하드웨어를 설계할 수 있어 직접 하드웨어에 접근하는 형태는 다소 복잡할 수 있다. 이러한 점을 해결하고 복잡한 내부를 감추고 일관성 있는 인터페이스를 제공하기 위..