NHN AppGuard와 안드로이드 코드 보안의 효과적인 개선 방법 (1)편에 이어 작성 된 글입니다.
3. 릴리스 단계 (Release)
안드로이드 앱은 배포 전에 코드 강화, 난독화 및 기타 기술을 사용하여 APK 파일 내의 코드가 해독되기 어렵게 강화해야 합니다.
공격 임계치 및 역공학에 대한 시간 비용을 늘리는 방안이 필요하며 다음과 같은 코드 강화 기술이 대표적입니다.
주요 기술로는 소스 코드 패킹 (DEX 암호화, SO 강화)과 난독화 (DEX, C/C++) 두 가지가 있습니다.
코드 패킹
1. DEX 암호화
DEX 파일에는 컴파일된 코드가 들어가 있습니다. 해커들이 리버스 엔지니어링을 통해 DEX 파일에서 JAR 파일 또는 Java 클래스
파일을 만들 수 있으므로, 해당 DEX 파일 암호화를 통해서 원본 코드를 보호합니다.
2. SO 강화
SO 파일은 Shared Objects library(공유 객체 라이브러리)의 약자로 C/C++ 언어를 사용하여 개발된 동적 라이브러리입니다.
SO 강화는 ELF 파일의 내부 코드 (C.C++) 커스텀 패킹 (실행 압축 + 암호화) 진행하며, 쉽게 분석 가능한 심볼 정보를 난독화하여
역공학에 의해 코드가 분석되지 않도록 방어해야 합니다.
코드 난독화
1. DEX 난독화
DEX 난독화는 소스 코드 내 문자열을 암호화하며 Native에서 복호화해야 하며 Proguard와 같은 도구를 활용해서 변수, 메소드,
클래스 이름을 식별하기 어렵게 해야 합니다.
DexGuard 나 ARXAN 등의 상용 솔루션은 함수 호출 관계를 재구성하여 공격자들로 하여금 분석을 방해하여 분석 소요 시간 증가,
분석 난이도 증가, 패턴 탐지/유사도 비교 우회 등의 목적으로 주로 사용됩니다.
2. C/C ++ 코드 난독화
C/C++ 난독화는 Obfuscator-LLVM 도구를 사용하여 효율적으로 적용이 가능합니다.
이 도구는 주로 다음과 같은 기능을 포함하고 있습니다.
제어 흐름 위조 및 병합 : if, while, for 및 do와 같은 제어문을 소스 코드 기능을 변경하지 않고 switch 분기 선택문으로 변환
인라인 대체 : 여러 위치에서 호출되는 중앙 함수를 대신해서 실제 함수의 본문으로 대체
문자열 암호화 : 문자열 상수를 암호화하고 런타임에 해당 문자열을 네이티브에서 복호화
표현 변환 : +, &, | 연산자를 동일한 결과를 반환하는 함수로 대체되는 기법
4. 운영 단계 (Operation)
운영 단계에서는 변조앱 및 해킹툴이 유통되는 블랙마켓 및 해킹 관련 커뮤니티 모니터링해야 하며,
해킹 징후를 사전에 감지해서 공격 패턴 파악 및 수집된 보안 로그 등을 활용해서 다양한 방식으로 대응해야 합니다.
요약
아래와 같이 앱 서비스 개발 시 시큐어 코딩 요구사항과 배포하기 전 단계에 취약점 점검, 코드 강화 및 네트워크 통신 계층의
무결성 검사 등을 고려하여 사전에 노출될 수 있는 보안 취약점을 최소화하고 릴리스 단계에서는 앱 보호 기술 적용을 통한
코드 보호를 통한 안전한 모바일 서비스를 기대합니다.
Security Development
Lifecycle
|
개발자
|
보안지원
|
개발
|
시큐어 코딩 적용
|
개발단계의 보안성 검토,
보안 개발 가이드
|
테스트
|
코드 취약점 스캐닝(선택),
코드 취약점 및 보안 위협 요소 제거
|
코드 취약점 스캐닝,
보안 취약점 검수
|
릴리스
|
코드 강화를 위한 패킹 및 난독화 (앱가드) 적용
|
코드 보호 기술 제공, 가이드
|
운영
|
로그 데이터 분석
|
불법복제 채널 모니터링,
로그 데이터 분석
|
'BLOG > 인사이드' 카테고리의 다른 글
[칼럼] 왜 NHN AppGuard를 이용해야할까요? (0) | 2023.09.15 |
---|---|
[소개] NHN AppGuard의 새로워진 대시보드를 소개합니다! (0) | 2023.09.11 |
[칼럼] NHN AppGuard와 안드로이드 코드 보안의 효과적인 개선 방법 (1) (0) | 2023.08.31 |
[칼럼] 모바일 앱 보안 왜 중요할까?(feat. NHN AppGuard) (0) | 2023.08.02 |
[영상] 사례로 알아보는 NHN AppGuard 실전 A to Z (0) | 2023.07.04 |