.
Re: Sandbox erkennen [Ideen gesucht]
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.
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!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Sandbox erkennen [Ideen gesucht]
.
Zuletzt geändert von NoUser am 01.09.2012 07:22, insgesamt 1-mal geändert.
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
Re: Sandbox erkennen [Ideen gesucht]
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
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
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Re: Sandbox erkennen [Ideen gesucht]
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
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
Mein Blog: http://fds-team.de/cms/
Re: Sandbox erkennen [erledigt]
.
Zuletzt geändert von NoUser am 01.09.2012 07:22, insgesamt 1-mal geändert.
Re: Sandbox erkennen [Ideen gesucht]
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
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
Mein Blog: http://fds-team.de/cms/
Re: Sandbox erkennen [Ideen gesucht]
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!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Sandbox erkennen [Ideen gesucht]
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:
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!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
