Frida를 이용한 루팅 탐지 우회 기법 1. 루팅 관련 바이너리 존재 여부 확인 var RootPackages = ["com.noshufou.android.su", "com.noshufou.android.su.elite", "eu.chainfire.supersu", "com.koushikdutta.superuser", "com.thirdparty.superuser", "com.yellowes.su", "com.koushikdutta.rommanager", "com.koushikdutta.rommanager.license", "com.dimonvideo.luckypatcher", "com.chelpus.lackypatch", "com.ramdroid.appquarantine", "com.ramdroid...
구성 안드로이드 환경에서 Fiddler를 사용하기 위해서는 각 기기당 역할 구분을 확실히 해야 한다. 1. Host PC - 프록시 서버 2. Fiddler - 프록시 도구 3. Android Device - 통신을 수행할 주체 위 기기와 도구를 통해 안드로이드에서 송,수신하는 트래픽을 PC에서 볼 수 있다. Android - Fiddler - Host PC 의 관계가 되는 것이다. [구성환경] Host : Windows 10 Home 64bit Android : NOX Emulator / Galaxy S10 5G / Android 5.1.1 / Rooted(Super User) [도구] Fiddler 4 Fiddler 설치는 www.telerik.com/download/fiddler/fiddler4에서..
Preview 안드로이드 환경에서 Frida와 adb로 상용 앱을 분석할 때 앱 내에서 어떤 동작을 하는지 파악하기가 쉽지 않다. 에러가 발생해서 발생하는 크래시 로그(Crash Log)가 아닌 개발자가 의도한 정상 동작은 어떻게 분석할까? 앱로그, 로그캣에서도 그에 대해 구체적으로 방법을 제시해 주지는 않는다. 그렇다고 실행 시점마다 스크린 샷을 저장해서 일일이 분석할 수도 없다. 이 포스트에서는 앱 내 기능 동작에 대해 분석하는 방법을 제시한다. 안드로이드 권한에 대한 정책은 다음과 같다. 안드로이드 5.1 이하(SDK 22이하) - 앱을 설치할 때 권한 부여 안드로이드 6.0 이상(SDK 23이상) - 앱이 실행되는 도중 권한 요청 및 거부하더라도 제한된 기능으로 동작 가능 [분석환경] OSX Bi..
Native Function 루팅 탐지 기법 우회를 위해 libc 모듈에서 실행되는 메소드를 후킹한다. 앱 리소스 보안을 위해 보안 솔루션을 적용한 경우 java레벨의 난독화와 최소화(mininalize)를 통해 어떤 메소드가 실행되는지 정적 분석을 통해 알 수 없다. 그렇기 때문에 시스템에 더 가까운 Native 함수를 후킹하여 루팅 패키지 검사, 시스템 권한 필요 명령어("su") 실행 등을 후킹한다. 앞선 포스트를 통해 조사한 루팅 탐지 기법은 다음과 같다. Interceptor.attach() Frida 스크립트에서 타켓 바이너리의 특정 함수가 호출되는 시점과 실행 후 반환되는 시점에 후킹을 하려면 Intercetpor.attach()을 통해서 흐름을 보거나 변경할 수 있다. 선언되어 있는 함수에..
루팅(Rooting)? 루팅은 쉽게 말해 시스템 최고 권한(root)을 얻는 것이다. 안드로이드에서는 안정적인 기기의 동작을 보장하기 위해 루트 권한은 일반적인 사용자가 접근하지 못하도록 되어 있다. 시스템 내부 저장소 접근, 권한 변경 등 많은 작업을 수행할 수 있기 때문이다. 하지만 Frida를 이용한 후킹을 위해서는 루팅된 시스템이 필요하며, 이 때 루팅 탐지 기법이 적용된 애플리케이션은 동작이 어려울 수 있다. 슈퍼유저는 특권제어를 할 수 있는데, 앱에 설치된 모든 권한과 시스템 백업, 다른 버전 안드로이드 설치, ROM 컨트롤 등을 할 수 있다. 시스템 안전을 보장할 수 없다. 개인정보인 연락처, 이메일 등에 접근할 수 있고 자격증명 및 비밀번호에도 접근이 가능하다. 루팅 탐지 앱 분석 루팅 탐..
about 이미지나 화면의 문자를 읽어 텍스트로 변환해주는 광학 문자 인식(OCR, Optical Character Recognition)을 파이썬에서 사용하기 쉽게 해주는 도구이다. 테서랙트는 오픈소스 OCR 엔진 으로 유명하며 2005년 HP에 의해 오픈소스화 되었으며, 2006년 이후 Google에 의해 개발되고 있다. 공식 홈페이지는 https://github.com/tesseract-ocr/tesseract 이다. 패키지에는 OCR 엔진(libesseract) 및 CLI가 포함되어 있다. Tesseract 4는 라인 인식에 중점을 둔 새로운 신경망 기반 OCR 엔진(LSTM)을 추가했다. 인공지능을 추가한 것이다. Tesseract 3 등 하위 버전과의 호환을 위해 OCR 레거시 엔진 모드(—o..
SDN(Software Defined Network) 환경 구성 소프트웨어 정의 네트워크는 트래픽의 제어를 위해 소프트웨어 기반 컨트롤러나 애플리케이션 프로그래밍 인터페이스(API)를 통해 네트워크를 사용하는 방법이다. 기존의 하드웨어 디바이스를 사용하는 것과 차이가 있으며 네트워크 지능화 기능을 담당하는 응용 평면(Application Plane), 운영체제 기능을 담당하는 제어 평면(Control Plane), 데이터 전송을 담당하는 데이터 평면(Data Plane) 세 가지로 구분되고 각 레이어는 다음과 같은 특징을 가지고 있다. 응용 평면은 소프트웨어를 이용하여 네트워크를 제어하는 레이어이다. 네트워크 통계 정보를 활용하여 소프트웨어를 개발할 수 있는 개방형 영역이다. 제어 평면은 전반적인 네트워..
Digital Watermarking 디지털 워터마킹은 오디오, 비디오, 텍스트 등 멀티미디어 저작물의 불법 복제를 막고 저작권자 보호를 위한 디지털 컨텐츠 저작권 보호 기술이다. 디지털 저작물에 인간의 시각 특성을 고려하여 사용자가 알 수 없는 형태로 저작권 정보를 기록한다. 지폐를 불빛에 비춰보면 은닉된 그림의 형상이 나타나는데 이 마크를 워터마크라 하고, 워터마킹은 위조지폐를 방지하기 위해 지폐 제작과정 중 젖어 있는 상태에서 그림(mark)을 넣는 기술을 말한다. 디지털 워터마킹이라는 용어는 이로부터 유래한다. Steganography 디지털 워터마킹 기술의 일종인 스테가노그래피(Steganography)는 그리스어 합성어로 “감추어져있다“라는 뜻인 ”stegano”와 “쓰다, 그리다”라는 뜻인 ..
[분석환경] Windows 10 Pro 64bit [분석도구] PEiD, Stud_PE, BinText, PEView, OllyDbg 1. DLL(Dynamic Load Library)? 동적 연결 라이브러리의 약자이다. 한번 로딩된 DLL의 코드, 리소스는 Memory Mapping 기술로 여러 Process에서 공유, 업데이트 시 DLL 파일만 교체 실행 환경의 dll버전차이, 호출 함수의 위치(주소) 불확실 등의 이유로 사용한다. 컴파일러 – 함수의 실제 주소가 저장될 위치만 준비 후 CALL PE 로더 – 준비한 위치에 실제 함수의 주소를 입력 코딩할 때 실제 주소를 하드코딩하지 않음 DLL 사용 시 응용프로그램의 모듈화 - 쉬운 기능 업데이트, 재사용의 장점 중복코드 사용의 감소로 적은 리소스 ..
Preview Windows 환경 리버싱 공부 중 안티 리버싱 기법들이 오래된 OS 버전을 기준으로 하고 있어서 Windows 10 x64에도 가능한 기법을 새로 조사, 실습하여 정리한다. 이 포스트는 이전 포스트에서 이어지는 글이다. https://gomguk.tistory.com/45 [분석환경] Windows 10 x64 1903 [개발 & 분석도구] Visual Studio 2012(v110), OllyDbg, IDA Pro CheckRemoteDebuggerPresent() Windows XP 이상부터 꾸준히 사용되는 기법. ZwQueryInformation()을 사용하여 Debug Port 정보를 얻는다. MSDN에서 제공하는 정보는 다음과 같다. 프로세스 핸들과 디버그된 상태를 알려줄 변수 ..