피드로 돌아가기
Dev.toSecurity
원문 읽기
Analyzing Akamai BMP 4.1.3 - Part 2
Akamai BMP 4.1.3의 센서 데이터 수집 및 암호화 파이프라인을 역공학으로 분석하여 JNI 진입점, 다형성 디스패처, 난독화 메커니즘 상세 구조 규명
AI 요약
Context
Akamai BMP(Bot Management Platform) 4.1.3은 Android 앱에서 센서 데이터를 수집하여 암호화된 형태로 전송하는데, 이 과정에서 사용되는 JNI 네이티브 코드의 내부 구조가 불명확하여 보안 분석이 어려웠다.
Technical Solution
- 다형성 디스패처 sub_25E0AC를 역어셈블리로 분석: strlen, 문자열 복사, 문자열 역난독화, AES-128-CBC 암호화, MT19937 추출 등 5개 서로 다른 기능을 인자 조합으로 구분
- JNI 진입점 4개 매핑: buildN(0x9D394)에서 센서 데이터 직렬화+암호화, encryptKeyN(0x9D074)에서 세션 ID(20자 base62→base64) 생성, addOne/sampleTest/presentData/testOne에서 MT 플래그 제어
- 직렬화 파이프라인 5단계 분해: JNI 환경 설정(SDK_INT 검증)→ArrayList 요소 추출→첫 번째 쌍으로 출력 초기화→분리자 문자열 난독화 해제(0x8641 상수)→인덱스 1부터 쌍 반복 처리
- 내부 함수 10개 상세화: sub_9ED74(MT→AES→HMAC→base64→헤더 조립, 0xAFC 크기), sub_9E840(LCG 기반 문자열 역난독화), sub_9E594(HMAC-SHA256), sub_9FAD0(MT19937 범위 제한 난수)
- Java 측 아키텍처 매핑: CYFManager.buildSensorData()에서 이벤트 개수 임계값(16, 128)으로 고속/전체 경로 선택, 12개 이상 센서 서브시스템에서 ~25개 항목 수집, 5초 재진입 잠금으로 캐시 접근 직렬화
Key Takeaway
네이티브 암호화 파이프라인에서 다형성 디스패처를 역공학할 때는 어셈블리 수준 인자 추적이 필수이며, 센서 데이터 수집 시스템은 JNI 경계에서 명확한 단계 분해와 내부 함수 크기 측정을 통해 공격 표면을 정밀하게 파악할 수 있다.
실천 포인트
Android 보안 분석 엔지니어가 난독화된 JNI 라이브러리를 분석할 때, 다형성 디스패처의 인자 패턴을 어셈블리에서 추적하고 각 변형의 크기(0xAFC, 0x90, 0xD0 등)를 기록하면 함수 역할을 빠르게 식별할 수 있으며, 문자열 난독화 상수(0x8641)와 같은 반복되는 매직 넘버를 추출하면 코드베이스 전체의 난독화 패턴을 연결할 수 있다.