← 보안센터로 돌아가기

분석정보 · 악성코드 분석 정보

오픈 소스 프로젝트를 악용하는 DonutLoader 분석

최근 유행하는 ClickFix 공격 캠페인에서 얼마 전 분석한 CastleLoader 와 함께 DonutLoader 로 알려진 로더 타입의 악성 파일이 사용되고 있다는 사실이 발견됐다.DonutLoader 는 Github 에 공개된 donut 프로젝트를 기반으로 작성된 악성 파일로서, 프로젝트 제작자는 방어자/레드팀 측을 대상으로 CLR 인젝션, 셸코드(Shellcode)를 통한 메모리 로딩

2026-08-05INCA Security Center

최근 유행하는 ClickFix 공격 캠페인에서 얼마 전 분석한 CastleLoader 와 함께 DonutLoader 로 알려진 로더 타입의 악성 파일이 사용되고 있다는 사실이 발견됐다.


DonutLoader 는 Github 에 공개된 donut 프로젝트를 기반으로 작성된 악성 파일로서, 프로젝트 제작자는 방어자/레드팀 측을 대상으로 CLR 인젝션, 셸코드(Shellcode)를 통한 메모리 로딩과 같은 공격 기법을 시연할 목적으로 프로젝트를 작성했음을 명시하고 있으나 공격자는 이를 악용해 DonutLoader 라는 악성 파일을 탄생시켰다.


DonutLoader 는 Windows OS 의 AMSI(Antimalware Scan Interface), WLDP(Windows Lockdown Policy), ETW(Event Tracing for Windows)와 관련된 API를 패치해 탐지를 우회하고 EXE, DLL, .NET 어셈블리, 스크립트로 작성된 페이로드를 메모리에 로딩해 실행하는 기능을 제공한다.


[그림 1] Github 에 공개된 donut 프로젝트 로고 이미지



DonutLoader

발견된 DonutLoader 파일은 셸코드를 실행하기 전 CreateEventW(), MsgWaitForMultipleObjectsEx() API를 활용해 프로세스의 실제 실행 시간이 5초 이상인지 검증한다. 이는 일부 샌드박스, 디버깅 환경에서 명령어, Sleep()을 무시함으로써 장시간 대기 후 실행되는 악성 파일을 우회한다는 사실을 탐지하기 위함이다.


[그림 2] 실제 실행 시간 검증 코드


실제 실행 시간 검증을 통과하면 파일 내 임베디드된 커스터마이징된 Base64 데이터를 디코딩해 DonutLoader 셸 코드를 생성한다. 생성된 셸코드는 NtCreateTimer(), NtSetTimer(), NtDelayExecution() 을 연쇄적으로 호출해 지정한 시간이 지나면 APC 루틴으로 실행되도록 설정된다.


[그림 3] NtSetTimer() 를 호출해 DonutLoader 셸코드 실행


DonutLoader 셸코드는 Donut Instance구조체와 이를 기반으로 설정된 기능을 실행하는 코드로 구성된다. Donut Instance 에는 페이로드의 파일 타입, 암호화 방식, 등 페이로드 관련 설정과 Windows OS 에서 멀웨어 탐지를 위해 사용될 수 있는 AMSI, WLDP, ETW 기능과 관련된 API 를 패치해 우회하는 설정, 등이 포함된다. 설정에 따라 기능을  실행 후 임베디드 혹은 외부 주소에서 다운로드한 페이로드를 복호화하고 실행한다.


[그림 4] 공식 저장소의 Donut Instance 구조체 코드



.NET Reactor Payload

분석 샘플의 페이로드는 .NET Reactor 프로텍터로 빌드돼 코드가 난독화된 또 다른 Loader 타입의 악성 파일로, 임베디드된 데이터를 고정된 Key, IV 값으로 Triple DES 복호화해 데이터를 생성한다.


[그림 5] Triple DES 복호화 코드


복호화된 데이터의 최초 4 바이트는 Buffer 크기로, 이후 데이터는 GZIP Decompress 해 다운로드 기능을 가진 다운로더 파일을 생성한다.


[그림 6] GZIP Decompress 코드


다운로더는 추가 악성 데이터 다운로드에 앞서 고정된 문자열의 뮤텍스를 생성해 중복 실행 여부를 검증한다.


[그림 7] 뮤텍스를 활용한 중복 실행 여부 검증


다운로더가 중복 실행되지 않았다 판단되면 공격자 서버와 통신을 시도해 암호화된 데이터를 다운로드하고 AES 알고리즘 복호화 – Base64 디코딩해 생성한 악성 파일을 실행한다.


[그림 8] 다운로드한 암호화 데이터 복호화 코드


DonutLoader 는 본래 방어자가 메모리 기반 악성 파일을 익힌다는 취지로 만들어졌지만 다양한 포맷의 페이로드 지원, 각종 Windows 기능을 우회하는 기능을 가져 제작자의 본래 취지에서 벗어나 공격자들이 활용하는 악성 파일로 변모했다. 오픈 소스로 공개된 만큼 누구나 쉽게 다운로드해 변종을 만들 수 있어 앞으로도 악용될 여지가 있으므로 주의가 필요하다.


상기 악성코드는 잉카인터넷 안티바이러스 제품 TACHYON Internet Security 6.0에서 진단 및 치료가 가능하다.


[그림 9] TACHYON Internet Security 6.0 진단 및 치료 화면