
악성코드 개발 훈련을 위해 AV/EDR의 동작을 시뮬레이션합니다.
_____ ______ _____ _____
/ ____| (_) | ____| __ \| __ \
| | _ __ _ _ __ ___ ___ ___ _ __ | |__ | | | | |__) |
| | | '__| | '_ ` _ \/ __|/ _ \| '_ \| __| | | | | _ /
| |____| | | | | | | | \__ \ (_) | | | | |____| |__| | | \ \
\_____|_| |_|_| |_| |_|___/\___/|_| |_|______|_____/|_| \_\
Developed by : Matthias Ossard
https://github.com/Helixo32
CrimsonEDR는 특정 악성코드 패턴을 식별하기 위해 설계된 오픈소스 프로젝트로, 엔드포인트 탐지 및 대응(EDR)을 우회하는 기술을 연마할 수 있는 도구를 제공합니다. 다양한 탐지 방법을 활용하여 사용자가 보안 회피 전술에 대한 이해를 심화할 수 있도록 돕습니다.
| 탐지 방법 | 설명 |
|---|---|
| Direct Syscall | 직접 시스템 호출 사용을 탐지합니다. 이는 일반적으로 악성코드가 기존 API 후크를 우회하기 위해 사용하는 기법입니다. |
| NTDLL Unhooking | NTDLL 라이브러리 내 함수 후크 해제 시도를 식별합니다. 이는 일반적인 회피 기법입니다. |
| AMSI Patch | 바이트 수준 분석을 통해 AMSI(안티멀웨어 검사 인터페이스)의 수정을 탐지합니다. |
| ETW Patch | ETW(Windows 이벤트 추적)에 대한 바이트 수준 변경을 탐지합니다. 악성코드가 탐지를 회피하기 위해 자주 조작합니다. |
| PE Stomping | PE(Portable Executable) 스톰핑 사례를 식별합니다. |
| Reflective PE Loading | PE 파일의 반사적 로딩을 탐지합니다. 악성코드가 정적 분석을 회피하기 위해 사용하는 기법입니다. |
| Unbacked Thread Origin | 백업되지 않은 메모리 영역에서 시작된 스레드를 식별합니다. 이는 종종 악성 활동을 나타냅니다. |
| Unbacked Thread Start Address | 백업되지 않은 메모리를 가리키는 시작 주소를 가진 스레드를 탐지합니다. 코드 인젝션의 잠재적 징후입니다. |
| API hooking | NtWriteVirtualMemory 함수에 후크를 설치하여 메모리 수정을 모니터링합니다. |
| Custom Pattern Search | 사용자가 JSON 파일에 제공된 특정 패턴을 검색할 수 있도록 하여 알려진 악성코드 서명을 식별하는 데 도움을 줍니다. |
CrimsonEDR을 시작하려면 다음 단계를 따르세요:
sudo apt-get install gcc-mingw-w64-x86-64
git clone https://github.com/Helixo32/CrimsonEDR
cd CrimsonEDR;
chmod +x compile.sh;
./compile.sh
Windows Defender 및 기타 안티바이러스 프로그램은 DLL에 포함된 내용(AMSI 패치 여부를 확인하는 바이트) 때문에 DLL을 악성으로 표시할 수 있습니다. CrimsonEDR을 사용할 때는 DLL을 허용 목록에 추가하거나 일시적으로 안티바이러스를 비활성화하여 중단을 방지하시기 바랍니다.
CrimsonEDR을 사용하려면 다음 단계를 따르세요:
ioc.json 파일이 모니터링 대상 실행 파일이 실행되는 현재 디렉터리에 있는지 확인하세요. 예를 들어, 모니터링할 실행 파일을 C:\Users\admin\에서 실행하는 경우 DLL은 C:\Users\admin\ioc.json에서 ioc.json을 찾습니다. 현재 ioc.json에는 msfvenom 관련 패턴이 포함되어 있습니다. 다음 형식으로 자신만의 패턴을 쉽게 추가할 수 있습니다:{
"IOC": [
["0x03", "0x4c", "0x24", "0x08", "0x45", "0x39", "0xd1", "0x75"],
["0xf1", "0x4c", "0x03", "0x4c", "0x24", "0x08", "0x45", "0x39"],
["0x58", "0x44", "0x8b", "0x40", "0x24", "0x49", "0x01", "0xd0"],
["0x66", "0x41", "0x8b", "0x0c", "0x48", "0x44", "0x8b", "0x40"],
["0x8b", "0x0c", "0x48", "0x44", "0x8b", "0x40", "0x1c", "0x49"],
["0x01", "0xc1", "0x38", "0xe0", "0x75", "0xf1", "0x4c", "0x03"],
["0x24", "0x49", "0x01", "0xd0", "0x66", "0x41", "0x8b", "0x0c"],
["0xe8", "0xcc", "0x00", "0x00", "0x00", "0x41", "0x51", "0x41"]
]
}
다음 인수와 함께 CrimsonEDRPanel.exe를 실행하세요:
-d <dll_경로>: CrimsonEDR.dll 파일의 경로를 지정합니다.
-p <프로세스_ID>: DLL을 주입하려는 대상 프로세스의 프로세스 ID(PID)를 지정합니다.
예시:
.\CrimsonEDRPanel.exe -d C:\Temp\CrimsonEDR.dll -p 1234
이 프로젝트 개발에 도움이 된 유용한 리소스입니다:
질문, 피드백 또는 지원이 필요한 경우 다음으로 연락해 주세요: