악성코드 분석 black energy 심화 - DLL 검사 2
1. malfind
명령어
python vol.py -f be2.vmem windows.malfind
- Tag: VadS는 Virtual Address Space의 약자로, 가상 주소 공간을 의미합니다.
- Protection: Page Execute Read Write는 메모리의 보호 모드를 의미합니다. 이 경우 실행, 읽기, 쓰기가 모두 허용됩니다.
- PrivateMemory: 프로세스의 메모리 크기를 의미합니다. 이 경우 9MB입니다.
- FileOutput: 파일 출력 여부를 의미합니다. 이 경우 1로 설정되어 있으므로 파일이 출력됩니다.
- HexDump: 메모리의 내용을 16진수로 표시한 것입니다. 이 경우 MZ 헤더가 표시되어 있습니다.
- MZ 헤더는 PE 파일의 시작 부분에 있는 헤더로, PE 파일의 구조와 크기를 나타냅니다.
* PE 파일은 Windows에서 실행되는 실행 파일의 형식입니다.
VadS는 Virtual Address Space의 약자로, 가상 주소 공간을 의미합니다. 가상 주소 공간은 프로세스가 사용할 수 있는 메모리의 범위입니다.
MZ 헤더가 VadS인 경우는 파일이 메모리로 로드되었지만, 파일에서 직접 실행되지는 않은 것입니다. 파일은 메모리에 로드된 후, 다른 코드에 의해 실행됩니다.
이러한 경우는 다음과 같은 경우에 발생할 수 있습니다.
- DLL 파일이 메모리로 로드되었지만, 아직 실행되지 않은 경우
- 프로그램이 시작될 때 메모리로 로드된 코드가 실행되지 않은 경우
- 프로그램이 중지되었을 때 메모리에 로드된 코드가 실행되지 않은 경우
MZ 헤더가 VadS인 경우는 보안상 위험이 있을 수 있습니다. 악성 코드가 MZ 헤더를 사용하여 메모리에 로드된 후, 다른 코드에 의해 실행될 수 있기 때문입니다.
따라서 MZ 헤더가 VadS인 경우는 악성 코드를 의심하고, 보안 검사를 수행하는 것이 좋습니다.
2. ldrmodules
LDR modules는 Load Dependency Modules의 약자로, 프로세스가 로드한 모듈의 목록입니다. 모듈은 DLL 파일이나 커널 모듈과 같은 실행 가능한 코드의 집합입니다. 프로세스는 LDR modules에 있는 모듈을 사용하여 기능을 수행합니다.
LDR modules는 다음과 같은 정보를 포함합니다.
- 모듈의 이름
- 모듈의 크기
- 모듈의 메모리 주소
- 모듈의 시작 주소
- 모듈의 종료 주소
LDR modules는 보안 분석에 유용합니다. 악성 코드가 프로세스의 LDR modules에 침입하여 자신의 코드를 실행할 수 있기 때문입니다. 따라서 LDR modules를 분석하면 악성 코드를 탐지할 수 있습니다.
명령어
python vol.py -f be2.vmem -p 856 windows.ldrmodules
- Pid: 프로세스 ID
- Process Base: 프로세스의 메모리 시작 주소
- InLoad: 프로세스가 메모리에 로드되었는지 여부
- InInit: 프로세스가 초기화되었는지 여부
- InMem: 프로세스가 메모리에 존재하는지 여부
- MappedPath: 프로세스의 파일 경로
InInit이 False일 수 있는 이유는 다음과 같습니다.
- 프로세스가 아직 초기화되지 않았을 수 있습니다.
- 프로세스가 종료되었을 수 있습니다.
- 프로세스가 중지되었을 수 있습니다.
나머지 항목은 False이면 안 됩니다. False이면 해당 항목에 문제가 있는 것입니다.
예를 들어, InMem이 False이면 프로세스가 메모리에 존재하지 않습니다. 이는 프로세스가 종료되었거나 중지되었음을 의미합니다.
이는 프로세스가 아직 시작되지 않았거나 종료되었거나 중지되었음을 의미합니다. InLoad가 False인 경우는 프로세스에 문제가 있는 것으로 간주해야 합니다.
3.dumpdir