Ein Payload ist der Code, der nach einem erfolgreichen Exploit auf dem Ziel ausgefuehrt wird – etwa um einen Benutzer anzulegen oder eine Metasploit-Sitzung zu oeffnen. Payload-Module liegen unter modules/payloads/{singles,stages,stagers}/<platform>. Beim Start werden Stages mit Stagern zu vollstaendigen Payloads kombiniert und passende Handler zugeordnet.
Der Referenzname
- Zusammengesetzt (staged):
<platform>/[arch]/<stage>/<stager>– getrennt durch/, z. B.windows/meterpreter/reverse_tcp. - Einteilig (stageless):
<platform>/[arch]/<single>– letzter Teil mit_verbunden, z. B.windows/meterpreter_reverse_tcp.
Beispiel windows/x64/meterpreter/reverse_tcp: Plattform windows, Architektur x64, Endstufe meterpreter, Stager reverse_tcp. Die Architektur ist optional – bei php/meterpreter/reverse_tcp entfaellt sie, da interpretierter statt nativer Code ausgeliefert wird.
Die drei Bausteine
Singles
Einteilige Payloads nach dem Prinzip „abschicken und vergessen“. Nuetzlich, wenn das Ziel keinen oder nur eingeschraenkten Netzwerkzugang hat, weil sie kein Nachladen ueber das Netz benoetigen.
Stager
Ein kleiner Stub, der zuerst eine Verbindung herstellt und dann die Ausfuehrung an die naechste Stufe uebergibt. Vorteil: kleiner Erstcode laedt einen groesseren nach, und der Transportweg ist von der Endstufe getrennt.
Stages
Da der Stager Groessenbeschraenkungen umgeht und Speicher reserviert, koennen Stages nahezu beliebig gross und in Hochsprachen wie C geschrieben sein.
Auslieferung und Handler
Bei einer shell-Stufe verbindet Metasploit die Ein-/Ausgabe des entfernten Prozesses mit dem Terminal; bei einer Meterpreter-Stufe spricht es das Meterpreter-Protokoll. Dem Payload wird ein Handler zugeordnet, der die eingehende Rueckverbindung entgegennimmt; er laesst sich auch eigenstaendig ueber exploit/multi/handler starten, etwa um einen zuvor mit msfvenom erzeugten Payload abzufangen.