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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Una duda sobre ASM y las APIS
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Una duda sobre ASM y las APIS  (Leído 11,598 veces)
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Una duda sobre ASM y las APIS
« en: 12 Noviembre 2010, 16:26 pm »

Hola amigos estoy practicando ASM desde hace un tiempito con unos tutos y cursos que encontrè aqui, y veo que para ejecutar instrucciones como por ejemplo: para mostrar un mensaje en C++ o VB usabamos el API MessageBox y en ASM para hacer esto varia un poco pero en esencia es lo mismo porque llama a la API, mi pregunta: Habrà alguna manera de ejecutar en ASM esas instrucciones que usamos normalmente en lenguaje como C++, ejem: borrar archivos, messagebox,crear carpeta.. etc pero sin tener que recurrir a las APIS, es decir : habrà alguna manera kizas de trabajar mas directo con la computadora a mas bajo nivel, sin tener que pasar por sus .DLLs (APIs), porque de esa manera creo tendria màs defensa y poder nuestra aplicacioòn contra los HOOKS.


En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #1 en: 12 Noviembre 2010, 17:09 pm »

tienes que pasar por la api.

Citar
porque de esa manera creo tendria màs defensa y poder nuestra aplicacioòn contra los HOOKS.

yo creo que es al contrario, si te dan mas acceso  los virus tienen el mismo privilegio que tu, da un ojo a los virus antiguos y comparalos con los de hoy en dia y veras que diferencia en cuanto a "poder".


En línea

theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #2 en: 12 Noviembre 2010, 17:31 pm »

Ah ok, pero nu has respondido la pregunta ¿se puede o no ejecutar esas instrucciones sin llamar a la API?, quiero borrar un archivo y tengo un hook esperando a interceptar el API de borrar ¿còmo podrias evadir el hook?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Una duda sobre ASM y las APIS
« Respuesta #3 en: 12 Noviembre 2010, 20:37 pm »

Es un tema muy amplio y DEPENDE totalmente de el punto en que se intercepte, si es un hook en modo Usuario por ejemplo podrias copiar las instrucciones de la funcion de la API originales (leyendo del disco si hace falta) y ejecutarlas desde otra direccion o incluso restaurar el codigo original (esto lo podes hacer en C/C++ facilmente). Si hay un hook o un callback en modo Kernel con un simple programa no vas a poder hacer nada ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #4 en: 12 Noviembre 2010, 23:05 pm »

si es un hook simple (jmp) vas a la direccion donde apunta y tendras por ahi cerca las instrucciones reales, pero para un software en especifico hay que estudiar el caso primero.

Los hooks en modo kernel suelen tener bastantes fallos, en la zona de malware puse un ejemplo que se salta openprocess desde modo usuario. logicamente que esto no se da en el 100% pero haciendo pruebas es sorprendente la cantidad de software afectado.

PD: si te conteste, te dije que tienes que pasar por la api.
En línea

theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #5 en: 13 Noviembre 2010, 00:55 am »

OK todo me quedo claro , gracias.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Una duda sobre ASM y las APIS
« Respuesta #6 en: 13 Noviembre 2010, 01:30 am »

si es un hook simple (jmp) vas a la direccion donde apunta y tendras por ahi cerca las instrucciones reales, pero para un software en especifico hay que estudiar el caso primero.

Normalmente NO es el caso, lo que tenes es una funcion que eventualmente llamara a o no a la original.

Los hooks en modo kernel suelen tener bastantes fallos, en la zona de malware puse un ejemplo que se salta openprocess desde modo usuario. logicamente que esto no se da en el 100% pero haciendo pruebas es sorprendente la cantidad de software afectado.

Mas que saltar es engañar a software mal hecho, desde el vamos usar hooks es un error igual, el 99% de los casos estan cubiertos por callbacks/filtros.
Si vemos el ejemplo de borrar un archivo es practicamente seguro que se usa un filtro y no un hook.

PD: si te conteste, te dije que tienes que pasar por la api.

¿Por cual API? Como poder se puede hacer la transicion a modo Kernel manualmente tal como la hace NTDLL.dll ... conozco al menos un malware que hacia lo que mencione antes de ejecutar las intrucciones por si mismo desde otra direccion, no pasaba por la API.


