피드로 돌아가기
Dev.toSecurity
원문 읽기
ACG 우회 IAT Hooking 및 PEB 탐색 기반 Windows 샌드박스 구현
Shelved Projects #1: Windows Automata
AI 요약
Context
호스트 시스템의 무결성을 보장하는 격리된 UI Automation 프레임워크 구축 필요성 증대. 기존 Inline Hooking 방식은 modern browser의 Arbitrary Code Guard(ACG)로 인해 메모리 쓰기 권한 제한에 따른 시스템 크래시가 발생하는 한계 존재.
Technical Solution
- .text 섹션 대신 쓰기 가능한 .rdata 섹션의 Import Address Table(IAT) 포인터를 조작하는 IAT Hooking 엔진 설계로 ACG 보안 정책 우회
- 표준 API의 제약 및 Loader-lock Deadlock 방지를 위해 GS 레지스터에서 PEB(Process Environment Block)를 직접 참조하여 로드된 모듈 리스트를 수동 탐색
- LdrLoadDll API 후킹을 통한 동적 모듈 로드 시점의 실시간 IAT 패칭 메커니즘 구현으로 샌드박스 적용 범위 유지
- 파일 및 레지스트리 수정 요청을 세션별 독립 서브키로 매핑하는 Transparent Redirection 구조 설계를 통한 호스트 환경 오염 차단
- 재귀 호출로 인한 Stack Overflow 방지를 위한 Thread-local 변수 및 Recursion Guard 적용
실천 포인트
1. ACG(Arbitrary Code Guard) 적용 환경인지 확인 후 Inline Hooking 대신 IAT Hooking 검토
2. 표준 API가 제한된 샌드박스 환경에서 프로세스 메타데이터 접근 시 PEB 직접 탐색 고려
3. 후킹 함수 내부에서 동일 API 호출 시 발생하는 무한 재귀 방지를 위한 Guard 변수 설계 적용