Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cpu2

#371
ASM / Re: Remote Shell (Masm32)
15 Mayo 2014, 00:54 AM
Cita de: Vaagish en 15 Mayo 2014, 00:34 AMPero tengo problemas con Startupinfo.. porque seria algo asi:

Código (asm) [Seleccionar]
_StartupinfoA:
hStdInput:
dword eax
hStdOutput:
dword eax
hStdError:
dword eax


Donde eax contiene el handle que lo recibe de WSASocket (como bien decías en el comentario..) El asunto esta clarisimo, no se puede hacer eso de esa manera.. :S

Dios, claro que no puedes hacer eso. Si miras la estructura en la msdn te quedara todo mas claro, doy por sentado de que las secciones de esa estructura estan todas en 0, ya que no conozco como funciona esas estrucutra, lo que tienes que hacer es cargar el tamaño y el valor de SW_HIDE y el de STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES, los handles no puedes cargarlos directamente en la data ya que antes tienes que crearlos, eso es lo que tienes que mover a la estructura en la sección code.

Cita de: Vaagish en 15 Mayo 2014, 00:34 AMNot te entendi jaja el loop para conectar? o el del xor?

Me refiero al xor, lo que te intento decir es que, la cadena cmd.exe si le sumas el 0 que es necesario, suman 8 bytes esos son 2 dword, lo que te estoy diciendo es que cargues la cadena "cmd.exe",0 "noteada" mirate la cadena en hexadecimal, lo unico que hace not es invertir los bits, es simplemente para maquillar la cadena sin hacer lo que tu haces.

Un saludo.
#372
ASM / Re: Remote Shell (Masm32)
14 Mayo 2014, 23:20 PM
Doy por sentado de que no es una shellcode, ya que estas usando la sección .data.

Veo algunas cosas que se pueden mejorar, por ejemplo la estructura sockaddr_in, ya que estas usando .data por que no cargas directamente la estructura en ella?

Código (asm) [Seleccionar]
section .data

_sockaddr_in:

sin_family: .word 0x0002
sin_port:   .word 0xb822
sin_addr:   .long 0x0100007f
sin_zero:   .quad 0x0000000000000000


Solamente tendrias que copiar la direccion de _sockaddri_in, y no cargarla en el code. Pasa esas declaraciones a intel syntax.

Con la estructura STARTUPINFOA mas de lo mismo, solamente tendrias que cargar en la section code los descriptores "handles" xD, si ya sabes el tamaño de la estructura, el valor de SW_HIDE y el de STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES para que los cargas en el code?

Código (asm) [Seleccionar]
push offset _Comandline
pop eax


Por que haces eso? No es mejor cargar directamente el offset a eax, que subirlo al stack y luego bajarlo?

Y el loop para cmd.exe, lo encuentro una tonteria con todo mi respeto, si es una cosa simple como esa, cargala con not y luego en el code con 2 ya la tienes lista.

Un saludo.
#373
El registro r10 seria el puntero a los datos a cifrar, r11 seria el puntero con el key.

Haria falta otro registro o puntero para determinar la longitud de r10, pero eso es muy simple de hacer.

Un saludo.
#374
Hola

Bueno al principio no tenia ganas de compartir el code, ya que es para un proyecto personal, pero como algunos usuarios querian verlo, y este sub-foro esta casi muerto aqui les traigo esta implmentacion, a ver si alguien la sabe apreciar.

El code esta copiado directamente de mi editor, funciona bien, pero no es ensamblar y funcionar tienes que modificar algunas cosas.

Seria una ronda de cifrado, si quieres las 8 serian hacer loops, y las 2 ultimas que son con SubBytes, Shifrows y AddRounkey pues modificar algo.

Tambien algunas funciones como AddRounkey y SubBytes no son bit slice, creo que asi ya estaban bien.

Bueno si alguien lo copia espero que se respete el primer autor, yo.

Código (asm) [Seleccionar]
[code=asm].section .data

