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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Mostrar librerias cargadas en programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Mostrar librerias cargadas en programa  (Leído 23,464 veces)
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #20 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.


En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #21 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)


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #22 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
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #23 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?
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #24 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.
« Última modificación: 25 Abril 2014, 03:57 am por x64Core » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #25 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?
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #26 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 :)
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #27 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é?
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #28 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.
« Última modificación: 25 Abril 2014, 20:22 pm por Vaagish » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Mostrar librerias cargadas en programa
« Respuesta #29 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...


En línea

Páginas: 1 2 [3] 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines