Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mad Antrax

#641
Jaque-mate.

Tu código es más estable al no usar WMI, pero algo extenso (para mi gusto) si lo implementas en stubs o similares.

De todas formas, seguro que ay otro método más sencillo y sin utilizar WMI para detectarlo... hay que investigar más!!

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

Por cierto, puedes discriminar un poco más la función, me explico:

"*VIRTUAL*" = VirtualPC
"*VMWARE*" = VMWare
"*VBOX*" = VirtualBox

Puedes hacer que la función de vuelva un Integer, ejemplo:

Código (vb) [Seleccionar]
   Select Case True
        Case sData Like "*VIRTUAL*"
           IsVirtualPCPresent = 1
        Case sData Like "*VMWARE*"
           IsVirtualPCPresent = 2
        Case sData Like "*VBOX*"
            IsVirtualPCPresent = 3
        Case Else
            IsVirtualPCPresent = 0
    End Select


Así el usuari podrá determinar si finaliza su ejecución solo si nos encontramos en VMWARE o solo en VirtualPC, etc...

Saludos, muy buen código.
#642
Cita de: cobein en  1 Julio 2008, 00:47 AM
Un comentario acerca del code, seria coveniente agregar control de errores porque en algunos sistemas al tratar de acceder a WMI nos da error. Por lo me nos en vista con una cuenta restringida.

Vaya, no lo sabia...

De todas formas he mejorado la función. Ahora es capaz de discriminar bajo que entorno de virtualización se encuentra nuestra aplicación, el control de errores devuelve -1, permitiendo al usuario seguir ejecutando o no su soft cuando no ha sido posible detectar una VirtualMachine.

Esta noche posteo la función mejorada. Saludos!! :P
#643
Cita de: aaronduran2 en 30 Junio 2008, 23:00 PM
Saludos, y perdón por el post tan largo.

Perdonado, pero usa las etiquetas de código GeSHI, ejemplo


[code][/ code] No se utiliza



[code=vb][/ code] Sí se utiliza


Así queda en formato VB6 y mola más :xD

Saludos!![/code][/code]
#644
Cita de: jackl007 ツ en 30 Junio 2008, 21:48 PM
por cierto incluso el mismo code funciona con VMware.
(es multiWare el codigo) ;D

Vaya, pues me ahorraste tiempo. Estaba instalando un Windows XP en un VMWare para probar, pero ya no hace falta.

Edito el primer post para que la gente sepa que sirve para VirtualPC, VMWare y posiblemente algún otro software de Virtualización, lástima que la función se llama IsVirtualPCPresent() y no IsVirtualEnvironmentPresent() o algo por el estilo, en fin...

Con esto completamos:

IsAnubisPresent() = Detects Anubis SandBox.
IsSandboxiePresent() = Detects Sandboxie SandBox.
IsVirtualPCPresent() = Detects VirtualPC 2007 & VMWare & ... Software.

Saludos y gracias por los comentarios.!!
#645
Tatatachan!!... aquí vuelvo con mi tercera función para los "anti's" en VB6, en este caso me he metido con la máquina virtual de Microsoft: VirtualPC 2007 Este método me gusta bastante porque es el primero que ha sido desarrollado íntegramente por mí, y de momento no he visto nadie que detecte un VirtualPC de la misma forma, empecemos...

¿Que método utilizas para detectar VirtualPC?

Revisé los otros sources en C/C++ para ver si me inspiraba, pero utilizaban técnicas algo profesionales para el pobre compilador de VB6, seguramente hay otra manera para detectar VirtualPC con VB6 pero esta es una de las más fáciles:

Con la ayuda de los Script WMI, hacemos un volcado de información sobre cada disco duro instalado en el equipo, concretamente buscamos 3 variables: Caption, Model  y PNP DeviceID. En un equipo físico obtendremos nombres relativos al fabricante y modelo de nuestro HDD, mientras que en VirtualPC obtendremos nombres parecidos a estos:

Virtual HD, IDE\DISKVIRTUAL01_, etc...

Así que recopilamos toda la información en una sola variable y buscamos el string: "VIRTUAL" en su interior, hacemos una comparación y ya tenemos nuestro anti-VirtualPC terminado!

Ueeee, ahora... ¿me das el source?

Aquí está el modulo principal:

Código (vb) [Seleccionar]
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Program:  Anti-VirtualPC 1.0
' Coder:    MadAntrax
' Web:      foro.elhacker.net
' Date:     30/06/08
'
' Programa que detecta si nuestro malware
' se ejecuta en la máquina virtual: Virtual PC
' permitiendo finalizar el proceso de nuestro
' malware :)
'
' Usar la función IsVirtualPCPresent() As Boolean
' Detecta el nombre, modelo y driver del HD para determinar
' si nos encontramos en VirtualPC
'
' Original idea: MadAntrax
' Referencias: http://www.microsoft.com/technet/scriptcenter/scripts/storage/disks/drives/stdvvb19.mspx?mfr=true
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function IsVirtualPCPresent() As Boolean
    Dim DetectVirtualPC As String
   
    Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set HDS = WMI.ExecQuery("Select * from Win32_DiskDrive")

    DetectVirtualPC = ""
    For Each objHDS In HDS
        DetectVirtualPC = DetectVirtualPC & objHDS.Caption & objHDS.Model & objHDS.PNPDeviceID
    Next
   
    If InStr(UCase(DetectVirtualPC), "VIRTUAL") <> 0 Then
        IsVirtualPCPresent = True
    Else
        IsVirtualPCPresent = False
    End If
