Necesito una Lista de HexTypes | WinAPI

Iniciado por **Aincrad**, 21 Marzo 2019, 23:38 PM

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

**Aincrad**

Hola, como dice el titulo, Estoy en busca de una lista de Signaturas Hexadecimal , de las Funciones de WinAPI. por ejemplo :

Funcion :

Código (vbnet) [Seleccionar]
Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Integer) As Short

HexType :

Código (vbnet) [Seleccionar]
Dim KeyboardHook As String() = {"48 6F 6F 6B 43 61 6C 6C 62 61 63 6B", "47 65 74 41 73 79 6E 63 4B 65 79 53 74 61 74 65"}

Entonces con un Scaner Puedo tomar esa signatura Hexadecimal y Identificar los .exe que Usan la funcion GetAsyncKeyState

----------------------------------------------------------------------

En si No se como sacar esa Signatura hexadecimal o no se si hay alguna lista ya con todas las signaturas.


Gracias De antemano




Eleкtro

Cita de: **Aincrad** en 21 Marzo 2019, 23:38 PM
HexType :

Código (vbnet) [Seleccionar]
Dim KeyboardHook As String() = {"48 6F 6F 6B 43 61 6C 6C 62 61 63 6B", "47 65 74 41 73 79 6E 63 4B 65 79 53 74 61 74 65"}

¿...?. ¿De donde has sacado eso?.








**Aincrad**

#2
Cita de: Eleкtro en 22 Marzo 2019, 04:36 AM
¿...?. ¿De donde has sacado eso?.

Me han pasado un code por dicord diciendo que es una scaner de antivirus, Y le Scanner funciona bien, de verdad detecta. Pero lo q no se como es que Obtuvieron esa Signatura HEXADECIMAL.

Gracias por ayudarme siempre, xd.




ThunderCls

Cita de: **Aincrad** en 21 Marzo 2019, 23:38 PM
Hola, como dice el titulo, Estoy en busca de una lista de Signaturas Hexadecimal , de las Funciones de WinAPI. por ejemplo :
En si No se como sacar esa Signatura hexadecimal o no se si hay alguna lista ya con todas las signaturas.



HEX("48 6F 6F 6B 43 61 6C 6C 62 61 63 6B") = ASCII("HookCallback")
HEX("47 65 74 41 73 79 6E 63 4B 65 79 53 74 61 74 65") = ASCII("GetAsyncKeyState")

Lo que hace el codigo con esa variable es buscar ambas cadenas como bytes en los ficheros. Si encuentra el patron de bytes supuestamente lo reconoce como infectado:

Código (vbnet) [Seleccionar]
Dim KeyboardHook As String() = {"48 6F 6F 6B 43 61 6C 6C 62 61 63 6B", "47 65 74 41 73 79 6E 63 4B 65 79 53 74 61 74 65"}
For Each KeyHook As String In KeyboardHook
    If ReturnHex(File).Contains(KeyHook) Then
        infected += 1
        '...
        infect.Text = infected
    End If
Next
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Eleкtro

#4
Cita de: ThunderCls en 24 Marzo 2019, 01:11 AM
HEX("48 6F 6F 6B 43 61 6C 6C 62 61 63 6B") = ASCII("HookCallback")
HEX("47 65 74 41 73 79 6E 63 4B 65 79 53 74 61 74 65") = ASCII("GetAsyncKeyState")

No si... es obvio que eso es formato Hexadecimal, mi sensación de extrañez viene dada a que el término "hex type" no significa absolutamente nada, y hay dos nombres codificados (HookCallback, GetAsyncKeyState) en lugar de uno (GetAsyncKeyState) por lo que no tiene equivalencia con lo que el usuario intentaba dar a mostrar como equivalente, así que no llegaba a estar muy claro lo que el usuario busca.

