COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
Sandworm Team이 우크라이나 전력망을 공격할 때 사용한 Windows Scheduled Task 악용 기법을 분석합니다. Lazarus, Agent Tesla 등 APT 사례와 Event Log 기반 탐지 방법을 확인하세요.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
2022년 10월, 우크라이나 전력망 운영 기술(OT) 시스템에서 이상 신호가 감지됐다. Sandworm Team이 심어둔 CaddyWiper 악성코드가 예약된 시간에 실행되며 전력 공급을 중단시켰다. 공격자는 Group Policy Object(GPO)를 통해 Windows Scheduled Task를 생성했고, 설정한 시각이 되자 악성코드가 자동으로 실행됐다 (MITRE ATT&CK 기준).
공격자가 시스템에 침투한 후 가장 먼저 해결해야 하는 문제는 "어떻게 다시 돌아올 것인가"다. 재부팅하면 메모리에서 사라지고, 사용자가 로그아웃하면 세션이 끊긴다. 공격자에게는 시스템이 재시작되거나 계정이 바뀌어도 살아남을 방법이 필요하다. Windows Scheduled Task는 이 문제를 해결하는 가장 단순하고 신뢰할 수 있는 선택지다.
Task Scheduler는 Windows에 기본으로 설치되어 있다. 서드파티 도구를 다운로드하거나 exploit를 실행할 필요가 없다. schtasks.exe 명령 하나면 작업을 등록할 수 있고, GUI로 Task Scheduler를 열어 마우스 클릭으로도 설정 가능하다.
공격자 입장에서 "이미 설치된 것"은 탐지 위험이 가장 낮은 선택지다. 새 파일을 드롭하면 EDR이 반응하고, 레지스트리를 변경하면 모니터링 툴이 알림을 띄운다. 하지만 정상적인 시스템 유틸리티를 사용하면 보안 솔루션이 경고를 내기 어렵다.
메모리 기반 공격은 재부팅하면 사라진다. 레지스트리 Run 키는 사용자 로그인 시에만 동작한다. 반면 Scheduled Task는 시스템 재시작과 무관하게 트리거를 설정할 수 있다:
Sandworm Team은 시스템 부팅 시 실행되는 트리거를 설정해 OT 시스템 재부팅 후에도 CaddyWiper가 살아남도록 만들었다.
Scheduled Task는 생성 시 실행 계정을 지정할 수 있다. SYSTEM 계정으로 설정하면 악성코드가 최고 권한으로 실행된다. 사용자 계정 제어(UAC) 없이, 관리자 승인 없이 커널 드라이버 로드나 시스템 파일 수정이 가능해진다.
Agent Tesla RAT는 이 기법을 사용해 키로거와 크리덴셜 탈취 모듈을 SYSTEM 권한으로 실행했다 (MITRE ATT&CK 기준). 사용자가 로그인하지 않아도 백그라운드에서 데이터를 수집할 수 있었던 이유다.
AppleJeus는 암호화폐 거래소를 타겟으로 한 Lazarus Group의 악성코드다. 감염 후 SYSTEM 계정으로 실행되는 Scheduled Task를 생성해 사용자가 로그인할 때마다 자동 실행되도록 설정했다 (MITRE ATT&CK 기준).
작업 이름은 정상 시스템 유틸리티로 위장했다. 예를 들어 MicrosoftEdgeUpdateTaskMachineUA처럼 Edge 브라우저 업데이트로 보이는 이름을 사용했다. Task Scheduler GUI에서 보면 정상 작업과 구분이 어렵다.
Anchor는 TrickBot 감염 이후 설치되는 백도어다. 초기 침투 후 Scheduled Task를 생성해 C2 서버와의 연결을 유지했다. 작업은 10분마다 실행되며 C2에서 새 명령을 가져오는 구조였다 (MITRE ATT&CK 기준).
이 구조의 핵심은 "시간 기반 트리거"다. 이벤트 트리거(로그인, 부팅)는 발생 시점이 명확해 탐지하기 쉽다. 하지만 "매일 새벽 2시"나 "10분마다" 같은 시간 트리거는 정상 유지보수 작업과 구분이 어렵다.
공격자가 Scheduled Task를 아무리 정상처럼 위장해도 Windows가 남기는 로그는 피할 수 없다. Task Scheduler는 모든 작업 생성, 수정, 실행을 Event Log에 기록한다.
탐지 포인트는 3곳이다:
| 이벤트 ID | 의미 | 탐지 조건 |
|---|---|---|
| 4698 | 작업 생성 | SYSTEM 계정으로 생성, 의심스러운 실행 경로 |
| 4702 | 작업 수정 | 생성 직후 수정 (난독화 가능성) |
| 4688 | 프로세스 생성 | Parent: taskeng.exe 또는 svchost.exe |
MITRE에서 제시하는 공식 탐지 방법은 다음과 같다: Scheduled Task 생성/수정/삭제를 Task Scheduler, WMI, PowerShell, API 기반 방법으로 모니터링하고, svchost.exe 또는 taskeng.exe로부터의 실행을 탐지한다. 특히 SYSTEM 계정으로 생성된 숨겨진 작업이나 의심스러운 사용자 컨텍스트에서 실행되는 작업에 주목한다 (MITRE ATT&CK DET0441).
아래는 의심스러운 Scheduled Task 생성을 탐지하는 참고용 쿼리다. 실제 환경에 맞춰 로그 소스 매핑과 오탐 필터링 튜닝이 필요하다:
index=wineventlog EventCode=4698
| eval TaskContent=mvindex(Message, 0)
| search TaskContent IN ("*temp*", "*appdata*", "*programdata*", "*\\Downloads\\*")
| table _time, Computer, User, TaskName, TaskContent
| where User="SYSTEM" OR User="NT AUTHORITY\\SYSTEM"
이 쿼리는 임시 디렉터리나 사용자 다운로드 폴더에서 실행되는 작업을 찾는다. 정상 시스템 작업은 C:\Windows\System32 또는 Program Files에 위치하기 때문이다.
공격자는 탐지를 우회하기 위해 다음 기법을 사용한다:
하지만 우회는 불가능하다. Windows Task Scheduler 서비스가 작업을 실행하려면 반드시 taskeng.exe 또는 svchost.exe를 거쳐야 한다. 이 프로세스 체인은 피할 수 없는 흔적이다.
Scheduled Task 악용을 막으려면 2단계 방어가 필요하다:
1단계: 생성 제한
schtasks.exe 실행 권한을 관리자로 제한2단계: 실행 모니터링
Sandworm Team의 우크라이나 공격에서 Scheduled Task는 악성코드 실행 타이밍을 정확히 제어하는 도구로 사용됐다. 공격자는 전력망 운영 시간대를 분석해 최대 피해를 줄 수 있는 시각에 CaddyWiper를 실행하도록 예약했다.
Windows Scheduled Task는 정상 시스템 관리 도구지만, 공격자에게는 재부팅에도 살아남고, SYSTEM 권한으로 실행되며, 정상 작업으로 위장할 수 있는 효과적인 지속성 메커니즘이다. 탐지의 핵심은 작업 생성 시점의 Event Log와 실행 시점의 프로세스 체인을 모두 모니터링하는 것이다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.