Aquí vuelvo con una nueva función: IsAnubisPresent(). Dicha función permite de una forma muy rápida saber si nuestra aplicación se está ejecutando dentro de la SandBox de Anubis, permitiendo en tal caso terminar la ejecución del programa y evitar que nuestras funciones sean inspeccionadas por el usuario, pero antes...
¿Que es Anubis?
Anubis es un servicio gratuito que permite a un usuario enviar un fichero ejecutable para ser examinado de forma exhaustiva. Anubis es una aplicación con un front-end basado en Web, pero el back-end sigue tratándose de un simple PC con Windows instalado y una SandBox que recopila información de los ficheros enviados.
Anubis Web :http://anubis.iseclab.org/
¿Como funciona IsAnubisPresent()?
Bien, como ya se ha explicado, el back-end de este servicio es un Windows completo: con su registro, sus ficheros, sus variables de sistema, etc... mucha de esta información es única (por ejemplo el número de serie del HDD, el número de serie del ID de Windows, etc...) y con una simple comparación podemos saber si nuestro ejecutable esta siendo analizado desde ese Sistema Operativo en concreto
Vale, lo entiendo... pero ¿como has adivinado los números de serie del Windows de Anubis?
Bueno, la idea no es 100% mía. En internet circula un Source algo extenso y desordenado que recoge la información de una variable del registro para comparar el ProductId, viendo ese source se me ocurrió la idea de programar mi propio: Anubis-Dumper. Este programa recopila dicha información única del Sistema Operativo Windows de Anubis y genera carpetas en la raiz con los valores recopilados, con el único fin de mostrar dichos valores por el propio sistema de análisis de Anubis.
Aquí una captura del Anubis-Dumper que me permitió recopilar los datos
(http://img115.imageshack.us/img115/1852/anubisqc3.jpg)
Una vez que tenemos los valores, solo he tenido que generar una sencilla función que haga las comprobaciones oportunas para detectar si el ejecutable se haya bajo el análisis de Anubis
Ole!, dejemonos de royos, donde está el source?
Aquí te dejo el source principal: Anti-Anubis
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Program: Anti-Anubis 1.0
' Coder: MadAntrax
' Web: foro.elhacker.net
' Date: 27/06/08
'
' Programa que detecta si nuestro malware
' se ejecuta en la SandBox de Anubis, permitiendo
' finalizar el proceso y evitar que inspeccionen nuestro
' malware :)
'
' Original idea: http://hackhound.org
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function IsAnubisPresent(ByVal OptionToCheck As Integer) As Boolean
On Error Resume Next
Set WShell = CreateObject("WScript.Shell")
Select Case OptionToCheck
Case 1 'Recomendado
If GetSerialNumber(Environ("SystemDrive") & "\") = "1824245000" Then
IsAnubisPresent = True
Else
IsAnubisPresent = False
End If
Case 2 'Recomendado
If WShell.RedRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId") = "76487-337-8429955-22614" Then
IsAnubisPresent = True
Else
IsAnubisPresent = False
End If
Case 3 'No recomendado
If UCase(App.EXEName) = "SAMPLE" Then
IsAnubisPresent = True
Else
IsAnubisPresent = False
End If
Case 4 'No recomendado
If UCase(Environ("USERNAME")) = "USER" Then
IsAnubisPresent = True
Else
IsAnubisPresent = False
End If
End Select
End Function
Public Function GetSerialNumber(DriveLetter As String) As Long
Buffer1 = String$(255, Chr$(0))
Buffer2 = String$(255, Chr$(0))
Res = GetVolumeInformation(DriveLetter, Buffer1, Len(Buffer1), SerialNum, 0, 0, Buffer2, Len(Buffer2))
GetSerialNumber = SerialNum
End Function
Para ejecutar el programa se recomienda lo siguiente:
Sub Main()
If Is AnubisPresent(1) = True Then End
'Your Code Here...
End Sub
Y por si alguien le interesa, os dejo el Source del Anubis-Dumper, solo hay que compilar el dumper y enviarlo para analizar al propio Anubis, en cuestión de minutos obtendremos las variables preparadas para programar las condiciones para el Anti-Anubis.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Program: Anubis-Dumper 1.0
' Coder: MadAntrax
' Web: foro.elhacker.net
' Date: 27/06/08
'
' Programa que recopila cierta información del sistema
' y genera carpetas en la raíz con el único fin
' de mostrar dicho contenido en la web de Anubis
'
' Original idea: http://hackhound.org
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function GetSerialNumber(strDrive As String) As Long
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
GetSerialNumber = SerialNum
End Function
Sub Main()
On Error Resume Next
Set WShell = CreateObject("WScript.Shell")
MkDir GetSerialNumber(Environ("SystemDrive") & "\")
MkDir Environ("USERNAME")
MkDir App.EXEName
AA = WShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId")
MkDir AA
DoEvents
End
End Sub
Dejo adjunto un fichero con los 2 sources preparados. Saludos!!
Parece bueno; voy a probarlo. Buen trabajo, ||MadAntrax||.
Cita de: aaronduran2 en 27 Junio 2008, 23:21 PM
Parece bueno; voy a probarlo. Buen trabajo, ||MadAntrax||.
No lo parece... lo es!! :P :xD
Próximo objetivo:
IsSandBoxiePresent() (Ya lo tengo terminado, estoy redactando el testo del post...)
Esta muy bonito el code , voy a bajarlo y provarlo ;) . hace tiempo que no posteabas modulos .
muchas gracias ;) .
PD:Los que lo ocupen dejen los comentarios tal cual , ya que es injusto que el que lo ocupe diga que el programo todo el proyecto ;) .
Muy buen aporte Mad ;)
Saludos :D
Muy bueno Mad, te lo pongo en la biblioteca de sources, aunque también te lo podías poner solo xDD Buen trabajo a ver cuanto tiempo dura siendo tuyo esta vez.... :¬¬
Cita de: E0N en 28 Junio 2008, 14:13 PM
Muy bueno Mad, te lo pongo en la biblioteca de sources, aunque también te lo podías poner solo xDD Buen trabajo a ver cuanto tiempo dura siendo tuyo esta vez.... :¬¬
Realmente no es mio, en otros foros he visto que usan la misma técnica para detectar el s/n del HDD. Lo que sí es mio es el Anubis-Dumper que me sirvió para recopilar otros datos del SO Windows de Anubis y poder crearme mi própia función de IsAnubisPresent()
Saludos