Information Security/Digital Forensic

윈도우 물리 메모리에서 공인 인증서 정보 추출

hdhwang 2022. 6. 3. 15:35

물리 메모리에서의 공인 인증서 정보는 인증서 관리 프로세스에 남아있지 않으며, 웹브라우저 프로세스 영역에서 확인 할 수 있다. 공인인증서 인증이 필요한 페이지의 경우, 인증서 관리 프로세스 호출을 위해 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바이트로 크기가 가변적이다.

[그림 1] 인증서 정보의 시그니처
 
인증서 정보 추출 가능 여부
버전 추출 가능
일련번호 추출 가능
서명 알고리즘 추출 가능
서명 해시 알고리즘 추출 가능
발급자 추출 가능
유효기간(시작) 추출 가능
유효 기간() 추출 가능
주체 추출 가능
공개 키 추출 가능
기관 키 식별자 추출 가능
주체 키 식별자 추출 가능
주체 대체 이름 추출 가능
CRL 배포 지점 추출 가능
기관 정보 액세스 추출 가능
키 사용 추출 가능
인증서 정책 추출 가능
지문 알고리즘 추출 가능
지문 추출 가능

 

휘발성 메모리에 존재하는 인증서 정보를 토대로 추출 알고리즘을 구현 할 수 있다.

[그림 2] 인증서 정보 추출 알고리즘

2. 개인키 정보

물리 메모리에서 개인키 정보의 시그니처(키식별자 확장필드)를 통해 개인키 파일(확장명 .key) 추출한다. 키식별자 확장필드 값은 30820510301A06082A831A8C9A44010F300E0408으로 개인키 정보의 총 크기는 인증서 정보와는 달리 1300바이트로 고정되어있다.

 

[그림 3] 개인키 정보의 시그니처

 

휘발성 메모리에 존재하는 개인키 정보를 토대로 추출 알고리즘을 구현 할 수 있다.

 

[그림 4] 개인키 정보 추출 알고리즘

3. 논의사항

휘발성 메모리에서 추출 된 공인인증서 파일 중, 인증서 파일은 정상/훼손파일 여부 판단이 가능하지만, 개인키 파일의 경우 정보가 암호화 되어있어, 정상/훼손파일 여부 판단이 어렵다. 또한 여러 인증서 파일과 개인키 파일이 추출 될 경우, 추출된 사용자별 인증서와 개인키의 매치가 어려움이 존재한다. 현재 상황으로는 직접 대조하는 방법으로 판단해야 한다.