윈도우 포렌식에서 레지스트리는 매우 중요한 여러 정보들을 제공해준다. 특히, 최근이 실행된 프로그램에 대한 정보는 UserAssist 항목에서 찾아볼 수 있다. 해당 위치는 다음과 같다.

예시 ) HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

실습 컴퓨터의 실제 경로) HKEY_USERS\NTUSER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count

해당 내용을 레지스트리 뷰어로 보면 다음과 같다.

도대체 이게 무슨 언어?
도대체 이게 무슨 언어?

그런데 해당 키의 값들을 보면 영문자인것 같지만 일반적인 낱말로 이루어져 있지는 않다. 이것은 일종의 암호와로서 ROT-13이라는 방식으로 인코딩 되어있다.


ROT-13 암호화 방식

(이미지 출처 : 위키백과 ROT 13 : http://ko.wikipedia.org/wiki/ROT13  )
(이미지 출처 : 위키백과 ROT 13 : http://ko.wikipedia.org/wiki/ROT13 )

“ROT-13”는 각각의 알파벳 문자를 13글자씩 순서를 이동시켜서 문자열을 대체시키는 간단한 암호화 방식이다. 만약 마지막 글자인 Z에 도달하면 다시 처음으로 돌아가 a부터 시작한다. 그렇게하면 문자 O는 B가 되고, P는 C가 된다. 이러한 “ROT-13”방식 암호화는 인코딩과 디코딩 모두 간단하게 처리할 수 있다. 파이썬 문자열 라이브러리에는 maketrans라는 함수가 있는데, 이를 이용하면 문자열을 서로 치환할 수 있다. 따라서, maketrans함수를 활용해서 다음과 같이 ROT13 함수를 구현할 수 있다.


다음은, 단순히 index list에서 +13하는 방식을 사용하여 레지스트리 키 값들을 손쉽게 복호화하는 파이썬 소스코드이다. 먼저, 레지스트리 키 값을 텍스트 파일로 저장한 뒤, ROT-13 복호화를 수행한다.


결과물을 비교해보면 다음과 같다.

{7P5N40RS-N0SO-4OSP-874N-P0S2R0O9SN8R}\RFGfbsg\NYHcqngr\NYHcCebqhpg.rkr{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\ESTsoft\ALUpdate\ALUpProduct.exe

{7P5N40RS-N0SO-4OSP-874N-P0S2R0O9SN8R}\RFGfbsg\NYHcqngr\NYHcqngr.rkr{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\ESTsoft\ALUpdate\ALUpdate.exe

RFGfbsg.NYGbbyf.NYMvcNccVQ626484.1ESTsoft.ALTools.ALZipAppID626484.1

{Q65231O0-O2S1-4857-N4PR-N8R7P6RN7Q27}\abgrcnq.rkr{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}\notepad.exe

{Q65231O0-O2S1-4857-N4PR-N8R7P6RN7Q27}\gnfxzte.rkr{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}\taskmgr.exe


(좋은 레지스트리 뷰어를 사용하면, 자동으로 ROT-13을 해제해서 보여준다.)

NirSoft의 UserAssistView
NirSoft의 UserAssistView

NirSoft의 UserAssistView 는 다음에서 확인할 수 있다.

http://www.nirsoft.net/utils/userassist_view.html


ROT-13암호화는 현대의 암호기술 관점에서 그 수준이 매우 낮기 때문에 실제 포렌식 현장에서 용의자가 ROT-13과 같은 쉬운 암호방식을 사용할리는 없다.

CPUU님의 창작활동을 응원하고 싶으세요?