-

[악성코드] Windows Malware Persistence 본문

Workspace

[악성코드] Windows Malware Persistence

r99bbit 2020. 8. 13. 16:55

powershell task scheduler documentation :

https://docs.microsoft.com/en-us/powershell/module/scheduledtasks/new-scheduledtasktrigger?view=win10-ps

 

New-ScheduledTaskTrigger (scheduledtasks)

The New-ScheduledTaskTrigger cmdlet creates and returns a new scheduled task trigger object. You can use a time-based trigger or an event-based trigger to start a task. Time-based triggers include starting a task at a specific time or starting a task multi

docs.microsoft.com


 악성 코드가 drop되면 다양한 정책을 피해 execution 하는 것도 중요하지만 persistence를 만드는 것도 중요하다. 주로 공격 대상이 되는 workstation 같은 endpoint device들은 다양한 이유(퇴근할 때, 장기간 이용하지 않을 때, 유지보수)로 시스템을 재시동하게 되는데, 이 때 persistence를 고려하지 않으면 유효타를 기대할 수 없다.

 이 때 악성 코드들이 persistence를 만드는 방법은 다양한데, Windows 환경에서는 task scheduler를 사용하는 경우가 가장 안정적인 것 같다. 작업 스케줄러는 평소에 볼 일이 별로 없으며 기존의 job들에 섞여 판별하기도 어렵기 때문이다. 아래 예제는 powershell 스크립트를 이용하여 task scheduler에 자동으로 백도어를 등록하는 방법에 대해 제시한다. powershell의 download 기능을 이용해 악성코드를 drop한 경우 kill chain(installation -> persistence -> execution)의 연계 작용을 효과적으로 구성할 수 있을 것이다. 또한, 여러개의 파일을 등록하여 lateral movement를 노릴 수도 있기 때문에 내가 가장 자주쓰는 방법이다.

 


$Sta = New-ScheduledTaskAction -Execute "C:\\Windows\\Temp\\backdoor.exe"
$Stt = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
Register-ScheduledTask malware01 -Action $Sta -Trigger $Stt

 우선 %TEMP%에 backdoor.exe라고 하는 악성 코드가 drop되어 있다고 가정하고, 사용자가 로그온 할 때마다 실행되도록 스크립트를 만든 것이다. 이를 실행하면 아래와 같이 작업 스케줄러에 등록이 된다. 단, 로그온 하는 계정은 스크립트를 실행하는 유저만 된다(UAC 때문). 때문에 실행하는 주체의 USERNAME을 받아와 실행한다.

 

powershell의 강력함에 대해 알게 되었다.

Comments