PD. Estuve leyendo el articulo, que mala memoria tengo jaja, en Mayo hizo ruido y desde arriba nos preguntaron asustados si eramos vulnerables. Por cierto, un grande Andrey, trabaje un par de años con el.
« Última modificación: 13 Noviembre 2010, 01:53 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #7 en: 13 Noviembre 2010, 05:01 am »

Citar
Normalmente NO es el caso, lo que tenes es una funcion que eventualmente llamara a o no a la original.

yo en los casos que he visto, es mas el porcentaje que guarda los bytes reales para hacer la llamada o no.

Citar
Mas que saltar es engañar a software mal hecho, desde el vamos usar hooks es un error igual, el 99% de los casos estan cubiertos por callbacks/filtros.

es lo mismo, evadir una restriccion sea de el modo que sea es saltarsela , engañar, burlar llamemosle como sea.

Código:
¿Por cual API? Como poder se puede hacer la transicion a modo Kernel manualmente tal como la hace NTDLL.dll 

si ¿y la ntdll no va a morir a la api del sistema?, igual estoy confundido pero me gustaria ver un MessageBox por ejemplo sin tocar en ningun caso una una dll del sistema, o borrar archivos sin hacer uso alguno de ninguna funcion modo usuario/kernel y que sea estable y funcional en todos los sistemas windows  logicamente.

PD: con api me refiero tanto en modo usuario como en modo kernel, hacer una aplicacion sin tocar en ningun caso ni una sola funcion.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Una duda sobre ASM y las APIS
« Respuesta #8 en: 13 Noviembre 2010, 12:18 pm »

yo en los casos que he visto, es mas el porcentaje que guarda los bytes reales para hacer la llamada o no.

Seguro pero el salto al comienzo de la funcion hookeada no va ahi, me atreveria a decir que siempre va a otra funcion que hace algo al menos (sino no tiene sentido hookear) y el codigo original puede estar en cualquier lado mas o menos cerca pero nunca ahi mismo.

es lo mismo, evadir una restriccion sea de el modo que sea es saltarsela , engañar, burlar llamemosle como sea.

Puede ser pero el codigo del hook sigue siendo ejecutado siempre, no es como el caso al que me refiero justo despues.

si ¿y la ntdll no va a morir a la api del sistema?, igual estoy confundido pero me gustaria ver un MessageBox por ejemplo sin tocar en ningun caso una una dll del sistema, o borrar archivos sin hacer uso alguno de ninguna funcion modo usuario/kernel y que sea estable y funcional en todos los sistemas windows  logicamente.

Partimos de diferente nomenclatura pero el se refirio a DLLs y APIs y se entiende como API de Windows el subsistema de ventanas (ni el Kernel ni la parte del subsistema de ventanas en modo Kernel en XP, al cual la API termina llamando, son .DLLs) y son una serie de DLLs de modo Usuario (Kernel32, User32, Advapi32, etc.) que si son hookeadas pueden ser saltados los hooks por estar el llamado y el llamador en el mismo CPL.
Lo mismo ocurre con los servicios del sistema que son llamados desde la NTDLL, User32 o Gdi32 (tal y como en MS-DOS son los de la 21h, en Windows son los de la 2Eh aunque ahora se usen instrucciones mas modernas).

Supongamos un hook simple en modo Usuario, lo siguiente es lo que hacia el malware que mencione antes:

;antes del hook
kernel32!OpenProcess:
7c8309e9 8bff            mov     edi,edi
7c8309eb 55              push    ebp
7c8309ec 8bec            mov     ebp,esp
7c8309ee 83ec20          sub     esp,20h
7c8309f1 8b4510          mov     eax,dword ptr [ebp+10h]
7c8309f4 8945f8          mov     dword ptr [ebp-8],eax
7c8309f7 8b450c          mov     eax,dword ptr [ebp+0Ch]
7c8309fa 56              push    esi

;supuesto hook
kernel32!OpenProcess:
7c8309e9 e922269dd3      jmp     50203010
7c8309ee 83ec20          sub     esp,20h
7c8309f1 8b4510          mov     eax,dword ptr [ebp+10h]
7c8309f4 8945f8          mov     dword ptr [ebp-8],eax
7c8309f7 8b450c          mov     eax,dword ptr [ebp+0Ch]
7c8309fa 56              push    esi
7c8309fb 33f6            xor     esi,esi
7c8309fd f7d8            neg     eax

Lo unico que tiene que hacer el que quiera saltar el hook es esto:
mov     edi,edi
push    ebp
mov     ebp,esp
jmp 7c8309ee

Es decir ejecutar por su cuenta los primeros bytes que han sido reemplazados por el hook (estos bytes se pueden leer del disco facilmente) y saltar a la funcion originales despues del hook. Despues existen mas complicaciones como rebasear el codigo y desensamblar para encontrar la ultima instruccion completa que quedo tras el salto pero alguien ya lo hizo, simplemente sobreescribir el codigo del hook por el original es muchisimo mas simple.

En cuanto al tema API y demas, de Windows Internals:

Windows API functions Documented, callable subroutines in the Windows API. Examples include CreateProcess, CreateFile, and GetMessage.

Native system services (or executive system services) The undocumented, underlying services in the operating system that are callable from user mode. For example, NtCreateProcess is the internal system service the Windows CreateProcess function calls to create a new process. (For a definition of native functions, see the section "System Service Dispatching" in Chapter 3.)

Kernel support functions (or routines) Subroutines inside the Windows operating system that can be called only from kernel mode (defined later in this chapter). For example, ExAllocatePool is the routine that device drivers call to allocate memory from the Windows system heaps.

PD: con api me refiero tanto en modo usuario como en modo kernel, hacer una aplicacion sin tocar en ningun caso ni una sola funcion.

La API como tal es de modo Usuario, esto solo se puede hacer desde modo Kernel directamente O lo podes hacer habilitando los puertos de I/O que quieras desde Kernel y accediendo desde Usuario (estan bloqueados por defecto). Obviamente seria un tremendisima hack pero que yo sepa ya existen porquerias que acceden al disco directamente.
« Última modificación: 13 Noviembre 2010, 12:20 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Una duda sobre ASM y las APIS
« Respuesta #9 en: 13 Noviembre 2010, 13:01 pm »

Citar
Seguro pero el salto al comienzo de la funcion hookeada no va ahi, me atreveria a decir que siempre va a otra funcion que hace algo al menos (sino no tiene sentido hookear) y el codigo original puede estar en cualquier lado mas o menos cerca pero nunca ahi mismo.

logico, creo que no me entendiste logicamente sabiendo que funcion tenemos es sencillo buscar si dentro de la redireccion se encuentra el codigo original. pero el quiere sin usar ninguna ninguna funcion de windows.

Citar
Partimos de diferente nomenclatura pero el se refirio a DLLs y APIs y se entiende como API de Windows el subsistema de ventanas (ni el Kernel ni la parte del subsistema de ventanas en modo Kernel en XP, al cual la API termina llamando, son .DLLs)

Cito tal cual escribio en su primer mensaje:

Citar
habrà alguna manera kizas de trabajar mas directo con la computadora a mas bajo nivel, sin tener que pasar por sus .DLLs (APIs)

tal como lo pide, aun ejecutando tu los bytes que quito el jmp o los saques del fichero en disco, vas a morir a una dll del sistema. el no aclaro si modo usuario o modo kernel, y API son las 2 asi que de una forma o de otra va a tener que terminar trabajando con la api del sistema.

claro esta que podemos complicarlo mas, incluso puede programar su propio SO para poder ejecutar codigo como quiera. se puede complicar lo que uno quiera, pero a la pregunta tal cual es que SI termina pasando por la api del sistema.
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] sobre apis Findnextfile en vb6
Programación Visual Basic
AlxSpy 2 1,967 Último mensaje 31 Marzo 2011, 16:18 pm
por AlxSpy
duda sobre apis de windows de 32 bits
Programación General
AlxSpy 2 3,209 Último mensaje 27 Agosto 2011, 02:32 am
por AlxSpy
[Duda] Indetectar APis?
Análisis y Diseño de Malware
MrSatan 5 3,654 Último mensaje 18 Diciembre 2012, 22:21 pm
por Danyfirex
Duda con algunas APIS de VB
Ingeniería Inversa
.:UND3R:. 1 2,291 Último mensaje 25 Abril 2016, 07:47 am
por fary
Sobre un lenguaje, la ISA, el OS, las librerías y las APIs
Dudas Generales
arkady-svidrigailov 0 1,958 Último mensaje 28 Diciembre 2017, 01:13 am
por arkady-svidrigailov
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines