# Simple Reverse - 0x17(2023 Lab - WinMalware - sub_140001030) ## Description > 分析 eductf-lab.exe 中的 function sub_140001030 在做什麼,並找出其行為所對應的 MITRE ATT&CK technique ID。 > Flag format: FLAG{T1234} ## Background * [SystemTimeToFileTime](https://learn.microsoft.com/zh-tw/windows/win32/api/timezoneapi/nf-timezoneapi-systemtimetofiletime) * [CreateWaitableTimerW](https://learn.microsoft.com/zh-tw/windows/win32/api/synchapi/nf-synchapi-createwaitabletimerw) * [SetWaitableTimer](https://learn.microsoft.com/zh-tw/windows/win32/api/synchapi/nf-synchapi-setwaitabletimer) * [WaitForSingleObject](https://learn.microsoft.com/zh-tw/windows/win32/api/synchapi/nf-synchapi-waitforsingleobject) ## Source code * sub_140001030 :::spoiler IDA Source Code ```cpp int waitUntil20231118() { HANDLE Result; // rax HANDLE hTimer; // [rsp+30h] [rbp-38h] SYSTEMTIME SystemTime; // [rsp+38h] [rbp-30h] BYREF struct _FILETIME FileTime; // [rsp+48h] [rbp-20h] BYREF LARGE_INTEGER DueTime; // [rsp+50h] [rbp-18h] BYREF SystemTime.wYear = 2023; SystemTime.wMonth = 11; SystemTime.wDay = 18; SystemTime.wDayOfWeek = 6; SystemTime.wHour = 0; SystemTime.wMinute = 0; SystemTime.wSecond = 0; SystemTime.wMilliseconds = 0; LODWORD(Result) = SystemTimeToFileTime(&SystemTime, &FileTime); if ( Result ) { DueTime = FileTime; Result = CreateWaitableTimerW(0i64, 0, 0i64); hTimer = Result; if ( Result ) { LODWORD(Result) = SetWaitableTimer(Result, &DueTime, 0, 0i64, 0i64, 0); if ( Result ) LODWORD(Result) = WaitForSingleObject(hTimer, 0xFFFFFFFF); } } return Result; } ``` ::: ## Recon 攻擊者的完整意圖 1. 設定一個時間(2023/11/18 0:0:0) 2. 開啟一個waitable timer 3. 設定waitable timer為一開始的截止時間 4. 開始等待 根據以上的流程很明顯他是要一直等待直到11/18號那一天才會往下執行,這樣對修課生的壞處是沒辦法交作業,所以對我們來說是一大難處,他必須要符合時間等到11/18這個條件才會開始執行$\to$Execution Guardrails ## Exploit 從[Att&CK - Defense Evasion Execution Guardrails (T1480)](https://attack.mitre.org/techniques/T1480/)可以看到 > Adversaries may use execution guardrails to constrain execution or actions based on adversary supplied and environment specific conditions that are expected to be present on the target. Guardrails ensure that a payload only executes against an intended target and reduces collateral damage from an adversary’s campaign. Values an adversary can provide about a target system or environment to use as guardrails may include specific network share names, attached physical devices, files, joined Active Directory (AD) domains, and local/external IP addresses. 常見的條件有: 漏洞、系統語言、時間、Hostname... Flag: `FLAG{1480}`