Delete TTPs/Persistence/schedule_task.py
This commit is contained in:
@ -1,146 +0,0 @@
|
||||
from Modules.Imports.ttp_imports import *
|
||||
from Modules.submenu import build_submenu
|
||||
|
||||
def schedule_tasks_submenu():
|
||||
"""
|
||||
Submenu for Scheduled Tasks Persistence Indicators.
|
||||
"""
|
||||
actions = {
|
||||
"1": {"description": "Source Event Logs", "function": source_event_logs},
|
||||
"2": {"description": "Destination Event Logs", "function": destination_event_logs},
|
||||
"3": {"description": "Source Registry", "function": source_registry},
|
||||
"4": {"description": "Destination Registry", "function": destination_registry},
|
||||
"5": {"description": "Source Artifacts", "function": source_artifacts},
|
||||
"6": {"description": "Destination Artifacts", "function": destination_artifacts},
|
||||
"7": {"description": "Atexec Analysis", "function": atexec_analysis},
|
||||
"8": {"description": "Extra", "function": extra_scheduled_tasks_info},
|
||||
}
|
||||
build_submenu("Scheduled Tasks Persistence", actions)
|
||||
|
||||
def source_event_logs():
|
||||
title = "Scheduled Tasks Source Event Logs"
|
||||
content = """
|
||||
- `security.evtx`
|
||||
- `4648` - Logon specifying alternate credentials
|
||||
- Current logged-on User Name
|
||||
- Alternate User Name
|
||||
- Destination Host Name/IP
|
||||
- Process Name
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def destination_event_logs():
|
||||
title = "Scheduled Tasks Destination Event Logs"
|
||||
content = """
|
||||
- `security.evtx`
|
||||
- `4624` Logon Type 3
|
||||
- Source IP/Logon User Name
|
||||
- `4672`
|
||||
- Logon User Name
|
||||
- Logon by a user with administrative rights
|
||||
- Requirement for accessing default shares such as **C$** and **ADMIN$**
|
||||
- `4698` - Scheduled task created
|
||||
- `4702` - Scheduled task updated
|
||||
- `4699` - Scheduled task deleted
|
||||
- `4700/4701` - Scheduled task enabled/disabled
|
||||
- `Microsoft-Windows-TaskScheduler%4Operational.evtx`
|
||||
- `106` - Scheduled task created
|
||||
- `140` - Scheduled task updated
|
||||
- `141` - Scheduled task deleted
|
||||
- `200/201` - Scheduled task executed/completed
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def source_registry():
|
||||
title = "Scheduled Tasks Source Registry"
|
||||
content = """
|
||||
- [[ShimCache]] - SYSTEM
|
||||
- at.exe
|
||||
- schtasks.exe
|
||||
- [[BAM|DAM]] - SYSTEM - Last Time Executed
|
||||
- at.exe
|
||||
- schtasks.exe
|
||||
- [[AmCache.hve]] - First Time Executed
|
||||
- at.exe
|
||||
- schtasks.exe
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def destination_registry():
|
||||
title = "Scheduled Tasks Destination Registry"
|
||||
content = """
|
||||
- SOFTWARE
|
||||
- `Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tasks`
|
||||
- `Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\`
|
||||
- [[ShimCache]] – SYSTEM
|
||||
- evil.exe
|
||||
- [[AmCache.hve]] - First Time Executed
|
||||
- evil.exe
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def source_artifacts():
|
||||
title = "Scheduled Tasks Source File System Artifacts"
|
||||
content = """
|
||||
- [[Prefetch]] - C:\\Windows\\Prefetch\\
|
||||
- at.exe-{hash}.pf
|
||||
- schtasks.exe-{hash}.pf
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def destination_artifacts():
|
||||
title = "Scheduled Tasks Destination File System Artifacts"
|
||||
content = """
|
||||
- File Creation
|
||||
- evil.exe
|
||||
- Job files created in
|
||||
- `C:\\Windows\\Tasks`
|
||||
- XML task files created in
|
||||
- `C:\\Windows\\System32\\Tasks`
|
||||
- `C:\\Windows\\SysWOW64\\Tasks`
|
||||
- Author tag can identify:
|
||||
- Source system name
|
||||
- Creator username
|
||||
- [[Prefetch]] – `C:\\Windows\\Prefetch\\`
|
||||
- evil.exe-{hash}.pf
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def atexec_analysis():
|
||||
title = "Atexec Analysis"
|
||||
content = """
|
||||
### Command Syntax:
|
||||
- `atexec.py domain/username:password@[hostname | IP] command`
|
||||
|
||||
### Characteristics:
|
||||
- Executes commands remotely but does not provide shell access.
|
||||
- Creates a Scheduled Task with a random 8-character mixed-case alpha string.
|
||||
- Uses `cmd.exe /C` to run commands, outputting results to `C:\\Windows\\Temp\\<random>.tmp` before deleting the file.
|
||||
- **NOT detected and blocked by Windows Defender by default**.
|
||||
|
||||
### Windows Event Log Residue:
|
||||
1. Event IDs in `Security.evtx`:
|
||||
- `4776` - NTLM Authentication
|
||||
- `4672` - Special privileges assigned to logon.
|
||||
- `4624` - Successful logon (Type 3).
|
||||
2. Microsoft-Windows-TaskScheduler/Operational:
|
||||
- `106`, `325`, `129`, `100`, `200`, `110`, `141`, `111`, `201`, `102` (Task lifecycle).
|
||||
3. **IF ENABLED**:
|
||||
- `4688` - Process creation (`cmd.exe` spawning tasks or executing commands).
|
||||
- `4698` - Scheduled task created.
|
||||
- `4699` - Scheduled task deleted.
|
||||
|
||||
### Example Detection Indicators:
|
||||
- Multiple rounds of Event IDs (4776, 4672, 4624).
|
||||
- Temporary `.tmp` files in `C:\\Windows\\Temp` with scheduled task output.
|
||||
"""
|
||||
print_info(title, content)
|
||||
|
||||
def extra_scheduled_tasks_info():
|
||||
title = "Scheduled Tasks Extra Information"
|
||||
content = """
|
||||
# Scheduled Tasks Commands
|
||||
- `at \\\\host 13:00 "c:\\temp\\evil.exe"`
|
||||
- `schtasks /CREATE /TN taskname /TR c:\\temp\\evil.exe /SC once /RU “SYSTEM” /ST 13:00 /S host /U username`
|
||||
"""
|
||||
print_info(title, content)
|
Reference in New Issue
Block a user