elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 [178] 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 ... 235
1771  Seguridad Informática / Criptografía / Re: Sistema de cifrado por lote de texto plano en: 29 Marzo 2016, 17:50 pm
Practico el ejemplo, para fines de aprendizaje sobre sistemas de cifrados es buen trabajo, aun que realmente seguro no es.

Lo de agregar texto random suena bien, sin embargo la seguridad atravez de la oscuridad no estan segura.

Aun asi buen ejemplo para fines practicos.
1772  Seguridad Informática / Criptografía / Libgcrypt paso a paso en: 29 Marzo 2016, 17:44 pm
Muy buen dia, este sera un pequeño taller para entender un poco mas sobre criptografía paso a paso usando lenguaje C y la libreria Libgcrypt.

Nota para el moderador Lo pongo en Cryptografia  y no en C/C++ por ver el detalle de los conceptos criptograficos.

Asi podremos observar paso paso el contenido de la memoria  :silbar: y como esta cambia.

Antes de programar con libgcrypt yo solo sabia los conceptos básicos de Criptografia pero en general desconocía a grandes rasgos la forma interna de trabajar de programas como GnuPG entre otros.

Los códigos que pondré aqui estan a su disposición para practicar con la librería y los conceptos criptográficos y estan disponibles en github

https://github.com/albertobsd/libgcrypt-examples

Creacion de par de Claves RSA

Bien el primer tema sera crear una clave RSA de cierta cantidad de bits y ver como esta esta clave en la memoria.

El primer ejemplo esta bajo el nombre RSA_2048.c aunque en realidad el ejmplo crea un par claves de 4096 bits
https://github.com/albertobsd/libgcrypt-examples/blob/master/RSA_2048.c

El programa genera un nuevo par de claves RSA de 4096 bits y los guarda en formato S-Expresion en un archivo llamado clave.txt por si tienen ese archivo ya existente con datos seria sobreescrito.

El codigo y luego explicare las partes interesantes por serparado.
Código
  1. /*
  2. Twitter @albertobsd
  3. cc -o RSA_2048 RSA_2048.c `libgcrypt-config --cflags --libs`
  4. Prueba de generacion de claves RSA 2048 y 4096 bits.
  5. */
  6.  
  7. #include<stdio.h>
  8. #include<gcrypt.h>
  9.  
  10. int main() {
  11. FILE *f = NULL;
  12. gcry_sexp_t rsa_parms = NULL;
  13. gcry_sexp_t rsa_keypair = NULL;
  14. gcry_error_t err = 0;
  15. char *buffer;
  16. size_t length = 4;
  17. size_t offset = 0;
  18. err = gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN);
  19. err |= gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0);
  20. err |= gcry_control (GCRYCTL_RESUME_SECMEM_WARN);
  21. err |= gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
  22. if(err) {
  23. fprintf(stderr,"gcrypt: failed initialization");
  24. exit(0);
  25. }
  26. err = gcry_sexp_build(&rsa_parms, NULL, "(genkey (rsa (nbits 4:4096)(rsa-use-e 1:1)))");
  27. if (err) {
  28. fprintf(stderr,"gcrypt: failed initialization");
  29. exit(0);
  30. }
  31. length = gcry_sexp_sprint(rsa_parms,GCRYSEXP_FMT_CANON,NULL,0);
  32. buffer = calloc(length,sizeof( char));
  33. offset = gcry_sexp_sprint(rsa_parms,GCRYSEXP_FMT_CANON,buffer,length);
  34. printf("Buffer size %i\n",length);
  35. printf("Buffer offset %i\n",offset);
  36. printf("%s\n",buffer);
  37. memset(buffer,0,length);
  38. err = gcry_pk_genkey(&rsa_keypair, rsa_parms);
  39. if (err) {
  40. fprintf(stderr,"gcrypt: failed initialization");
  41. exit(0);
  42. }
  43. length = gcry_sexp_sprint(rsa_keypair,GCRYSEXP_FMT_CANON,NULL,0);
  44. buffer = realloc(buffer,length*sizeof(char));
  45. offset = gcry_sexp_sprint(rsa_keypair,GCRYSEXP_FMT_CANON,buffer,length);
  46.  
  47. printf("Buffer size %i\n",length);
  48. printf("Buffer offset %i\n",offset);
  49. printf("%s\n",buffer);
  50. f = fopen("clave.txt","w");
  51. if(f) {
  52. fwrite(buffer,sizeof(char),offset,f);
  53. fclose(f);
  54. }
  55. memset(buffer,0,length);
  56. free(buffer);
  57. gcry_sexp_release(rsa_keypair);
  58. gcry_sexp_release(rsa_parms);
  59. }
  60.  

Si bien no entrare en algunos de los detalles de libgcrypt eso queda a tarea del lector.

