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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Otra alternativa a para ocultar una api de los AV
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Otra alternativa a para ocultar una api de los AV  (Leído 3,923 veces)
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Otra alternativa a para ocultar una api de los AV
« en: 13 Septiembre 2010, 09:48 am »

Hola me resulto curioso esto de declarar a las apis por su ordinal y bueno de la cosa es que los AV no detectan estas apis, lo malo es que dependiendo de la versión de la dll el ordinal puede cambiar. pero es otra buena alternativa.

una pequeña muestra

Código:
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "#216" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function URLDownloadToFile_Seven Lib "urlmon" Alias "#217" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Declare Function GetProcAddressXP Lib "kernel32.dll" Alias "#409" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressVISTA Lib "kernel32.dll" Alias "#548" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetProcAddressSEVEN Lib "kernel32.dll" Alias "#580" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Declare Function LoadLibraryXP Lib "kernel32.dll" Alias "#581" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibraryVISTA Lib "kernel32.dll" Alias "#759" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadLibrarySEVEN Lib "kernel32.dll" Alias "#827" (ByVal lpLibFileName As String) As Long

Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long

Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As tOSVERSIONINFO) As Long

Private Type tOSVERSIONINFO
    dwOSVersionInfoSize         As Long
    dwMajorVersion              As Long
    dwMinorVersion              As Long
    dwBuildNumber               As Long
    dwPlatformId                As Long
    szCSDVersion                As String * 128
End Type

Dim OSV As tOSVERSIONINFO


Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    If OSV.dwMajorVersion >= 7 Then
        DownloadFile = URLDownloadToFile_Seven(0, URL, LocalFilename, 0, 0) = 0
    Else
        DownloadFile = URLDownloadToFile(0, URL, LocalFilename, 0, 0) = 0
    End If
End Function

Private Function GetProcAddress(ByVal hModule As Long, ByVal lpProcName As String) As Long
    Select Case OSV.dwMajorVersion
        Case 5
            GetProcAddress = GetProcAddressXP(hModule, lpProcName)
        Case 6
            GetProcAddress = GetProcAddressVISTA(hModule, lpProcName)
        Case 7
            GetProcAddress = GetProcAddressSEVEN(hModule, lpProcName)
    End Select
End Function

Private Function LoadLibrary(ByVal lpLibFileName As String) As Long
    Select Case OSV.dwMajorVersion
        Case 5
            LoadLibrary = LoadLibraryXP(lpLibFileName)
        Case 6
            LoadLibrary = LoadLibraryVISTA(lpLibFileName)
        Case 7
            LoadLibrary = LoadLibrarySEVEN(lpLibFileName)
    End Select
End Function


Private Sub Form_Initialize()
    OSV.dwOSVersionInfoSize = Len(OSV)
    Call GetVersionEx(OSV)
End Sub

Private Sub Form_Load()
    Dim hMod As Long
   

    DownloadFile "http://www.allapi.net", App.Path & "\allapi.htm"
   
    hMod = LoadLibrary("user32.dll")
    MsgBox GetProcAddress(hMod, "MessageBoxA")
    FreeLibrary hMod
   
End Sub

no estoy seguro si con los cambios de los SPx pueda cambiar yo solo compare por la version del SO

Saludos.


En línea

azul27

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #1 en: 13 Septiembre 2010, 13:07 pm »

Lo cierto es que no entiendo el funcionamiento y me interesa mucho.. si pudieras
poner otro ejemplo, expicado sería de gran ayuda

Gracias!


En línea

fary


Desconectado Desconectado

Mensajes: 1.075



Ver Perfil WWW
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #2 en: 13 Septiembre 2010, 15:09 pm »

Lo cierto es que no entiendo el funcionamiento y me interesa mucho.. si pudieras
poner otro ejemplo, expicado sería de gran ayuda

Gracias!

Fijate bien como declara las api:

Código:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "#216" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

@LeandroA donde puedo ver ls ordinales de las api?

salu2!
En línea

Un byte a la izquierda.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #3 en: 13 Septiembre 2010, 17:18 pm »

El problema de los ordinales es que no son estaticos :-\... y claro, no sabemos cuando cambian... Asi que bien, se puede hacer la comprobacion que tu haces, pero para bien tendriamos que tener una buena lista de ordinales, ya que posiblemente tambien varien en las versiones para servidores y esas cosas....

Una formas mas bonita de sacar el MajorVersion:
Código
  1. 'KERNEL32
  2. Private Declare Function GetVersion Lib "KERNEL32" () As Long
  3.  
  4. Sub Main()
  5.     MsgBox (GetVersion And &HFF)
  6. End Sub
Sin estructuras ni leches :P

Date cuenta que el MajorVersion para XP es el mismo que para W$2000 y W$2003... asi que hay que filtrar con mas detalle...
Código:
http://msdn.microsoft.com/en-us/library/ms724832(v=VS.85).aspx

Saludos :)
« Última modificación: 13 Septiembre 2010, 17:20 pm por Karcrack » En línea

burbu_1

Desconectado Desconectado

Mensajes: 159


hamen gaoz


Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #4 en: 13 Septiembre 2010, 17:50 pm »

Muy buena Leandro  ;-) ;-) ;-), es un poco más jaleo que usar esos fantásticos Invoke que andan por ahí, pero seguro que resulta muy útil.

Una pregunta que igual se sale un poco del tema.... por qué se pone ese símbolo # delante del ordinal. Lo había visto con números muy grandes pero estos son bajitos  :huh:


donde puedo ver ls ordinales de las api?
Con el PE Explorer abres la dll , miras las funciones que exporta y ahí aparecen


En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #5 en: 13 Septiembre 2010, 19:40 pm »

Una pregunta que igual se sale un poco del tema.... por qué se pone ese símbolo # delante del ordinal. Lo había visto con números muy grandes pero estos son bajitos  :huh:
Cuando la almohadilla (#) va detras de un numero esto significa que es un Double... Pero fijate que lo que hay ahi es una cadena de texto "#XXX"... Y puesto asi lo que hace es especificar que se cargue la funcion por ordinal y no por nombre...
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #6 en: 13 Septiembre 2010, 19:45 pm »

las ordinales se pueden obtener del mismo Link.exe de visual basic fijate este ejemplo

http://www.recursosvisualbasic.com.ar/htm/listado-api/163-exportar-funciones-api-de-dll.htm

@Karcrack esta mucho mas piola con GetVersion  ;)

yo solo lo testie con xp sp3 (vista y Seven en la pc virtual no se que spx) como ya dije no se si varian con las modificaciones de los spx, pero bueno esto es para usar solo con las apis problematicas con respecto a los AV
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #7 en: 14 Septiembre 2010, 04:21 am »

Interesante Leandro, cada vez mas seguido estoy viendo codes con esta manera de declarar, me imaginé que venía por el lado de los AV ... confimado entonces.

Hice una comparacion rápida con Con XP-PRO SP2 y SP3, en kernel32:

LoadLibrary = 578 (SP2)
LoadLibrary = 581 (SP3)

GetProcAddress = 408 (SP2)
GetProcAddress = 409 (SP3)


Karcrack: muy bonita esa Getversion, no habrá algo igual de bonita para la Minor ?



En línea

Adrian Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #8 en: 14 Septiembre 2010, 15:17 pm »

Karcrack: muy bonita esa Getversion, no habrá algo igual de bonita para la Minor ?
Código:
(GetVersion() And &HFF00&) \ &H100
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Otra alternativa a para ocultar una api de los AV
« Respuesta #9 en: 15 Septiembre 2010, 00:22 am »

Buena Karcrack, mirá si será bonita... que hasta funciona en Windows millenium !!!

En línea

Adrian Desanti
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Priceminister, otra alternativa a eBay
Noticias
wolfbcn 0 1,657 Último mensaje 24 Mayo 2011, 18:10 pm
por wolfbcn
Fluent.io, una interfaz alternativa para Gmail simple y agradable
Noticias
wolfbcn 0 1,812 Último mensaje 21 Febrero 2012, 21:59 pm
por wolfbcn
Posible alternativa para WPA!
Hacking Wireless
Free4all 4 3,541 Último mensaje 8 Marzo 2012, 20:59 pm
por Free4all
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines