
Venom is a library that meant to perform evasive communication using stolen browser socket
Venom est une bibliothèque C++ qui vise à offrir un moyen alternatif de communiquer : au lieu de créer une socket qui pourrait être retracée jusqu'au processus, elle crée un nouveau processus Edge détaché et « caché » (aucune fenêtre n'est affichée) (Edge a été choisi car c'est un navigateur installé sur chaque Windows 10+ et qui ne suscitera pas de suspicion) et vole l'une de ses sockets pour effectuer les opérations réseau.
L'avantage de créer un processus navigateur détaché est qu'il n'y a aucun risque qu'il soit fermé accidentellement par l'utilisateur et que les sockets existent sans communiquer avec un site quelconque, évitant ainsi d'éventuelles collisions.

Venom est un fichier d'en-tête C++ unique, vous pouvez donc simplement l'inclure dans votre projet et l'utiliser comme suit :
Venom venom = Venom(L"127.0.0.1", 3110);
if (!venom.VenomObtainSocket()) {
std::cerr << "[ - ] Failed to get socket." << std::endl;
venom.~Venom();
return -1;
}
// Do your stuff here.
...
venom.~Venom();
Vous pouvez voir l'exemple qui montre comment utiliser la socket pour envoyer ou recevoir des données.
La raison fondamentale pour laquelle cela fonctionne, ou pour être exact, pourquoi l'envoi et la réception avec une socket (éventuellement connectée) se font sans aucun problème, se trouve dans la documentation des fonctions.
Avant d'expliquer cela plus en détail, j'ai choisi de créer un nouveau processus Edge plutôt que d'en utiliser un déjà ouvert, pour 2 raisons principales :
Vous ne pouvez pas savoir si la socket du navigateur est déjà utilisée et cela pourrait provoquer une collision si vous essayez de recevoir des données.
Un processus que vous avez créé peut être fermé par erreur à tout moment par l'utilisateur, ce qui couperait votre communication.
Maintenant que vous avez compris les raisons de la création d'un nouveau processus, je peux expliquer pourquoi je peux utiliser une socket existante (qui pourrait être connectée) pour communiquer avec une cible (sans l'y connecter).
De plus, vous pouvez lire qu'ils ont également écrit « ... Même si la socket sans connexion a été précédemment connectée à une adresse spécifique, le paramètre to remplace l'adresse de destination ... », ce qui signifie que nous pouvons remplacer la cible avec sendto.