
Deserialisierungs-Payload-Generator für eine Vielzahl von .NET-Formatierern
YSoNet ist ein Fork des ursprünglichen YSoSerial.Net, der derzeit von @irsdl gepflegt wird.
Ein Proof-of-Concept-Tool zur Erzeugung von Payloads, die unsichere .NET-Objektdeserialisierung ausnutzen.
YSoNet (früher bekannt als ysoserial.net) ist eine Sammlung von Hilfsprogrammen und property-orientierten Programmier-„Gadget-Ketten“, die in gängigen .NET-Bibliotheken entdeckt wurden und unter den richtigen Bedingungen .NET-Anwendungen ausnutzen können, die unsichere Deserialisierung von Objekten durchführen. Du gibst ihm einen Befehl und eine Gadget-Kette; es verpackt den Befehl in die Kette und serialisiert das Ergebnis nach stdout. Wenn eine verwundbare Anwendung diese Daten deserialisiert, läuft die Kette ab und dein Befehl wird auf dem Host ausgeführt.
Die Schwachstelle liegt in der Anwendung, die unsichere Deserialisierung durchführt, NICHT in der Tatsache, dass Gadgets im Klassenpfad vorhanden sind. Dieses Projekt ist von inspiriert.
Verwandle YSoNets Gadget- und Plugin-Katalog nicht in eine Deserialisierungs-Blocklist. Der Katalog kann nicht jede private, zukünftige, anwendungsspezifische oder anders zusammengesetzte Kette enthalten, daher macht das Blockieren der hier aufgeführten Elemente einen unsicheren Deserialisierer nicht sicher. Es kann ein falsches Sicherheitsgefühl erzeugen, während es einen Angriff nur verzögert.
Wenn du dieses Repository prüfst, um eine Anwendung zu härten, lies Sicherheitsleitfaden für Verteidiger und Prüfer, bevor du die Gadgets oder Plugins untersuchst. Das Ziel ist es, unsichere Deserialisierung zu entfernen oder auf ein Design mit festem Schema und reinen Daten umzusteigen. Eine strenge Allowlist ist eine vorübergehende Eindämmung, wenn eine Migration nicht sofort möglich ist; eine Denylist ist keine Behebung.
Die vollständige Dokumentation befindet sich in docs/:
Neu bei diesem Tool? Der einfachste Weg ist der interaktive Modus: ein menügesteuerter Assistent, der die Gadgets und Plugins auflistet, jede Einstellung erklärt und die Payload für dich erstellt – ohne dass du zuerst Flags auswendig lernen musst.
.\ysonet.exe -i
(interactive, wizard und --interactive funktionieren ebenfalls.) Du benötigst zuerst ysonet.exe – siehe Erste Schritte. Eine vollständige Assistenten-Anleitung findest du ebenfalls dort.
./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t
Alle Optionen findest du mit ysonet.exe --fullhelp, und pro Gadget- oder Plugin-Hilfe mit -g NameHier -help oder -p NameHier -help. Mehr in Verwendung und Beispiele.
Benötigt Windows, MSBuild aus Visual Studio 2022 oder den Build Tools (Workload „.NET-Desktopentwicklung“) sowie nuget.exe. Jedes Projekt zielt auf .NET Framework 4.7.2 ab.
git clone https://github.com/irsdl/ysonet
cd ysonet
nuget restore ysonet.sln
msbuild ysonet.sln -p:Configuration=Release # oder Debug
.\ysonet\bin\Release\ysonet.exe -h
ysonet.exe per String-Verschlüsselung, um Fehlalarme von Antivirenprogrammen zu reduzieren; die Payload-Bytes bleiben unverändert. Überspringe dies mit -p:ObfuscateRelease=false. Debug wird nie verschleiert.Ein Debug-Build führt die schnelle Testsuite automatisch aus, und ein fehlgeschlagener Test lässt den Build fehlschlagen (überspringe dies mit -p:RunYsonetTests=false). Die erschöpfende FULL-Suite ist optional:
.\ysonet\bin\Debug\ysonet.Tests.exe --full
Beide sind sicher: Befehle sind selbstschließend oder werden nie ausgeführt, und Listener sind nur auf Loopback beschränkt. Details und die anderen optionalen Stufen: Erste Schritte und CONTRIBUTING.md.
ysonet.exe kann in PowerShell Optionen, Gadget-Namen (-g), Plugin-Namen (-p), Formatierer (-f) und Ausgabeformate (-o) per Tab vervollständigen. Die Vervollständigungswerte kommen live aus dem Tool, sodass sie korrekt bleiben, wenn Gadgets und Plugins hinzugefügt werden.
Aktiviere es für die aktuelle Sitzung (funktioniert in jedem PowerShell, schreibt nichts auf die Festplatte, wird nicht von der Ausführungsrichtlinie beeinflusst):
.\ysonet.exe completion powershell | Out-String | Invoke-Expression
Drücke dann Tab, zum Beispiel .\ysonet.exe -g A und dann Tab.
Um es dauerhaft in PowerShell 7+ (pwsh) zu machen:
.\ysonet.exe completion install # dann neu laden mit: . $PROFILE
Install zielt nur auf PowerShell 7+ (pwsh) ab, da Windows PowerShell 5.1 oft AllSigned oder Restricted ist und kein unsigniertes Profil laden kann; in diesem Fall verwende die obige Zeile für die aktuelle Sitzung (sie benötigt keine Richtlinienänderung). Führe ysonet.exe completion status aus, um zu sehen, was erkannt wird, und ysonet.exe completion uninstall, um es zu entfernen. Weitere Details in tools/completions/.
Diese Software wurde ausschließlich für Zwecke der akademischen Forschung und für die Entwicklung effektiver Verteidigungstechniken erstellt und ist nicht dazu gedacht, Systeme anzugreifen, außer wenn dies ausdrücklich autorisiert ist. Die Projektbetreuer sind nicht verantwortlich oder haftbar für Missbrauch der Software. Verwende sie verantwortungsvoll.
Diese Software ist ein persönliches Projekt und steht in keinem Zusammenhang mit Unternehmen, einschließlich der Arbeitgeber des Projektinhabers und der Mitwirkenden.
Kanonisches Repository: https://github.com/irsdl/ysonet
master.YOUR_USER und YOUR_BRANCH):
https://github.com/irsdl/ysonet/compare/master...YOUR_USER:ysonet:YOUR_BRANCHSiehe CONTRIBUTING.md für die Kurzversion. Du möchtest ein Gadget, Plugin oder einen Serialisierer hinzufügen? Beginne mit der Codeübersicht in docs/ARCHITECTURE.md und schwäche niemals einen Test ab, um ihn bestehen zu lassen.
YSoNet wird von Soroush Dalili (@irsdl) entwickelt und gepflegt. YSoSerial.Net wurde ursprünglich von Alvaro Muñoz (@pwntester) entwickelt. Führe ysonet.exe --credit für die vollständigen Gadget- und Plugin-Danksagungen aus oder siehe Danksagungen. Um mehr über die zugrunde liegenden Probleme zu erfahren, siehe Referenzen.
YSoNet ist unter der MIT-Lizenz lizenziert. Die Lizenz bewahrt den ursprünglichen ysoserial.net-Urheberrechtshinweis für Alvaro Muñoz und den YSoNet-Urheberrechtshinweis für Soroush Dalili. Beide Hinweise und der MIT-Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software erhalten bleiben.