Shellcode erzeugen (3 Wege im Vergleich)
Wege zum Erzeugen von Shellcode im Vergleich — msfvenom, handgeschriebenes Assembly und ein browserbasierter Generator — mit den Abwägungen und wann man welchen nutzt.
"Shellcode erzeugen" kann drei sehr unterschiedliche Workflows bedeuten. Sie tauschen Kontrolle gegen Geschwindigkeit und legen unterschiedlich viel Vertrauen in fremde Bytes. Wenn du noch nicht sicher bist, was Shellcode ist, beginne mit dem Leitfaden.
Option 1: handgeschriebenes Assembly
Du schreibst das Assembly, assemblierst es, extrahierst die Bytes.
- Pro: volle Kontrolle, kleinste Ausgabe, du verstehst jedes Byte.
- Contra: langsam, architekturspezifisch, leicht baut man versehentlich Bad Bytes ein.
- Wann nutzen: wenn die Größe knapp ist, du eine exotische Primitive brauchst oder lernst. Siehe Linux-Shellcode.
Option 2: ein Framework (msfvenom)
Das Framework templatet einen Payload und kodiert ihn für dich.
- Pro: schnell, viele Payload-/Encoder-Kombinationen.
- Contra: größere Ausgabe, von Verteidigern signiert, und es lebt auf einer geteilten Jump Box, von der du vielleicht nicht abhängig sein willst. Diesen Workflow von der Jump Box zu lösen ist ein eigenes Thema: Browser-nativ vs. msfvenom.
- Wann nutzen: wenn du schnell einen Standard-Payload brauchst und Signatur kein Thema ist.
Option 3: ein browserbasierter Generator
Ein client-seitiger Generator assembliert und kodiert in deinem Browser — nichts verlässt die Maschine.
- Pro: keine Installation, nichts wird hochgeladen, schnelles Iterieren über Format und Bad-Char-Sets. Was lokal bleibt und was nicht, ist im Threat Model dokumentiert.
- Contra: du musst die Ausgabe trotzdem selbst verifizieren (gilt für jede Option).
- Wann nutzen: wenn du Geschwindigkeit ohne Tooling-Aufbau willst oder von einer eingeschränkten Workstation arbeitest.
Format und Encoder wählen
Welchen Weg du auch nimmst, zwei Entscheidungen folgen: das Ausgabe-Format (\x, 0x, raw, base64) passend zu dem Ort, an dem die Bytes leben werden, und die Encoder, um verbotene Bytewerte zu umgehen. Die Encoder-Reihenfolge zählt — siehe Reihenfolge der Encoder-Pipeline.
Jetzt Shellcode erzeugen
Baue, kodiere und exportiere einen Payload vollständig client-seitig im Shellcodes-Builder — wähle die Architektur, ein Preset, setze deine Bad Chars und exportiere im benötigten Format. Disassembliere ihn dann, um die Bytes zu bestätigen, bevor du irgendetwas ausführst. Nur autorisiertes Testen: verantwortungsvolle Nutzung.