초록 열기/닫기 버튼

메모리 포렌식은 동작 중인 시스템의 메모리를 분석함에 따라 실행 중 변경되거나 비휘발성 장치에 흔적을 남기지 않는 악성코드를 분석하거나 실행 중에만 확인 가능한 데이터를 획득하는 데 유용하다. 하지만 메모리 포렌식 기술에 관한 관심이 높아지고 고도화됨에 따라 이를 회피하기 위한 다양한 안티 메모리 포렌식 기술이 등장하고 있다. 특히, 일부 악성코드는 메모리 포렌식 분석 과정에서 코드의 노출을 회피하기 위해 실행 파일이나 라이브러리의 헤더를 제거한 상태로 Execute 권한을 할당한 메모리에 복사한다. 그러나 기존 메모리 포렌식 도구는 악성코드 탐색 시 Execute 권한을 갖는 페이지의 상위 2kb만 확인하거나 헤더에 포함되는 시그니처인 ‘MZ’, ‘PE’를 스캐닝하므로 헤더가 제거된 실행 파일은 분석이 어렵다. 따라서 본 논문에서는 Section Table을 탐색하여 헤더가 제거된 실행 파일을 탐지하는 방법을 제안한다. Section Table은 Section Header로 구성된 Table로 각 Entry의 크기가 일정함에 따라, Section Header 시그니처를 탐색하고 각 시그니처 간의 Offset 간격이 Entry 크기의 배수인지 확인하여 탐색한다. Section Table 탐색은 Virtual Address Descriptor(VAD)를 이용하여 악성코드가 은닉할 가능성이 큰 Execute 권한을 갖는 non-private 페이지를 선별 후 수행한다. 또한, 본 논문에서는 헤더가 제거된 실행 파일을 탐지하는 기법을 Volatility 3 Framework에서 실행할 수 있는 Plug-in 형태로 구현하고 Ursnif에 감염된 시스템의 메모리를 분석함으로 탐지 성능을 검증하였다.


Memory Forensics is a useful technique for analyzing malware that changes itself during execution or does not leave traces on non-volatile devices and for obtaining data that can be identified only during execution as it dissects a working system's  memory. However, as interest in memory forensic technology is growing and advanced, various anti-memory forensic techniques are emerging to avoid it. In particular, malware removes the headers of executable file and copy them to the memory pages which have the execute protection to prevent code exposure during the memory forensic analysis. However, memory forensic tools only check the first 2kb of pages with execute protection when searching for malware and scan signatures ‘MZ’ and ‘PE’ included in the headers. Thus it is difficult to analyze the executable file without headers with the memory forensic tools. In this paper, we propose a method to detect executable files without headers by searching the Section table in the memory dump. The Section Table is composed of Section Headers and all entries are the same size. Therefore, we explore the Section header signatures and check whether the offset intervals between them are a multiple of the Section header size to detect Section tables. We select the non-private pages with execute protection in Virtual Address Descriptor (VAD) which are highly likely to be hidden by malicious code and scan the Section Tables in there. In addition, we verify the detection performance by implementing the proposal as a plug-in that can be executed in Volatility 3 Framework and analyzing the memory of the system infected with Ursnif.