Mostrar librerias cargadas en programa

Iniciado por Vaagish, 24 Abril 2014, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

cpu2

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

Cita de: Karcrack en 24 Abril 2014, 23:18 PM@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.

Karcrack

Cita de: cpu2 en 25 Abril 2014, 00:21 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)

Vaagish

CitarHay 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)

CitarCuanto 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

CitarSi 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

CitarVaya 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

Vaagish

Por probar,, solo por el simple echo de probar que pasaba,, le di esta instruccion al programa:

Código (asm) [Seleccionar]
hLib db "snxhk.dll", 0
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?

x64core

#24
Cita de: Karcrack en 24 Abril 2014, 23:18 PM
@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.

Karcrack

Cita de: x64Core en 25 Abril 2014, 03:55 AM
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).


Cita de: x64Core en 25 Abril 2014, 03:55 AM
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...


Cita de: x64Core en 25 Abril 2014, 03:55 AM
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...


Cita de: x64Core en 25 Abril 2014, 03:55 AM
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?

x64core

Cita de: Karcrack en 25 Abril 2014, 13:21 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.

Cita de: Karcrack en 25 Abril 2014, 13:21 PM

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?

Cita de: Karcrack en 25 Abril 2014, 13:21 PM

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.

Cita de: Karcrack en 25 Abril 2014, 13:21 PM

¿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 :)

Karcrack

Cita de: x64Core en 25 Abril 2014, 14:45 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).


Cita de: x64Core en 25 Abril 2014, 14:45 PM
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 ;)


Cita de: x64Core en 25 Abril 2014, 14:45 PM
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:


Cita de: x64Core en 25 Abril 2014, 14:45 PM
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.


Cita de: x64Core en 25 Abril 2014, 14:45 PM
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é?

Vaagish

#28
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 ;)

CitarBueno 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.. ;)

CitarY 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.

x64core

Cita de: Karcrack en 25 Abril 2014, 16:04 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?

Cita de: Karcrack en 25 Abril 2014, 16:04 PM

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:

[*]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...