Código
  1. gcry_sexp_build(&rsa_parms, NULL, "(genkey (rsa (nbits 4:4096)(rsa-use-e 1:1)))");

La funcion anterior solo genera una cadena en formato S-expresion con instrucciones para posteriormente generar un par de claves:

Código
  1. "(genkey (rsa (nbits 4:4096)(rsa-use-e 1:1)))"

Si queremos crear un par de clave de 1024 bits solo cambiaremos el 4096 por 1024 y asi susesivamente.

Si ejecutamos el programa veremos un salida similar a la siguiente:

Código:
Buffer size 49
Buffer offset 48
(6:genkey(3:rsa(5:nbits4:4096)(9:rsa-use-e1:1)))
Buffer size 2441
Buffer offset 2440
(8:key-data(10:public-key(3:rsa(1:n513:

Veamos informamos de cuanta memoria se uso para el buffer y acontinuacion vemos una cadena similar a la que le pasamos al programa:

Citar
(6:genkey(3:rsa(5:nbits4:4096)(9:rsa-use-e1:1)))

por ejemplo:
6:genkey <-6 bytes
3:rsa <- 3bytes
5:nbits <- 5 bytes
4:4096 <- 4 bytes
etc...

Generamos la clave:

Código
  1. gcry_pk_genkey(&rsa_keypair, rsa_parms);

La guardamos en un buffer con memoria previamente reservada:

Código
  1. offset = gcry_sexp_sprint(rsa_keypair,GCRYSEXP_FMT_CANON,buffer,length);


La imprimimos en pantalla

Código
  1. printf("%s\n",buffer);

pero bien la salida al parecer esta trunca:

Citar
Buffer size 2441
Buffer offset 2440
(8:key-data(10:public-key(3:rsa(1:n513:

Para esto guardamos el buffer completo en un archivo:

Código:
fwrite(buffer,sizeof(char),offset,f);

Y si revisan el contenido del archivo veran  :o :o :o el formato completo de las claves en el formato descrito en la documentacion de libgcrypt

Citar

(private-key
  (rsa
    (n n-mpi)
    (e e-mpi)
    (d d-mpi)
    (p p-mpi)
    (q q-mpi)
    (u u-mpi)))

(public-key
  (rsa
    (n n-mpi)
    (e e-mpi)))

+ Otros  datos

https://gnupg.org/documentation/manuals/gcrypt/RSA-key-parameters.html#RSA-key-parameters
1773  Seguridad Informática / Criptografía / Proteger par de claves RSA en: 29 Marzo 2016, 15:06 pm
Buen dia foro. Estoy viendo las alternativas para proteger el par de claves RSA.

Tengo este programa en el que estoy trabajando, un projecto personal.

El programa genera el par de claves RSA de 1024 o 2048 con la API de libgcrypt, ya puedo cifrar y firmar los archivos con dicha clave.

El programa es mas o menos autonomo, he visto que normalmente se trabaja con un password para cifrar las claves con AES o algun otro algoritmo de cifrado simetrico, y asi solo la persona que conoce el password tiene acceso al par de claves.

Pero como mi programa es autonomo estoy buscando una alternativa mis idias son las siguientes.

  • Buscar un tipo de UUID en la maquina y usar su sha256 de password
  • Generar un archivo random y usar su sha256 de password
  • hardcodear el password en la aplicacion (mala idea) pero es una opcion

¿Alguna otra?

¿Que suguieren ustedes?

Saludos.
1774  Seguridad Informática / Seguridad / Re: Red de comunicacion (Anonima, Segura) en: 26 Marzo 2016, 15:17 pm
Muy buen dia.

Depues de 7 dias de estar jugando con la API de telegram he escrito una interaz para usarla en lenguaje C.

Libtelegrambot

Si alguien quiere usarla y practicar con ella para los fines que quiera esta disponible. Pueden reportar fallas en la pagina de github

Ya con la interfaz lista voy a comenzar una sección genérica de comunicación en mi programa
Asi si un dia decido de cambiar de canal, solo tendre que cambiar las llamadas de mi sección a una nueva API o plataforma.

ejemplo:

Ahora
Citar
progama_getUpdates() {
  telegram_getUpdates();
}

En caso de cambiar de plataforma
Citar
progama_getUpdates() {
  another_getUpdates();
}

1775  Seguridad Informática / Seguridad / Re: Red de comunicacion (Anonima, Segura) en: 19 Marzo 2016, 23:04 pm
Estaba pensando en los pros y contras antes de irme a dormir y amaneci con esas mismas ideas.

Estoy viendo otras opciones como
:https://core.telegram.org/

Aun asi, al igual que los otros metodos tambien esta el riesgo que terminen quitando el canal de comunicación.


Saludos!.

1776  Seguridad Informática / Análisis y Diseño de Malware / Re: Alguien me puede ayudar? en: 19 Marzo 2016, 11:11 am
No es tan facil.

Aun asi si es un blanco especifico podrias hacer un poco de estudio previo saber que sistema tiene y en base a eso planear un buen vector de ataque.

Ejemplo:
Enviar un link que apunte a un servidor propio con contenido "legal" por ejemplo una pagina de noticias para no levantar sospechas.

Con esto obtienes el user-agent y asi por ende el sistema opertivo y version del navegador.

Proximo paso mandar un enlace similar ahora un vetor de ataque.

Hacking basico

Saludos
1777  Seguridad Informática / Seguridad / Re: Red de comunicacion (Anonima, Segura) en: 19 Marzo 2016, 06:16 am
Puedes usar email y crear una especie de cliente de correo

Buena idea, voy a pensarlo a ver que tal va.

Jaja ya estaba pensando en un protocolo de comunicación usando IRC y algun servidor al estilo FreeNode.

Voy a ver los pro y contra de las opciones. A ver si se me ocurre alguna otra.
1778  Seguridad Informática / Seguridad / Re: Red de comunicacion (Anonima, Segura) en: 19 Marzo 2016, 05:45 am
y los datos los manejas con PGP.

Uso libgcrypt para manejar la criptografia, como lo comento la criptografia no es problema

La red tor no te sería tan útil

Algun argumento en contra para la red de tor?

podrías usar mensajes esteanograficos

Lo considerare, aun asi creo que al ser criptografia asimetrica end to end no tengo mucho problema.

Te importa verte comprometido si reversan tu programa?

El programa del cliente no hay mucho problema si lo reversean. Realmente el cliente solo procesa la información recibida y la muestra prácticamente en texto plano.

Otras funciones del cliente son actualizarse a si mismo cuando aplique y actualizar el contenido a mostrar.
Validar que la actualización venga firmada por el programa servidor.
Y enviar datos estadísticos de uso al servidor.

Que parte se comprometeria, la conexion o el servidor?


La conexion no hay problema que se comprometa igualmente va cifrado, bueno si la conexion es orientada a valga la redundancia "conexion" me refiero a una conexion directa (TCP, control de flujo etc etc etc), si seria problema por que entonces todos sobrian quien es el servidor.

Lo mas viable que veo es usar una red publica ya existente o alguna forma de broadcast para el servidor sea pasivo al momento de leer los mensajes de los clientes. Y ningun cliente conozca quien es el servidor.


1779  Seguridad Informática / Seguridad / Red de comunicacion (Anonima, Segura) en: 19 Marzo 2016, 02:30 am
Buen dia a todos.

Estoy implementando un programa cliente - servidor, (Muchos clientes un solo servidor) el cual se comunica con criptografía asimétrica esto es un par de llaves publicas y privadas para cada cliente.

Los clientes tendrían actualizaciones periódicas tanto de contenido como del programa en si y solo aceptaran la actualización si esta esta firmada por el servidor.

No tengo problema con la criptográfica ni con la programación. Solo estoy buscando opciones para la implementación del canal de comunicación.
El cual me gustaría que la comunicación del cliente para el servidor utilizara un canal anónimo de forma que fuera muy difícil saber quien es el servidor.

Opciones en las que he pensado.
  • Usar la red de Tor para que los clientes envien datos al servidor y/o servidores
  • Implementar una red parecida a la red que usa el sistema de Bitcoin para distribuir la información.
  • Usar algun sistema de mensajes publicos tipo Twitter/paste bin etc..

Punto por punto:

La red de TOR

He escuchado poco de los dominios Onion, sin embargo no estoy tan seguro que tan factible es que localicen tal o cual servidor.

Implementar una red parecida a la red que usa el sistema de Bitcoin para distribuir la información.

Segun el PDF que lei, utiliza un sistema de broadcast para enviar la informacion de las transacciones entre todos los nodos de la red. Sin embargo con mis conocimientos de redes no conozco la forma de hacer esto.

Usar una red Publica
He pensado de todo desde Twitter, Pastebin incluso la red IRC pero en la mayoría de los casos siempre deja algún rastro y/o bloquean las cuentas.

¿Alguna otra sugerencia?

El programa que estoy implementando es instalado manualmente por los usuarios y ellos pueden dejar de usarlo en cualquier momento.
No es ningun ransomware ni malware que se le paresca.
El detalle de tanto hermetismo con el servidor es por que el contenido que es enviado a los clientes puede entrar en conflicto con grandes corporaciones multimedia y no quiero tener represalias por ello.

Saludos!
1780  Foros Generales / Foro Libre / Re: Agarraos que vienen curvas:la tierra no se está moviendo.... en: 11 Marzo 2016, 21:30 pm
Llevo 2 horas agarrado de la silla esperando no caerme, de la risa claro jajajaja.
Páginas: 1 ... 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 [178] 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines