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


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [68] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 235
671  Programación / Programación C/C++ / Re: Ayuda Con c++ en: 9 Septiembre 2017, 03:17 am
No se te entiende pero por lo visto quieres programar alguna especie de bot que controlo el mouse o interactue con otra aplicación?.

Que aplicación, Que sistema? Si es una pagina WEB, estas buscando el lenguaje equivocado.

Saludos!

672  Sistemas Operativos / Unix/Unix-Like / Recomendacion para Disco Duro Cifrado en FreeBSD en: 9 Septiembre 2017, 00:44 am
Si estamos usando FreeBSD y queremos cifrar todo nuestro disco duro no duden en preguntar sus dudas.

El comando geli para inicializar la criptografia en nuestro disco duro es el siguiente:

Código:
geli init -a hmac/sha256 -b -e AES-XTS -l 256 -s 4096 -i 524288 -B /tmp/USBTEMP/backup_metadata.eli -K /tmp/USBTEMP/da1p1.key da1p1

Obviamente hablamos de una instalacion nueva. No se puede en una instalacion preexistente, a no ser que vallamos a mover toda nuestra informaacion  de un disco duro sin cifrar a algun disco duro cifrado.

Previamente necesitamos crear un archivo "llave" de manera aleatoria con DD

Código:
dd if=/dev/random of=/tmp/USBTEMP/da1p1.key bs=4096 iseek=128 count=32

Esto nos genera un archivo de 128 Kilobytes (bs=4096 * count=32) de informacion aleatoria, pasandole este archivo a geli, necesitaremos este archivo cada vez que iniciemos nuestro ordenador, y mas nos vale tener al menos otras 3 copias de seguridad de dicho archivo.

Sumado al archivo en la memoria USB para poder cargar nuestro sistema tendremos:

  • Disco Duro cirado con  AES-XTS y una clave de 256 bits
  • Autenticacion de sectores del disco usando hmac/sha256
  • La Autenticacion con hmac/sha256 Envita que nos ataquen usando Replay
  • Peticion de passphrase Antes de montar el Disco Duro principal
  • El passphare es juntado con el salt y nuestro archivo de 128 Kilobytes y derivado 524288 veces para poder descifrar la clave maestra previamente cifrada y guardada en la metadata

La unica desventaja que le veo a esta implementacion es:

  • Disminucion del Performance al momento de Leer/Escribir informacion en el disco ya que todo es cifrado.
  • Lo anterior pordria ser mitigado Teniendo algun Hardware acelarador para operaciones criptograficas y un Disco Duro de Estado solido.
  • Disminucion de Capacidad de almacenamiento, Dado que estamos usando un sistema de Autenticacion, este necesita guardar los checksum de cada sector de disco para determinar que no han sido modificados por terceros
  • Ejemplo de lo Anterior un Disco Duro de 22 Gigabytes termina con capacidad de 19 GB. Pierde al rededor de 14% de Almacenamiento dedicado para la Autenticacion de la información

Saludos!


Source: https://albertobsd.blogspot.mx/2017/09/recomendacion-para-disco-duro-cifrado.html
673  Seguridad Informática / Criptografía / Re: Algoritmo de hash más seguro para guardar passwords en la DB en: 9 Septiembre 2017, 00:19 am
Como debería ser ese salt? de que longitud, de que características? Gracias desde ya por la ayuda!

El salt debe de ser un arreglo de bytes con valores de 0 a 255 puede ser de longitud fijas, el detalle es que el hash debe de ser almacenado.
674  Seguridad Informática / Bugs y Exploits / Re: Infectar usuarios de una red router tp-link en: 8 Septiembre 2017, 16:36 pm
Pues teniendo acceso al router como admin se pueden hacer varias cosas.

La forma mas facil para redirigir a los usuarios seria Establecer un DNS propio donde redirijas a a los navegadores mediante DNS modificados a las paginas que quieres, una vez ahi podrías infectarlos.

Saludos!
675  Seguridad Informática / Criptografía / Extraer informacion de Cifrado en DiscoDuro de FreeBSD en: 8 Septiembre 2017, 06:45 am
Extraer informacion de Cifrado en DiscoDuro de FreeBSD

FreeBSD ofrece la opcion de cifrar completamente el disco duro. La principal herramienta es Geli[2].

Para ver la información sobre el cifrado del disco, OJO no la información cifrada, sino la información relacionada con el tipo y modo de cifrado usado para el disco duro en cuestion, es necesario primero obtener acceso fisco al disco, una en otra instalación con FreeBSD podemos extraer el sector que tiene la meta-data a analizar, este sector del disco duro (512 Bytes) se encuentra en el ultimo sector de la particion cifrada.

Si no sabemos cual particion es la particion cifrada podemos extraer el ultimo sector de todas la particiones de el disco duro.

Ejemplo:

Discoduro a analizar /dev/da1

Si listamos /dev/da1* podremos ver que tiene 2 particiones para este caso en particular

Código:
# ls /dev/da1*
/dev/da1p1
/dev/da1p2
Para extraer la informacion tenemos que usar el comando dd.

Tambien necesitamos saber cuanto espacio tiene el disco duro

# geom disk list
o
# gpart list

Ejemplo de salida:

Código:
Providers:
1. Name: da1p1
   Mediasize: 20401094656 (19G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 32768
   Mode: r1w1e1
   rawtype: 7
   length: 20401094656
   offset: 0
   type: freebsd-ufs
   index: 1
   end: 39845887
   start: 0
2. Name: da1p2
   Mediasize: 1073708032 (1.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 3221258240
   Mode: r1w1e0
   rawtype: 1
   length: 1073708032
   offset: 20401094656
   type: freebsd-swap
   index: 2
   end: 41942973
   start: 39845888

Para este ejemplo la particion tiene 20401094656 con lo cual si dividimos entre 512 nos da un total 39845888 Sectores con lo cual el ultimo sector valido es 39845887 que el que tenemos que leer, entonces el comando para extraer dicho sector es:

# dd if=/dev/da1p1 of=./sector.backup bs=512 iseek=39845887 count=1

Si nuestros calculos fueron acertados tendremos un archivo llamado sector.backup de 512 bytes.

El contenido de ese archivo puede variar mucho dependiendo del estado previo del disco duro.

Si el disco duro esta cifrado con mediante geli el archivo empezara con la siguiente leyenda:

GEOM::ELI, lo restante es informacion en binario con el siguiente orden

Código:
struct g_eli_metadata {
 char  md_magic[16]; /* Magic value. */
 uint32_t md_version;  /* Version number. */
 uint32_t md_flags;  /* Additional flags. */
 uint16_t md_ealgo;  /* Encryption algorithm. */
 uint16_t md_keylen;  /* Key length. */
 uint16_t md_aalgo;  /* Authentication algorithm. */
 uint64_t md_provsize; /* Provider's size. */
 uint32_t md_sectorsize; /* Sector size. */
 uint8_t  md_keys; /* Available keys. */
 int32_t  md_iterations; /* Number of iterations for PKCS#5v2. */
 uint8_t  md_salt[G_ELI_SALTLEN]; /* Salt. */
   /* Encrypted master key (IV-key, Data-key, HMAC). */
 uint8_t  md_mkeys[G_ELI_MAXMKEYS * G_ELI_MKEYLEN];
 u_char  md_hash[16]; /* MD5 hash. */

} __packed;
Me tome la molestia de Generar una herramienta en C que lee la informacion y le pasa las funciones existentes en el codigo fuente de geli para organizar el buffer acorde al formato de la estructura.

El programa puede ser visto en mi cuenta de github[3] si lo compilamos y ejecutamos pasandole como parametro el archivo de 512 bytes tendremos una salida similar a la siguiente [Algunos datos fuero cambiados]:

Código:
albertobsd@XHGC-VMBox:~ % ./eli_metadata sector.backup
Magic: GEOM::ELI
Version: 7
Flags: 2
E ALGO: 22
Key Length: 128
A Algo: 0
P Size: 23622320128
Sector Size: 4096
Avaible Keys: 1
Iterations: 218830
Salt: E8CF4BB53DA62DC60B8CAD36119D62B806D95524828286533728C4045E319DBBA1486522EA0454887E1094AD3FAFA0295E9350F1259AAC4B791D42A02F3A6BF2
Master Key: 3F4E170DAFF6539E9301EEF2840ED233BA3B84D02EB96
3AEBB0CA1EED891034A85A3BB325F7B09398706944DFE84CE4748D2C4F0E1FEA4FD601CC18A922ADE51C9D7DC740292A979153B744FC49F47956E24E23D64BFF854F04E3AD41C39215D834DF5E317FF9C1661D9B3300E40D85CE4C270BF57DD1AA82489A97F6741A119AF25D1987ED584E1585FD7ADAE7406D9119AC7AEE654DA2B9C28D2D39599593E1B751BAE614C921E814660E240D18B7650477E935941299F7D34C91350BD289902B7F7DF23D7523C1B6FC0AB33CAB3AF07E5EA0E97835EF13F31B1F56004A552F074951D8B490FEA605D449E2AEA774574BDFEE9153392E4084DF934FCA40638B676A868E3BAB8CA0E0A1912B348C645F74BCA3AB7D697053DD25107981086284F687D1D5EF1DA16280EE7CD0920A92CDAFAF7970D084C4C344FAB3117D0993A591AA43B1D09BE6D5AFB12C82C375BD980AC60F7E0A65C146F8E54E1D84FA0D73933EC26341E5B1D11BA14AF8FA3990F834C4FA39BEF17EECCE206670E5E854B

MD5: BD5DA8BAE0C0C6AAC7503769A3CE9110

Datos interesantes de la salida:

E ALGO: 22

Podemos ver en
/usr/src/sys/opencrypto/cryptodev.h

#define CRYPTO_AES_XTS  22

Que esta cifrado usando AES_XTS que segun [4] es el estandar recomenado para el cifrado de disco.


Key Length: 128

El cifrado usa una Llave de 128 bits, se podria configurar a 256 para un mejor cifrado.

A Algo: 0

El sistema no tiene Autenticacion, esto quiere decir que no se tiene forma de saber si la informacion que leemos del disco a sido modificada o sobreescirta por terceros, esto tambien da lugar a un ataque tipo replay para poder calcular la clave maestra

Avaible Keys: 1

El sistema solo tiene una llave maestra lo cual si se nos olvida nuestra "passphrase" o se nos pierden nuestras llaves tendremos muy pocas (NULAS) posibilidades de recuperar nuestra informacion

Iterations: 218830

Nuestra "passphrase" junto con el Salt y nuestros Keyfiles si existen es derivada 218830 veces mediante pkcs5v2_genkey en g_eli.c y el resultado de esta operacion se usa para descifrar la llave encripada en.

Master Key: 3F4E170DAFF6539E9301EEF2840ED233BA3B84D02EB96
3AEBB0CA1EED891034A85A3BB325F7B09398706944DFE84CE4748D2C4F0E1FEA4FD601CC18A922ADE51C9D7DC740292A979153B744FC49F47956E24E23D64BFF854F04E3AD41C39215D834DF5E317FF9C1661D9B3300E40D85CE4C270BF57DD1AA82489A97F6741A119AF25D1987ED584E1585FD7ADAE7406D9119AC7AEE654DA2B9C28D2D39599593E1B751BAE614C921E814660E240D18B7650477E935941299F7D34C91350BD289902B7F7DF23D7523C1B6FC0AB33CAB3AF07E5EA0E97835EF13F31B1F56004A552F074951D8B490FEA605D449E2AEA774574BDFEE9153392E4084DF934FCA40638B676A868E3BAB8CA0E0A1912B348C645F74BCA3AB7D697053DD25107981086284F687D1D5EF1DA16280EE7CD0920A92CDAFAF7970D084C4C344FAB3117D0993A591AA43B1D09BE6D5AFB12C82C375BD980AC60F7E0A65C146F8E54E1D84FA0D73933EC26341E5B1D11BA14AF8FA3990F834C4FA39BEF17EECCE206670E5E854B

El archivo termina con un MD5 Checksum de los valores en binario previamente mostrados, solo para validar que la información sea correcta.

Si es posible usar la información contenida en el archivo para Atacar por fuerza bruta y obtener la Clave Maestra decifrada pero en computacionalmente casi imposible de realizar.

[1] Original Post: https://albertobsd.blogspot.mx/2017/09/extraer-informacion-de-cifrado-en.html
[2] Man page of Eli: https://www.freebsd.org/cgi/man.cgi?query=geli&apropos=0&sektion=8&manpath=FreeBSD+11.1-RELEASE&arch=default&format=html
[3] Herramienta Utilizada: https://github.com/albertobsd/geli_metadata
[4] https://en.wikipedia.org/wiki/Disk_encryption_theory
676  Programación / Programación C/C++ / Re: Problema en C puntero a punteros. en: 8 Septiembre 2017, 03:57 am
Tienes que definir como vas a trabajar. un Puntero de punteros tiene que tener una doble inicializacion, primero para definir cuantos apuntadores vas a tener y posteriormente Cada uno de esos apuntadores recien.

Puedes trabajar con un solo apuntador para toda la matriz

Código
  1. int *matriz;
  2.  
  3. matriz = calloc(filas*columnas,sizeof(int));
  4.  




Ejemplo completo con matriz de punteros y cada puntero a un arreglo de enteros.

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. #define MAGIC 354093428
  6.  
  7. typedef struct {
  8. short filas,col;
  9. int **matriz;
  10. }Matriz;
  11.  
  12. int main() {
  13. short filas = 10; // Aqui puedes capturar filas
  14. short col = 5; // Aqui puedes capturar filas
  15. srand(time(NULL)+ MAGIC);
  16. Matriz m;
  17. m.filas = filas;
  18. m.col = col;
  19. m.matriz =  calloc(m.filas,sizeof(int*));
  20. int i = 0,j;
  21. while(i < m.filas) {
  22. m.matriz[i] = calloc(m.col,sizeof(int));
  23. printf("File %2i:\t",i+1);
  24. j =0;
  25.  
  26. while(j < m.col) {
  27. m.matriz[i][j] = rand() % 1000;
  28. printf("[%3i]",m.matriz[i][j]);
  29. j++;
  30. }
  31. printf("\n");
  32. i++;
  33. }
  34. }
677  Seguridad Informática / Hacking Wireless / Re: Que tan anónimos navegamos? en: 7 Septiembre 2017, 16:42 pm
Obviamente no se puede omitir la Pila de protocolos TCP/IP A cualquier pagina que te conectes existirá una dirección IP de origen, ya sea la de un proxy de la red de TOR o alguna otro tipo de proxy.

Si se puede configurar algún router para que trate usar distintas alternativas de conexión, sin embargo podrían estar muy limitadas a algunos cuantos proxies o modelos de red como lo mencionas la red de TOR etc.

Yo personalmente he configurado  algunos routers de  mis amigos con Linux y he agregado la opcion de SSH Port forwarding para poder usar su conexion para saltar algunos firewalls entre otras cosas.

Se podría programar un "router" o cualquier servidor para que reciba conexiones entrantes y de forma transparente las redireccione a través de alguna red como la de TOR, que es exactamente lo que hace el programa que mencionas.

Ahora que un router cambie su IP y te deje navegar así como asi, esta limitado a la red de tu ISP, posiblemente el paquete si llegue a su destino, pero al momento de buscar la ruta a la ip de "Origen" nunca recibirás la respuesta.

Saludos!
678  Foros Generales / Noticias / Re: Sigue en prisión el hombre que se niega a descifrar sus discos duros en: 6 Septiembre 2017, 21:36 pm
Algún día eso si, alguien me explicará esa soberana gilipollez de no poder entrar un cortauñas, y que en la comida te den un cuchillo metálico

Genius!!!!  ;-) ;-) ;-)

