
Venom es una biblioteca que pretende realizar comunicación evasiva utilizando un socket de navegador robado
Venom es una biblioteca de C++ diseñada para ofrecer una forma alternativa de comunicarse. En lugar de crear un socket que pueda rastrearse hasta el proceso, crea un nuevo proceso de Edge separado y "oculto" (no se muestra ninguna ventana) (Edge fue elegido porque es un navegador que está instalado en todos los Windows 10+ y no generará sospechas) y roba uno de sus sockets para realizar las operaciones de red.
El beneficio de crear un proceso de navegador separado es que no hay peligro de que el usuario lo cierre accidentalmente, y los sockets existen pero no se comunican con ningún sitio, evitando así posibles colisiones.

Venom es un único archivo de cabecera de C++, por lo que puedes simplemente incluirlo en tu proyecto y usarlo de la siguiente manera:
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();
Puedes ver el ejemplo que muestra cómo usar el socket para enviar o recibir datos.
La razón principal de por qué funciona, o para ser exactos, por qué el envío y la recepción con un socket (posiblemente conectado) funcionan sin ningún problema, está en la documentación de las funciones.
Antes de explicar más sobre eso, elegí crear un nuevo proceso de Edge en lugar de usar uno ya abierto por dos razones principales:
No puedes saber si el socket del navegador ya está en uso y podría causar una colisión si intentas recibir datos.
Un proceso que hayas creado puede ser cerrado por error en cualquier momento por el usuario, lo que significa cortar tu comunicación.
Ahora que entiendes las razones para crear un nuevo proceso, puedo explicar por qué puedo usar un socket ya existente (que podría estar conectado) para comunicarme con un objetivo (sin conectarlo a él).
Además, puedes leer que también escribieron: "... Incluso si el socket sin conexión se ha conectado previamente a una dirección específica, el parámetro to anula la dirección de destino ..." lo que significa que podemos anular el destino con sendto.