.

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
NoUser

.

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:22, insgesamt 2-mal geändert.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Thorium »

Hm, warum ist das denn wichtig für dein Projekt?
Eine Sandbox müsste eigentlich ziemlich viele API Funktionen Hooken. Da würde ich mit einer Erkennung ansetzen. Und prüfen ob diese gehookt sind. Bringt dir aber garnichts bei ner VM.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
NoUser

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:22, insgesamt 1-mal geändert.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Blackskyliner »

Hab grade gefunden, wie man scheinbar VBox Emulation erkennen kann, also dasses in einer VM läuft: http://www.opensc.ws/c-c/10972-vm-detection.html

Möglicherweise kann man auch bei anderen Emulatoren über den verwendeten Treiber auf Anwesenheit einer VM prüfen.

Hoffe es hilft ;)
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Dark
Beiträge: 93
Registriert: 24.08.2007 20:36
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Dark »

Hallo,

eine wirklich gute Sandbox zu erkennen ist schwierig. Diese werden ihre Hooks direkt in der Service Descriptor Table (SDT) im Kernel einsetzen. Diese Hooks kannst du dir zum Beispiel mit Rootkit Unhooker anzeigen lassen. Wenn du in der Software dann auf Unhook All clicken würdest, würdest du merken das dien Virenscanner und deine Firewall ebenfalls ihre Arbeit einstellen. Es verändern also nicht nur Sandboxen den Teil des Kernels. Der Hook kann aber auch genau so in einer Änderung der DLL bestehen.

Nehmen wir mal das Beispiel OpenFile.
Eine Sandbox könnte:
- die Import Table deiner EXE für den API Befehl CreateFile abändern, so das statdessen ein anderer Befehl der Sandbox aufgerufen wird
- könnte den Befehl in der Kernel32.dll ersetzen
- könnte die Import Table von der Kernel32.dll so ersetzen das statt NTOpenFile ein anderer Befehl ausgeführt wird
- könnte die NTDLL.dll abändern
---- ab jetzt sind wir nicht mehr im usermode sondern im kernel mode ---
- könnte die SDT abändern
- könnte den aufgerufenen Interrupt Handler abändern

Also bräuchtest du auf jedenfall nen Systemtreiber um alle Möglichkeiten abzudecken. Sowas wie VMWare wäre durchaus möglich herauszufinden. Aber richtige Sandboxen wie Sandboxie kann man eigentlich nicht feststellen, wenn sie gut geschrieben sind.

mfg,
Dark
NoUser

Re: Sandbox erkennen [erledigt]

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:22, insgesamt 1-mal geändert.
Dark
Beiträge: 93
Registriert: 24.08.2007 20:36
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Dark »

Hi,

wie du selbst schon gesagt hast, ist es nahezu unmöglich einen 100% Schutz zu schreiben.
Du könntest eine kleine Hürde einbauen, in dem du, nach der Installation, einen Neustart verlangst. Du trägst dann z.b. in der Registry bei RunOnce ein Programm ein, das ausgefüht werden muss bevor dein Programm funktioniert (am besten mit einer bestimmten Parameterkombination).
Dies hört sich im ersten Moment vll. nen bischen verrückt an, aber man kann eine Sandbox leider nicht neustarten.

Aus eigener Erfahrung muss ich sagen, das einem dann meistens die Lust vergeht, jetzt die erstellten Registrie Dateien zu durchsuchen und schauen, was da noch ausgeführt werden muss etc.
Wenn es aber wirklich einer auf deine Software abgesehen hat, würde er notfalls zum Olly Debugger greifen, deine Checks rausschmeißen, die EXE neu abspeichern und dann war es eh umsonst.

Und denk dran, lieber einen mehr, der die Software nicht legal benutzt, als verärgerte Kunden bei denen der Kopierschutz meint, es wäre ne Sandbox oder VM aktiv :P

mfg,
Dark
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Thorium »

Schick mir mal nen Link wo man so ne Sandbox herbekommt. Da muss sich was erkennen lassen. ^^
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Dark
Beiträge: 93
Registriert: 24.08.2007 20:36
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Dark »

Hi,

du kannst ja dein Glück versuchen: http://www.sandboxie.com/

mfg,
DarkPlayer
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Sandbox erkennen [Ideen gesucht]

Beitrag von Thorium »

Morgen werd ich mal schauen.

Was soweit klar ist das Ntdll.dll gehookt wird und das kann man detecten. Muss nur was zuverlässiges stricken.

Hier ein kleiner Testcode der unter Sandboxie ein anderes Ergebnis zeigt als unter realen Bedingungen:

Code: Alles auswählen

EnableExplicit

Define.i Ntdll, NtCreateFileAddr

Ntdll = OpenLibrary(#PB_Any, "ntdll.dll")
NtCreateFileAddr = GetFunction(Ntdll, "NtCreateFile")

MessageRequester("", Hex(PeekQ(NtCreateFileAddr), #PB_Quad))
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten