
NebulaPulsar est un framework d'implant en mémoire de preuve de concept pour les webshells Java (JSP) et ASP.NET (ASPX/ASHX/ASMX), développé à l'origine dans le cadre du projet Alien.
Mise à jour : Ce projet est désormais un sous-projet d'Alien pour démontrer mes idées et à des fins expérimentales.
NebulaPulsar est un framework d'implant mémoire (proof-of-concept) pour Java (JSP) et ASP.NET (ASPX/ASHX/ASMX), développé à l'origine dans le cadre du projet Alien.
Contrairement aux démonstrations traditionnelles de webshell qui se concentrent uniquement sur l'exécution de commandes, NebulaPulsar explore comment un implant mémoire peut établir un canal de communication chiffré, charger dynamiquement des charges utiles (payloads) et les exécuter entièrement en mémoire.
Ce projet est destiné à la recherche en sécurité, à l'analyse de logiciels malveillants et à l'éducation défensive. Il n'est pas conçu pour être un framework offensif opérationnel.
Détails techniques :
Si vous trouvez ce projet utile ou instructif, j'apprécierais vraiment une ⭐ sur le dépôt. Votre soutien serait une grande motivation pour continuer à améliorer cet outil.
« Quiconque critique la recherche sur les attaques en mésestime la contribution. L'attaque et la défense ne sont pas des pairs. La défense est l'enfant de l'attaque. » — John Lambert
Ce projet a été créé uniquement à des fins éducatives, de recherche et de défense en cybersécurité.
Son objectif est d'étudier l'implémentation d'implants mémoire modernes, de communications chiffrées et de l'exécution dynamique de charges utiles sur les plateformes Java et .NET.
Le projet n'est pas destiné à un accès non autorisé, à la persistance ou à un déploiement malveillant. Toute utilisation contre des systèmes sans autorisation explicite est strictement déconseillée.
L'auteur décline toute responsabilité en cas d'utilisation abusive ou de dommages résultant de ce projet.
En développant Alien , je souhaitais mieux comprendre comment les webshells et implants mémoire modernes sont conçus en interne.
De nombreux webshells disponibles publiquement se concentrent sur les fonctionnalités mais expliquent rarement pourquoi ils sont implémentés de cette manière. Des fonctionnalités comme la communication chiffrée, l'exécution de charges utiles en mémoire, le chargement dynamique de classes et les implants basés sur des sessions sont souvent traitées comme des boîtes noires.
NebulaPulsar a été créé pour combler ce fossé.
Plutôt que de cloner une implémentation existante, ce projet explore les concepts sous-jacents des implants mémoire modernes et montre comment ces idées peuvent être implémentées sur les plateformes Java et .NET.
Tout au long du processus de développement, j'ai étudié des sujets tels que :
ClassLoader en JavaAssembly.Load() et la réflexion en .NETL'objectif est de comprendre comment ces techniques fonctionnent, et non d'encourager leur mauvaise utilisation.
Ce framework est divisé en deux couches :
NebulaPulsar est l'implant mémoire résident. Il est responsable de :
DarkMatter est la charge utile exécutée par NebulaPulsar.
Elle implémente la logique réelle de post-exploitation tout en restant indépendante de la couche de transport, ce qui facilite l'extension avec des modules et capacités supplémentaires.
NebulaPulsar est d'abord injecté dans le webshell cible et reste résident en mémoire.
Une fois initialisé, il établit un canal de communication chiffré et attend les charges utiles entrantes.
Les charges utiles suivantes, comme DarkMatter, sont ensuite transmises via ce canal. NebulaPulsar déchiffre la charge utile, la charge directement en mémoire et lui transfère l'exécution.
DarkMatter est responsable de l'implémentation de fonctionnalités plus avancées, tandis que NebulaPulsar reste léger et se concentre sur la gestion des charges utiles et la communication.
Téléchargement :
wget https://github.com/iss4cf0ng/NebulaPulsar/releases/latest/download/NebulaPulsar.tar.gz
tar -xzf NebulaPulsar.tar.gz
cd ./NebulaPulsar
Exécution avec Python :
python3 main.py --url http://localhost/nebulapulsar.jsp --script java --encoding='utf-8'
Merci d'avoir consulté ce projet. Les retours et suggestions sont les bienvenus.