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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: [1]
1  Seguridad Informática / Análisis y Diseño de Malware / Re: [C++] Inyección de código en memoria- Aplicación crashea en: 8 Abril 2016, 19:53 pm
Pues yo insisto en que el problema son las verificaciones run-time que agrega VS a las funciones.

Quité Run-Time Error Checking en las opciones del proyecto, compilé el programa (con VS2015), y no hubieron más crashes.

Función inyectada con RTC activado:

Código
  1. 023C0000   55               PUSH EBP
  2. 023C0001   8BEC             MOV EBP,ESP
  3. 023C0003   81EC DC000000    SUB ESP,0DC
  4. 023C0009   53               PUSH EBX
  5. 023C000A   56               PUSH ESI
  6. 023C000B   57               PUSH EDI
  7. 023C000C   8DBD 24FFFFFF    LEA EDI,DWORD PTR SS:[EBP-DC]
  8. 023C0012   B9 37000000      MOV ECX,37
  9. 023C0017   B8 CCCCCCCC      MOV EAX,CCCCCCCC
  10. 023C001C   F3:AB            REP STOS DWORD PTR ES:[EDI]
  11. 023C001E   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  12. 023C0021   8B08             MOV ECX,DWORD PTR DS:[EAX]
  13. 023C0023   894D F8          MOV DWORD PTR SS:[EBP-8],ECX
  14. 023C0026   8BF4             MOV ESI,ESP
  15. 023C0028   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  16. 023C002B   8B48 50          MOV ECX,DWORD PTR DS:[EAX+50]
  17. 023C002E   51               PUSH ECX
  18. 023C002F   8B55 08          MOV EDX,DWORD PTR SS:[EBP+8]
  19. 023C0032   83C2 36          ADD EDX,36
  20. 023C0035   52               PUSH EDX
  21. 023C0036   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  22. 023C0039   83C0 04          ADD EAX,4
  23. 023C003C   50               PUSH EAX
  24. 023C003D   6A 00            PUSH 0
  25. 023C003F   FF55 F8          CALL DWORD PTR SS:[EBP-8]
  26. 023C0042   3BF4             CMP ESI,ESP
  27. 023C0044   E8 09E6FFFF      CALL 023BE652                            ; _RTC_CheckEsp
  28. 023C0049   8945 EC          MOV DWORD PTR SS:[EBP-14],EAX
  29. 023C004C   8B45 EC          MOV EAX,DWORD PTR SS:[EBP-14]
  30. 023C004F   8985 24FFFFFF    MOV DWORD PTR SS:[EBP-DC],EAX
  31. 023C0055   33C0             XOR EAX,EAX
  32. 023C0057   5F               POP EDI
  33. 023C0058   5E               POP ESI
  34. 023C0059   5B               POP EBX
  35. 023C005A   81C4 DC000000    ADD ESP,0DC
  36. 023C0060   3BEC             CMP EBP,ESP
  37. 023C0062   E8 EBE5FFFF      CALL 023BE652                            ; _RTC_CheckEsp
  38. 023C0067   8BE5             MOV ESP,EBP
  39. 023C0069   5D               POP EBP
  40. 023C006A   C3               RETN
  41.  

Función inyectada sin RTC:

Código
  1. 023A0000   55               PUSH EBP
  2. 023A0001   8BEC             MOV EBP,ESP
  3. 023A0003   83EC 4C          SUB ESP,4C
  4. 023A0006   53               PUSH EBX
  5. 023A0007   56               PUSH ESI
  6. 023A0008   57               PUSH EDI
  7. 023A0009   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  8. 023A000C   8B08             MOV ECX,DWORD PTR DS:[EAX]
  9. 023A000E   894D FC          MOV DWORD PTR SS:[EBP-4],ECX
  10. 023A0011   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  11. 023A0014   8B48 50          MOV ECX,DWORD PTR DS:[EAX+50]
  12. 023A0017   51               PUSH ECX
  13. 023A0018   8B55 08          MOV EDX,DWORD PTR SS:[EBP+8]
  14. 023A001B   83C2 36          ADD EDX,36
  15. 023A001E   52               PUSH EDX
  16. 023A001F   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  17. 023A0022   83C0 04          ADD EAX,4
  18. 023A0025   50               PUSH EAX
  19. 023A0026   6A 00            PUSH 0
  20. 023A0028   FF55 FC          CALL DWORD PTR SS:[EBP-4]
  21. 023A002B   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
  22. 023A002E   8B45 F8          MOV EAX,DWORD PTR SS:[EBP-8]
  23. 023A0031   8945 B4          MOV DWORD PTR SS:[EBP-4C],EAX
  24. 023A0034   33C0             XOR EAX,EAX
  25. 023A0036   5F               POP EDI
  26. 023A0037   5E               POP ESI
  27. 023A0038   5B               POP EBX
  28. 023A0039   8BE5             MOV ESP,EBP
  29. 023A003B   5D               POP EBP
  30. 023A003C   C3               RETN
  31.  
2  Seguridad Informática / Análisis y Diseño de Malware / Re: [C++] Inyección de código en memoria- Aplicación crashea en: 8 Abril 2016, 00:38 am
No se trata del compilador exactamente, sino de características del código compilado (el compilador añade cosas caprichosamente que se pueden desactivar/remover [?]).

Deberías revisar las instrucciones de la función a inyectar mediante IDA o algún debugger. Lo más probable es que encuentres al menos un CALL a una dirección de memoria, situado posteriormente al MessageBoxA, "perteneciente" al 'inyector' y no a chrome.exe.

La función a la que intenta llamar el thread corresponde a _RTC_CheckEsp (al menos en VS2015). Pertenece a un conjunto de funciones que agrega el compilador para reportar errores en run-time, y se encuentra dentro del mismo ejecutable compilado.

Te recomiendo visitar este enlace para que conozcas con más detalle sobre lo que es RTC (Run-Time Error Checking) y cómo desactivarlo: https://msdn.microsoft.com/en-us/library/8wtf2dfz.aspx
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines