
라이브 메모리 분석으로 프로세스, 모듈, 핸들, 토큰, 스레드, .NET 어셈블리, 메모리 주소 공간 및 환경 변수에서 악성 코드 IOC를 탐지합니다. 후크, 셸코드, 메모리 영역, 모듈 및 프로세스를 덤프하고, 탐지하며, 디스어셈블합니다.

WhacAMole는 메모리 내 프로세스를 통합적으로 분석하고, 악성코드와 관련된 이상 징후를 탐지 및 경고하며, 확인, 상관 분석 또는 분석을 위한 모든 관련 정보를 파일에 저장하고, 의심스러운 메모리 영역, 프로세스 및 모듈을 덤프하는 프로그램입니다. 이를 위해 프로세스의 메모리 영역 및 로드된 모듈의 이상 징후뿐만 아니라 프로세스가 사용하는 모든 메모리 공간을 심층적으로 분석합니다. 현재 WhacAMole는 악의적인 행동 또는 악성코드에 의해서만 발생할 수 있는 67개의 경고를 식별할 수 있습니다. 프로세스, 메모리 및 모듈의 70개 이상의 속성을 표시하며, 메모리에서 읽은 많은 속성과 디스크의 해당 파일에 나타나는 속성을 비교하고, 의심스러운 메모리 영역을 부분적으로 디스어셈블하며, 분석가가 직접 조사할 수 있도록 메모리에서 수정된 내보내기 함수를 부분적으로 디스어셈블합니다.

다른 유사한 프로그램과 달리, 프로세스에 대한 모든 관련 정보를 분석가에게 제공하며, 악성코드와 관련된 특성을 다양한 경고로 레이블링하여 자체 분석을 수행하거나 악성 프로세스 존재의 다른 징후를 찾을 수 있도록 합니다. 경고는 위험도와 동일한 행동이 나타나는 프로세스 수에 따라 6가지 값의 척도로 분류되며, html 문서에 색상 척도로 반영됩니다. 6(검은색)은 감지된 특성이 악성코드로 인한 것일 확률이 가장 높음을 나타내고, 1(회색)은 비정상적인 동작이지만 동일한 동작이 많은 시스템 프로세스에서 관찰되었음을 나타냅니다.

분석가의 작업을 용이하게 하기 위해 정보는 화면, 분석된 프로세스의 탐색 패널이 있는 HTML 파일 및 csv 텍스트 파일로 표시됩니다. html 문서의 사이드 패널에는 프로세스 트리가 표시되며, 프로세스에서 감지된 가장 높은 경고에 해당하는 색상, 문서 내 위치에 대한 하이퍼링크, 32비트 프로세스인 경우 PID가 파란색, .NET 프로세스인 경우 녹색으로 표시됩니다. CFG(Control Flow Guard)가 활성화된 프로세스는 기울임꼴로 표시됩니다.

원격 RDP 세션에 대한 정보는 프로세스 정보 시작 부분에 표시됩니다.

네트워킹 기능은 두 가지 방식으로 표시됩니다. TCP 연결이 감지되면 지구본 기호로 표시되고, 연결된 소켓이 감지되면 빈 지구본 기호로 표시됩니다. 메모리에 http 탐색 라이브러리(wininet.dll 및 winhttp.dll)가 있는 프로세스에 대해 추가 기호(흰색 원)가 추가되었습니다.

네트워크 상세:

연결된 소켓:

Mimikatz 유사 활동이 감지되면 특수 기호(키)가 있습니다.

html 문서의 탐색 패널 하단에는 모든 경고가 색상과 함께 표시되며, 경고가 감지된 프로세스의 PID는 프로세스가 표시된 문서 위치로의 하이퍼링크 형태로 제공됩니다.

경고가 감지된 프로세스가 없으면 해당 이름이 흰색 배경에 표시됩니다.
기본 패널에는 모든 프로세스가 축소 가능한 섹션에 정보와 함께 표시되며 기본적으로 숨겨져 있습니다. 모든 경고는 항상 표시됩니다.

저장된 메모리 영역은 안티바이러스가 삭제하는 것을 방지하기 위해 키 0x0E로 XOR 처리됩니다.
다음 항목을 분석, 비교 및 표시합니다.
1. 프로세스:
• 경고:
[Admin Privs]
[Alternate credentials]
[Alternate network credentials]
[Delphi 4 – Delphi 2006]
[Entry Point]
[LogonType]
[Managed code but no Assemblies detected - .NET ETW disabled]
[Mismatching Path]
[Name of the module hidden in memory]
[NTLM Authentication]
[PE anomalies]
[PEB ImageBaseAddress forgery]
[Possible .NET in memory loaded as Assembly.Load(byte[])]
[Process checkSum is 0]
[Process checkSum mismatch]
[Process Ghosting]
[Process Hollowing]
[Process Memory region hash mismatch]
[Process Memory region Protection value modified]
[Process Memory region WX]
[Process Name != Internal Name]
[PROCESS NOT SIGNED]
[Process Private memory region]
[Process Unknown executable memory region]
[Section Table]
[Shared memory subversion]
[SizeOfInitializedData is 0]
[SUSPENDED PROCESS]
[Suspicious Commandline]
[Suspicious Environment Variable]
[TimeDateStamp Inequality]
[Transaction detected: TxF/TxR]
[Unmanaged process/managed code execution detected]
[Unusual CWD]

2. 모듈:
정상 모듈에서 예상되는 것은 LMIVH입니다.
L = InLoadOrderModuleList(PEB).
M = InMemoryOrderModuleList (PEB).
I = InInitializationOrderModuleList (PEB).
V = 프로세스 가상 메모리에서 감지됨.
H = PEB 해시 목록에서 감지됨.
세 개의 PEB 연결 목록에서 연결이 해제된 경우 다음과 같이 표시됩니다.
---VH
모듈이 맬웨어에 의해 수동으로 로드된 경우 PEB 목록에 표시되지 않지만 메모리 스캔으로 감지될 수 있으므로
다음과 같이 표시됩니다.
−−−V−
Moat 기법을 사용한 DLL Hollowing의 경우(참조: https://github.com/forrest-orr/artifacts-kit POC) 결과는 다음과 같습니다.
-----
• 경고:
[Abnormal PE Header]
[Delphi 4 – Delphi 2006]
[DLL Hiding]
[DLL Hollowing]
[Mismatching Path]
[Module checkSum is 0]
[Module checkSum mismatch]
[Module Name != OriginalFileName]
[MODULE NOT SIGNED]
[Module PE anomalies]
[Module SizeOfInitializedData is 0]
[Module TimeDateStamp Inequality]
[Name of the module hidden in memory]
[Phantom DLL Hollowing TxF]
[Private memory region]
[Section Table]
[Signed PE NOT MEM_IMAGE]
[Unsigned PE NOT MEM_IMAGE]
[Unusual module]

3. 핸들: File, Key, Mutant, Process, Thread, Token 및 Section 유형의 모든 프로세스 핸들이 표시됩니다. 핸들 유형에 따라 다음 정보가 표시됩니다:








• 경고:
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]
4. 토큰: 토큰이 감지된 스레드에서는 다음이 표시됩니다:
• 경고:
[Thread with TOKEN]

5. 스레드:
• 경고:
[Thread-Memory NOT MEM_IMAGE]
[Thread-Possible Ekko technique]
[Thread-Possible Foliage technique]
[Thread-Unknown module in Stack]

6. .NET 어셈블리
• 경고:
[.NET Assembly w/o ILPath]

7. 메모리 주소 공간. 프로세스의 모든 메모리 영역에서 다음 값을 표시합니다:
• 경고:
[Executable memory region not MEM_IMAGE]
[Hidden PE]
[Lagos Island Method]
[Mapped Image]
[Memory region hash]
[Memory region Protection value modified]
[Memory region WX]
[Memory/File values mismatch]
[Moat detected]
[MZ/PE Not Present]
[Shellcode]
[Unknown executable memory region]

