윈도우 물리 메모리에서 공인 인증서 정보 추출
물리 메모리에서의 공인 인증서 정보는 인증서 관리 프로세스에 남아있지 않으며, 웹브라우저 프로세스 영역에서 확인 할 수 있다. 공인인증서 인증이 필요한 페이지의 경우, 인증서 관리 프로세스 호출을 위해 Active X를 요구한다. Active X를 지원하는 웹브라우저는 Internet Explorer이므로, Internet Explorer 프로세스 영역에서 공인인증서 정보를 추출 할 수 있다.(부가기능을 이용하여 Active X를 지원하는 타 브라우저의 경우, 내부에서 Internet Explorer 프로세스를 호출하는 형태이다.)
웹 브라우저에 의해 공인인증서 관리 프로세스가 실행되면, 공인 인증서 파일이 하드디스크에 존재 할 경우에는 인증서 프로세스 로드 즉시 메모리에 로드 된다. 그러나 공인인증서 파일이 하드디스크에 존재 하지 않고, 이동식디스크에 존재 할 경우에는 공인인증서 관리 프로세스에서 이동식디스크 항목을 클릭하면 메모리에 로드된다.
공인인증서 정보는 크게 인증서 정보와 개인키 정보, 두 가지로 나눌 수 있으며, 각 정보에 해당하는 시그니처를 통해 탐지 할 수 있다.
인증서 잔여 테스트에 사용 된 금융 사이트는 총 4곳이며, 테스트 결과는 다음과 같다.
인증서 프로그램 실행 iexplore.exe 프로세스 |
인증서 프로그램 종료 iexplore.exe 프로세스 |
|||
인증서 | 개인키 | 인증서 | 개인키 | |
A 은행 | 잔여 | 잔여 | 잔여 | 잔여 |
B 은행 | 잔여 | 잔여 | 잔여 | 잔여 |
C 은행 | 잔여 | 잔여 | 잔여 | 잔여 |
D 은행 | 잔여 | 잔여 | 잔여 | 잔여 |
휘발성 메모리에서 공인인증서 추출하는 경우 인증서 파일과 개인키 파일이 추출된다.
추출 정보 | 추출 가능 여부 |
인증서 파일(signCert.der) | 추출 가능 |
개인키 파일(signPri.key) | 추출 가능 |
1. 인증서 정보
인증서 정보의 가장 앞부분에는 버전 정보가 나타난다. 국내에서는 X.509 v3를 공인인증서 버전으로 사용 중이므로 버전 정보 바이너리 값을 물리 메모리에서 인증서 파일(확장명 .der)을 추출하는 시그니처로 사용 할 수 있다. X.509 v3의 시그니처 값은 3082059B30820483A0030201020204이며, 인증서 정보의 크기는 발급 자 정보에 따라 1438 ~ 1441바이트로 크기가 가변적이다.

인증서 정보 | 추출 가능 여부 |
버전 | 추출 가능 |
일련번호 | 추출 가능 |
서명 알고리즘 | 추출 가능 |
서명 해시 알고리즘 | 추출 가능 |
발급자 | 추출 가능 |
유효기간(시작) | 추출 가능 |
유효 기간(끝) | 추출 가능 |
주체 | 추출 가능 |
공개 키 | 추출 가능 |
기관 키 식별자 | 추출 가능 |
주체 키 식별자 | 추출 가능 |
주체 대체 이름 | 추출 가능 |
CRL 배포 지점 | 추출 가능 |
기관 정보 액세스 | 추출 가능 |
키 사용 | 추출 가능 |
인증서 정책 | 추출 가능 |
지문 알고리즘 | 추출 가능 |
지문 | 추출 가능 |
휘발성 메모리에 존재하는 인증서 정보를 토대로 추출 알고리즘을 구현 할 수 있다.
2. 개인키 정보
물리 메모리에서 개인키 정보의 시그니처(키식별자 확장필드)를 통해 개인키 파일(확장명 .key) 추출한다. 키식별자 확장필드 값은 30820510301A06082A831A8C9A44010F300E0408으로 개인키 정보의 총 크기는 인증서 정보와는 달리 1300바이트로 고정되어있다.
휘발성 메모리에 존재하는 개인키 정보를 토대로 추출 알고리즘을 구현 할 수 있다.
3. 논의사항
휘발성 메모리에서 추출 된 공인인증서 파일 중, 인증서 파일은 정상/훼손파일 여부 판단이 가능하지만, 개인키 파일의 경우 정보가 암호화 되어있어, 정상/훼손파일 여부 판단이 어렵다. 또한 여러 인증서 파일과 개인키 파일이 추출 될 경우, 추출된 사용자별 인증서와 개인키의 매치가 어려움이 존재한다. 현재 상황으로는 직접 대조하는 방법으로 판단해야 한다.