OtterCTF 메모리 포렌식 문제를 풀다가 현재 시스템에 로그인 중인 사용자를 알아봐야 할 필요가 생겼다. 열심히 구글링 해보니 아래 레지스트리 경로에 마지막으로 로그온 한 사용자가 저장되어 있다고 한다. 제법 유명한 디지털 포렌식 책에도 마지막 로그온 사용자 정보를 아래 레지스트리에서 볼 수 있다고 적혀있다.
* Key: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
* Value name: DefaultUserName
그런데 값 이름이 DefaultUserName인게 영 찝찝했다. 영문 사이트들에서도 시스템 부팅 시 자동 로그온 설정할 때 이 레지스트리 값을 건드리고, 마지막 로그온 사용자를 알아볼 때 사용하진 않는 것 같았다.
OtterCTF 메모리 포렌식 문제 풀 땐 문제가 없었는데 내 랩톱을 확인해보니 DefaultUserName에 대한 찝찝함이 완전히 사라졌다.
현재 로그온 중인 사용자 계정은 로컬 계정인 Geunyeong인데, DefaultUserName 값은 내 이메일이다. 랩톱을 처음 샀을 때 내 MS 계정으로 잠깐 로그인을 했었는데 그 때 썼던 계정 정보가 남아있는 것 같다. 즉 가장 최근에 로그온 한 사용자를 찾을 때 DefaultUserName을 참조하는 건 신뢰적이지 못하다.
결국 또 다시 구글링을 한 결과 MSDN 포럼에서 해답을 찾아냈다. (MSDN 포럼 링크)
* Key: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI
* Value name: LastLoggedOnUser
위 부터 순서대로 내 랩톱(Win10), 가상머신(Win7), OtterCTF 메모리 덤프에서 LastLoggedOnUser를 확인해본 결과다. 제법 정확한 결과를 보여주고 있다.
Windows 7 가상머신에 일반 사용자 dummyuser1을 만들어서 dummyuser1로 사용자 전환을 했다. geunyeong 계정은 로그오프 하지 않은 상태여서 세션은 살아있는 상태다. dummyuser1로 LastLoggedOnUser를 확인해보면 dummyuser1이 저장되어 있는 걸 볼 수 있다.
가상머신 종료 후 SOFTWARE 하이브 파일을 추출해 REGA로 파싱 후 LastLoggedOnUser 값을 확인해봐도 dummyuser1이 들어있다.
그에 반해 Windows 7 가상머신에선 DefaultUserName이 저장되는 Winlogon 키에는 DefaultUserName이란 값이 존재하지 않는다. 존재하지 않을 수도 있는 값이란 의미다.
DefaultUserName이 가장 마지막으로 로그온 한 사용자를 보여주지 않는 다는 것을 실험을 통해 알아봤다. DefaultUserName 값을 참조해 가장 마지막으로 로그온 한 사용자를 판단하지 말고 LastLoggedOnUser 값을 참조해 마지막 로그온 사용자를 특정하는 것이 더욱 신뢰성 있는 방법이다.
Windows 10의 경우 LastLoggedOnUserSID라는 값도 있어 사용자를 특정하는데 있어 더욱 큰 도움이 될 것이라 생각된다.
'Digital Forensics > Windows Registry' 카테고리의 다른 글
Registry에서 Windows 버전 정보 획득하기 (1) | 2022.01.10 |
---|---|
vk 셀 복구하기 (0) | 2020.04.18 |
Shellbags 생성/갱신 기준 (0) | 2020.03.25 |