moyix의 원문: Window Messages as a Forensic Resource / Volatility Plugin내가 처음 윈도우 개발 관련 공부를 할때 윈도우 메시지에 대한 이해가 바로 GUI 환경의
윈도우 개발 전부라 생각 했던 적이 있었다. 메시지는 마치 혈액처럼 윈도우에 흐른다.
각 기관(프로그램)들이 나름대로 그 메시지 받아들이기도 하고 발생 시키기도 한다.
이러한 메커니즘을 관통하는 개념을 잡아 내는 것이 MFC 혹은 윈API의 전부 였던것 같다.
한창 심취 했을때에는 메시지 체인에서 Hook 프로시져를 걸어 할수 있는 것과 그를 어떻게
활용할 지에 대해서 판타지한 꿈을 꾸기도 하였다. 아무튼 현재 윈도우의 동적이며 인터렉티브
한 모습과 'WYSIWYG'한 모습은 메시지를 통해 완성이 되었다고 생각한다.
이러한 "WM_" 계열의 메시지들이 포렌식 조사관에게 있어선 마치 금조각 같은 것들이다
잘 녹여 붙이면 가치 있게 새로 태어날 운명인 금조각들,
일반적으로 이벤트가 발생하면(키보드가 눌렸다든가 등의) 1)OS(Windows)는 메시지를 생성하고이전까진 이러한 내용이 포렌식 업무에 쓰일수 없었던 이유는 메모리 상에 올라가 있는 메시지들을
2)포커스가 맞춰진 해당 스레드에게 메시지를 보낸다. 3)이를 메시지 핸들러가 받아 처리를 하는
방식이 일반적인 메커니즘이다. 메시지들은 윈도우 메시지 체인이라는 큐(queue)형태의 저장소를
통해 배급이 되는데 이전 메시지 처리가 끝나지 않은 상황에서 메시지가 발생할 경우 이 큐에
쌓이게 된다. 시스템에서 발생하는 메시지(WM_계열)는 MSDN에서 그에 대해 매우 상세하게
알아 볼수가 있다. 그러면 해당 프로세서에 어떤 이벤트가 대기중이고 어떤작업들을 하게 될지
예측을 해볼수가 있다. 원문에서 예를 들어보인 것 중에 WM_WTSSESSION_CHANGE의 경우
사용자 전환, 스크린보호기, 원격 접속 등의 이벤트가 일어날때 발생되는 메시지이다.
볼수가 없었거나 Display 형식이 매우 찌그러져있어 신뢰 할 수 없었던 것인데, 이를 moyix가 만든
플러그인을 통하여 Volatility에서 사용할 수가 있게 되었고 이는 moyix의 다른 툴인 SSDT Plugin과
함께 이제 보다 깊은 곳에서 자료를 찾아 내는 것이 가능하게 만들어줬다.ㅠ_ㅠ
이게 과연 얼마나 정식 포렌식에 쓰일진 알수 없으나 분명 조사관에게 더 큰 활동 공간을 제공해
줬음은 의심의 여지가 없다. 가장 큰 장점은 역시 사용하는것 조차도 쉽다는 것이다 -0-






덧글