[기술스터디]암호화 그 이상의 위협, DireWolf는 왜 위험한가
최근 AhnLab에서 공개한 사례에 따르면, DireWolf라는 악성코드가 발견되었다. 이 악성코드는 보안 기술의 핵심 요소 중 하나인 암호화를 역으로 악용하여 탐지와 분석을 회피한다. 즉, 암호화가 반드시 방어 목적으로만 쓰이는 것은 아니며, 공격자에게도 유용한 무기가 될 수 있음을 보여주는 사례다.
DireWolf는 정상 프로그램으로 위장해 설치된 후 다양한 암호화 기법을 활용한다. 실행 파일 자체를 암호화하여 정적 분석을 회피하고, 명령·제어(C2) 서버와의 통신을 암호화해 네트워크 기반 탐지를 우회한다. 또한 원격에서 추가 악성 페이로드를 내려받아 실행함으로써 감염을 지속적으로 확대할 수 있다.
자세히 살펴보면, 랜섬웨어는 목표 성공률을 높이기 위하여 다양한 복구 방해 기법을 사용한다. 자가 삭제, 이벤트로그와 백업 관련 데이터 삭제를 통해 시스템 복구와 원인 파악을 어렵게 만든다. 또한, Windows 이벤트 로그 서비스를 표적으로 삼으면서 해당 프로세스를 강제로 종료하고 이를 계속 실행하기 때문에 시스템이 서비스를 재실행하더라도 다시 종료되기 때문에 로그 수집 기능을 무력화한다.

무한 루프(while (1)) 안에서 PowerShell 명령으로 특정 서비스(eventlog)의 프로세스 ID를 얻어오고, 그 PID를 사용해 taskkill로 프로세스를 강제 종료하려는 동작이 반복적으로 수행된다. 이를 위해 os_exec_Command(또는 os_exec_ptr_Cmd_CombinedOutput) 같은 실행 함수로 외부 명령을 실행하고 결과를 받아 처리한다.
DireWolf는 시스템 복구를 방해하기 위하여 백업과 로그 관련 기능을 무력화한다.
1. 명령 프롬포트를 이용하여 복원 지점을 완전 제거
2. 예약된 백업 작업 및 메타데이터 삭제
- 실행 중인 백업 작업 중단(wbadmin stop job -quiet)
- 시스템 상태 백업 및 모든 백업 버전 삭제(wbadmin delete backup -keepVersions:0 -quiet)
- bcdedit /set {default} recoveryenabled No 명령어로 Windows 복구 환경(WinRE)을 비활성화
- bcdedit /set {default} bootstatuspolicy ignoreallfailures를 통해 부팅 실패 시 복구 모드 진입을 차단
3. wevtutil cl 명령어를 활용하여 Application, System, Security, Setup 로그를 포함한 주요 이벤트 로그를 삭제
이외에도 정상적인 복구 절차를 방해하기 위해 파일 암호화 이전에 특정 프로세스를 선제적으로 종료한다. 종료 대상은 데이터베잇, 메일 서버, 가상화 플랫폼, 백업 소프트웨어, 백업 솔루션 등이 있다.
위와 같은 사전 단계가 끝나면 본격적으로 암호화루틴이 실행된다. -d 인자가 제공되면 프로그램은 지정한 그 디렉터리와 그 하위 디렉터리만 순회하여 작업을 수행하고, 인자가 없을 때는 CD/DVD 드라이브를 제외한 연결된 모든 로컬 드라이브(예: C:, D:)와 네트워크로 마운트된 원격 드라이브를 대상으로 삼는다.
탐색 대상에서 제외(암호화 예외)되는 항목들은 운영체제의 핵심 동작과 복구를 위해 보존되어야 할 것들이며, 예컨대 AppData는 사용자별 설정·캐시·프로필 데이터를 담는 폴더로 임의로 암호화하면 응용프로그램이나 사용자 환경이 제대로 동작하지 않을 수 있고, Windows와 Program Files는 운영체제와 설치된 프로그램의 실행 파일·라이브러리 등을 보관하는 디렉터리이므로 시스템 부팅과 프로그램 실행에 필수적이다. $Recycle.Bin은 사용자 삭제 파일의 휴지통 저장소로 복구를 위한 흔적을 포함하고, System Volume Information은 시스템 복원 지점과 볼륨 서비스 메타데이터를 저장하므로 복구를 어렵게 만들지 않기 위해 제외된다.
또한 bootmgr(부트 매니저)나 ntldr(레거시 NT 부트 로더), NTUSER.DAT(사용자 레지스트리 하이브)와 같이 부트·로그인·레지스트리 복구에 직접 영향을 주는 파일들은 보호 목록에 들어가며, HowToRecoveryFiles.txt처럼 피해자에게 복구 방법을 안내하는 파일명도 의도적으로 남겨 둔다.
더불어 실행 파일(.exe), 동적 링크 라이브러리(.dll), 커널 드라이버(.sys, .drv), 디스크 이미지(.iso, .img) 등의 특정 확장자는 암호화 대상에서 제외되는데, 이는 이러한 파일들이 손상되면 시스템이 즉시 부팅 불능 상태가 되거나 주요 서비스가 중단되어 공격자가 요구하는 ‘랜섬노트 표시 → 지불 절차 진행’이라는 시나리오 자체가 성립하지 않기 때문이다. 요컨대 이러한 예외 처리는 악성 행위자가 시스템을 완전히 망가뜨리지 않으면서도 피해자가 시스템을 켜서 안내 문구를 확인하고 지불을 시도할 수 있도록 ‘시스템의 최소 동작성’을 보장하기 위한 설계이다.
모든 암호화 절차가 끝나면 랜섬웨어는 일련의 후처리 단계를 거쳐 자신의 흔적을 최소화하고 피해자가 즉시 대응하기 어렵도록 만든다. 우선 C:\runfinish.exe와 같은 경로에 빈 마커 파일을 생성해 암호화 완료 상태를 기록하는데, 이 파일은 초기 실행 루틴에서 존재 여부를 확인하는 체크포인트로 사용되어 동일 시스템에서 불필요한 중복 암호화가 발생하지 않도록 한다(재실행 방지).
다음으로 cmd /c start shutdown -r -f -t 10 형태의 명령을 호출해 10초 후 강제 재부팅을 예약하는데, -r은 재부팅, -f는 실행 중인 모든 프로세스를 강제 종료, -t 10은 10초 지연을 의미하며 start를 붙여 별도 프로세스 컨텍스트에서 실행함으로써 현재 프로세스가 종료되더라도 재부팅 명령이 독립적으로 수행되게 한다(이로써 공격자는 시스템을 빠르게 초기 상태로 넘기고 피해자의 대응 시간을 최소화한다).
재부팅 성공 여부와 상관없이 자가 삭제(self-delete) 루틴은 반드시 실행되도록 설계되어 있는데, 보통 timeout /T 3 등으로 짧게 대기한 뒤 del <자기 경로>를 cmd를 통해 비동기적으로 실행하여 본체를 디스크에서 제거한다; 이 방식은 재부팅 후에도 삭제 동작이 이어지게 하여 보안 담당자나 포렌식 분석가가 실행 파일을 수집·복구하기 어렵게 만든다. 마지막으로 랜섬노트는 HowToRecoveryFiles.txt 같은 파일명으로 암호화가 완료된 각 폴더에 생성되도록 하여 사용자가 시스템을 켜고 각 디렉터리에서 안내문을 바로 확인하게끔 유도한다(폴더별 생성은 피해자가 노트를 놓치기 어렵게 하고, 공격자가 요구하는 지불 절차로 유도하는 효율적인 UX를 의도함). 종합하면 이 후처리 단계들은 “완료 표시 → 시스템 빠른 재시작 → 증거 제거 → 피해자 안내”라는 목적을 달성하기 위한 설계이다.

이러한 특성 때문에 DireWolf는 단순히 파일을 숨기는 수준이 아니라, 보안 솔루션의 탐지를 우회하고 분석 환경을 교란하며 장기적인 침투를 유지하는 데 최적화되어 있다. 결과적으로 대응이 훨씬 어려워지며, 전통적인 시그니처 기반 탐지만으로는 방어가 한계에 다다르게 된다.