Título: Remote Shell (Masm32) Publicado por: Vaagish en 14 Mayo 2014, 21:37 pm Hola.. aporto con un codigo en masm.. no hay mucho que aclarar..
Código
Suerte!! Saludos! Título: Re: Remote Shell (Masm32) Publicado por: xv0 en 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
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
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. Título: Re: Remote Shell (Masm32) Publicado por: Vaagish en 15 Mayo 2014, 00:34 am Citar Doy por sentado de que no es una shellcode, ya que estas usando la sección .data. Verdad.. quería un código ejecutable, igual pasarlo a shellcode no es complicado.. ;)Citar 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? No había logrado hacer eso.. pero luego de tu sugerencia conseguí hacer así:Código
Código
Pero tengo problemas con Startupinfo.. porque seria algo asi: Código
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 Citar push offset _Comandline Ha si, si.. totalmente.. eso quedo mal de una funcion que habia probado.. corregido seria:pop eax Por que haces eso? No es mejor cargar directamente el offset a eax, que subirlo al stack y luego bajarlo? Código
Citar 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. Not te entendi jaja el loop para conectar? o el del xor?Título: Re: Remote Shell (Masm32) Publicado por: xv0 en 15 Mayo 2014, 00:54 am Pero tengo problemas con Startupinfo.. porque seria algo asi: Código
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. Not 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. Título: Re: Remote Shell (Masm32) Publicado por: Vaagish en 15 Mayo 2014, 01:55 am Ya viniste a complicarme la vida.. jajaja Na.. genial! Pero ahora que tiraste la piedra me das una mano.. jeje
Citar "cmd.exe0" = 636D642E65786500 Hex Ok.. hasta ahí todo bien.. entiendo el not, pero no puedo aplicárselo a un tipo tan largo me dice.. ¬¬ Y con lo de la estructura no caigo: Código
EDIT: Código
Ahi esta "noteada" la cadena, le aplico el not para convertirla a "cmd.exe".. pero como la guardo/uso devuelta?? EDIT2: Código
Bueno!!! Asi funciona.. pero.. es lo mas adecuado/Optimo? Gracias man!! Me pusiste a pensar! Saludos! Título: Re: Remote Shell (Masm32) Publicado por: xv0 en 15 Mayo 2014, 02:31 am Código
Sobre la estructura, tienes que hacer lo mismo que sockaddr_in. Código: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686331%28v=vs.85%29.aspx Código
Con dwFlag y wShowWindows lo mismo, solo que carga con ceros todo lo que no uses, por cierto te vuelvo a repetir, que no se si podras hacerlo con esta estructura, ya que veo cosas raras como eso de LPTSTR supongo que sera un puntero, pero no se si Windows rellena esa estructura automaticamente, no se si me explico, tu prueba y ya esta, en cosas como esta no puedo decirte mas, sockaddr_in es como en Unix. Un saludo. Título: Re: Remote Shell (Masm32) Publicado por: Vaagish en 15 Mayo 2014, 22:41 pm Citar notl _cmd notl _cmd+4 leal _cmd, %eax Puede que sea por mi ignorancia.. pero no se puede hacer eso en masm por eso moví el dword a eax y le aplique el not, luego el segundo dword. Con respecto a las estructuras, bueno.. la primera la conseguí, pero para ser sincero solo por probar (puede que en otra situación tenga que hacerlo así, si o si) pero convengamos que el código queda mas limpio usando las estructuras declaradas por el SO, y no se ahorra mucho en tamaño ni en instrucciones.. Igual esta bueno saber manejar estructuras con etiquetas.. para lo que yo pretendo hacer (cuando tenga mas claras las cosas) me va a venir impecable saber eso Gracias!! Saludos! CORRECION: Pero si se puede hacer esto: Código
Título: Re: Remote Shell (Masm32) Publicado por: xv0 en 15 Mayo 2014, 22:55 pm Ya veo que lo corregiste, claro que puedes hacerlo, en GAS o Masm, la instruccion soporta los registros y memorias.
Y bueno sobre las estructuras cuando quieras. Un saludo. |