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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18
131  Foros Generales / Foro Libre / ideas para un bot en: 20 Abril 2016, 01:30 am
Estoy programando un nuevo bot, el anterior que hice es un bot para administrar clientes de un programa torrent esro fue un proyecto personal, pero ahora busco un uso mas generico el bot estaria accesible a todo el publico y haria cosas.

Estoy pensando en darle usos informaticos/hacking por ejemplo se me ocurre realizar:
  • Consultas DNS
  • Mostar la salida estandar de Nmap escaneando una IP publica
  • Servir de proxie
  • Mandar mensjaes SMS de Emergencia 1x dia x usuario

Alguna otra idea?

o Mejor aun, que seria util para ustedes recibir de informacion diario en su telefono de forma inmediata.

No lo quiero hacer de noticias ya que ellos abundan.
132  Seguridad Informática / Análisis y Diseño de Malware / Qbot: ¿Mas informacion, ejemplos? en: 14 Abril 2016, 14:42 pm
Estoy leyendo un reporte sobre Qbot suena bastante interesante, ¿alguien tiene mas info sobre las tecnicas utilizadas?

https://threatpost.com/qbot-malware-morphs-quickly-to-evade-detection/117377/
133  Seguridad Informática / Análisis y Diseño de Malware / Decrypter vs Ransomware en: 12 Abril 2016, 02:43 am
Cifrar y descifrar la eterna lucha.

Lista de Decrypter:
  • Petya


Si bien la llegada al Internet de un nuevo malware de la clase de los ransomware no es nada nuevo.

Lo que es motivo de celebrar es que cada vez mas se escucha sobre herramientaa que decrifran los archivos sin nececidad de pagar a los ciber-extorcionadores.

Leyendo hoy las noticias salta que ya hay metodo conocido para recuperar el MBR infectado por PETYA esta.

¿Falla de Petya?
Dejar las llaves de decifrado en el disco duro.

Petya se caracteriza por dejar intactos los archivos pero inhabilitar el acceso a la computadora pidiendo pago a cambio de la clave.

Si bien este tipo de tecnica (alterar el MBR) era mas conocida hace una o dos decadas debido al gran flujo de uso de diskttes ya que eran mas propensos a infectarse de ese tipo de virus de arranque. Pues la tecnica volvio con PETYA, si bien ya sea por flojera de utilizar alguna libreria para el cifrado o facilidad de implementar codigo en ensamblador para modificar el MBR

Se cometio la pereza de dejar la llave en el disco.

¿Como se puede mejorar PETYA?
Implementar algunas rutinas critograficas en ensamblador.
Creo que para este tipo de ransomware no es vital utilizar llaves RSA de gran cantidad de bits asi que implementar algo utilizando una menor cantidad de bits no parace mala idea.

La otra y mas importante es No dejar las llaves en el disco duros si bien este ha sido el talon de Aquiles de muchos ransomwares mal diseñados, parece ser que dada la vida tan corta que tienen los servidores de control dejar las llaves en el disco a sido necesario.
134  Seguridad Informática / Criptografía / Generacion de ID de llave publica en: 10 Abril 2016, 16:01 pm
Buen dia.

¿Cual es la mejor forma de generar un ID?

Les dejo mi metodo y si ustedes tienen otro podria ser muy didactivo explicarlo por aqui

En el proyecto en el que estoy trabajando necesita generar un ID por usuario que instale la aplicacion.

-Muiltiplataforma
-Comunicacion cifrada end-to-end (Lo que esta de moda)

En fin el programa genera  un unico par de claves RSA para la criptografia asimetrica y genero llaves aleatorias para la criptografia simetrica en fin...

Genero un sha512 iterativo N cantidad de veces (mas de 4000) del archivo de la clave publica y este devuelve 64 bytes. Esta es mi ID del usuario y en teoria  no deberia de repetirse nuca...  :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Tal como lei en el documento de whatsapp ellos hacen una conversion solo de los ultimos 30 bytes de la clave y luego pasan cada 5 bytes a un entero sin signo y a ese entero le sacan modulo 100000.

Yo por mi parte copio de 8 en 8 bytes al entero sin signo:

Código
  1. int main() {
  2. int j;
  3. unsigned char *temp;
  4. unsigned long long t;
  5. temp = md_file(GCRY_MD_SHA512,"llavePublica");
  6. j = 0;
  7. printf("ID: ");
  8. while(j < 64) {
  9. printf("%.2x",temp[j++]);
  10. }
  11. printf("\n");
  12. printf("long long :%i\n",sizeof(unsigned long long));
  13. j = 0;
  14. t = 0;
  15. while(j < 8) {
  16. memcpy(&t,temp + (j*8),8);
  17. printf("%llu\n",t);
  18. t = 0;
  19. j++;
  20. }
  21. free(temp);
  22. }
  23.  

Salida:

Código:
ID: d97a302e486bd15f55d4a2e6f7eba511042b0ee4ae118596584393e002103dd65e9d1c822963d945e17d4c24d9b7b6ad0fd54a7a03acea32bf899e22c7c0576b
long long :8
6904417661492427481
1271681919760913493
10846094720439823108
15437512702239654744
5033163088490962270
12517394357567651297
3668933977383294223
7734862846543956415
135  Seguridad Informática / Criptografía / Whatsapp criptografia End-to-End en: 6 Abril 2016, 01:59 am
Bueno como es noticia desde hace unas horas para algunos usuarios, whatsapp en sus nueva actualizacion acaba de anunciar que implementara cifrado end-to-end.