Además de que detectar esos bytes/strings en un archivo executable no lo convierte en virus como tal, ya que para empezar el nombre "HookCallback" en realidad puede ser cualquier otro nombre que el desarrollador haya querido darle a la función de callback del hook ( https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nc-winuser-hookproc ), aparte de que esto no tiene por que implicar que sea un código malicioso, ni mucho menos el uso de la función GetAsyncKeyState.
Por ende, considerar que un exe se trata de un virus simplemente por encontrar uno de esos dos strings, o ambos, me parece completamente inapropiado/inefectivo, más que nada por que cualquier código que use la función GetAsyncKeyState para otros menesteres y/o que haya declarado un hook de cualquier tipo (y aunque este fuese un hook del teclado o el ratón no-malicioso) y casualmente haya declarado una función con el nombre "HookCallback", no se salvará de un falso positivo en la frente por un "escaner" de este estilo.




Cita de: **Aincrad** en 22 Marzo 2019, 16:21 PM
Pero lo q no se como es que Obtuvieron esa Signatura HEXADECIMAL.

Puedes convertir un string a ese formato hexadecimal delimitado por espacios en blanco, así por ejemplo:

Código (vbnet) [Seleccionar]
Dim names As String() = {"HookCallback", "GetAsyncKeyState"}
Dim hexNames As String() = Array.ConvertAll(names, Function(str) BitConverter.ToString(Encoding.Default.GetBytes(str)).Replace("-"c, " "c))

For Each str As String In hexNames
   Console.WriteLine(str)
Next str


Saludos.








ThunderCls

Cita de: Eleкtro en 24 Marzo 2019, 13:13 PM
No si... es obvio que eso es formato Hexadecimal, mi sensación de extrañez viene dada a que el término "hex type" no significa absolutamente nada, y hay dos nombres codificados (HookCallback, GetAsyncKeyState) en lugar de uno (GetAsyncKeyState) por lo que no tiene equivalencia con lo que el usuario intentaba dar a mostrar como equivalente, así que no llegaba a estar muy claro lo que el usuario busca.

Estamos de acuerdo, pero como la pregunta de Aincrad consistía en cómo habían sacado esos patrones, supuse que no se había percatado que eran simples cadenas de caracteres en formato hex.

Cita de: Eleкtro en 24 Marzo 2019, 13:13 PM
Además de que detectar esos bytes/strings en un archivo executable no lo convierte en virus como tal, ya que para empezar el nombre "HookCallback" en realidad puede ser cualquier otro nombre que el desarrollador haya querido darle a la función de callback del hook ( https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nc-winuser-hookproc ), aparte de que esto no tiene por que implicar que sea un código malicioso, ni mucho menos el uso de la función GetAsyncKeyState.
Por ende, considerar que un exe se trata de un virus simplemente por encontrar uno de esos dos strings, o ambos, me parece completamente inapropiado/inefectivo, más que nada por que cualquier código que use la función GetAsyncKeyState para otros menesteres y/o que haya declarado un hook de cualquier tipo (y aunque este fuese un hook del teclado o el ratón no-malicioso) y casualmente haya declarado una función con el nombre "HookCallback", no se salvará de un falso positivo en la frente por un "escaner" de

Volvemos a estar de acuerdo 100%, solo comentaba el código citado, el cual es bien ineficiente por lo que se puede ver
Saludos
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Eleкtro

#6
Cita de: ThunderCls en 24 Marzo 2019, 16:36 PM
solo comentaba el código citado

Hombre, no hacia falta ser tan "correcto" y dar este tipo de explicaciones (aunque se agradecen). Es obvio que tu respuesta no iba dirigida a mi, puesto que citabas al usuario Aincrad, pero simplemente al ver tu respuesta quise citar la tuya para comentar lo que comenté.

Cita de: ThunderCls en 24 Marzo 2019, 16:36 PM
el cual es bien ineficiente por lo que se puede ver

Totalmente de acuerdo yo también.

¡Un saludo!








**Aincrad**

@Eleкtro @ThunderCls Por las respuestas, me quedo claro.

Es que me parecía raro también a mi. es que vi un video hace días sobre un usuario que hacia un motor antivirus en c# . Lo que hacia Primero era Debuggear un .exe que previamente fue pasado por un Crypter. usaba ollydbg y cuando empezó con el motor declaraba la signatura así :

????(Parte de una Cadena Hexadecimal) ??x64x84x54????? . algo así. y por eso me entro la duda.




ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/