[Duda] Cifrar Socket

Iniciado por cpu2, 5 Diciembre 2012, 20:06 PM

0 Miembros y 2 Visitantes están viendo este tema.

cpu2

Hola

Cuando creas un socket se guarda en una variable entera que se le llama descriptor, luego ese descriptor se usa para las funciones como connect, bind, revc etc...

Cifrando el descriptor con XOR la conexión funcionaría?

Hay otras formas más "refinadas" de conseguirlo"?

Un saludo.

Novlucker

No entiendo, lo que necesitas cifrar realmente es el tráfico que envías por el socket, no el socket.

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

cpu2

Exacto, es el tráfico lo que quiero cifrar.

Pero con la función accept puedes crear un descriptor y luego combinarlo con dup2 y el descriptor stdin para recivir información creo.

Un saludo.

P.D: Estoy empezando en esto, seguramente me equivoqué.


Karcrack

No sé muy bien a que te refieres con el descriptor del SOCKET... pero la forma habitual en la que se cifra una conversación cliente-servidor es haciendo que éstos se encarguen de cifrar antes de enviar y descifrar después de recibir.

Si realmente estás interesado en la seguridad del protocolo debes de armar algo más complejo que un XOR, deberías de asignarle una clave a cada cliente/servidor y un salt diferente para cada conexión.

Cualquier duda, ya sabes ;)

cpu2

Cita de: Karcrack en  5 Diciembre 2012, 23:53 PM
No sé muy bien a que te refieres con el descriptor del SOCKET... pero la forma habitual en la que se cifra una conversación cliente-servidor es haciendo que éstos se encarguen de cifrar antes de enviar y descifrar después de recibir.

Me refiero a lo que devuelve la llamada a socket, no pretento hacer un cliente-servidor para conversaciones.

Si eres tan amable de leer uno de mis post lo entenderas, me expreso mal xD.

http://foro.elhacker.net/unixunixlike/ocultar_procesos-t376125.0.html;msg1806597#new

Linea 36 hay esta el descriptor.

Cita de: Karcrack en  5 Diciembre 2012, 23:53 PM
Si realmente estás interesado en la seguridad del protocolo debes de armar algo más complejo que un XOR, deberías de asignarle una clave a cada cliente/servidor y un salt diferente para cada conexión.

Solo era un ejemplo lo de XOR.

Mi idea era utilizar las apis de ipsec, pero el problema es que en la máquina remota tendría que configurar isakmpd.conf y no es plan.

A ese código me gustaria meterle alguna shellcode y una reverse shell, y que la conexión estuviese cifrada como un tunnel de ipsec o ssh si es posible.

Cita de: Karcrack en  5 Diciembre 2012, 23:53 PM
Cualquier duda, ya sabes ;)

Muy amable, gracias.

Un saludo.

Karcrack

¿Cuál es la finalidad de cifrar el handle? (Creo que es a lo que tú llamas descriptor) Si cifras ésto las llamadas al resto de APIs relacionadas no funcionarán.

0xDani

@cpu2, puedes buscar sobre sockets raw y armarte un protocolo propio. En cuanto a cifrar el descriptor no veo para que, a no ser que quieras descifrarlo para cada llamada a accept, bind, etc. A no ser que te refieras a obtener el descriptor del socket, hacer un dup2 para que stdin sea tu socket y luego cifrarlo o destruirlo.

@Karcrack, en entornos Unix se llaman descriptores mas que handles.


int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
dup2(sockfd, STDIN_FILENO);
sockfd ^= rand();


Algo asi quieres hacer, cpu2?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

cpu2

Sí, pero no con el descriptor de socket si no con el de accept, y le añadiria un execve o una shellcode para la reverse_shell.

Por eso dije lo de cifrar el descriptor, cuando lo tenga acabado ya miraré con tcpdump.

Un saludo.

0xDani

Umm, con la estructura sockaddr_in, para que no se sepa de donde proviene el trafico? Pues eso no cambia nada, igual te va a salir de donde viene. Si quieres que no se sepa ni de donde proviene el trafico ni nada cifrandolo te vas a tener que armar un protocolo propio, con sockets raw.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

cpu2

Muy interesantes los sockets raw.

Estoy leyendo las funciones de netcat de escritura y lectura y se ayudan con una función llamada poll un poco similar ala dup2 y utilizan los descriptores.

Bueno si consigo algo ya os diré.

Un saludo.