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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 98
31  Programación / ASM / Re: Error en programa en Ensamblador en: 10 Junio 2022, 01:51 am
Hola

Depura el programa con gdb o cualquier otra herramienta, para saber donde esta la violacion de segmento. Aunque diria que en la linea 154-155.

Tendrias que hacer la comparacion antes de incrementar el puntero de %esi. Ya que me has dado a entender de que puedes ingresar los numeros no?

Por otra parte, por que no haces una funcion imprimir mensaje? y no tener tanto codigo?

Por que no tomas los numeros por argv?

Saludos.
32  Sistemas Operativos / GNU/Linux / Re: Permiso de un Grupo a una particion en: 10 Junio 2022, 01:42 am
Hola

Crea un directorio para el montaje de la particion. Con chown asigna a que grupo quieres que pertenezca ese directorio.

Da los permisos necesarios con chmod, luego monta la particion al directorio.

Si lo quieres hacer automatico, puedes editar tu fstab.

saludos.
33  Seguridad Informática / Criptografía / Re: GCM tablas M en: 7 Febrero 2022, 00:59 am
Hola, cuanto tiempo ha pasado, deje de lado el problema por otros asuntos pero ya lo tengo resuelto, y de vez en cuando leo el foro y me acorde de este problema que publique. Y no me gusta dejar las cosas colgadas.

Bien, el ultimo codigo que comparti esta mal, interprete erroneamente el algoritmo y la multiplicacion de galois de GCM.

Lo que sucede es que GCM toma los bytes en little-endian y los bits en big-endian, hay estaba el problema a parte de algunas tonterias mas.

Por ejemplo el polinomio f = 1 + α + α2 + α7 = 0x87(10000111) pero en realidad es  0xe1 (11100001) ya que como dije anteriormente los bit son representados en big-endian.

Pues podemos aplicar todo eso al algoritmo de multiplicacion, que sucede que el bit menos significativo 0 es realidad es 127, si por ejemplo 0x80, se representa como 0x01. Aqui el codigo donde se puede ver todo lo que digo:

Código
  1. .section .data
  2.  
  3. R: .quad 0xb32b6656a05b40b6,0x952b2a56a5604ac0
  4. S: .quad 0xffcaff95f830f061,0xdfa6bf4ded81db03
  5.  
  6. .section .text
  7. .globl _start
  8. .align 16
  9.  
  10. _start:
  11.  
  12. pxor %xmm0, %xmm0                        # xmm0 | Z
  13. movdqu R, %xmm1
  14. movdqu S, %xmm2
  15. movdqu %xmm1, (%rsp)                     # rsp  | Y
  16. movdqu %xmm2, -16(%rsp)                  # rsp-16  | V
  17.  
  18. _l02:
  19.  
  20. movq $15, %rax                           # byte position
  21.  
  22. _l01:
  23.  
  24. movq $7, %r8
  25.  
  26. _l0:
  27.  
  28. btq %r8, (%rsp, %rax)                 # check the bit posotion 0 - 7
  29. jnc _l1                                 # bit equal to 0,  jump to _l1
  30.  
  31. movdqu -16(%rsp), %xmm3
  32. pxor %xmm3, %xmm0                        # bit equal to 1, Z xor V
  33.  
  34. _l1:
  35.  
  36. btq $0, -16(%rsp)                        # check V[127] equal to 1 V = rightshift(V) xor R
  37. jc _l2                                   # equal to 0, V = rightshift(V)
  38.  
  39.  
  40. movq -8(%rsp), %rbx
  41. shlq $63,%rbx
  42. shrq $1, -8(%rsp)
  43. shrq $1, -16(%rsp)                       #Rightshift V in memory
  44. orq %rbx, -16(%rsp)
  45.  
  46. jmp _l3
  47.  
  48. _l2:
  49.  
  50. movq -8(%rsp), %rbx
  51. shlq $63, %rbx
  52. shrq $1, -8(%rsp)
  53. shrq $1, -16(%rsp)                       #Rightshift V in memory and xored by R
  54. orq %rbx, -16(%rsp)
  55. xorb $0xe1, -1(%rsp)
  56.  
  57. _l3:
  58.  
  59. decq %r8                                   #next bit position
  60. jns _l0                                     #r9 equal to 0, jump to next byte
  61.  
  62. decq %rax                                  #byte addition, rax equal to 0, block finished
  63. jns _l01
  64.  
  65.  
  66. //RET Z IN XMM0

