
Generador de payloads de deserialización para una variedad de formateadores .NET
YSoNet es un fork del YSoSerial.Net original, actualmente mantenido por @irsdl.
Una herramienta de prueba de concepto para generar payloads que explotan la deserialización insegura de objetos .NET.
YSoNet (anteriormente conocido como ysoserial.net) es una colección de utilidades y "cadenas de gadgets" de programación orientada a propiedades descubiertas en bibliotecas .NET comunes que, bajo las condiciones adecuadas, pueden explotar aplicaciones .NET que realizan deserialización insegura de objetos. Le proporcionas un comando y una cadena de gadgets; envuelve el comando en la cadena y serializa el resultado a stdout. Cuando una aplicación vulnerable deserializa esos datos, la cadena se ejecuta y tu comando se ejecuta en el host.
La vulnerabilidad reside en la aplicación que realiza la deserialización insegura, NO en tener gadgets en el classpath. Este proyecto está inspirado en el proyecto ysoserial de Chris Frohoff.
No conviertas el catálogo de gadgets y plugins de YSoNet en una lista de bloqueo de deserialización. El catálogo no puede incluir todas las cadenas privadas, futuras, específicas de aplicaciones o compuestas de manera diferente, por lo que bloquear lo que aquí se lista no hace seguro un deserializador inseguro. Puede crear una falsa sensación de seguridad mientras solo retrasa un ataque.
Si estás revisando este repositorio para endurecer una aplicación, lee Guía de seguridad para defensores y revisores antes de inspeccionar los gadgets o plugins. El objetivo es eliminar la deserialización insegura o migrar a un diseño de solo datos con esquema fijo. Una lista blanca estricta es una contención temporal cuando una migración no puede realizarse de inmediato; una lista negra no es una remediación.
La documentación completa se encuentra en docs/:
¿Nuevo en esta herramienta? La forma más fácil de empezar es el modo interactivo: un asistente basado en menús que lista los gadgets y plugins, explica cada configuración y construye el payload por ti, sin necesidad de memorizar banderas primero.
.\ysonet.exe -i
(interactive, wizard y --interactive también funcionan). Primero necesitas ysonet.exe; consulta Primeros pasos. Allí también está el recorrido completo del asistente.
./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t
Consulta todas las opciones con ysonet.exe --fullhelp, y la ayuda por gadget o plugin con -g NombreAquí -help o -p NombreAquí -help. Más información en Uso y ejemplos.
Requiere Windows, MSBuild de Visual Studio 2022 o las Build Tools (carga de trabajo ".NET desktop development") y nuget.exe. Cada proyecto apunta a .NET Framework 4.7.2.
git clone https://github.com/irsdl/ysonet
cd ysonet
nuget restore ysonet.sln
msbuild ysonet.sln -p:Configuration=Release # o Debug
.\ysonet\bin\Release\ysonet.exe -h
ysonet.exe para reducir los falsos positivos de antivirus; los bytes del payload no cambian. Omítelo con -p:ObfuscateRelease=false. Debug nunca se ofusca.Una compilación Debug ejecuta automáticamente la suite de pruebas rápida, y una prueba fallida hace fallar la compilación (omítela con -p:RunYsonetTests=false). La suite exhaustiva FULL es opcional:
.\ysonet\bin\Debug\ysonet.Tests.exe --full
Ambas son seguras: los comandos se autocierran o nunca se ejecutan, y los listeners son solo de loopback. Detalles y los otros niveles opcionales: Primeros pasos y CONTRIBUTING.md.
ysonet.exe puede autocompletar con Tab opciones, nombres de gadgets (-g), nombres de plugins (-p), formateadores (-f) y formatos de salida (-o) en PowerShell. Los valores de autocompletado provienen en vivo de la herramienta, por lo que se mantienen correctos a medida que se añaden gadgets y plugins.
Habilítalo para la sesión actual (funciona en cualquier PowerShell, no escribe nada en disco, no se ve afectado por la política de ejecución):
.\ysonet.exe completion powershell | Out-String | Invoke-Expression
Luego presiona Tab, por ejemplo .\ysonet.exe -g A y luego Tab.
Para hacerlo permanente en PowerShell 7+ (pwsh):
.\ysonet.exe completion install # luego recarga con: . $PROFILE
La instalación apunta solo a PowerShell 7+ (pwsh), porque Windows PowerShell 5.1 suele estar en AllSigned o Restricted y no puede cargar un perfil sin firmar; en ese caso usa la línea por sesión anterior (no requiere cambio de política). Ejecuta ysonet.exe completion status para ver qué se detecta y ysonet.exe completion uninstall para eliminarlo. Más detalles en tools/completions/.
Este software se ha creado únicamente con fines de investigación académica y para el desarrollo de técnicas defensivas efectivas, y no está destinado a usarse para atacar sistemas excepto cuando esté explícitamente autorizado. Los mantenedores del proyecto no son responsables ni se hacen responsables del mal uso del software. Úsalo con responsabilidad.
Este software es un proyecto personal y no está relacionado con ninguna empresa, incluidos los empleadores del propietario del proyecto y de los colaboradores.
Repositorio canónico: https://github.com/irsdl/ysonet
master.YOUR_USER y YOUR_BRANCH):
https://github.com/irsdl/ysonet/compare/master...YOUR_USER:ysonet:YOUR_BRANCHConsulta CONTRIBUTING.md para la versión corta. ¿Añades un gadget, plugin o serializador? Comienza con el mapa de código en docs/ARCHITECTURE.md y nunca debilites una prueba para que pase.
YSoNet es desarrollado y mantenido por Soroush Dalili (@irsdl). YSoSerial.Net fue desarrollado originalmente por Alvaro Muñoz (@pwntester). Ejecuta ysonet.exe --credit para los créditos completos de gadgets y plugins, o consulta Créditos. Para aprender más sobre los problemas subyacentes, consulta Referencias.
YSoNet está licenciado bajo la Licencia MIT. La licencia conserva el aviso de copyright original de ysoserial.net para Alvaro Muñoz y el aviso de copyright de YSoNet para Soroush Dalili. Ambos avisos y el aviso de permiso MIT deben permanecer en todas las copias o partes sustanciales del software.