El documento explicando todo el proceso esta disponible para su lectura en

https://s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/83000%2F605209%2FM79CMVvVjjbGFRx%2FWhatsApp-Security-Whitepaper.pdf

En general usan un par de claves Curve25519

agregare algunos comentarios en lo que tenga mas oportunidad.

TEMA REPETIDO

LEER: https://foro.elhacker.net/noticias/whatsapp_ya_es_100_seguro_con_cifrado_end_to_end-t450517.0.html
136  Programación / Programación C/C++ / ¿Usas telegram? programa tu bot en C en: 1 Abril 2016, 06:30 am
Buen dia compañeros.

Quiero compartirles el proyecto en el que estoy trabajando.

Una interfaz en C para que programen su bot para telegram.

El codigo esta disponible en github, aun lo sigo mejorando y optimizando lo mas que pueda.
Casi todo el programa es memoria dimanica la cual  administra muy bien la aplicacion.

Ejemplo de uso.
Código
  1. /*
  2.  * Luis Alberto
  3.  * Twitter @albertobsd
  4.  */
  5.  
  6. #include<stdio.h>
  7. #include<stdlib.h>
  8. #include<string.h>
  9. #include<curl/curl.h>
  10. #include<sys/stat.h>
  11. #include<errno.h>
  12. #include"telegram.h"
  13. #include"jsmn.h"
  14.  
  15. int main() {
  16. Updates *updates;
  17. User *user;
  18. Message *message;
  19. File *file;
  20. char **variables;
  21. char **valores;
  22. int i = 0;
  23. char *filename;
  24. telegram_init("123456789:zwxecrvtbynuyvbnmutyguhjdkeosdgjhfdouhn");
  25. user = telegram_getMe();
  26. if(!telegram_is_error()) {
  27. printf("User: id: %i\nusername: %s\n",user->id,user->username);
  28. telegram_free_user(user);
  29. }
  30. else {
  31. printf("%s\n",telegram_get_error());
  32. }
  33. updates = telegram_getUpdates();
  34. if(!telegram_is_error()){
  35. printf("updates: %i\n",updates->length);
  36. while(i < updates->length) {
  37. if(updates->list[i]->item.message->document) {
  38. printf("Document exits file_id : %s\n",updates->list[i]->item.message->document->file_id);
  39. file = telegram_getFile(updates->list[i]->item.message->document->file_id);
  40. if(!telegram_is_error()) {
  41. filename = telegram_downloadFile(file,updates->list[i]->item.message->document->file_name);
  42. printf("file name : %s\n",filename);
  43. }
  44. else {
  45. printf("%s\n",telegram_get_error());
  46. }
  47. }
  48. i++;
  49. }
  50. telegram_free_updates(updates);
  51. }
  52. else {
  53. printf("%s\n",telegram_get_error());
  54. }
  55. variables = calloc(5,sizeof(char*));
  56. valores = calloc(5,sizeof(char*));
  57. variables[0] = "chat_id";
  58. variables[1] = "text";
  59. valores[0] = "9219883";
  60. valores[1] ="Texto de prueba";
  61. message = telegram_sendMessage(telegram_build_post(variables,valores));
  62. if(!telegram_is_error()) {
  63. printf("OK %s\n",message->text);
  64. telegram_free_message(message);
  65. }
  66. else {
  67. printf("%s\n",telegram_get_error());
  68. }
  69. variables[1] = "caption";
  70. valores[1] = "Envio archivo";
  71. message = telegram_sendDocument("test_telegram",variables,valores);
  72. if(!telegram_is_error()) {
  73. printf("OK %s\n",message->text);
  74. telegram_free_message(message);
  75. }
  76. else {
  77. printf("%s\n",telegram_get_error());
  78. }
  79. return 0;
  80. }
  81.  
  82.  


Para trabajar con este ejemplo tenemos que te generar un token de autorización para nuestro bot y editar la linea de codigo:

Código
  1. telegram_init("123456789:zwxecrvtbynuyvbnmutyguhjdkeosdgjhfdouhn");

en este ejemplo procesamos las peticiciones:

getMe
getUpdates
sendDocument

Tambien que tenemos que sustituir el chat_id por el nuestro
El codigo depende de que tengamos instalado libcurl

Codigo en gihub

https://github.com/albertobsd/libtelegrambot

Saludos!
137  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
138  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.
139  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!
140  Informática / Hardware / Copiar MBR a un dispositivo de Menor Capacidad en: 18 Febrero 2016, 17:15 pm
Muy buen dia.

Tengo entre manos a un problema que pense que solucionaria de una forma facil y "elegante", pero no a sido asi.

Tengo una USB Bootable y la quiero clonar, esta USB se puede decir que es "Propietaria" y no me dan otra de forma facil.

Tengo la imagen de dicha USB volcada en el disco diractamente con el comando dd

Código:
dd if=/dev/sda of=./USB.img bs=1M

El USB es de 8 GB y muestra que tiene realmente sobre 7488 MB quise volcar el archivo USB.img sobre una USB ligeramente mas pequeña exactamente 7450 MB. Pero no me deja hacerlo.

Reeformate la USB pequeña le pase los archivos manualmente. quise pasar los 446 Bytes del area de Bootstrap Code del MBR a la Memoria y al tratar de bootear desde ella marca particion invalida.

Puedo claramente comprar una USB mas grande y pasar la imagen sin que me marque problemas. Aun asi me agradaria encontrar una solucion "elegante" usando solo las herramientas del sistema.

Saludos!

Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines