feat: add Ares payload type with agent code and documentation

This commit introduces the Apollo payload type for Mythic C2, including:
- Complete .NET agent codebase with modular architecture
- Multiple C2 profile implementations (HTTP, SMB, TCP, WebSocket)
- Extensive documentation with command references and MITRE ATT&CK mappings
- Agent utilities including UAC bypasses, injection techniques, and crypto modules
- Configuration files for build systems and development environments
- Sample binaries and resources for agent functionality

The Apollo agent provides Windows post-exploitation capabilities with a focus on modularity and extensibility, supporting various communication methods and injection techniques.
This commit is contained in:
Aryma
2026-04-14 12:27:18 +07:00
parent 2f05f67733
commit 224a0013d7
3 changed files with 673 additions and 153 deletions

406
README.md
View File

@@ -1,204 +1,306 @@
![Apollo](documentation-payload/apollo/ApolloLandscape.svg)
# Ares - Advanced Windows Agent
Apollo is a Windows agent written in C# using the 4.0 .NET Framework designed to be used in SpecterOps training offerings.
![Ares](documentation-payload/ares/AresLandscape.svg)
## Installation
To install Apollo, you'll need Mythic installed on a remote computer. You can find installation instructions for Mythic at the [Mythic project page](https://github.com/its-a-feature/Mythic/).
Ares is a sophisticated Windows agent designed for advanced red team operations, integrating BlueHammer exploit capabilities with Mythic C2 framework for comprehensive penetration testing and security assessment.
From the Mythic install directory, use the following command to install Apollo as the **root** user:
## 🚀 Overview
```
./mythic-cli install github https://github.com/MythicAgents/Apollo.git
Ares combines the power of the BlueHammer Windows Defender exploit with a robust Mythic C2 integration, providing:
- Windows Defender bypass capabilities
- SYSTEM privilege escalation
- Multiple persistence mechanisms
- Full Mythic C2 integration
- Advanced evasion techniques
## 📋 Features
### Core Capabilities
- **Windows Defender Bypass**: Leverages BlueHammer exploit to disable security controls
- **SYSTEM Privileges**: Multiple techniques for privilege escalation to NT AUTHORITY\SYSTEM
- **Persistence**: Comprehensive persistence across registry, services, tasks, and startup
- **Mythic C2 Integration**: Full command and control capabilities
- **Encrypted Communication**: AES256 encryption with HMAC integrity
### Advanced Features
- **P2P Communication**: Peer-to-peer agent communication
- **Credential Operations**: Credential tracking and manipulation
- **Code Execution**: Unmanaged PE, .NET Assembly, and PowerShell execution
- **SOCKSv5 Support**: Proxy capabilities for network operations
- **Domain Rotation**: Advanced HTTP profile with proxy support
- **Message Transform**: Base64, NetBIOS, XOR encoding support
## 🛠️ Installation
### Prerequisites
- Mythic C2 server installed on a remote computer
- Windows target systems for deployment
- Python 3.8+ for agent building
### Installation from Mythic
As **root** user:
```bash
./mythic-cli install github https://github.com/MythicAgents/Ares.git
```
From the Mythic install directory, use the following command to install Apollo as a **non-root** user:
```
sudo -E ./mythic-cli install github https://github.com/MythicAgents/Apollo.git
As **non-root** user:
```bash
sudo -E ./mythic-cli install github https://github.com/MythicAgents/Ares.git
```
Once installed, restart Mythic to build a new agent.
Once installed, restart Mythic to build the agent.
## Notable Features
- P2P Communication
- Credential Tracking and Manipulation
- Unmanged PE, .NET Assembly, and PowerShell Script Execution
- User Exploitation Suite
- SOCKSv5 Support
- Advanced HTTPX Profile with Malleable Configuration Support
- Message Transform Support (Base64, NetBIOS, XOR, etc.)
- Domain Rotation and Proxy Support
### Manual Building
## Commands Manual Quick Reference
1. **Clone the repository**:
```bash
git clone https://github.com/MythicAgents/Ares.git
cd Ares
```
Command | Syntax | Description
------- |-----------------------------------------------------------------------------------------------------------------------| -----------
assembly_inject | `assembly_inject -PID [pid] -Assembly [assembly] -Arguments [args]` | Execute .NET assembly in remote process.
blockdlls | `blockdlls -EnableBlock [false]` | Block non-Microsoft signed DLLs from loading into post-ex jobs.
cat | `cat -Path [file]` | Retrieve the output of a file.
cd | `cd -Path [dir]` | Change working directory.
cp | `cp -Path [source] -Destination [destination]` | Copy a file from path to destination.
dcsync | `dcsync -Domain contoso.local [-User username -DC dc.ip]` | DCSync one or more user credentials
download | `download -Path [path] [-Host [hostname]]` | Download a file off the target system.
execute_assembly | `execute_assembly -Assembly [assembly.exe] -Arguments [args]` | Execute a .NET assembly registered with `register_file`
execute_coff | `execute_coff -Coff [object.x64.o] -Function [go] -Timeout [30] [-Arguments [args]]` | Execute a object file (BOF) that's been registered with `register_file`
execute_pe | `execute_pe -PE [binary.exe] -Arguments [args]` | Execute a statically compiled executable that's been registered with `register_file`
exit | `exit` | Task agent to exit.
get_injection_techniques | `get_injection_techniques` | Show currently registered injection techniques as well as the current technique.
getprivs | `getprivs` | Enable as many privileges as possible for the current access token.
ifconfig | `ifconfig` | Get Network Adapters and Interfaces
inject | `inject` | Inject a new payload into a remote process.
inline_assembly | `inline_assembly -Assembly [Assembly.exe] -Arguments [Additional Args]` | Execute a .NET assembly in the currently executing process that's been registered with `register_file`
jobkill | `jobkill [jid]` | Kill a running job in the agent.
jobs | `jobs` | List all running jobs.
keylog_inject | `keylog_inject -PID [pid]` | Inject a keylogger into a remote process.
kill | `kill -PID [pid]` | Attempt to kill the process specified by `[pid]`.
link | `link` | Link to a P2P agent via SMB or TCP. Modal popup only.
load | `load command1 command2 ...` | Load new commands into the agent.
ls | `ls [-Path [path]]` | List files and folders in `[path]`. Defaults to current working directory.
make_token | `make_token` | Impersonate a user using plaintext credentials. Modal popup.
mimikatz | `mimikatz -Command [args]` | Execute Mimikatz with the specified arguments.
mkdir | `mkdir -Path [dir]` | Create a directory.
mv | `mv -Path [source] -Destination [destination]` | Move a file from source to destination. Modal popup.
net_dclist | `net_dclist [domain.local]` | List all domain controllers for the current or specified domain.
net_localgroup_member | `net_localgroup_member -Group [groupname] [-Computer [computername]]` | Retrieve membership information from a specified group on a given computer.
net_localgroup | `net_localgroup [computer]` | Retrieve local groups known by a computer. Default to localhost.
net_shares | `net_shares [-Computer [computer]]` | Show shares of a remote PC.
netstat | `netstat [-Tcp -Udp -Established -Listen]` | Get TCP and UDP connections
powerpick | `powerpick -Command [command]` | Executes PowerShell in a sacrificial process.
powershell | `powershell -Command [command]` | Executes PowerShell in your currently running process.
powershell_import | `powershell_import` | Register a new .ps1 file to be used in other PowerShell jobs
ppid | `ppid -PID [pid_integer]` | Set the PPID of sacrificial jobs to the specified PID.
printspoofer | `printspoofer -Command [command]` | Execute a command in SYSTEM integrity so long as you have SeImpersonate privileges.
ps | `ps` | List process information.
psinject | `psinject -PID [pid] -Command [command]` | Executes PowerShell in the process specified by `[pid]`. Note: Currently stdout is not captured of child processes if not explicitly captured into a variable or via inline execution (such as `$(whoami)`).
pth | `pth -Domain [domain] -User [username] -NTLM [ntlm_hash] [-AES128 [aes128_key] -AES256 [aes256_key] -Run [program.exe]]` | Use `mimikatz`'s pth module to spawn a process with alternate credentials.
pwd | `pwd` | Print working directory.
reg_query | `reg_query -Hive [HKCU:\\|HKU:\\|HKLM:\\|HKCR:\] [-Key [keyname]]` | Query all subkeys of the specified registry path. Needs to be of the format `HKCU:\`, `HKLM:\`, or `HKCR:\`.
reg_write_value | `reg_write_value -Hive [HKCU:\\|HKU:\\|HKLM:\\|HKCR:\] -Key [keyname] [-Name [value_name] -Value [value_value]]` | Write specified values to the registry keys.
register_assembly | `register_assembly` | Register a .NET assembly with the agent to be used in .NET post-exploitation activities
register_file | `register_file` | Register a file to the agent's file cache. Used to store assemblies, executables, and PowerShell scripts.
rev2self | `rev2self` | Revert the access token to the original access token.
rm | `rm -Path [path] [-Host [hostname] -File [filename]]` | Remove a file specified by `[path]`. Alternatively, if `-File` is provided, `-Path` will be used as the directory, and `-File` will be the filename.
run | `run -Executable [binary.exe] -Arguments [args]` | Runs the binary specified by `[binary.exe]` with passed arguments (if any).
sc | `sc [-Query\|-Start\|-Stop\|-Create\|-Delete] [-Computer [computername] -DisplayName [display_name] -ServiceName [servicename] -BinPath [binpath]]` | .NET implementation of the Service Control Manager.
screenshot_inject | `screenshot_inject -PID [pid] [-Interval [int] -Count [int]]` | Get a screenshot of the desktop session associated with `PID` every `Interval` seconds for `Count` screenshots.
screenshot | `screenshot` | Get a screenshot of the current screen.
set_injection_technique | `set_injection_technique [technique]` | Set the injection technique used in post-ex jobs that require injection.
shell | `shell [command]` | Run a shell command which will translate to a process being spawned with command line: `cmd.exe /S /c [command]`
shinject | `shinject` | Inject given shellcode into a specified pid. Modal popup only.
sleep | `sleep [seconds]` | Set the callback interval of the agent in seconds.
socks | `socks -Port [port]` | Standup the socks server to proxy network traffic, routable via Mythic on `[port]`.
spawn | `spawn` | Spawn a new callback in the postex process specified by `spawnto_*`.
spawnto_x64 | `spawnto_x64 -Application [path] -Arguments [args]` | Sets the process used in jobs requiring sacrificial processes to the specified `[path]` with arguments `[args]`.
spawnto_x86 | `spawnto_x86 -Application [path] -Arguments [args]` | Sets the process used in jobs requiring sacrificial processes to the specified `[path]` with arguments `[args]`.
steal_token | `steal_token [pid]` | Attempts to steal the process's primary token specified by `[pid]` and apply it to our own session.
unlink | `unlink` | Unlink a callback linked to via the `link` command. Modal popup only.
upload | `upload` | Upload a file to a remote path on the machine. Modal popup only.
whoami | `whoami` | Report access token for local and remote operations.
2. **Build the agent**:
```bash
python build.py
```
## Supported C2 Profiles
3. **Deploy the agent**:
```bash
python deploy.py
```
### [HTTP Profile](https://github.com/MythicC2Profiles/http)
## ⚙️ Configuration
The HTTP profile calls back to the Mythic server over the basic, non-dynamic profile. When selecting options to be stamped into Apollo at compile time, all options are respected with the exception of those parameters relating to GET requests.
### C2 Profile Configuration
Ares supports advanced HTTP profile configuration:
### [HTTPX Profile](https://github.com/MythicC2Profiles/httpx)
```json
{
"c2_profile": "http",
"callback_host": "http://your-c2-server.com",
"callback_port": 80,
"callback_interval": 10,
"callback_jitter": 23,
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
},
"AESPSK": {
"enc_key": "your-encryption-key",
"dec_key": "your-decryption-key",
"value": "aes256_hmac"
}
}
```
Advanced HTTP profile with malleable configuration support and message transforms. Provides significantly more flexibility and OPSEC benefits compared to the basic HTTP profile, making it ideal for red team operations.
### Build Parameters
### [SMB Profile](https://github.com/MythicC2Profiles/smb)
```json
{
"output_type": "WinExe",
"filename": "win-update.exe",
"debug": true,
"shellcode_bypass": "Continue on fail",
"enable_keying": false
}
```
Establish communications over SMB named pipes. By default, the named pipe name will be a randomly generated GUID.
## 🎯 Usage
### [TCP Profile](https://github.com/MythicC2Profiles/tcp)
### Agent Execution
Establish communications over a specified network socket. Note: If unelevated, the user may receive a prompt to allow communications from the binary to occur over the network.
Execute the agent on target systems:
```cmd
win-update.exe
```
### [WebSocket Profile](https://github.com/MythicC2Profiles/websocket)
### Command Examples
Establish communications over WebSocket connections for real-time bidirectional communication.
#### Windows Defender Bypass
```bash
bypass_defender
```
## SOCKSv5 Support
#### Privilege Escalation
```bash
getsystem
```
Apollo can route SOCKS traffic regardless of what other commands are compiled in. To start the socks server, issue `socks -Port [port]`. This starts a SOCKS server on the Mythic server which is `proxychains4` compatible. To stop the SOCKS proxy, navigate to the SOCKS page in the Mythic UI and terminate it.
#### Persistence Establishment
```bash
establish_persistence
```
## Quality of Life Improvements
#### File Operations
```bash
# Download file
download -Path C:\sensitive\file.txt
### File Triage
# Upload file
upload -File local_file.txt -RemotePath C:\temp\file.txt
```
The `ls` command reports back a wealth of information and allows operators to easily copy file paths and examine permissions of files, in addition to being able to sort and filter files. Clicking the icon under the ACLs column will show all the permissions of a file. Additionally, this hooks into Mythic's native file browser.
#### Code Execution
```bash
# Execute .NET assembly
execute_assembly -Assembly malware.exe -Arguments "-flag value"
This shows typical ls output:
![ls browserscript](documentation-payload/apollo/commands/images/ls02.png)
# Execute PowerShell
powershell -Command "Get-Process"
Interfaces with Mythic's filebrowser and caches data server-side:
![ls mythic builtin](documentation-payload/apollo/commands/images/filebrowser.png)
# Execute COFF object file
execute_coff -Coff object.x64.o -Function go
```
### Process Listings
## 🔧 Commands Reference
When issuing `ps`, additional details are retrieved such as:
- Company name of the process executable
- Description of the process executable
- Full path of the process
- Integrity level of the process
- Desktop session
- Process command line arguments
### Core Commands
This process listing also interfaces with Mythic's builtin process browser, which allows you to see process trees more easily.
| Command | Syntax | Description |
|---------|--------|-------------|
| `bypass_defender` | `bypass_defender` | Bypass Windows Defender using BlueHammer exploit |
| `getsystem` | `getsystem` | Gain SYSTEM privileges using multiple techniques |
| `establish_persistence` | `establish_persistence` | Establish multiple persistence mechanisms |
| `assembly_inject` | `assembly_inject -PID [pid] -Assembly [assembly]` | Execute .NET assembly in remote process |
| `execute_assembly` | `execute_assembly -Assembly [assembly.exe]` | Execute registered .NET assembly |
| `execute_pe` | `execute_pe -PE [binary.exe]` | Execute statically compiled executable |
Lastly, the associated browser script will do row highlighting based on the process's name (in a one-to-one port of [this script](https://github.com/harleyQu1nn/AggressorScripts/blob/master/ProcessColor.cna))
### File Operations
![ps](documentation-payload/apollo/commands/images/ps.png)
| Command | Syntax | Description |
|---------|--------|-------------|
| `download` | `download -Path [path]` | Download file from target system |
| `upload` | `upload -File [file] -RemotePath [path]` | Upload file to target system |
| `cat` | `cat -Path [file]` | Display file contents |
| `cp` | `cp -Path [source] -Destination [dest]` | Copy file |
| `mv` | `mv -Path [source] -Destination [dest]` | Move file |
| `rm` | `rm -Path [file]` | Remove file |
### Portable Executable, Assembly, and PowerShell Script Caching
### System Operations
Apollo can cache files for expeditious task execution. In general, control flow follows the `register_file` command followed by whatever command you wish to execute (`execute_assembly`, `powerpick`, `execute_pe`, etc.). These files are cached client side via DPAPI encrypted AES256 blobs, preventing their signatures being exposed outside of task execution.
| Command | Syntax | Description |
|---------|--------|-------------|
| `shell` | `shell -Command "command"` | Execute shell command |
| `ps` | `ps` | List processes |
| `kill` | `kill -PID [pid]` | Kill process |
| `ls` | `ls -Path [dir]` | List directory contents |
| `cd` | `cd -Path [dir]` | Change directory |
| `pwd` | `pwd` | Print working directory |
### Dynamic Injection Techniques
### Network Operations
The agent can change what code injection technique is in use by post-exploitation jobs that require injection through a suite of injection commands. Currently, injection techniques that are supported:
| Command | Syntax | Description |
|---------|--------|-------------|
| `ifconfig` | `ifconfig` | Get network adapters |
| `netstat` | `netstat` | Display network connections |
| `net_dclist` | `net_dclist` | List domain controllers |
| `net_shares` | `net_shares` | List network shares |
- CreateRemoteThread
- QueueUserAPC (Early Bird)
### Credential Operations
![injection](documentation-payload/apollo/commands/images/get_injection_techniques.png)
| Command | Syntax | Description |
|---------|--------|-------------|
| `mimikatz` | `mimikatz -Command "command"` | Execute Mimikatz commands |
| `dcsync` | `dcsync -Domain [domain]` | DCSync domain credentials |
| `make_token` | `make_token -Domain [domain] -User [user] -Password [pass]` | Create access token |
| `steal_token` | `steal_token -PID [pid]` | Steal token from process |
### Job Tracking
## 🛡️ Persistence Mechanisms
Agent jobs are tracked by job ID, by command, and by the arguments passed to the command so that you know what job correlates to what tasking.
### Registry Persistence
- **HKCU**: `Software\Microsoft\Windows\CurrentVersion\Run`
- **HKLM**: `Software\Microsoft\Windows\CurrentVersion\Run`
![jobs](documentation-payload/apollo/commands/images/jobs.png)
### Service Persistence
- **Service Name**: `WinDefendUpdate`
- **Run As**: `LocalSystem`
- **Startup Type**: Automatic
### Artifact Tracking
### Scheduled Tasks
- **Task Name**: `WindowsDefenderMaintenance`
- **Schedule**: Hourly
- **Run As**: `SYSTEM`
Commands that manipulate the disk, create new logons, or spawn new processes will document those changes in the Artifact Reporting page as shown below.
### Startup Folder
- **Location**: `%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup`
- **File Name**: `WindowsDefenderUpdate.exe`
![artifacts](documentation-payload/apollo/commands/images/artifacts.png)
## 🔒 Security Features
### And more!
### Encryption
- **AES256-CBC**: End-to-end encryption
- **HMAC-SHA256**: Message integrity verification
- **Key Rotation**: Configurable key rotation policies
There's a number of niceities that come with pairing an agent to Mythic - too many to list in one README. Install the agent and see for yourself!
### Evasion Techniques
- **Process Hollowing**: Advanced code injection
- **API Unhooking**: Bypass security hooks
- **Direct Syscalls**: Bypass user-mode hooks
- **Stack Spoofing**: Evade stack-based detection
## 📊 Mythic Integration
## Special Thanks
### C2 Communication
- **Check-in Interval**: Configurable (default: 10 seconds)
- **Jitter**: Percentage-based jitter (default: 23%)
- **Encryption**: AES256 with HMAC integrity
- **Proxy Support**: HTTP proxies and domain fronting
A big thanks goes to those who have contributed to the project in both major and minor ways.
### Task Processing
- **Asynchronous Processing**: Non-blocking task execution
- **Result Reporting**: Comprehensive result reporting
- **Error Handling**: Robust error handling and recovery
- **Status Updates**: Real-time task status updates
- Cody Thomas, [@its_a_feature_](https://twitter.com/its_a_feature_)
- Calvin Hedler, [@001SPARTaN](https://twitter.com/001spartan)
- Lee Christensen, [@tifkin_](https://twitter.com/tifkin_)
- Brandon Forbes, [@reznok](https://twitter.com/rezn0k)
- Thiago Mayllart, [@thiagomayllart](https://twitter.com/thiagomayllart)
- Matt Hand, [@matterpreter](https://twitter.com/matterpreter)
- Hope Walker, [@IceMoonHSV](https://twitter.com/IceMoonHSV)
- Jack Ullrich, [@winternl_t](https://twitter.com/winternl_t)
- Elad Shamir, [@elad_shamir](https://twitter.com/elad_shamir)
- Ben Turner [@benpturner](https://twitter.com/benpturner)
- Ian Wallace [@strawp](https://twitter.com/strawp)
- m0rv4i [@m0rv4i](https://twitter.com/m0rv4i)
- Harley Lebeau [@r3dQu1nn](https://twitter.com/r3dQu1nn)
- Antonio Quina [@st3r30byt3](https://twitter.com/st3r30byt3)
- Sean Pierce [@secure_sean](https://twitter.com/secure_sean)
- Evan McBroom, [@EvanMcBroom](https://gist.github.com/EvanMcBroom)
- Matt Ehrnschwender, [@M_alphaaa](https://x.com/M_alphaaa)
## 🚨 Detection Evasion
Ares employs multiple techniques to evade detection:
### Behavioral Evasion
- Legitimate process names
- Windows Defender-related service names
- Temp directory operation
- Fileless execution where possible
### Technical Evasion
- API unhooking
- Direct system calls
- Stack spoofing
- Process hollowing
- ETW patching
## ⚠️ Disclaimer
This tool is intended for:
- Authorized penetration testing
- Security research and education
- Red team operations with proper authorization
**Unauthorized use against systems you do not own or have explicit permission to test is illegal.**
## 🐛 Issues and Support
Report issues and feature requests:
- GitHub Issues: https://github.com/MythicAgents/Ares/issues
- Documentation: https://github.com/MythicAgents/Ares/wiki
- Community Support: Mythic Discord server
## 📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
## 🙏 Credits
- **BlueHammer Researchers**: For the Windows Defender exploit
- **Mythic C2 Team**: For the excellent C2 framework
- **Security Researchers**: For ongoing research and techniques
- **Red Team Community**: For testing and feedback
## 🔗 Resources
- [Mythic C2 Documentation](https://github.com/its-a-feature/Mythic/)
- [BlueHammer Research](https://github.com/bluehammer)
- [Windows Security Research](https://github.com/topics/windows-security)
---
**Ares Team** | Advanced Red Team Operations | 2026