R Y S son los valores a multiplicar sacados de un Test vector. Bueno lo dejo aqui. Seguramente que tenga las tablas para algun dia... voy haciendo cuando puedo.

Saludos.

P.D:Cualquier pregunta ya saben.
34  Seguridad Informática / Criptografía / Re: GCM tablas M en: 21 Julio 2021, 22:42 pm
Hola

Cuanto tiempo ha pasado ya, disculpas por abandonar el tema pero he tenido que ocuparme de otras cosas.

Aqui dejo el codigo, lo he testeado a mano siguiendo el algoritmo del PDF del NIST el 1. Testeado con 1 byte.

Se que se puede mejorar, pero no he encontrado un TEST VECTOR para este algoritmo, como los que hay en el PDF de AES al final de todo.

He pensado en contruir todo el PAPER del NIST y luego retomar esto de las las tablas, no se o ire tirando.

Código
  1. .section .text
  2. .globl _start
  3. .align 16
  4.  
  5. _start:
  6.  
  7. pxor %xmm0, %xmm0                        # xmm0 | Z
  8. movdqu %xmm1, (%rsp)                     # rsp  | x
  9. movdqu %xmm1, -16(%rsp)                  # rsp  | V
  10.  
  11. _l02:
  12.  
  13. movq $-16, %rax                           # contador byte
  14.  
  15. _l01:
  16.  
  17. xorq %r8, %r8                          # contador bit
  18. movq $-8, %r9
  19.  
  20. _l0:
  21.  
  22. btq %r8, 16(%rsp, %rax)                 # compruebo el bit  de el primer byte
  23. jnc _l1                                  # si el bit es 0,  paso a LSB
  24.  
  25. movdqu -16(%rsp), %xmm3
  26. pxor %xmm3, %xmm0                        # si el bit es 1, Z xor V, paso a LSB
  27.  
  28. _l1:
  29.  
  30. btq $63, -8(%rsp)                        # compruebo el ultimo bit 127 LSB 1 (V)
  31. jc _l2
  32.  
  33. movq -8(%rsp), %rbx
  34. shlq $63, %rbx
  35. shrq $1, -8(%rsp)
  36. shrq $1, -16(%rsp)                       # LSB(V)=0
  37. orq %rbx, -16(%rsp)
  38.  
  39. jmp _l3
  40.  
  41. _l2:
  42.  
  43. movq -8(%rsp), %rbx
  44. shlq $63, %rbx
  45. shrq $1, -8(%rsp)                        #LSB(V)=1
  46. shrq $1, -16(%rsp)
  47. orq %rbx, -16(%rsp)
  48. xorq $0x00000000000000e1, -16(%rsp)
  49.  
  50. _l3:
  51.  
  52. incq %r8
  53. incq %r9
  54. js _l0
  55.  
  56. incq %rax
  57. js _l01

El codigo en realidad no es muy bueno, comparandolo con las tablas GCM, y ni hablar del paso de parametros. Y todas las operaciones las realizo en memoria.

Me gustaria encontrar un test vector de este algoritmo, si alguien sabe algo por favor que me lo diga, o que me confirme que el codigo opera bien.

Saludos.
35  Foros Generales / Foro Libre / Re: Vuestra opinion acerca de este trabajo. en: 3 Septiembre 2020, 13:49 pm
hablas de una pequeña o una gran empresa?

yo de mi actividad laboral me he encontrado de todo ya sea en una gran empresa o pequeña!

Saludos.

Mediana-Grande empresa, es un maldito caos, llegaba a los sitios desinformado, en plan buscate la vida...

Ya no me extraña nada. Por desgracia hay de todo.

Que una empresa haya tenido un incidente de ransomware, no es nada raro, ahora mismo es lo más habitual. Es casi imposible educar a todos los usuarios para que sigan buenas prácticas de seguridad.

Otro tema son la copias de seguridad. Si sólo han perdido, de 18 al 31 de agosto, aún han tenido suerte, otras empresas han perdido meses de trabajo. Porque a veces la política de copias de seguridad deja mucho que desear.

He visto "empresas" que hacían la copia de seguridad por la noche en un ordenador que dejaban apagado, de forma que la copia de seguridad nunca se hizo xD

Y otro tema sería intentar averiguar el vector de infección, si fue navegando, por un e-mail adjunto, un archivo de word con macros, un RDP, etc Más que nada para que no les vuelva a pasar lo mismo de aquí un tiempo.

Utilizar un antivirus tampoco soluciona gran parte del problema del ransomware, no van detectar nada.

 ¿Cómo evitar o prevenir infección de cualquier Ransomware?

- Habilitar el acceso controlado a las carpetas con Windows Defender
- Herramientas específicas Anti-ransomware
- Desactivar Windows Script Host
- Desactivar macros Microsoft Office
- Evitar que los usuarios ejecuten Powershell a través de GPO

Estaria bien "educar" a los usuarios, el ejemplo del usuario @Reent esta bien.

Increible eso que dices, de las copias de seguridad con los ordenadores apagados...

A saber de donde se han infectado, tal y como estaba la cosa montada de bien, exactamente los AV no sirven practicamente para nada, en la maqueta que puse tenia el ATP, pero todo lo demas nada de nada.

Gracias a todos por los comentarios, ya veo que no ha sido una malinterpretacion mala por mi parte del trabajo y era un autentico desastre.

Saludos.
36  Foros Generales / Foro Libre / Vuestra opinion acerca de este trabajo. en: 3 Septiembre 2020, 00:40 am
Hola

He estado una temporada trabajando para una empresa que mantenia unas sedes de una aseguradora, haciendo el mantenimiento de equipos etc...

El otro dia nos enviaron a X sede para, para maquetar los PC, ya que como no era de extrañar estaban infectados por un ransomware y tenian los archivos cifrados.

El primer problema que veo, es que tenian una copia de seguridad del 18 de agosto y ellos fueron infectados a finales de agosto, eso significa que entre el 18 y el 31, han perdido todo esos datos por no tener respaldo.

Es lo que me dice la oficinista, yo en plan "que quieres que te diga", la seguridad brilla por su ausencia, almacenan los archivos en los mismos pc con los que trabajan, abren cualquier mail desde esos pc, y se extrañan de que pasen esas cosas??? Estaban navegando con el IE9 si señores con el IE9.

Aparte que las maquetas eran una *****, pero eso es otra historia.

Pero no es mejor tener un server dedicado para los mail? Hacer copias de seguridad de los archivos cada dia o hora, a un equipo externo dedicado a ello? Directamente se podrian usar Jails de FreeBSD para arreglar esos problemas, o con una politica de permisos adecuada. Por que coño no hacen eso?

Es eso normal en las empresas? Estoy flipando con todo lo que he visto, y creo que me quedo corto con todo lo que he dicho. Hoy he dejado el trabajo, estaba cansado aun que no sea el momento adecuado para esas cosas.

Si eso es una empresa seria, no se como seran las otras. Pensais que lo mismo que yo, o creeis que esta todo bien?

Saludos.

P.D: El unico sistema de seguridad, era MCafee, que se evade con unas cuantas lineas de codigo, tener solo eso no es seguridad.
37  Seguridad Informática / Criptografía / Re: GCM tablas M en: 17 Junio 2020, 21:51 pm
Hola

Agradezco el apoyo, ya tengo algo terminado, cuando tenga todo listo lo subire, yo tambien hace tiempo que no digo nada por el echo que ahora mismo estoy haciendo otra cosa, como arreglarme la moto xD, no es broma.

A el codigo que subi esta mal, en casi todo, no se que me fumaria aquel dia, ya pondre el bueno.

Saludos.
38  Programación / Programación C/C++ / Re: Duda con punteros en c++ en: 2 Junio 2020, 17:40 pm
Hola

Está bien, creo que lo has entendido mal. En los dos primeros printf muestra el valor de la variable y su dirección. En los dos segundos el primer printf muestra el valor de la variable ya que está apuntando a esta (almacena su dirección), el por qué no te muestra la dirección de la variable es por qué el mismo puntero tiene su dirección, es una dirección que almacena otra.

Saludos.
39  Seguridad Informática / Criptografía / Re: GCM tablas M en: 21 Mayo 2020, 00:45 am
Voy a dejar mis avances, creo que ya casi lo tengo, el algoritmo numero 3 el de la creacion de la tabla M0 es de la siguiente manera:

Citar
     while 1
-----------------

M[128] =  H
M[64]  =  M[128]· P
M[32]  =  M[64] · P
M[16]  =  M[32] · P
M[8]   =  M[16] · P
M[4]   =  M[8]  · P
M[2]   =  M[4]  · P
M[1]   =  M[2]  · P

     while 2 and for
-----------------

for i = 2 

M[3]   =  M[2] XOR M[1]

i = 4   

M[5]   =  M[4] XOR M[1]
M[6]   =  M[4] XOR M[2]
M[7]   =  M[4] XOR M[3]

i = 8   

M[9]   =  M[8] XOR M[1]
M[10]  =  M[8] XOR M[2]
M[11]  =  M[8] XOR M[3]
M[12]  =  M[8] XOR M[4]
M[13]  =  M[8] XOR M[5]
M[14]  =  M[8] XOR M[6]
M[15]  =  M[8] XOR M[7]

i = 16   

M[17]  =  M[16] XOR M[1]
M[18]  =  M[16] XOR M[2]


to i =  .......128

M[0]  =  0^128

end
ret M

Eso crearia la tabla M0 de 4096 bytes a partir de H, pero tengo la siguente duda, ya que me quedaria por crear la tabla de R que son 1024 bytes. Supongo que se refiere a esto:

Citar
The index 192 (decimal)has a binary decomposition of 11000000, so M0[192] = H ⊕ H · P = M0[64] ⊕ M0[128].

Otra cosa que aun no he entendido es en el algoritmo 2 a la hora de usar las tablas M0, en la directiva byte(X,i), no la he encontrado documentada en el paper, pero supongo que tomara el byte de X segun el valor de i, pero no entiendo lo siguiente, en el caso de ser el valor de X "0xff" se haria un XOR a Z con esa tabla, pero como estan las tablas enumeradas? No se si me explico.

Saludos.
40  Seguridad Informática / Criptografía / Re: GCM tablas M en: 18 Mayo 2020, 02:47 am
Hola

Parace que voy entendiendo mas el paper, voy a explicarlo:

Cuando tengo que multiplicar por la variable P no es mas que un shift a los indices (creo que eso ya me lo has explicado @kub0x). Arriba de la pag 10 tengo el ejemplo de la multiplicacion por X · P y supongo que le de abajo es para multiplicar dos elementos.

Citar
Z ← 0, V ← X
for i =0 to 127 do
if Yi =1 then
Z ← Z ⊕ V
end if
V ← V · P
end for
return Z

Practicamente es lo mismo que el algoritmo 1, que explique en mi anterior duda de la sintaxis, si no me equivoco:

Citar
Z ← 0, V ← X
 for i =0 to 127 do
if Yi =1 then Z ← Z ⊕ V
end if
if V127 =0
then V ← rightshift(V )
else
V ← rightshift(V ) ⊕ R
end if
end for return Z

Por lo que entiendo:

Citar
V ← V · P

Es igual a

if V127 =0 then
V ← rightshift(V )
else
V ← rightshift(V ) ⊕ R

Segun los ejemplos de la pag 9 en las formulas (3) (5), serian lo mismo no?

Bien ya en la pag 11 en el ejemplo de la desconposicion de X (7), xi hace referencia a 1 byte de X, pero mi duda esta en P^8i, en el primer for 8·i daria cero y al final cuando i es 15 daria 120. Esa parte no la entiendo mucho la verdad.

Creo que la respuesta esta en estos parrafos:

Citar
Note that i loops from 15 down to zero so that the rightmost byte is associated with the lowest power of P8. In order to use this method, we need an efficient way to compute X · P8 for an arbitrary element X.


The expression x · P8(i+1), for x ∈S and 0 ≤ i< 15, corresponds to a simple bit-rotation of the element x totherightbyeightbits.Thusthefirst15termsonthe right-handsideofEquation 9can be computed with only a rotation. The expression x · P128 is not so simple, but can be computed usinga table,aswedid above.

Pasando al algorimo 3 y a su explicacion arriba, vale creo que entiendo la funcion, en la explicacion cuando dice esto:

Citar
The table can be computed using Algorithm 3, which makes a single pass over the data, using only 247 field additions and eight ‘mutliply by P’ operations

Citar
while i> 0 do
M ← M[2i] · P
i ←li/2J

Partiendo de que el valor de i es 64, Ese ciclo multiplicaria por P ocho veces si no me equivoco.

Bien y en la parte de la multiplicacion por P:

Citar
M ← M[2i] · P

Es igual a

if  M[2i]127 =0 then
M ← rightshift(M[2i])
else
M ← rightshift(M[2i]) ⊕ R
end if

Y las 247 adiciones seria:

Citar
M[i + j]= M ⊕M[j]

Estoy en lo cierto?

Creo que con eso ya bastaria para crear la tabla M0, pero no entiendo lo de las elevacion a P a 8, 128 o i.

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