End Function


y para llamarlo, podemos usar algo así:

Código (vb) [Seleccionar]
Sub Main()
    If IsVirtualPCPresent = True Then
        MsgBox "VirtualPC: Detectado"
        End
    End If
    'Your Code Here
End Sub



Saludos!!

EDITADO: Parece ser que esta misma función detecta de forma correcta VirtualPC 2007 y VMWare (los 2 software de virtualización más usados). Así que esta función sirve para los 2

>:D
#646
Cita de: jackl007 ツ en 30 Junio 2008, 03:36 AM
una manera sencilla es que si han instlado las tools del vm, mirar el proceso que carga, y de ese modo saber si se esta correiendo sobre VM (mayormnte la gente las habilita porque son muy utiles).
claro qe tambien se podria mirar el procesador, la mainboard, y los simuladores ...

Exacto!! Esta es la idea que estaba diseñando. Si el usuario ha instalado las Virtual Machine Editions se puede comprobar si existe cierto proceso en ejecución para determinar si estamos dentro de una VM.

Pero la mejor forma es mirar el nombre "virtual" que asigna VirtualPC o VMWare a la tarjeta de red NIC con la ayuda de scripts WMI. Esta noche posteo un source de ejemplo.

Saludos!! :)
#647
Cita de: Kizar en 29 Junio 2008, 18:50 PM
En vb no se puede hacer anti vmware ni anti virtualpc.
Es necesario usar asm.

Seguro?, aun no te lo puedo garantizar porque estoy trabajando en ello... pero creo que anti-virtualpc lo podré programar usando solo VB6 y script WMI

En unos días posteo mis avances. Saludos!!
#648
Bueno, lo prometido es deuda... aquí os deja la función para detectar si nuestro malware se está ejecutando en la Sandbox de Sandboxie: IsSandboxiePresent()

¿Que es Sandboxie?

Es un software diseñado para ejecutar aplicaciones dentro de un entorno seguro (dentro de una Sandbox). Su funcionamiento consiste en aislar el ejecutable y detectar todos los cambios que realice en el sistema, permitiendo borrarlos con un solo click. Se parece a una máquina virtual, pero más sencillo de usar y configurar, para más info:

:http://www.sandboxie.com/

¿Que método utiliza para detectar Sandboxie?

He incluido 2 métodos, uno de ellos programado por steve10120 de hackhound y el otro método (menos efectivo pero mucho más simple) programado por mí. El segundo método requiere que nuestro malware tenga un Form en su interior.

El método de steve10120 detecta si se ha cargado el modulo SbieDll.dll dentro de nuestra aplicación, si se encuentra el módulo significa que nuestro malware está dentro de una Sandbox.

El otro método comprueba el caption de nuestro Formulario, si detecta la string "[ # ]" significa que nuestra aplicación se encuentra dentro de la Sandbox. Como verás el primer método es más profesional, pero más fácilmente detectable por la heurística al usar una API. El segundo método solo busca una serie de caracteres, esto puede inducir a falsos positivos pero es más sencillo de implementar.

Ok, ¿y el source?

Aquí os dejo el source completo:

Código (vb) [Seleccionar]
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Program:  Anti-Sandboxie 1.0
' Coder:    MadAntrax
' Web:      foro.elhacker.net
' Date:     28/06/08
'
' Programa que detecta si nuestro malware
' se ejecuta en la SandBox de Sandboxie, permitiendo
' finalizar el proceso y evitar que inspeccionen nuestro
' malware :)
'
' Usar la función IsSandboxiePresent(byval OptionToCheck As Integer) As Boolean
' Se han añadido 2 métodos de detección para Sandboxie, el primero
' está basado en la idea original de http://hackhound.org
'
' El segundo método esta diseñado integramente por mí
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Ejemplos para usar esta función:
'
'   Método 1:
'       If IsSandboxiePresent(1) = True Then End
'
'   Método 2:
'       If IsSandBoxiePresent(2,Form1) = True Then End
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Function IsSandBoxiePresent(ByVal OptionToCheck As Integer, Optional MainFrm As Form) As Boolean
    Select Case OptionToCheck
        Case 1  'Recomendado
            Dim hSbie As Long
           
            hSbie = GetModuleHandle("SbieDll.dll")
            If hSbie <> 0 Then
                IsSandBoxiePresent = True
            Else
                IsSandBoxiePresent = False
            End If
        Case 2  'No recomendado
            If InStr(MainFrm.Caption, "[#]") <> 0 Then
                IsSandBoxiePresent = True
            Else
                IsSandBoxiePresent = False
            End If
    End Select
End Function


Y para llamarlo hay que usar lo siguiente:

Código (vb) [Seleccionar]
Sub Main()
    If IsSandBoxiePresent(1) = True Then End
    '   Your Code Hare...
End Sub


Y si quieres usar el segundo método, de esta forma:

Código (vb) [Seleccionar]
Private Sub Form_Load()
    If IsSandBoxiePresent(2, Form1) = True Then End
    'Your Code Here
End Sub


Saludos!! :P
#649
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
#650
Cita de: astaroth_15 en 28 Junio 2008, 00:15 AM
mad, en win vista para que te vaya rapido, tienes que ponerlo en modo clasico

COÑOOOOOOO

Era esooooo!! jajajaja. Que tonto soy. Por lo que parece, el Aero de Windows Vista hace que el IDE de VB6 funcione más lento... ha sido cambiar el tema a Windows Clásico y el problema se solucionó al instante!

Ahora ya puedo programar rápido!!! mil gracias astaroth_15