Manual DeObfuscation

Support HackTricks

수동 디옵스큐레이션 기법

소프트웨어 보안 분야에서, 코드의 난독화를 이해할 수 있도록 만드는 과정인 디옵스큐레이션은 매우 중요합니다. 이 가이드는 디옵스큐레이션을 위한 다양한 전략을 다루며, 정적 분석 기법과 난독화 패턴 인식에 중점을 둡니다. 또한, 실용적인 적용을 위한 연습을 소개하고, 더 고급 주제를 탐구하고자 하는 이들을 위한 추가 자료를 제안합니다.

정적 디옵스큐레이션 전략

난독화된 코드를 다룰 때, 난독화의 성격에 따라 여러 가지 전략을 사용할 수 있습니다:

  • DEX 바이트코드 (Java): 효과적인 접근법 중 하나는 애플리케이션의 디옵스큐레이션 메서드를 식별한 후, 이 메서드를 Java 파일에 복제하는 것입니다. 이 파일을 실행하여 대상 요소의 난독화를 되돌립니다.

  • Java 및 네이티브 코드: 또 다른 방법은 디옵스큐레이션 알고리즘을 Python과 같은 스크립팅 언어로 변환하는 것입니다. 이 전략은 주요 목표가 알고리즘을 완전히 이해하는 것이 아니라 효과적으로 실행하는 것임을 강조합니다.

난독화 인식하기

난독화된 코드를 인식하는 것은 디옵스큐레이션 과정의 첫 번째 단계입니다. 주요 지표는 다음과 같습니다:

  • Java 및 Android에서 문자열의 부재 또는 혼란이 있으며, 이는 문자열 난독화를 시사할 수 있습니다.

  • 자산 디렉토리의 바이너리 파일 존재 또는 DexClassLoader 호출이 있으며, 이는 코드 언팩 및 동적 로딩을 암시합니다.

  • 식별할 수 없는 JNI 함수와 함께 네이티브 라이브러리 사용이 있으며, 이는 네이티브 메서드의 난독화를 나타낼 수 있습니다.

디옵스큐레이션에서의 동적 분석

제어된 환경에서 코드를 실행함으로써, 동적 분석은 난독화된 코드가 실시간으로 어떻게 작동하는지를 관찰할 수 있게 해줍니다. 이 방법은 코드의 진정한 의도를 숨기기 위해 설계된 복잡한 난독화 패턴의 내부 작동을 밝혀내는 데 특히 효과적입니다.

동적 분석의 응용

  • 런타임 복호화: 많은 난독화 기법은 문자열이나 코드 세그먼트를 암호화하며, 이는 런타임에만 복호화됩니다. 동적 분석을 통해 이러한 암호화된 요소는 복호화 순간에 캡처되어 그 진정한 형태를 드러낼 수 있습니다.

  • 난독화 기법 식별: 애플리케이션의 동작을 모니터링함으로써, 동적 분석은 코드 가상화, 패커 또는 동적 코드 생성과 같은 특정 난독화 기법을 식별하는 데 도움을 줄 수 있습니다.

  • 숨겨진 기능 발견: 난독화된 코드는 정적 분석만으로는 명백하지 않은 숨겨진 기능을 포함할 수 있습니다. 동적 분석은 조건부로 실행되는 모든 코드 경로를 관찰하여 이러한 숨겨진 기능을 밝혀낼 수 있습니다.

참고 문헌 및 추가 읽기

  • BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [video]

  • 이 발표는 제가 본 가장 복잡한 안티 분석 네이티브 라이브러리 중 하나를 리버스 엔지니어링하는 과정을 다룹니다. 주로 네이티브 코드의 난독화 기법을 다룹니다.

  • REcon 2019: “The Path to the Payload: Android Edition” [video]

  • 이 발표는 Android 봇넷이 행동을 숨기기 위해 사용한 일련의 난독화 기법을 Java 코드에서만 다룹니다.

Support HackTricks

Last updated