sbx_: .quad 0xc56f6bf27b777c63,0x76abd7fe2b670130
     .quad 0xf04759fa7dc982ca,0xc072a49cafa2d4ad
     .quad 0xccf73f362693fdb7,0x1531d871f1e5a534
     .quad 0x9a059618c323c704,0x75b227ebe2801207
     .quad 0xa05a6e1b1a2c8309,0x842fe329b3d63b52
     .quad 0x5bb1fc20ed00d153,0xcf584c4a39becb6a
     .quad 0x85334d43fbaaefd0,0xa89f3c507f02f945
     .quad 0xf5389d928f40a351,0xd2f3ff1021dab6bc
     .quad 0x1744975fec130ccd,0x73195d643d7ea7c4
     .quad 0x88902a22dc4f8160,0xdb0b5ede14b8ee46
     .quad 0x5c2406490a3a32e0,0x79e4959162acd3c2
     .quad 0xa94ed58d6d37c8e7,0x08ae7a65eaf4566c
     .quad 0xc6b4a61c2e2578ba,0x8a8bbd4b1f74dde8
     .quad 0x0ef6034866b53e70,0x9e1dc186b9573561
     .quad 0x948ed9691198f8e1,0xdf2855cee9871e9b
     .quad 0x6842e6bf0d89a18c,0x16bb54b00f2d9941
sq0_: .quad 0x000000ff000000ff,0x000000ff000000ff
sq1_: .quad 0x0000ff000000ff00,0x0000ff000000ff00
sq2_: .quad 0x00ff000000ff0000,0x00ff000000ff0000
sq3_: .quad 0xff000000ff000000,0xff000000ff000000
bts_: .quad 0x8080808080808080,0x8080808080808080
dlb_: .quad 0x7f7f7f7f7f7f7f7f,0x7f7f7f7f7f7f7f7f
xrb_: .quad 0x1b1b1b1b1b1b1b1b,0x1b1b1b1b1b1b1b1b
rcn_: .quad 0x0000000200000001,0x0000000800000004
     .quad 0x0000002000000010,0x0000008000000040
     .quad 0x000000360000001b

.section .text
.globl _start

_start:

pushq %r11
pushq %r12
pushq %r13
pushq %r14
pushq %r15
pushq %r8
pushq %r9
pushq %rax


###movq $key_, %r11
###movq $inp_, %r10

movq $rcn_, %r12

prefetch sbx_
prefetch sq0_

movq $-160, %r13
movdqu (%r11), %xmm0
movdqu %xmm0, -16(%rsp, %r13, 1)
movl 12(%r11), %r11d
movnti %r11d, (%rsp, %r13, 1)

_KeyExpansion:

rorl $8, (%rsp, %r13, 1)

movzx (%rsp, %r13, 1), %r14
movzx 1(%rsp, %r13, 1), %r15
movzx 2(%rsp, %r13, 1), %r8
movzx 3(%rsp, %r13, 1), %r9
movzx sbx_(, %r14, 1), %r14
movzx sbx_(, %r15, 1), %r15
movzx sbx_(, %r8, 1), %r8
movzx sbx_(, %r9, 1), %r9
movnti %r14d, (%rsp, %r13, 1)
movnti %r15d, 1(%rsp, %r13, 1)
movnti %r8d, 2(%rsp, %r13, 1)
movnti %r9d, 3(%rsp, %r13, 1)

movl (%rsp, %r13, 1), %eax
xorl (%r12), %eax
addq $4, %r12

xorl -16(%rsp, %r13, 1), %eax
movnti %eax, (%rsp, %r13, 1)
xorl -12(%rsp, %r13, 1), %eax
movnti %eax, 4(%rsp, %r13, 1)
xorl -8(%rsp, %r13, 1), %eax
movnti %eax, 8(%rsp, %r13, 1)
xorl -4(%rsp, %r13, 1), %eax
movnti %eax, 12(%rsp, %r13, 1)

movnti %eax, 16(%rsp, %r13, 1)
addq $16, %r13
jnz _KeyExpansion

_Cipher:

movdqu (%r10), %xmm0
pxor  -176(%rsp), %xmm0
movdqu %xmm0, -208(%rsp)
movq $-16, %r13

_SubBytes:

movzx -192(%rsp, %r13, 1), %r14
movzx -191(%rsp, %r13, 1), %r15
movzx -190(%rsp, %r13, 1), %r8
movzx -189(%rsp, %r13, 1), %r9
movzx sbx_(, %r14, 1), %r14
movzx sbx_(, %r15, 1), %r15
movzx sbx_(, %r8, 1), %r8
movzx sbx_(, %r9, 1), %r9
movnti %r14d, -224(%rsp, %r13, 1)
movnti %r15d, -223(%rsp, %r13, 1)
movnti %r8d, -222(%rsp, %r13, 1)
movnti %r9d, -221(%rsp, %r13, 1)
addq $4, %r13
jnz _SubBytes

_Shiftows:

movdqu -240(%rsp), %xmm0
pshufd $0x39, %xmm0, %xmm1
pshufd $0x4e, %xmm0, %xmm2
pshufd $0x93, %xmm0, %xmm3
pand sq1_, %xmm1
pand sq2_, %xmm2
pand sq3_, %xmm3
pand sq0_, %xmm0
pxor %xmm1, %xmm0
pxor %xmm2, %xmm0
pxor %xmm3, %xmm0

_Mixcolumns:

movdqa %xmm0, %xmm1
movdqa %xmm1, %xmm2
movdqa %xmm2, %xmm3
movdqa %xmm3, %xmm4

pand bts_, %xmm0
pcmpeqb bts_, %xmm0
movdqa %xmm0, %xmm5
pand %xmm0, %xmm1
pandn %xmm2, %xmm0
pand dlb_, %xmm1
pslld $1, %xmm0
pslld $1, %xmm1
pxor xrb_, %xmm1
pand %xmm5, %xmm1
pxor %xmm1, %xmm0
pxor %xmm0, %xmm2
movdqa %xmm2, %xmm6
psrld $8, %xmm2
pxor %xmm2, %xmm0
pslld $8, %xmm3
pxor %xmm3, %xmm0
pslld $8, %xmm3
pxor %xmm3, %xmm0
psrld $16, %xmm4
pxor %xmm4, %xmm0
psrld $8, %xmm4
pxor %xmm4, %xmm0
pslld $24, %xmm6
pxor %xmm6, %xmm0

_AddRoundkey:

pxor -160(%rsp), %xmm0
[/code]

Cualquier pregunta ya saben.

Un saludo.

P.D: La instruccion prefetch no se si esta bien puesta, la intencion es copiar las tablas "lookup table" en la cache L1 para asi minimizar las frecuencias, ya que SubBytes utiliza mucho las tablas.

P.D.2: Si alguien entendido en el tema lee esto, me gustaria ver su critica.

Edito:


Corregido el error de Subbytes y el de Shiftrows.
#375
Si especificas el error mucho mejor, yo el unico problema que le veo al code numero dos, es que si eax es negativo SF se pondra en 1, pero si luego se resta ebx y este es positivo la bandera SF se pondra en 0 y el jump no se ejecutara.

Asi que no tiene mucho sentido eso, no?

Un saludo.
#376
ASM / Re: PE mas PEqueños..
10 Mayo 2014, 00:13 AM
Ya veo que das el tema por resuleto, asi que no le dare mucha mas cuerda.

No entiendo eso de "no te lo permite en una sola linea", yo puedo añadir los bytes que quiera en cualquier parte de .text ".code".

Al no utilizar .data ami me bajo algo de peso, pero no mucho, igual que las estructuras tambien puedes ponerlas en ".code", normalmente todos esos datos se ponen al final del code para que estos no se ejecuten.

Tambien te recuerdo de que yo creo el binario con el formato ELF, cosa que a este le puedes modificar todo, hasta reducir el tamaño de las secciones. Pero como trata de Windows esto no viene al caso.

Un saludo.
#377
ASM / Re: PE mas PEqueños..
9 Mayo 2014, 21:59 PM
Puedes colocar la cadena "cmd.exe" incluso en .text, siempre y cuando no escribas en ella, y se ejecute, por que genera un bad opcode.

Código (asm) [Seleccionar]
.section .text
.globl _start

.cadena: db "cmd.exe", 0

_start:

// code


Asi te puedes ahorrar alguna section, eso se usa para las shellcodes.

Un saludo.
#378
Cita de: Vaagish en  8 Mayo 2014, 19:24 PM
Pff,, y yo complicándome la cabeza reinventando la rueda.. no sabia de esas configuraciones, igual creo que los routers de fibra que instala la empresa de teléfono acá, no permiten muchas configuraciones.. tendré que ver..

Claro que tiene que tener esa opcion, si no tu no podrias comunicarte bien, otra cosa es que no de opcion al usuario a configurar las tablas, cosa que segurisimo que si puedes.

Cita de: Vaagish en  8 Mayo 2014, 19:24 PMCuando pensé en la VPN, lo primero que note era el cifrado.. pero sera cuestión de hacer uno simple e implementarlo en el server.. también vi que hay un proyecto vpn de código libre, pero no se si requiere un servidor o si la conexión es directa. De ser directa, estudiar ese código es una opción..

Hombre tampoco te pases de simple, el AES con algo de estudio se entiende, pero como te dije anteriormente si estas en Windows mirate su libreria criptografica, pero si quieres hacerlo mejor siempre puede hacer el tuyo.

Cita de: Vaagish en  8 Mayo 2014, 19:24 PMLo terminaste? Como funciona? Felicidades!  ;-)

Si, solamente tengo que pulir la funcion InvMixcolumns, y ya estara todo. El funcionamiento lo hice bitsliced, tendrias que ver el codigo para saber de que va, pero de momento me lo guardo, ya que esto tambien es para una cosa que tengo pensada, lo bueno de este es que funciona en cualquier S.O., cosa que utilizando las API´s no.

Te dejo una funcion, simplemente para que veas de que va.

http://foro.elhacker.net/asm/rotar_en_registros_xmm-t396980.14.html

Puedes estudiarte el codigo de la VPN, y codigos de cifrado y asi hacerte una idea.

Un saludo.
#379
Cita de: Vaagish en  8 Mayo 2014, 07:28 AMSi estamos detrás de un router o firewall no seriamos visibles para "la victima" verdad? En el caso del firewall podemos solucionarlo abriendo los puertos correspondientes, pero no seguimos siendo inaccesibles desde fuera de la red por la naturaleza del router? Creo que se le llama "mascara de subred" (capaz que nada que ver..)

Supongo que te refieres a ti mismo, si estas detras de un router la "victima" solo puede acceder a ti a traves de la direccion WAN, pero como tu estas detras del router "direccion privada" tienes que decirle al router que las conexiones de X "victima" se traduzcan a tu "direccion privada", eso lo puedes hacer con un simple NAT.

Y sobre el firewall, como tu dijiste es establecer reglas para permitir X conexiones.

Cita de: Vaagish en  8 Mayo 2014, 07:28 AMSe me ocurre usar una VPN, o algún otro método de tunneling, pero claro.. no le vamos a pedir a "la victima" que se instale algún programa para lograr eso... como se podría solucionar dicha situación??

Las VPN tienen muchas opciones, pero la mejor es el cifrado por supuesto, implementa algun algoritmo de cifrado en tu cliente o server para que cuando envie o reciva datos estos vayan cifrados.

Yo ya tengo mi implementacion de AES en ASM SSE2. Pero siempre puedes usar API´s.

Un saludo.
#380
Hola

Yo participe en el hilo de la variable int, estoy con @EI, lo que no veo normal es que un usuario que pide ayuda sobre el funcionamiento de una variable en este caso int, y cuando se le presta la ayuda sobre ese tema, salten codigos de sumas y cosas como esa.

¿Para que demonios suben ese tipo de codigos?

Si su problema no es de sumas, o al menos el no lo dijo. Eso se le llama desviar los hilos, si quieren demostrar algo habran otro hilo, y la verdad me parece una barbaridad codigos tan extensos para hacer eso.

Un saludo.