Por cierto que me parece injusto, independientemente de lo que tenga el disco o no, el hecho es de que hay veces que se te olvida la contraseña y recurres a los formularios de cambiar la contraseña, pero que pasa cuando se te olvida de "VERDAD" la constraseña y no hay manera de volverla a definir, a mi me a pasado y es bastante molesto perder acceso a archivos que en algun momento cifraste y no tienes forma de acceder a ellos.

Precisamente hoy acabao de instalar FreeBSD en un DiscoDuro Totalmente Cifrado, y espero no perder mi contraseña un dia.

Saludos!
679  Programación / Java / Re: Ayuda en java en: 5 Septiembre 2017, 20:55 pm
Que codigo tienes?

Saludos!
680  Programación / Programación C/C++ / Re: Definición de stdin en C en: 5 Septiembre 2017, 16:44 pm
De poderse de puede hacer pero como te comentan es mejor usar las definiciones que ya tienen las librerias.

La clausula define es solo para el compilador y sustituye cada occurencia del primer parametro por el segundo en el codigo fuente antes de compilarlo ejemplo:

Código
  1. #include<stdio.h>
  2.  
  3. #define _ printf
  4.  
  5. int main() {
  6. _("Hello World\n");
  7. return 0;
  8. }

Sustituye en el codigo cada _ por printf

En tu caso sustituiria cada stdin por la definicion que muestras.

Saludos!
Páginas: 1 ... 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [68] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines