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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Source] IsSandboxiePresent() - Sistema AntiSanboxie
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Source] IsSandboxiePresent() - Sistema AntiSanboxie  (Leído 5,686 veces)
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
[Source] IsSandboxiePresent() - Sistema AntiSanboxie
« en: 28 Junio 2008, 16:04 pm »

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
  1. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. ' Program:  Anti-Sandboxie 1.0
  3. ' Coder:    MadAntrax
  4. ' Web:      foro.elhacker.net
  5. ' Date:     28/06/08
  6. '
  7. ' Programa que detecta si nuestro malware
  8. ' se ejecuta en la SandBox de Sandboxie, permitiendo
  9. ' finalizar el proceso y evitar que inspeccionen nuestro
  10. ' malware :)
  11. '
  12. ' Usar la función IsSandboxiePresent(byval OptionToCheck As Integer) As Boolean
  13. ' Se han añadido 2 métodos de detección para Sandboxie, el primero
  14. ' está basado en la idea original de http://hackhound.org
  15. '
  16. ' El segundo método esta diseñado integramente por mí
  17. '
  18. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  19. '
  20. ' Ejemplos para usar esta función:
  21. '
  22. '   Método 1:
  23. '       If IsSandboxiePresent(1) = True Then End
  24. '
  25. '   Método 2:
  26. '       If IsSandBoxiePresent(2,Form1) = True Then End
  27. '
  28. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  29.  
  30. Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
  31.  
  32. Function IsSandBoxiePresent(ByVal OptionToCheck As Integer, Optional MainFrm As Form) As Boolean
  33.    Select Case OptionToCheck
  34.        Case 1  'Recomendado
  35.            Dim hSbie As Long
  36.  
  37.            hSbie = GetModuleHandle("SbieDll.dll")
  38.            If hSbie <> 0 Then
  39.                IsSandBoxiePresent = True
  40.            Else
  41.                IsSandBoxiePresent = False
  42.            End If
  43.        Case 2  'No recomendado
  44.            If InStr(MainFrm.Caption, "[#]") <> 0 Then
  45.                IsSandBoxiePresent = True
  46.            Else
  47.                IsSandBoxiePresent = False
  48.            End If
  49.    End Select
  50. End Function

Y para llamarlo hay que usar lo siguiente:

Código
  1. Sub Main()
  2.    If IsSandBoxiePresent(1) = True Then End
  3.    '   Your Code Hare...
  4. End Sub
  5.  

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

Código
  1. Private Sub Form_Load()
  2.    If IsSandBoxiePresent(2, Form1) = True Then End
  3.    'Your Code Here
  4. End Sub
  5.  

Saludos!! :P


« Última modificación: 28 Junio 2008, 16:07 pm por ||MadAntrax|| » En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #1 en: 29 Junio 2008, 12:25 pm »

Muy buena recopilacion Mad :D Ya no hay escusa para que nos detecten los malware :xD :xD

Saludos :D


En línea

krackwar


Desconectado Desconectado

Mensajes: 900


Ver Perfil
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #2 en: 29 Junio 2008, 17:02 pm »

Muy buena recopilacion Mad :D Ya no hay escusa para que nos detecten los malware :xD :xD

Saludos :D
Ahora solo falta el anti VM  :xD :xD :xD . Muy bueno el code .
En línea

Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #3 en: 29 Junio 2008, 17:33 pm »

Ahora solo falta el anti VM  :xD :xD :xD . Muy bueno el code .

http://invisiblethings.org/papers/redpill.html

Un Saludo  :)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Kizar


Desconectado Desconectado

Mensajes: 1.325


kizar_net


Ver Perfil
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #4 en: 29 Junio 2008, 18:50 pm »

En vb no se puede hacer anti vmware ni anti virtualpc.
Es necesario usar asm.
En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #5 en: 29 Junio 2008, 19:18 pm »

Asm o C.

Yo pienso que las diferencias entre ASM o C son muy pocas. Ahora si para hacer Anti VM o VP se necesitan interrupciones, retiro lo dicho :P
En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #6 en: 30 Junio 2008, 00:17 am »

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!!
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
‭‭‭‭jackl007


Desconectado Desconectado

Mensajes: 1.403


[UserRPL]


Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #7 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 ...
En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #8 en: 30 Junio 2008, 11:03 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!! :)
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: [Source] IsSandboxiePresent() - Sistema AntiSanboxie
« Respuesta #9 en: 1 Julio 2008, 13:49 pm »

Me puse a cureosear un poco despues de ver este post y vi otra manera de ver si nuestra aplicacion esta corriendo en una sandbox, no se que tan buena sera pero al parecer funciona correctamente con Sandboxie.

La mecanica es simple, todas las claves, archivos, semaforos, etc. son redireccionados por el sandbox, asi que simplemente escaneando las claves abiertas por nuetra aplicacion podemos ver que estan redireccionadas a la hive creada por el sandbox.

Lo dejo como curiosidad

Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module      : mIsAppSandboxed
  3. ' DateTime    : 01/07/2008 08:32
  4. ' Author      : Cobein
  5. ' Mail        : cobein27@hotmail.com
  6. ' WebPage     : http://cobein27.googlepages.com/vb6
  7. ' Purpose     : Determine if the app is running into a sandbox
  8. ' Usage       : At your own risk
  9. ' Requirements: None
  10. ' Distribution: You can freely use this code in your own
  11. '               applications, but you may not reproduce
  12. '               or publish this code on any web site,
  13. '               online service, or distribute as source
  14. '               on any media without express permission.
  15. '
  16. ' Reference   :
  17. '
  18. ' History     : 01/07/2008 First Cut....................................................
  19. '---------------------------------------------------------------------------------------
  20. Option Explicit
  21.  
  22. Private Const STATUS_INFO_LENGTH_MISMATCH   As Long = &HC0000004
  23. Private Const HEAP_ZERO_MEMORY              As Long = &H8
  24.  
  25. Private Type SYSTEM_HANDLE
  26.    UniqueProcessId                         As Integer
  27.    CreatorBackTraceIndex                   As Integer
  28.    ObjectTypeIndex                         As Byte
  29.    HandleAttributes                        As Byte
  30.    HandleValue                             As Integer
  31.    pObject                                 As Long
  32.    GrantedAccess                           As Long
  33. End Type
  34.  
  35. Private Type SYSTEM_HANDLE_INFORMATION
  36.    uCount                                  As Long
  37.    aSH()                                   As SYSTEM_HANDLE
  38. End Type
  39.  
  40. Private Declare Function NtQuerySystemInformation Lib "NTDLL.DLL" (ByVal SystemInformationClass As Long, ByVal pSystemInformation As Long, ByVal SystemInformationLength As Long, ReturnLength As Long) As Long
  41. Private Declare Function NtQueryObject Lib "NTDLL.DLL" (ByVal ObjectHandle As Long, ByVal ObjectInformationClass As Long, ByVal ObjectInformation As Long, ByVal ObjectInformationLength As Long, ReturnLength As Long) As Long
  42. Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
  43. Private Declare Function lstrcpyW Lib "kernel32" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
  44. Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  45. Private Declare Function GetProcessHeap Lib "kernel32" () As Long
  46. Private Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
  47. Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
  48. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  49.  
  50. Public Sub Main()
  51.    MsgBox IsAppSandboxed
  52. End Sub
  53.  
  54. Public Function IsAppSandboxed() As Boolean
  55.    Dim lSize               As Long
  56.    Dim bvBuff()            As Byte
  57.    Dim tSHI                As SYSTEM_HANDLE_INFORMATION
  58.    Dim i                   As Long
  59.    Dim lPID                As Long
  60.  
  61.    lSize = 1024: ReDim bvBuff(lSize) 'this is because ReturnLength returns 0 :S
  62.    Do While NtQuerySystemInformation(16, VarPtr(bvBuff(0)), ByVal lSize, 0&) = _
  63.       STATUS_INFO_LENGTH_MISMATCH
  64.        lSize = lSize * 2
  65.        ReDim bvBuff(lSize)
  66.    Loop
  67.  
  68.    Call CopyMemory(tSHI.uCount, bvBuff(0), &H4)
  69.    ReDim tSHI.aSH(tSHI.uCount - 1)
  70.    Call CopyMemory(tSHI.aSH(0), bvBuff(4), (tSHI.uCount - 1) * 16)
  71.  
  72.    lPID = GetCurrentProcessId
  73.  
  74.    For i = 0 To tSHI.uCount - 1
  75.        If tSHI.aSH(i).UniqueProcessId = lPID Then 'Filter by local handles
  76.            If tSHI.aSH(i).ObjectTypeIndex = 20 Then 'Filter by Key
  77.                If InStr(1, GetLocalObjectName(tSHI.aSH(i).HandleValue), "SANDBOX_") Then
  78.                    IsAppSandboxed = True
  79.                    Exit for '<----EDIT
  80.                End If
  81.            End If
  82.        End If
  83.    Next
  84. End Function
  85.  
  86. Public Function GetLocalObjectName(ByVal lHandle As Long) As String
  87.    Dim lMem    As Long
  88.    Dim sPath   As String
  89.    Dim lSize  As Long
  90.  
  91.    lMem = HeapAlloc(GetProcessHeap, HEAP_ZERO_MEMORY, &H1000)
  92.    Call NtQueryObject(lHandle, 1, lMem, &H1000, lSize)
  93.    Call HeapFree(GetProcessHeap, 0, lMem)
  94.    If Not lSize > 8 Then Exit Function
  95.    sPath = Space(lSize)
  96.    Call lstrcpyW(sPath, lMem + &H8)
  97.    sPath = StrConv(sPath, vbFromUnicode)
  98.    GetLocalObjectName = Left$(sPath, lstrlen(sPath))
  99. End Function
  100.  
  101.  
« Última modificación: 1 Julio 2008, 14:11 pm por cobein » En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines