Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Vaagish en 24 Abril 2014, 02:35 am



Título: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 02:35 am
Hola! Estoy intentando mostrar todas las librerias que carga el ejecutable, pero no logro mostrar el nombre, muestra la direccion.. Que me esta faltando poner??

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4. assume fs: nothing
  5.  
  6. include windows.inc
  7. include masm32rt.inc
  8. includelib masm32rt.lib
  9.  
  10. ObtenerModulos PROTO
  11.  
  12. .code
  13. start:
  14.  
  15. invoke ObtenerModulos
  16. inkey "pause"
  17.  
  18. ObtenerModulos proc
  19.  
  20. push 30h
  21. pop esi
  22. lodsd fs:[esi]
  23. mov eax, [eax + 0Ch]
  24. lea eax, [eax + 0Ch]
  25. NextModule:
  26. assume eax: ptr LIST_ENTRY
  27. mov eax, [eax].Flink
  28. assume eax: nothing
  29. mov ebx, [eax + 30h]
  30.  
  31. cmp ebx, 0
  32. je Exit
  33.  
  34. push eax
  35. print str$(ebx),13,10
  36. pop eax
  37.  
  38. jmp NextModule
  39.  
  40. Exit:
  41. ret
  42.  
  43. ObtenerModulos endp
  44.  
  45. end start

Saludos!!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: cpu2 en 24 Abril 2014, 04:15 am
Bueno, vengo a ayudarte a medias, se lo que hace ese codigo, pero no conozco como funciona Windows, pero he visto papers sobre esto.

Simplemente comento porque no se ha que viene todo esto.

Código
  1. .ObtenerModulos proc
  2.  
  3. push 30h
  4. pop esi
  5. lodsd fs:[esi]
  6.  

No es mejor cargar la direccion directamente?

Código
  1. movl %fs:0x30, %eax
  2.  
  3. ; supongo que en intel sera asi
  4.  
  5. mov eax, fs:[30h]

Un saludo.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 05:09 am
Citar
Código
  1. movl %fs:0x30, %eax
  2.  
  3. ; supongo que en intel sera asi
  4.  
  5. mov eax, fs:[30h]

Efectivamente, funciona perfecto en intel..

Citar
No es mejor cargar la direccion directamente?

Y al parecer, tambien tenes razon.. La verdad es que a mi me queda mucho por aprender de ASM.. y habia entendido el codigo de la primer manera que lo vi.. ahora no entiendo porque encontre esa forma que es mas rebuscada,, supongo, quizas.. porque todos los ejemplos que vi son shellcodes y cosas por el estilo,, quizas sea una forma de "camuflar" la intencion... pero la verdad, tampoco estoy seguro...

Gracias cpu2! Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Eternal Idol en 24 Abril 2014, 05:20 am
Sera un problema con esas macros, proba con MessageBoxW.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 05:29 am
Perfect! Si no me equivoco, el puntero esta en ebx,, no? Mas precisamente en esta linea:

Código
  1. mov ebx, [eax + 30h]

Yo intente cambiar el valor por la direccion,, con "[]" que si no me equivoco es como decir "la direccion de" pero no me funciono,, se quedaba colgado  :rolleyes:

Saludos!


[Edit]

Citar
Sera un problema con esas macros, proba con MessageBoxW.

Opss.. hubo un cambiazo.. pruebo con eso a ver que panza..

Gracias! Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Eternal Idol en 24 Abril 2014, 05:40 am
Si, me equivoque como dijiste que se veia la direccion y no tengo el MASM32 instalado ahora  :silbar: Igual ya lo probe a mano, con MessageBoxW funciona, ojo que nada te asegura que sean cadenas los Buffer, por eso UNICODE_STRING tiene campos de tamaño.

Código
  1. mov eax, fs:[30h]
  2. mov eax, [eax + 0Ch]
  3. lea eax, [eax + 0Ch]
  4. mov eax, [eax]
  5. mov ebx, [eax + 30h]
  6. invoke MessageBoxW, 0, ebx, ebx, 0


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 05:42 am
Citar
Sera un problema con esas macros, proba con MessageBoxW.

Si señor.. ahi si que funciona!

Código
  1. invoke MessageBoxW, NULL, ebx, addr Titulo, MB_OK

El titulo sale mocho porque es W, pero no importa.. paso a explicar,, estoy viendo cual es, o son las librerias que inyecta el AV cuando pone un ejecutable en la SandBox,, o cuales le inyecta porque si nomas.. y ahora viendo eso justamente,, veo que me carga la libreria "RocketDock.dll", esto quiere decir que el dock hace su chanchada tambien?? Aparte hay un monton de librerias cargadas.. propio de Win7 quizas??

Saludos!

Citar
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Citar
ojo que nada te asegura que sean cadenas los Buffer, por eso UNICODE_STRING tiene campos de tamaño

Habia leido algo de eso si.. entonces puedo tener caracteres extraños sin 0 al final.. nop?


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Eternal Idol en 24 Abril 2014, 05:51 am
El titulo sale mocho porque es W, pero no importa.. paso a explicar,, estoy viendo cual es, o son las librerias que inyecta el AV cuando pone un ejecutable en la SandBox,, o cuales le inyecta porque si nomas.. y ahora viendo eso justamente,, veo que me carga la libreria "RocketDock.dll", esto quiere decir que el dock hace su chanchada tambien?? Aparte hay un monton de librerias cargadas.. propio de Win7 quizas??

¿RocketDock? No tengo eso, tal vez sea un software que instalaste:
http://www.file.net/process/rocketdock.dll.html

Fijate con el Dependency Walker cuales tenes enlazadas estaticamente en tu ejecutable y en otras DLLs que se carguen. El subsystem de Windows necesita NTDLL.dll y con alguna funcion (ejemplo MessageBoxW que carga User32.dll y esta varias mas) casi seguro cargas Kernel32.dll y esta a su vez Kernelbase.dll.

Habia leido algo de eso si.. entonces puedo tener caracteres extraños sin 0 al final.. nop?

El buffer termina en el ultimo caracter valido, despues de eso la memoria corresponde a otra cosa.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 06:23 am
Citar
¿RocketDock? No tengo eso, tal vez sea un software que instalaste:

Ha,, sii.. es un dock que tengo instalado.. pero no se que hace metiendose en otros procesos..  :¬¬

Citar
Fijate con el Dependency Walker cuales tenes enlazadas estaticamente en tu ejecutable y en otras DLLs que se carguen. El subsystem de Windows necesita NTDLL.dll y con alguna funcion (ejemplo MessageBoxW que carga User32.dll y esta varias mas) casi seguro cargas Kernel32.dll y esta a su vez Kernelbase.dll.

Es verdad,, estan esas librerias tambien que no tome en cuenta..

Gracias EI! Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: cpu2 en 24 Abril 2014, 08:24 am
Efectivamente, funciona perfecto en intel..

Y al parecer, tambien tenes razon.. La verdad es que a mi me queda mucho por aprender de ASM.. y habia entendido el codigo de la primer manera que lo vi.. ahora no entiendo porque encontre esa forma que es mas rebuscada,, supongo, quizas.. porque todos los ejemplos que vi son shellcodes y cosas por el estilo,, quizas sea una forma de "camuflar" la intencion... pero la verdad, tampoco estoy seguro...

Gracias cpu2! Saludos!

Si, eso esta mas enfocado para las shellcode´s, ya que asi se "juega" mas con otros opcodes y no salta a la vista tan rapido, de poder puedes usar hasta la FPU.

Pero simplemente comente, porque no tiene ningun sentido hacer todo lo que te indique antes, es hasta estupido, sin ofender.

Un saludo.

P.D: Segun estoy viendo, estas enserio con el malware.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 19:35 pm
Citar
Si, eso esta mas enfocado para las shellcode´s, ya que asi se "juega" mas con otros opcodes y no salta a la vista tan rapido, de poder puedes usar hasta la FPU.

Pero simplemente comente, porque no tiene ningun sentido hacer todo lo que te indique antes, es hasta estupido, sin ofender.

Un saludo.

P.D: Segun estoy viendo, estas enserio con el malware.

No hay ofensa ninguna,, tranqui.. lo que estoy intentando hacer es detectar si el programa esta en la sandbox,, y que AV lo esta analizando.. hay otras formas si, pero por ahora son solo pruebas,, y de paso practico un poco ASM  ;)

Con respecto al malware,, si, casi todo lo que hago esta orientado a eso.. aunque después no lo use para nada.. es la guerra constante que tengo con los AV jeje
Tengo la ilusion de algun dia hacer un malware que se destaque..  :-X

Saludosss!!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 24 Abril 2014, 20:09 pm
No hay ofensa ninguna,, tranqui.. lo que estoy intentando hacer es detectar si el programa esta en la sandbox,, y que AV lo esta analizando.. hay otras formas si, pero por ahora son solo pruebas,, y de paso practico un poco ASM  ;)

Con respecto al malware,, si, casi todo lo que hago esta orientado a eso.. aunque después no lo use para nada.. es la guerra constante que tengo con los AV jeje
Tengo la ilusion de algun dia hacer un malware que se destaque..  :-X

Saludosss!!
Tendras que depurar el nucleo del Antivirus que por lo general en un driver para kernel.
Los Antivirus no funcionan de igual manera como Sandboxie por ejemplo, que simplemente se puede detectar si se esta dentro de la
'sandbox'  con la detección de un posible modulo cargado. En los Antivirus que implementan una sandbox o más bien una VM el código
es emulado y si llegasen a cargan algún modulo dentro de el espacio de memoria del proceso este no seria visible en la lista ya que seria
sólo cargado en la emulación, nota la diferencia entre los modulos que se podrian cargan en la emulacion y otros posibles modulos para
otros propositos, se tendria que depurar como dije. Otros simplemente emulan el código y el entorno emulado es bien limitado y son bien
faciles de saltarse.

En Kaspersky se implementa una VM y emula el código dentro antes de ejecutarlo en el verdadero entorno, esta en klif.sys. Claro que
esta tecnologia se sus ventajas y desventajas.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 20:39 pm
Citar
En los Antivirus que implementan una sandbox o más bien una VM el código
es emulado y si llegasen a cargan algún modulo dentro de el espacio de memoria del proceso este no seria visible en la lista ya que seria
sólo cargado en la emulación

Pero que sea cargado solo en la emulación dice bastante! Dice todo lo que necesito saber para ser mas exacto,, si ese modulo esta cargado,, esta en sandbox y cierro la app.. no?
De echo, noto la carga de un modulo cuando lo emula el sandbox, tendría que estar seguro para confirmar que sea por el sandbox, no he tenido tiempo aun.. pero si llega a ser eso pongo el modulo..

Citar
Tendras que depurar el nucleo del Antivirus que por lo general en un driver para kernel.

No lo dudo.. técnicas avanzadas requieren métodos complejos  :D, tendría que aprender a usar windbg..

Citar
Otros simplemente emulan el código y el entorno emulado es bien limitado y son bien
faciles de saltarse.

De saltarse en que sentido? Creo que hay una discusión importante por ahi en el foro sobre "saltarse" el sandbox,, creo que hasta donde se puede llegar es, detectar el sandbox y cerrarse.. o hay algo que me estoy perdiendo?

Saludos!!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 24 Abril 2014, 21:00 pm
Pero que sea cargado solo en la emulación dice bastante! Dice todo lo que necesito saber para ser mas exacto,, si ese modulo esta cargado,, esta en sandbox y cierro la app.. no?
Correcto.

De saltarse en que sentido? Creo que hay una discusión importante por ahi en el foro sobre "saltarse" el sandbox,, creo que hasta donde se puede llegar es, detectar el sandbox y cerrarse.. o hay algo que me estoy perdiendo?

Saludos!!
Cuando me refiero a saltarse la emulación es evitar que se continue analizando el código en busca de malware y me refiero
a 'saltarse' porque algunos antivirus simplemente tiene un emulador de código como su super protección.
Qué discusión?


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 21:23 pm
Citar
Qué discusión?

Acá mira.. se armo un relajo bárbaro haha

Citar
http://foro.elhacker.net/buscador2-t378027.0.html;msg1807944#msg1807944

Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 24 Abril 2014, 21:45 pm
Acá mira.. se armo un relajo bárbaro haha

Saludos!

Voto por Buster_BSA el es un usuario con un gran conocimiento conocido en varios foros también.
Pero sí, es posible 'salirse' de la sandbox si se encuentra una vulnerabilidad.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 24 Abril 2014, 21:58 pm
Citar
Voto por Buster_BSA el es un usuario con un gran conocimiento conocido en varios foros también.
Pero sí, es posible 'salirse' de la sandbox si se encuentra una vulnerabilidad.

Jajaja si,, no hay un punto definitivo.. yo también creo que se podría encontrar un bug,, pero hay que romperse el c.. raneo, y encontrarlo.. uff.. se podría aprovechar muy bien..  :silbar:


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 24 Abril 2014, 23:18 pm
@Vaagish: Mira este código para detectar los sandbox maluchos que inyectan DLL: (FASM)
Código
  1. include 'win32ax.inc'
  2.  
  3. ; MACROS
  4.  
  5. macro hash name,[string]{
  6.   local ..hash, ..len, ..chr
  7.   virtual at 0
  8.      db string
  9.      ..len  = $
  10.      ..hash = 0
  11.      repeat ..len
  12.         load ..chr byte from % - 1
  13.         ..hash = ..hash + ..chr
  14.         ..hash = ..hash xor (((..chr shl 7) and $FFFFFFFF) or (..chr shr (25)))
  15.      end repeat
  16.   end virtual
  17.   name#.h = ..hash
  18. }
  19. struc dw [arr]{
  20.   common
  21.      . dw arr
  22.      .c = ($ - .) / 2
  23. }
  24.  
  25. ; GLOBAL
  26.  
  27. hash sandboxie, 'sbiedll.dll'
  28. hash avast32,   'snxhk.dll'
  29. hash avast64,   'snxhk64.dll'
  30. hash comodo32,  'guard32.dll'
  31. hash comodo64,  'guard64.dll'
  32.  
  33. ; CODE
  34.  
  35. blacklist_loaded:
  36.   call push_hashArr
  37.   hashArr dw sandboxie.h, avast32.h, avast64.h, comodo32.h, comodo64.h
  38.  
  39. push_hashArr:
  40.   push $30
  41.   pop  esi
  42.   lods dword[fs:esi]
  43.   mov  edx, [eax+$0C]
  44.   mov  edx, [edx+$1C]
  45.   xor  eax, eax
  46. nm:xor  ebx, ebx
  47.   mov  esi, dword[edx+$20]
  48.   test esi, esi
  49.   mov  edx, [edx]
  50. jz     en
  51. re:lodsw
  52.   test eax, eax
  53. jz     fn
  54.   or   eax, 0x20
  55.   add  ebx, eax
  56.   rol  eax, 7
  57.   xor  ebx, eax
  58. jmp    re
  59. fn:push hashArr.c
  60.   pop  ecx
  61.   mov  esi, [esp]
  62. nx:lodsw
  63.   cmp  eax, ebx
  64. loopne nx
  65. jecxz  nm
  66. en:mov  eax, ecx
  67.   pop  edi
  68.   ret
  69.  
  70. main:
  71.   call blacklist_loaded
  72. .end main
(POST ORIGINAL (http://hackhound.org/forums/topic/4549-getloadeddllfrompeb-fasm/?p=28691))
Un poco caótico, lo hice en el metro de camino a casa :laugh: Si necesitas algún comentario dímelo :)

@x64Core: Yo voto por mí ;D ¿No has visto los últimos enlaces del tema? El último argumento de Buster_BSA es que si existiesen vulnerabilidades de ese tipo valdrían millones; las hay. Y seguro que con suficientes contactos podrías encontrar un 0day por ahí que te permitiese elevación de privilegios local en la máquina invitado en VirtualBox y Windows XP :silbar:

@cpu2: Si lo hacía con lodsd doy por hecho que es para ahorra unos cuantos bytes...


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 25 Abril 2014, 00:02 am
Me había matado escribiendo para que se cerrara la session..  >:(

Citar
@Vaagish: Mira este código para detectar los sandbox maluchos que inyectan DLL: (FASM)

Excelente! Eso es lo que quiero implementar,, lo voy a intentar en masm, que es en el que yo aprendo,, así practico ;)

Citar
Un poco caótico, lo hice en el metro de camino a casa :laugh: Si necesitas algún comentario dímelo :)

La idea la capto, el codigo no tanto, porque hay cosas de fasm que me marean, pero lo voy a intentar, si preciso algo puntual te aviso ;)

Citar
Código
  1. hash sandboxie, 'sbiedll.dll'
  2. hash avast32,   'snxhk.dll'
  3. hash avast64,   'snxhk64.dll'
  4. hash comodo32,  'guard32.dll'
  5. hash comodo64,  'guard64.dll'

Estas lineas me van a facilitar bastante jeje, me imagino que dio trabajo pasar por todos los av para saber cuales módulos carga cada uno.. Lo flojo de este metodo es que el dia de mañana podrian cambiar los nombres de las dll's, o dejar de inyectarlas.. que de echo:

Para que cargaran esas dll's? Si el proceso ya se encuentra en un lugar controlado..



Citar
Yo voto por mí ;D ¿No has visto los últimos enlaces del tema? El último argumento de Buster_BSA es que si existiesen vulnerabilidades de ese tipo valdrían millones; las hay. Y seguro que con suficientes contactos podrías encontrar un 0day por ahí que te permitiese elevación de privilegios local en la máquina invitado en VirtualBox y Windows XP :silbar:

Si hay millones en juego, mejor hacemos un grupo de investigación??? jeje


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 25 Abril 2014, 00:16 am
Si hay millones en juego, mejor hacemos un grupo de investigación??? jeje
Realmente no valen millones :P. Buster_BSA se inventó la cifra :xD

La idea la capto, el codigo no tanto, porque hay cosas de fasm que me marean, pero lo voy a intentar, si preciso algo puntual te aviso ;)
Hay mucho macro para generar constantes en tiempo de ensamblado. Si lo ensamblas verás que no hay cadenas de texto. Se generan los hashes y luego se comparan de la lista de librerías cargadas.

Para que cargaran esas dll's? Si el proceso ya se encuentra en un lugar controlado..
Cuanto menos tiempo de kernel gaste el antivirus más fluido irá el sistema. Se intentan delegar las tareas menos cruciales a usermode por cuestiones de optimización. También un crasheo de la DLL (p.e intencionado para saltarse la protección :silbar:) estaría localizado en el proceso y no reventaría todo el motor del antivirus o el SO.

Estas lineas me van a facilitar bastante jeje, me imagino que dio trabajo pasar por todos los av para saber cuales módulos carga cada uno.. Lo flojo de este metodo es que el dia de mañana podrian cambiar los nombres de las dll's, o dejar de inyectarlas..
Si quisieses hacer una detección genérica entrarían en juego muchos otros factores. Hay diferentes técnicas para detectar entornos virtualizados sin tener que hacer blacklisting. Por ejemplo utilizar instrucciones/llamadas que sepas que no siguen la ruta habitual y hacer comparaciones de tiempo. (Artículo al respecto (http://www.cs.berkeley.edu/~cthompson/papers/virt-detect.pdf))

Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: cpu2 en 25 Abril 2014, 00:21 am
Vaya que interesante se esta poniedo todo esto, lastima que no este dentro de mi onda.

@cpu2: Si lo hacía con lodsd doy por hecho que es para ahorra unos cuantos bytes...

Si no es una shellcode lo veo una tonteria ahorrarse esos 4 bytes, ya que con mi metodo es 1 OPS y con ese son 6 OPS, es una tonteria la verdad.

Vaya macros jajaja.

Un saludo.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 25 Abril 2014, 00:25 am
Si no es una shellcode lo veo una tonteria ahorrarse esos 4 bytes, ya que con mi metodo es 1 OPS y con ese son 6 OPS, es una tonteria la verdad.
Yo es principalmente en las shellcodes cuando doy más importancia al tamaño del payload que a los ciclos... Además no debe tener bytes nulos. (Al menos con la definición estricta que yo conozco de shellcode, es decir, no posicional y null-free)


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 25 Abril 2014, 00:49 am
Citar
Hay mucho macro para generar constantes en tiempo de ensamblado. Si lo ensamblas verás que no hay cadenas de texto. Se generan los hashes y luego se comparan de la lista de librerías cargadas.

Eso no lo vi aun,, es muy buena estrategia! No he podido investigarlo bien (estoy en el trabajo, cada tanto me escapo un poco jeje)

Citar
Cuanto menos tiempo de kernel gaste el antivirus más fluido irá el sistema. Se intentan delegar las tareas menos cruciales a usermode por cuestiones de optimización. También un crasheo de la DLL (p.e intencionado para saltarse la protección :silbar:) estaría localizado en el proceso y no reventaría todo el motor del antivirus o el SO.

Claro,, tiene mucha lógica..  :rolleyes:  :P

Citar
Si quisieses hacer una detección genérica entrarían en juego muchos otros factores. Hay diferentes técnicas para detectar entornos virtualizados sin tener que hacer blacklisting. Por ejemplo utilizar instrucciones/llamadas que sepas que no siguen la ruta habitual y hacer comparaciones de tiempo. (Artículo al respecto)
+100! Descargado, guardado en lecturas urgentes jeeje

Citar
Vaya que interesante se esta poniedo todo esto, lastima que no este dentro de mi onda.

A mi en realidad lo que mas me gusta de windows es la posibilidad de hacer estas cosas..  >:D


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 25 Abril 2014, 02:41 am
Por probar,, solo por el simple echo de probar que pasaba,, le di esta instruccion al programa:

Código
  1. hLib db "snxhk.dll", 0
  2. invoke FreeLibrary, addr hLib

Y.... se cierra el sandbox  :o

O sea,, en vez de mantenerlo un tiempo ahi,, a modo de prueba,,,, ta tannnn... se cierra y se ejecuta el code normalmente!

No es que haya descubierto algo,,, en realidad no hice nada extraño,,, pero me parece sumamente raro que se cierre enseguida el sandbox,, da la impresión que no lo mantiene en análisis... Que opinan?? Que creen que este pasando?


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 25 Abril 2014, 03:55 am
@x64Core: Yo voto por mí ;D ¿No has visto los últimos enlaces del tema?
El último argumento de Buster_BSA es que si existiesen vulnerabilidades de ese tipo valdrían millones;
las hay. Y seguro que con suficientes contactos podrías encontrar un 0day por ahí que te permitiese elevación
de privilegios local en la máquina invitado en VirtualBox y Windows XP :silbar:
Karcrack, El problema principal en el tema '¿Saltarse heuristicas y sandbox modeando?' fue la confusión de terminos
Si el Antivirus esta detectando el malware por heuristica es porque esta siendo emulado, VM y lo que se debe hacer
es detectar si el código esta siendo emulado además de cualquier posible VM. Lo mismo esta sucediendo aquí por
eso estoy de acuerdo con Buster.

Y Además noté que en tu código agregas guard32.dll/guard64.dll para supuesta detección de la sandbox pero
en ambos casos este o no el programa en la sandbox siempre será cargado lo unico que se conseguirá es que el
programa no se ejecute en ningun Windows que tenga instalado el Comodo, ese no es el punto no? Diras que los
hooks de modo usuario son la sandbox porque probablemente lo leiste en algun articulo o te equivocaste de nombre
del modulo?

Por eso el uso de sandbox en los Antivirus en la mayoria de los casos es decisión del usuario ya que la sandbox
de los Antivirus sólo restringen acciones maliciosas.

Y habria que aclarar antes de entrar en confusión como sucedio en el otro tema, Vagish quiere detectar si el
programa esta siendo analizado por el Antivirus sandbox/VM.

En el caso de Avast que tiene una sandbox y se logra detectar si el programa esta dentro pero eso no quiere decir que
el malware será indetectable, la sandbox de Avast tiene otro tipo de tarea como dije por eso el problema se
resuelve mediante la detección del emulación.

Agregado:
Noten la diferencia entre los programas como Sandboxie y el Analisis de Antivirus.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 25 Abril 2014, 13:21 pm
Karcrack, El problema principal en el tema '¿Saltarse heuristicas y sandbox modeando?' fue la confusión de terminos
Si el Antivirus esta detectando el malware por heuristica es porque esta siendo emulado, VM y lo que se debe hacer
es detectar si el código esta siendo emulado además de cualquier posible VM. Lo mismo esta sucediendo aquí por
eso estoy de acuerdo con Buster.
Si el malware está siendo detectado por heurística es que PUEDE estar siendo emulado. La detección heurística estática también existe. No sé si hubo confusión con términos o no, lo que está claro es que la discusión se desvió a si era posible escapar de una VM (Yo entiendo que la sandbox o la heurística dinámica son también máquinas virtuales).

Y Además noté que en tu código agregas guard32.dll/guard64.dll para supuesta detección de la sandbox pero
en ambos casos este o no el programa en la sandbox siempre será cargado lo unico que se conseguirá es que el
programa no se ejecute en ningun Windows que tenga instalado el Comodo, ese no es el punto no? Diras que los
hooks de modo usuario son la sandbox porque probablemente lo leiste en algun articulo o te equivocaste de nombre
del modulo?
Si lees la página original donde posteé el código verás que es una mejora de otro código propuesto por un usuario. Y sí, la lista de DLLs es la del código original. Este código tan sólo detecta si alguna de esas librerías está en la lista del PEB.
La idea de la detección no es cerrarse sin más, sino hacer unhooking. En este caso Comodo y Avast lo ponen bastante fácil...

Y habria que aclarar antes de entrar en confusión como sucedio en el otro tema, Vagish quiere detectar si el
programa esta siendo analizado por el Antivirus sandbox/VM.
Yo diría que Vaagish quiere saber si una librería está cargada en el proceso...

Agregado:
Noten la diferencia entre los programas como Sandboxie y el Analisis de Antivirus.
¿Cuál es la diferencia según tú? Para mí hay bien poca en el caso de muchos AVs.


@Vaagish: Me sorprende que así puedas descargar la librería. ¿Seguro que no te lo detecta como malicioso al finalizar el análisis?


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 25 Abril 2014, 14:45 pm
Si el malware está siendo detectado por heurística es que PUEDE estar siendo emulado. La detección heurística estática también existe. No sé si hubo confusión con términos o no, lo que está claro es que la discusión se desvió a si era posible escapar de una VM (Yo entiendo que la sandbox o la heurística dinámica son también máquinas virtuales).
Heuristica estatica? Más bien seria escaneo de bytes utilizando algún algoritmo. Pero sí, la conversación se desvio.
¿Y como demonios la heuristica dinamica puede ser una maquina virtual? La tecnologia heuristica dinamica ya existia
antes que la implementación de VMs en Anvitirus de hecho hoy en dia hay Antivirus que no tiene una VM pero sí un
emulador de código y que hacen uso de heuristica dinamica junto con el emulador para la detección. por ejemplo
Avira, Eset nod32.


Si lees la página original donde posteé el código verás que es una mejora de otro código propuesto por un usuario. Y sí, la lista de DLLs es la del código original. Este código tan sólo detecta si alguna de esas librerías está en la lista del PEB.
La idea de la detección no es cerrarse sin más, sino hacer unhooking. En este caso Comodo y Avast lo ponen bastante fácil...
En Comodo sobre Windows de 32-bits de nada sirve hacer unhooking de modo usuario, apuesto lo mismo que en Avast, no sé no lo he
comprobado, en Comodo sobre Windows de 64-bits te pregunto de que sirve hacer unhooking de modo usuario por ejemplo en NtCreateFile
para escribir en el disco y saltarse la sandbox?


Yo diría que Vaagish quiere saber si una librería está cargada en el proceso...
Bueno en realidad yo cite una duda de él pensar que mediante la detección de modulos cargados por la sandbox haria
de tu malware sea indetectable por los Antivirus es erroneo.


¿Cuál es la diferencia según tú? Para mí hay bien poca en el caso de muchos AVs.
Mirar sandboxie es simplemente una sandbox, no hay analisis para la detección y eliminación del malware.
Avast, Comodo son Antivirus que incluyen una sandbox pero eso no quiere decir que si el usuario decida no
ejecutar en ella el archivo no seria analisado, este es siempre analizado. habria que saber
Pero Karcrack, si piensas que estoy equivocado danos tu punto de vista demostrando que estoy en lo incorrecto,
si fuese así es tiempo de programar algún POC :)


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 25 Abril 2014, 16:04 pm
Heuristica estatica? Más bien seria escaneo de bytes utilizando algún algoritmo. Pero sí, la conversación se desvio.
¿Y como demonios la heuristica dinamica puede ser una maquina virtual? La tecnologia heuristica dinamica ya existia
antes que la implementación de VMs en Anvitirus de hecho hoy en dia hay Antivirus que no tiene una VM pero sí un
emulador de código y que hacen uso de heuristica dinamica junto con el emulador para la detección. por ejemplo
Avira, Eset nod32.
Yo no me estoy inventando ningún término. Puedes leer más al respecto y verás que la heurística dinámica va cogida de la mano de la emulación de código y también del análisis de comportamiento (behavioral).

En Comodo sobre Windows de 32-bits de nada sirve hacer unhooking de modo usuario, apuesto lo mismo que en Avast, no sé no lo he
comprobado, en Comodo sobre Windows de 64-bits te pregunto de que sirve hacer unhooking de modo usuario por ejemplo en NtCreateFile
para escribir en el disco y saltarse la sandbox?
Comodo no lo he probado pero esto funciona con el Avast: http://www.malwaretech.com/2013/09/fighting-hooks-with-hooks-sandbox-escape.html ;)

Mirar sandboxie es simplemente una sandbox, no hay analisis para la detección y eliminación del malware.
Pensaba que hablabamos de diferencias en cuanto a las técnicas de sandboxing :laugh:

Avast, Comodo son Antivirus que incluyen una sandbox pero eso no quiere decir que si el usuario decida no
ejecutar en ella el archivo no seria analisado, este es siempre analizado. habria que saber
Avast ejecuta un fichero sospechoso dentro de la sandbox sin que le digas nada de nada. Decide si es potencialmente peligroso mediante heurística estática.

Pero Karcrack, si piensas que estoy equivocado danos tu punto de vista demostrando que estoy en lo incorrecto,
si fuese así es tiempo de programar algún POC :)
¿Equivocado en qué?


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 25 Abril 2014, 19:40 pm
Buenas! Creo que esta charla es mas constructiva que en la versión anterior. (http://foro.elhacker.net/buscador2-t378027.0.html;msg1807944#msg1807944)

Tratemos de no desviarnos y buscar soluciones ;)

Citar
Bueno en realidad yo cite una duda de él pensar que mediante la detección de modulos cargados por la sandbox haria
de tu malware sea indetectable por los Antivirus es erroneo.
Noo,, claro.. la detección del modulo no haría al ejecutable indetectable,, por que lo haría sin otro método especialmente diseñado para eso? Este seria solo el principio.. ;)

Citar
Y habria que aclarar antes de entrar en confusión como sucedio en el otro tema, Vagish quiere detectar si el
programa esta siendo analizado por el Antivirus sandbox/VM.
Yo diría que Vaagish quiere saber si una librería está cargada en el proceso...
Lo que esta pasando es que yo inicie el tema con un nombre, luego exprese para que queria "Mostrar librerias cargadas...." y de ahi se abrio todo el asunto.. por eso con confundimos..
Podríamos decir que el asunto en cuestión esta solucionado.. pero la charla se derivo a el asunto del sandbox que esta muy interesante..

Citar
@Vaagish: Me sorprende que así puedas descargar la librería. ¿Seguro que no te lo detecta como malicioso al finalizar el análisis?

Nop. Eso es lo raro,, podría tratarse de un "pequeño error" en Avast? Es muy raro,, al descargar la librería, se cierra el sandbox y se ejecuta en la maquina real, como si hubiera terminado el análisis (el análisis de sandbox) esta claro que el AV puede seguir analizando el archivo, pero ya podríamos por ejemplo, escribir en la maquina, que no es poca cosa.. Voy a investigar mas hoy,, quien tenga avast lo puede probar..

PD: Es muy constructivo esto, yo pensaba que la heuristica y el analisis de comportamiento eran lo mismo.

Saludos!!

NEW: Penosamente, aunque predeciblemente, la librería no se descarga, no se que habrá pasada en la primer prueba, simplemente se cerro el SB, quizás termino el análisis (extraordinariamente rapido) y dio por concluido y no riesgoso. Y depende la cantidad de código, salta el AV o no al descargar la librería, pero no necesariamente se considera algo malo intentar descargarla.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 25 Abril 2014, 20:57 pm
Yo no me estoy inventando ningún término. Puedes leer más al respecto y verás que la heurística dinámica va cogida de la mano de la emulación de código y también del análisis de comportamiento (behavioral).
¿No fue eso mismo lo que dije?


Comodo no lo he probado pero esto funciona con el Avast: http://www.malwaretech.com/2013/09/fighting-hooks-with-hooks-sandbox-escape.html ;)
Acabo que mirar en Avast internet security (Windows de 32-bits)
Hooks:
Código:
[*]len(5) ntdll.dll->LdrLoadDll
[*]len(5) ntdll.dll->LdrUnloadDll
[*]len(5) KERNEL32.dll->DefineDosDeviceW
[*]len(5) KERNEL32.dll->SetLocaleInfoW
[*]len(5) KERNEL32.dll->SetProcessShutdownParameters
[*]len(5) comdlg32.dll->GetSaveFileNameW
[*]len(5) ADVAPI32.dll->ChangeServiceConfig2A
[*]len(5) ADVAPI32.dll->ChangeServiceConfig2W
[*]len(5) ADVAPI32.dll->ChangeServiceConfigA
[*]len(5) ADVAPI32.dll->ChangeServiceConfigW
[*]len(5) ADVAPI32.dll->CloseServiceHandle
[*]len(5) ADVAPI32.dll->ControlService
[*]len(5) ADVAPI32.dll->CreateServiceA
[*]len(5) ADVAPI32.dll->CreateServiceW
[*]len(5) ADVAPI32.dll->DeleteService
[*]len(5) ADVAPI32.dll->DeregisterEventSource
[*]len(5) ADVAPI32.dll->EnumDependentServicesA
[*]len(5) ADVAPI32.dll->EnumDependentServicesW
[*]len(5) ADVAPI32.dll->EnumServicesStatusA
[*]len(5) ADVAPI32.dll->EnumServicesStatusExA
len(5) ADVAPI32.dll->EnumServicesStatusExW
[*]len(5) ADVAPI32.dll->EnumServicesStatusW
[*]len(5) ADVAPI32.dll->GetServiceDisplayNameA
[*]len(5) ADVAPI32.dll->GetServiceDisplayNameW
[*]len(5) ADVAPI32.dll->GetServiceKeyNameA
[*]len(5) ADVAPI32.dll->GetServiceKeyNameW
[*]len(5) ADVAPI32.dll->LockServiceDatabase
[*]len(5) ADVAPI32.dll->LookupAccountNameW
[*]len(5) ADVAPI32.dll->OpenSCManagerA
[*]len(5) ADVAPI32.dll->OpenSCManagerW
[*]len(5) ADVAPI32.dll->OpenServiceA
[*]len(5) ADVAPI32.dll->OpenServiceW
[*]len(5) ADVAPI32.dll->QueryServiceConfig2A
[*]len(5) ADVAPI32.dll->QueryServiceConfig2W
[*]len(5) ADVAPI32.dll->QueryServiceConfigA
[*]len(5) ADVAPI32.dll->QueryServiceConfigW
[*]len(5) ADVAPI32.dll->QueryServiceLockStatusA
[*]len(5) ADVAPI32.dll->QueryServiceLockStatusW
[*]len(5) ADVAPI32.dll->QueryServiceObjectSecurity
len(5) ADVAPI32.dll->QueryServiceStatus
[*]len(5) ADVAPI32.dll->QueryServiceStatusEx
[*]len(5) ADVAPI32.dll->RegConnectRegistryW
len(5) ADVAPI32.dll->RegisterEventSourceA
[*]len(5) ADVAPI32.dll->RegisterEventSourceW
[*]len(5) ADVAPI32.dll->RegisterServiceCtrlHandlerA
[*]len(5) ADVAPI32.dll->RegisterServiceCtrlHandlerExA
[*]len(5) ADVAPI32.dll->RegisterServiceCtrlHandlerExW
[*]len(5) ADVAPI32.dll->RegisterServiceCtrlHandlerW
[*]len(5) ADVAPI32.dll->ReportEventA
[*]len(5) ADVAPI32.dll->ReportEventW
[*]len(5) ADVAPI32.dll->SetServiceObjectSecurity
[*]len(5) ADVAPI32.dll->SetServiceStatus
len(5) ADVAPI32.dll->StartServiceA
[*]len(5) ADVAPI32.dll->StartServiceCtrlDispatcherA
[*]len(5) ADVAPI32.dll->StartServiceCtrlDispatcherW
[*]len(5) ADVAPI32.dll->StartServiceW
[*]len(5) ADVAPI32.dll->UnlockServiceDatabase
[*]len(5) Secur32.dll->LsaRegisterLogonProcess
len(5) USER32.dll->CreateDialogIndirectParamA
[*]len(5) USER32.dll->CreateDialogIndirectParamAorW
[*]len(5) USER32.dll->CreateDialogIndirectParamW
[*]len(5) USER32.dll->CreateDialogParamA
[*]len(5) USER32.dll->CreateDialogParamW
[*]len(5) USER32.dll->CreateWindowExA
[*]len(5) USER32.dll->CreateWindowExW
[*]len(5) USER32.dll->DialogBoxIndirectParamA
len(5) USER32.dll->DialogBoxIndirectParamAorW
[*]len(5) USER32.dll->DialogBoxIndirectParamW
[*]len(5) USER32.dll->DialogBoxParamA
[*]len(5) USER32.dll->DialogBoxParamW
[*]len(5) USER32.dll->EnumDesktopWindows
[*]len(5) USER32.dll->EnumThreadWindows
[*]len(5) USER32.dll->EnumWindows
[*]len(5) USER32.dll->ExitWindowsEx
[*]len(5) USER32.dll->FindWindowA
[*]len(5) USER32.dll->FindWindowExA
[*]len(5) USER32.dll->FindWindowExW
[*]len(5) USER32.dll->FindWindowW
[*]len(5) USER32.dll->GetClassInfoA
len(5) USER32.dll->GetClassInfoExA
[*]len(5) USER32.dll->GetClassInfoExW
[*]len(5) USER32.dll->GetClassInfoW
[*]len(5) USER32.dll->GetClassNameA
[*]len(5) USER32.dll->GetClassNameW
[*]len(5) USER32.dll->GetPropA
[*]len(5) USER32.dll->GetPropW
[*]len(5) USER32.dll->GetShellWindow
[*]len(5) USER32.dll->GetWindowLongA
[*]len(5) USER32.dll->GetWindowLongW
[*]len(5) USER32.dll->MoveWindow
[*]len(5) USER32.dll->RegisterClassA
[*]len(5) USER32.dll->RegisterClassExA
[*]len(5) USER32.dll->RegisterClassExW
[*]len(5) USER32.dll->RegisterClassW
[*]len(5) USER32.dll->RemovePropA
[*]len(5) USER32.dll->RemovePropW
[*]len(5) USER32.dll->SetDoubleClickTime
[*]len(5) USER32.dll->SetParent
len(5) USER32.dll->SetPropA
[*]len(5) USER32.dll->SetPropW
[*]len(5) USER32.dll->SetWinEventHook
[*]len(5) USER32.dll->SetWindowLongA
[*]len(5) USER32.dll->SetWindowLongW
[*]len(5) USER32.dll->SetWindowPos
[*]len(5) USER32.dll->SetWindowsHookExA
[*]len(5) USER32.dll->SetWindowsHookExW
[*]len(5) USER32.dll->SwapMouseButton
[*]len(5) USER32.dll->UnhookWindowsHookEx
[*]len(5) USER32.dll->UnregisterClassA
[*]len(5) USER32.dll->UnregisterClassW
len(5) WINSPOOL.DRV->AddPrintProcessorA
[*]len(5) WINSPOOL.DRV->AddPrintProcessorW
[*]len(5) WINSPOOL.DRV->AddPrintProvidorA
[*]len(5) WINSPOOL.DRV->AddPrintProvidorW
[*]len(5) ole32.dll->CoCreateInstance
[*]len(5) ole32.dll->CoCreateInstanceEx
[*]len(5) ole32.dll->CoGetClassObject
[*]len(5) USERENV.dll->RegisterGPNotification
[*]len(5) USERENV.dll->UnregisterGPNotification
No veo nada interesante a ser restaurado o algo, tendrias que decirme a que te referis con ese 'funciona'?
Podes escribir en el disco? injección?. Además yo no creo que sea seguro forzar a Windows que carge dos
modulos de ntdll a la vez, un tercero en WOW64. El ntdll tiene varias callbacks: Validación e inicialización de hilos,
sincronización con APCs, comunicación con el kernel, etc. Me pregunto si ese scriptkiddie americano hizo todo ese
analisis o sólo se le ocurrio joder en NTDLL...




Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 25 Abril 2014, 21:10 pm
Esas son todas la funciones hookeadas por AV?

Citar
No veo nada interesante a ser restaurado o algo, tendrias que decirme a que te referis con ese 'funciona'?
Calculo que sera que funciona porque consigue una shell fuera del SandBox, acaso no puede escribir en el disco haciendo eso?  :huh:
Igual comparto que el método no es seguro.. pero es un método..


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 25 Abril 2014, 21:41 pm
Por la Sandbox
Estos son los del kernel:

(32-bits)
Código:
Name                     Current Entry Hook Original Entry Module
NtAddBootEntry             0xB2A4CA9C ssdt hook 0x8060CB50 C:\WINDOWS\system32\drivers\aswSnx.sys
NtAssignProcessToJobObject 0xB2A4D57A ssdt hook 0x805CC8C4 C:\WINDOWS\system32\drivers\aswSnx.sys
NtClose                     0xB2A9185D ssdt hook 0x805B1C3A C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateEvent             0xB2A595C4 ssdt hook 0x80605124 C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateEventPair         0xB2A59610 ssdt hook 0x8060D3C6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateIoCompletion     0xB2A597AA ssdt hook 0x8056DC5A C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateKey                 0xB2A91211 ssdt hook 0x8061A286 C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateMutant             0xB2A59532 ssdt hook 0x8060D7BE C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateSection             0xB2A59654 ssdt hook 0x805A06EC C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateSemaphore         0xB2A5957A ssdt hook 0x8060B15A C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateThread             0xB2A4DAB0 ssdt hook 0x805C7208 C:\WINDOWS\system32\drivers\aswSnx.sys
NtCreateTimer             0xB2A59764 ssdt hook 0x8060D08E C:\WINDOWS\system32\drivers\aswSnx.sys
NtDebugActiveProcess     0xB2A4E368 ssdt hook 0x80639A86 C:\WINDOWS\system32\drivers\aswSnx.sys
NtDeleteBootEntry         0xB2A4CB02 ssdt hook 0x8060CB42 C:\WINDOWS\system32\drivers\aswSnx.sys
NtDeleteKey                 0xB2A91F23 ssdt hook 0x8061A716 C:\WINDOWS\system32\drivers\aswSnx.sys
NtDeleteValueKey         0xB2A921D9 ssdt hook 0x8061A8E6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtDuplicateObject         0xB2A51B3C ssdt hook 0x805B384E C:\WINDOWS\system32\drivers\aswSnx.sys
NtEnumerateKey             0xB2A91D8E ssdt hook 0x8061AAC6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtEnumerateValueKey         0xB2A91BF9 ssdt hook 0x8061AD30 C:\WINDOWS\system32\drivers\aswSnx.sys
NtLoadDriver             0xB2A4C6EE ssdt hook 0x80579588 C:\WINDOWS\system32\drivers\aswSnx.sys
NtMapViewOfSection         0xB2D8467A ssdt hook 0x805A7480 C:\WINDOWS\system32\drivers\aswSP.sys
NtModifyBootEntry         0xB2A4CB68 ssdt hook 0x8060CB42 C:\WINDOWS\system32\drivers\aswSnx.sys
NtNotifyChangeKey         0xB2A51F32 ssdt hook 0x8061C44C C:\WINDOWS\system32\drivers\aswSnx.sys
NtNotifyChangeMultipleKeys 0xB2A4EE50 ssdt hook 0x8061B09C C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenEvent                 0xB2A595EE ssdt hook 0x80605224 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenEventPair             0xB2A59632 ssdt hook 0x8060D49E C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenIoCompletion         0xB2A597CE ssdt hook 0x8056DD32 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenKey                 0xB2A9156D ssdt hook 0x8061B658 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenMutant             0xB2A59558 ssdt hook 0x8060D896 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenProcess             0xB2A51436 ssdt hook 0x805C1296 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenSection             0xB2A596E2 ssdt hook 0x8059F722 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenSemaphore             0xB2A595A2 ssdt hook 0x8060B254 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenThread             0xB2A5181E ssdt hook 0x805C1522 C:\WINDOWS\system32\drivers\aswSnx.sys
NtOpenTimer                 0xB2A59788 ssdt hook 0x8060D1B0 C:\WINDOWS\system32\drivers\aswSnx.sys
NtProtectVirtualMemory     0xB2D8441E ssdt hook 0x805ADA08 C:\WINDOWS\system32\drivers\aswSP.sys
NtQueryKey                 0xB2A91A74 ssdt hook 0x8061B97E C:\WINDOWS\system32\drivers\aswSnx.sys
NtQueryObject             0xB2A4ECC4 ssdt hook 0x805BB04C C:\WINDOWS\system32\drivers\aswSnx.sys
NtQueryValueKey             0xB2A918C6 ssdt hook 0x806184BE C:\WINDOWS\system32\drivers\aswSnx.sys
NtQueueApcThread         0xB2A4E81A ssdt hook 0x805C7466 C:\WINDOWS\system32\drivers\aswSnx.sys
NtRenameKey                 0xB2D923D8 ssdt hook 0x80619CA8 C:\WINDOWS\system32\drivers\aswSP.sys
NtRestoreKey             0xB2A90857 ssdt hook 0x8061BC3E C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetBootEntryOrder         0xB2A4CBCE ssdt hook 0x8060CB50 C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetBootOptions         0xB2A4CC34 ssdt hook 0x8060CB50 C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetContextThread         0xB2A4E1E2 ssdt hook 0x805C792A C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetSystemInformation     0xB2A4C788 ssdt hook 0x80605E76 C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetSystemPowerState     0xB2A4C95A ssdt hook 0x80648DD6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtSetValueKey             0xB2A9202A ssdt hook 0x8061880C C:\WINDOWS\system32\drivers\aswSnx.sys
NtShutdownSystem         0xB2A4C8E8 ssdt hook 0x80609092 C:\WINDOWS\system32\drivers\aswSnx.sys
NtSuspendProcess         0xB2A4E532 ssdt hook 0x805CACEA C:\WINDOWS\system32\drivers\aswSnx.sys
NtSuspendThread             0xB2A4E694 ssdt hook 0x805CAB5C C:\WINDOWS\system32\drivers\aswSnx.sys
NtSystemDebugControl     0xB2A4C9E2 ssdt hook 0x8060E1DA C:\WINDOWS\system32\drivers\aswSnx.sys
NtTerminateProcess         0xB2A4E020 ssdt hook 0x805C8C2A C:\WINDOWS\system32\drivers\aswSnx.sys
NtTerminateThread         0xB2A4E1C2 ssdt hook 0x805C8E24 C:\WINDOWS\system32\drivers\aswSnx.sys
NtVdmControl             0xB2A4CC9A ssdt hook 0x805F1502 C:\WINDOWS\system32\drivers\aswSnx.sys
NtWriteVirtualMemory     0xB2A4D5D6 ssdt hook 0x805A981C C:\WINDOWS\system32\drivers\aswSnx.sys

shadow:
Código:
Name                     Current Entry Hook   Original Entry Module
NtGdiAlphaBlend             0xB2A53BB8 inline hook 0xBF83B4CD C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiBitBlt                 0xB2A53828 inline hook 0xBF809FDF C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiCreateCompatibleDC     0xB2A53706 inline hook 0xBF80CF90 C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiDeleteObjectApp     0xB2A536BA inline hook 0xBF8138FE C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiGetPixel             0xB2A53756 inline hook 0xBF87882D C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiMaskBlt             0xB2A5399E inline hook 0xBF838560 C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiOpenDCW             0xB2A535AE inline hook 0xBF838A7E C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiPlgBlt                 0xB2A53A62 inline hook 0xBF9438F8 C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiStretchBlt             0xB2A538E0 inline hook 0xBF873983 C:\WINDOWS\system32\drivers\aswSnx.sys
NtGdiTransparentBlt         0xB2A53B10 inline hook 0xBF857D74 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserAttachThreadInput     0xB2A52CAE inline hook 0xBF8F4FC9 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserBlockInput         0xB2A52462 inline hook 0xBF9131E6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserBuildNameList         0xB2A52AAC inline hook 0xBF8B37FB C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserCallHwndParamLock     0xB2A522FA inline hook 0xBF82868B C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserGetAsyncKeyState     0xB2A52C72 inline hook 0xBF84928E C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserGetClipboardData     0xB2A526F6 inline hook 0xBF8F9709 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserGetKeyboardState     0xB2A52D68 inline hook 0xBF852720 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserGetKeyState         0xB2A52C90 inline hook 0xBF820E6C C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserOpenDesktop         0xB2A527D2 inline hook 0xBF8B3770 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserOpenInputDesktop     0xB2A52898 inline hook 0xBF88FFB6 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserRegisterHotKey     0xB2A52D86 inline hook 0xBF8ADD61 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserRegisterRawInputDevices   0xB2A52BCC inline hook 0xBF915BA7 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSendInput             0xB2A524CA inline hook 0xBF8C31E7 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSetClipboardViewer 0xB2A525AE inline hook 0xBF8F9489 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSetSysColors         0xB2A52282 inline hook 0xBF912612 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSetWindowsHookEx     0xB2A5207E inline hook 0xBF8527E0 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSetWinEventHook     0xB2A51F68 inline hook 0xBF8ED991 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSwitchDesktop         0xB2A52A66 inline hook 0xBF890AD9 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserSystemParametersInfo 0xB2A5219A inline hook 0xBF81E743 C:\WINDOWS\system32\drivers\aswSnx.sys
NtUserUnregisterHotKey     0xB2A52E30 inline hook 0xBF9128BE C:\WINDOWS\system32\drivers\aswSnx.sys

Además de varias callbacks  de notificación para procesos, hilos, modulos, apagado y drivers de tipo filtro en el Filesystem, Ndis.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 26 Abril 2014, 00:20 am
Citar
Calculo que sera que funciona porque consigue una shell fuera del SandBox, acaso no puede escribir en el disco haciendo eso?  :huh:
Igual comparto que el método no es seguro.. pero es un método..
Me cito a mi mismo para corregirme, ese método no es funcional, o ya no.. la shell se ejecuta en sandbox..

Parece que no escatima en hook's el AV.. esto pone las cosas a otro nivel, (del cual me falta mucho aprender  :¬¬ )

Para deshookear en Ring0, hay que estar en Ring0, no?

Para cerrar el programa programa si estamos en SB, tiene que ser mas sencillo.. Vi unos ejemplos que usan los ciclos de algunas instrucciones (o el tiempo que demoran, algo asi..) pero no me pareció viable..
Alguna idea? Quizás leer el registro? No se podrá leer la clave que indica que sandbox esta activado? (Si la hay..)


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 26 Abril 2014, 16:03 pm
Me pregunto si ese scriptkiddie americano hizo todo ese
analisis o sólo se le ocurrio joder en NTDLL...
Sorprende con la facilidad que insultas a alguien que acabas de saber que existe. No es americano y apuesto que sabe más sobre windows internals que tú mismo.

Una vez descargados los hooks desde ring3 está claro que no vas a saltarte ring0 pero ya has escapado del análisis de la sandbox. Lo que hagas no quedará reflejado durante el análisis, evitando así que salte la heurística dinámica. Es obvio que no vas a poder cargar un driver sin que el AV se entere ya que esa detección está en otro nivel.

La utilidad de salirse de la sandbox no es eludir al AV por completo sino ser capaz de ejecutar código como lo harías normalmente sin que te hubiesen metido en una sandbox...


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Arkangel_0x7C5 en 26 Abril 2014, 16:07 pm
Citar
Advertencia - mientras estabas leyendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Para deshookear en Ring0, hay que estar en Ring0, no?
No necesaria mente, si abres el dispositivo de la memoria fisica, la ram. podrias escribir en Ring 0 estando en Ring 3

Saludos


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 26 Abril 2014, 16:57 pm
Sorprende con la facilidad que insultas a alguien que acabas de saber que existe. No es americano y apuesto que sabe más sobre windows internals que tú mismo.
Lo conozo desde años cuando era Touch me maybe -> TouchMe -> Ntoskrnl.
Ese tipo que ha programado un bootkit puro copy-paste de carberp + StBt Framework y ahora piensa que es un hacker de elite,
por favor... La gente que no sabe del tema es claro que lo piensa pero los que sabemos de eso, sabemos que es un scriptkiddie.


Una vez descargados los hooks desde ring3 está claro que no vas a saltarte ring0 pero ya has escapado del análisis de la sandbox. Lo que hagas no quedará reflejado durante el análisis, evitando así que salte la heurística dinámica. Es obvio que no vas a poder cargar un driver sin que el AV se entere ya que esa detección está en otro nivel.

La utilidad de salirse de la sandbox no es eludir al AV por completo sino ser capaz de ejecutar código como lo harías normalmente sin que te hubiesen metido en una sandbox...

No necesaria mente, si abres el dispositivo de la memoria fisica, la ram. podrias escribir en Ring 0 estando en Ring 3

Saludos
No precisamente, esa fue una vulnerabilidad/Caracteristica que Windows parcheo hace mucho tiempo y no funciona más desde Windows XP + SP3.
La unica manera es otra vulnerabilidad o un Driver pero si se tiene un driver para que restaurar los hooks? Bueno si se tiene una aplicación para Ring3.



Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 26 Abril 2014, 17:07 pm
Lo conozo desde años cuando era Touch me maybe -> TouchMe -> Ntoskrnl.
Ese tipo que ha programado un bootkit puro copy-paste de carberp + StBt Framework y ahora piensa que es un hacker de elite,
por favor... La gente que no sabe del tema es claro que lo piensa pero los que sabemos de eso, sabemos que es un scriptkiddie.
;-) Se ve que sabes quién es ese americano y pasas horas con él en IRC :)

Me resulta curioso que siempre acabas usando argumentos ad hominem :silbar: Más fácil sería que demostrases que sabes en lugar de intentar demostrar que el resto sabe menos.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 26 Abril 2014, 17:17 pm
;-) Se ve que sabes quién es ese americano y pasas horas con él en IRC :)
Yo lo sé, puedo apostar mucho, o te referis a eso que ha dicho que es ruso? Yo sé que es americano ( Norteamericano ).

Me resulta curioso que siempre acabas usando argumentos ad hominem :silbar: Más fácil sería que demostrases que sabes en lugar de intentar demostrar que el resto sabe menos.
Lo he hecho pero no como x64Core :)


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Arkangel_0x7C5 en 26 Abril 2014, 22:43 pm
No precisamente, esa fue una vulnerabilidad/Caracteristica que Windows parcheo hace mucho tiempo y no funciona más desde Windows XP + SP3.
La unica manera es otra vulnerabilidad o un Driver pero si se tiene un driver para que restaurar los hooks? Bueno si se tiene una aplicación para Ring3.
Yo sabia que lo había visto hacer hace tiempo.
Y el problema del driver reside en conseguir cargarlo, ya que ultimamente hay muchas trabas por parte del SO como que tengan que estar firmados. Y luego habrá que sumarle que el propio AV te deje realizar esa acción. yo tenia un driver que restauraba la SSDT

Saludos


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 29 Abril 2014, 19:50 pm
Ya me había aburrido del tema,, porque siempre por un motivo o por otro terminan discutiendo al pedo.. por cualquier cosa se desvían del tema.. En fin.. solo queria aportar esto, (que a mi parecer es un fake terrible..)

RtVUyN2M158

Saludos!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Buster_BSA en 29 Abril 2014, 20:31 pm
Realmente no valen millones :P. Buster_BSA se inventó la cifra :xD

Te reto a que me cites diciendo que valen millones.

Se coge antes a un mentiroso que a un cojo.

Y por cierto, ¿probaste a usar tu super código con el BSA para ver si detecta el Sandboxie?  ;D


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 29 Abril 2014, 21:11 pm
Huu... Bueno,, se pudrió todo.. Ahora tienen para discutir un rato mas, no?

Ta, listo.. tema terminado..


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Buster_BSA en 29 Abril 2014, 21:33 pm
Si te parece dejo que pongan en mi boca cosas que yo no he dicho. A ti te gustará que te lo hagan pero a mí no. Respeta eso.

Además no hay nada que pudrir porque no estáis llegando a ningún lado. Karcrack os está mareando y no dice nada de utilidad.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: x64core en 29 Abril 2014, 21:51 pm
Huu... Bueno,, se pudrió todo.. Ahora tienen para discutir un rato mas, no?

Ta, listo.. tema terminado..
¿No habias dicho que el tema ya estaba resuelto?
-
Además yo no sé porqué incluso Karcrack cito a ese scriptkiddie a venir (Ya se ha borrado el post - http://foro.elhacker.net/profiles/ntoskrnl-u517957.html) luego llenar de spam mi jabber... pateticos...



Título: Re: Mostrar librerias cargadas en programa
Publicado por: Vaagish en 29 Abril 2014, 22:44 pm
Citar
¿No habias dicho que el tema ya estaba resuelto?
Y si, no pensaba responder.. que parte no esta clara? Si fuera mod, lo cierro.. pero no  lo soy..

Ciao!


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 29 Abril 2014, 22:50 pm
Cierren esto ya. De dónde no hay no se puede sacar.

@Buster_BSA: Qué bueno verte tras más de un año, se ve que vienes a aportar a la comunidad :laugh: PD: http://foro.elhacker.net/analisis_y_diseno_de_malware/iquestsaltarse_heuristicas_y_sandbox_modeando-t378027.0.html;msg1818817#msg1818817

@x64Core: Yo no dije a nadie que viniese a nada y no tengo nada que ver con tu Jabber. No deberías hacer acusaciones sin ningún fundamento.

@Vaagish: Si quieres podemos mantener una conversación más productiva por MP...


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Buster_BSA en 29 Abril 2014, 23:26 pm
Vengo a taparte la boca, mentiroso.

El reto sigue en pie: cítame diciendo que vale millones, campeón.

En esas cifras que puse:

1) No se habla de millones.

2) Esas cifras no las pongo yo.


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Karcrack en 29 Abril 2014, 23:41 pm
Cierto, exageré la cifra. Discúlpame. Ya puedes irte. Saludos :)


Título: Re: Mostrar librerias cargadas en programa
Publicado por: Eternal Idol en 30 Abril 2014, 01:00 am
Por favor, no se puede ir uno de vacaciones un miserable dia  >:(