안드로이드 운영체제 기반 안티포렌식 연구
초록
본 논문은 CyanogenMod 기반 안드로이드 OS를 수정하여 포렌식 도구의 데이터 추출을 방해하고, 가짜 데이터를 제공함으로써 안티포렌식 기능을 구현한 사례를 제시한다. 실험 결과, 정상 사용에는 영향을 주지 않으면서 포렌식 툴의 설치와 분석을 차단하거나 지연시킬 수 있음을 확인하였다.
상세 분석
이 연구는 안드로이드 운영체제 수준에서 안티포렌식 기능을 구현하기 위해 CyanogenMod 소스코드를 직접 수정한 점이 가장 큰 특징이다. 먼저 부팅 단계에서 init.rc 파일을 개조하여 ADB와 같은 디버깅 인터페이스를 비활성화하고, 특정 포렌식 툴이 요구하는 서비스(예: adbd, vold)를 차단한다. 이어서 /system/bin 디렉터리의 핵심 바이너리(예: mount, dmsetup)를 후킹하여 파일 시스템 접근 요청이 포렌식 툴에 의해 발생하면 오류를 반환하거나 지연시킨다. 이러한 후킹은 동적 라이브러리 로더인 linker를 조작해 LD_PRELOAD 방식으로 구현했으며, 루트 권한이 필요한 경우에도 SELinux 정책을 완화하지 않고 기존 정책에 맞는 권한 범위 내에서 동작하도록 설계하였다.
또한, 커널 레벨에서는 dm-crypt 모듈을 변형해 특정 파티션(예: /data)의 암호화 키를 런타임에 무작위로 교체함으로써 포렌식 툴이 복호화 키를 획득하지 못하도록 하였다. 이때 키 교체 로직은 부팅 시점에만 실행되며, 정상 애플리케이션은 기존 키와 동일한 가상 키를 투명하게 사용한다.
가짜 데이터 제공 메커니즘은 파일 시스템 필터 드라이버를 이용해 특정 경로(예: /sdcard/WhatsApp) 접근 시 미리 정의된 위조 파일을 반환하도록 구현하였다. 위조 파일은 메타데이터(타임스탬프, 파일 크기)까지 실제 파일과 일치하도록 조정했으며, 포렌식 툴이 해시값을 검증할 경우에도 일관된 결과를 보여준다.
실험에서는 Cellebrite UFED, Magnet AXIOM, 그리고 오픈소스 XRY와 같은 상용·오픈 포렌식 툴을 대상으로 5가지 시나리오(물리적 이미지 추출, 논리적 백업, 파일 시스템 탐색, 앱 데이터 추출, 루트 권한 획득)를 수행하였다. 결과적으로 물리적 이미지 추출은 부팅 단계에서 커널이 비정상 종료되면서 실패했고, 논리적 백업은 ADB 차단으로 전혀 진행되지 않았다. 파일 시스템 탐색과 앱 데이터 추출은 지연 시간이 평균 30초에서 2분 사이로 증가했으며, 위조 파일이 반환되어 원본 데이터와 일치하지 않는 결과를 보였다.
이러한 결과는 안드로이드 OS 자체를 변형함으로써 포렌식 툴이 의존하는 표준 인터페이스와 시스템 콜을 무력화하거나 오염시킬 수 있음을 입증한다. 특히, 기존 안티포렌식 연구가 주로 애플리케이션 레이어에서 데이터 은닉을 시도한 것과 달리, OS 레벨에서의 접근 차단은 보다 근본적인 방어를 제공한다. 다만, 커스텀 ROM을 설치해야 하는 전제와 루트 권한이 필요한 점은 실제 현장에서 적용 가능성을 제한한다는 점에서 한계로 지적된다.
댓글 및 학술 토론
Loading comments...
의견 남기기