Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: xv0 en 5 Diciembre 2012, 20:06 pm



Título: [Duda] Cifrar Socket
Publicado por: xv0 en 5 Diciembre 2012, 20:06 pm
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.


Título: Re: [Duda] Cifrar Socket
Publicado por: Novlucker en 5 Diciembre 2012, 20:32 pm
No entiendo, lo que necesitas cifrar realmente es el tráfico que envías por el socket, no el socket.

Saludos


Título: Re: [Duda] Cifrar Socket
Publicado por: xv0 en 5 Diciembre 2012, 21:48 pm
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é.



Título: Re: [Duda] Cifrar Socket
Publicado por: 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.

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 ;)


Título: Re: [Duda] Cifrar Socket
Publicado por: xv0 en 6 Diciembre 2012, 02:02 am
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.

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

Linea 36 hay esta el descriptor.

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.

Cualquier duda, ya sabes ;)

Muy amable, gracias.

Un saludo.


Título: Re: [Duda] Cifrar Socket
Publicado por: Karcrack en 6 Diciembre 2012, 02:44 am
¿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.


Título: Re: [Duda] Cifrar Socket
Publicado por: 0xDani en 6 Diciembre 2012, 13:48 pm
@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.

Código
  1. int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  2. dup2(sockfd, STDIN_FILENO);
  3. sockfd ^= rand();
  4.  

Algo asi quieres hacer, cpu2?


Título: Re: [Duda] Cifrar Socket
Publicado por: xv0 en 7 Diciembre 2012, 10:01 am
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.


Título: Re: [Duda] Cifrar Socket
Publicado por: 0xDani en 7 Diciembre 2012, 12:23 pm
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.


Título: Re: [Duda] Cifrar Socket
Publicado por: xv0 en 8 Diciembre 2012, 09:08 am
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.