Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Windows für mehr Sicherheit patchen? Ideen/Realisierung? (https://www.delphipraxis.net/132103-windows-fuer-mehr-sicherheit-patchen-ideen-realisierung.html)

blackdrake 6. Apr 2009 10:42


Windows für mehr Sicherheit patchen? Ideen/Realisierung?
 
Hallo.

Ich habe mir mal ein paar Gedanken zu zwei Sicherheitsthemen gedanken gemacht und überlegt, ob es denn nicht machbar wäre, dass man dem Betriebssystem einige Sicherheitsaspekte nachträglich durch Patches der API beibringen kann.

Folgende 2 Themen sind für Entwickler problematisch und würden gut zum Aufgabengebiet eines Betriebssystems passen:

1. Daten werden nicht sicher gelöscht

Es gibt zwar viele Tools, teils kostenpflichtig, teils kostenlos, die Daten sicher vernichten sowie den freien Speicherplatz der Festplatte reinigen. Das Problem ist nun, dass diese Vorgehen alle Rückwirkend geschehen. Besonders wenn man seinen PC "Persilrein" halten will, müsste man ja jeden Tag den freien Speicherplatz überschreiben und das am besten noch mehrfach (wegen Randmagnetisierung etc). Umständlich, uneffektiv und stresst die Festplatte.

Es wäre doch eine tolle Sache, wenn das Betriebssystem auf Wunsch alle Lösch- und Überschreibaktionen sicher machen würde. Dies kostet zwar Laufzeit, ist aber sehr sicher, wenn man Daten stets endgültig löschen möchte. Und Sicherheit ist in manchen Fällen tatsächlich viel wichtiger als Laufzeit.

Eine Idee von mir wäre jetzt:
Die Windows-API-Funktionen "DeleteFileA" und "DeleteFileW" überschreiben (Code an die DLL anhängen und Sprungpunkt umlenken?).
Ggf. ein Daemon erstellen, der die System-DLLs automatisch neu patched, wenn sie z.B. aufgrund eines Updates ersetzt werden.
Ob da Windows wegen dem Dateischutz mitmacht? Wenn nicht, dann in der WinInit-Phase die Dateien ersetzen.

Man sollte beachten, die Daten mehrfach zu überschreiben, damit man von Randmagnetisierungen möglichst wenig Informationen entnehmen kann. Das ist aber bereits etwas vorgegriffen.

Weitere Problematiken:
- Nicht nur beim Löschen, sondern auch beim Überschreiben von Dateien müssen vorher die Daten vernichtet werden.
- Zusätzlich muss das komplette Cluster zuerst vernichtet werden, bevor eine Datei verändert wird! Wenn wir eine Datei mit 200 Byte in einem 1024 Byte Cluster haben, dann sind im Cluster 824 Byte der Vorgängerdatei oder der Vorgängerversion der Datei. (Clusterüberhang)
- Werden alle Dateimodifikationen/Schreibzugriffe immer über die API abgewickelt? Wenn nein, dann muss ein extra Servicedienst hinzukommen, der für uns Dateiveränderungen überwacht (Daemon)


Wenn das ganze mit der API gar nicht machbar wäre, könnte man auch einen permanenten Daemon erstellen, der alle Aktivitäten auf der Festplatte überwacht und den Speicherplatz bei gelöschten Dateien nachträglich sicher freigibt. Die Variante wäre aber widerum nicht so schön wie die oben genannte. Ebenfalls muss auf das Überschreiben von Dateien reagiert werden. Hier müsste der Daemon sich die Datei komplett merken (RAM), dann alle Daten vernichten und wieder zurückschreiben. Mh... naja, das wäre dann aber die Super-Sicher-Einstellung, denn eigentlich ist die Randmagnetisierungsentschlüsselung super kompliziert und kostenspielig. Bei der normalen Variante müsste der Watch-Daemon aber auf jeden Fall den Clusterüberhang leeren, wenn eine Datei in irgendeiner Form verändert wurde.

2. Passwörter können mit Keyloggern ausspioniert werden.

Ein anderes Problem ist, dass Passwörter ausspioniert werden können. Das Betriebssystem bietet Möglichkeiten zum Keyboard-Hook, bietet aber auch Edit-Felder mit Masken an, die für Passwörter geeignet (gedacht) sind. Wieso unterbindet das Betriebssystem dann Hooks bei Passwortfeldern nicht?

Es gibt zwar Methoden zur Keylogger-Prävention, jedoch sind diese zum Einen nicht wirklich das gelbe vom Ei, zum anderen müssen sie von jedem Entwickler separat implementiert werden und nicht im Betriebssystem dabei, was ja eigentlich wünschenswert in der heutigen Zeit der IT-Sicherheit wäre.

Übliche Methoden zur Keylogger-Abwehr wären
1. Datenmüll senden und den selbst produzierten Datenmüll verwerfen. Scheint auf den ersten Blick zu funktionieren, jedoch macht es den PC langsam und 2 Prozesse könne nicht gleichzeitig Eingaben schützen (wobei man ja eh nicht 2 Mal einen Focus haben kann). Bei der Implementierung kam aber hinzu, dass es oft zu Grenzwertproblemen der Zeit kam, sodass der Datenmüll genau dann gesendet wurde, in dem eine Tastatureingabe statt fand. In diesen Fällen wurde der Datenmüll aufgenommen und der Tastendruck verworfen. Und solche Fälle treten um so öfter auf, um so mehr Datenmüll man versendet, was die Sicherheit erhöht.
2. Per Windows API einem Tastendruck eine Information mitgeben. Wehrt native Keylogger ab und ist effektiv, keine Grenzfälle. Problem: Keylogger können diesen Schutz einfach umgehehn, in dem sie die Information beachten. Ebenfalls ein Problem: Ein echter Tastendruck hat immer die Extrainformation 0, weswegen es nun wirklich nicht schwer ist, das zu überprüfen, wenn man einen alternativen Keylogger schreibt.
(3. Anstelle eines masked Editfeldes eine virtuelle Tastatur darstellen, die man mit der Maus bedient. Ist zwar umständlicher aber sicherer. Das ist jedoch nur eine verschiebung des Problems und keine wirkliche Lösung. Außerdem bietet Windows kein Framework für eine eingebettete (MFC, .net, ActiveX, ...) virtuelle Tastatur an)
(4. Die Funktionalität einstellen, sobald ein Keylogger mitschreibt... Das ist nun wirklich die Aufgabe eines Antivirenprogramms und wird daher nicht weiter beleuchtet)

Wie könne man aber nun Windows modifizieren, sodass es Keylogger unterbindet, wenn ein maskiertes Feld markiert ist? Ich weiß leider nicht genau, wie das bei Tastendrücken mit den Messages/Hooks genau funktioniert. Da ich aber selbst mal etwas geschrieben habe (bzw. zukünftig noch weiterarbeiten werde), das Maustastendrücke ignoriert, könnte ich mir vorstellen, dass das bei Tastatureingaben analog funktioniert. Die eigene Anwendung empfängt den Tastendruck, danach wird die Message verworfen und keine andere Anwendung wie z.B. ein Keylogger empfängt die Daten. Funktionstasten sowie andere Steuerbefehle sollte man aber durchlassen.

Bitte um weitere Ideen/Vorschläge/Realisierungsideen.

Gruß
blackdrake

// Edit: Titel abgeändert

mr_emre_d 6. Apr 2009 10:55

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Zu #2
Zitat:

Zitat von blackdrake
Die eigene Anwendung empfängt den Tastendruck, danach wird die Message verworfen und keine andere Anwendung wie z.B. ein Keylogger empfängt die Daten. Funktionstasten sowie andere Steuerbefehle sollte man aber durchlassen.

Die Message direkt nach dem Auswerten von der Message-Chain(oder wie sie genannt wird) zu löschen wäre ne gute Idee, nur was machst du, wenn der Keylogger zwischen Programm - Auswertung funkt ?
(~Programm - Keylogger - Auswertung)

Edit:
Zu #1
Evt. etwas zum nachlesen:
http://de.wikipedia.org/wiki/Gutmann-Methode

MfG

himitsu 6. Apr 2009 11:41

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Zitat:

Zitat von mr_emre_d
Zu #1
Evt. etwas zum nachlesen:
http://de.wikipedia.org/wiki/Gutmann-Methode

und bei der jetzigen Technik völlig übertrieben, das Wiederherstellen von z.B. einmal mit Zufallswerten überschrieben ist nahezu unmöglich und wenn dann nur für kleine Einheiten (einzelne Bits möglich) und selbst ann ist das Wiederherstellen einer Datei von einem "unbedeutenden" Menschen dermaßen teuer, daß es kein noch so reicher Geheimdienst oder sonstwer je machen würde.

hitzi 6. Apr 2009 12:44

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Zitat:

Zitat von himitsu
und bei der jetzigen Technik völlig übertrieben, das Wiederherstellen von z.B. einmal mit Zufallswerten überschrieben ist nahezu unmöglich und wenn dann nur für kleine Einheiten (einzelne Bits möglich) und selbst ann ist das Wiederherstellen einer Datei von einem "unbedeutenden" Menschen dermaßen teuer, daß es kein noch so reicher Geheimdienst oder sonstwer je machen würde.

Ergänzend dazu: http://www.h-online.com/news/Secure-...do-it--/112432

blackdrake 6. Apr 2009 12:57

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Zitat:

Zitat von mr_emre_d
Zu #1
Evt. etwas zum nachlesen:
http://de.wikipedia.org/wiki/Gutmann-Methode

MfG

Ja, kenne ich. Ich hatte mal eine Festplatte mit Firmendaten, die rechtlich materiell rausgegeben werden musste die Daten zur Sicherheit 5 Mal überschrieben. Die Gutman-Methode mit 35 Mal kostet aber mächtig Zeit und Festplattenabnutzung, weswegen ich das nicht gemacht habe...

Zitat:

Zitat von hitzi

Danke für die Information. Das ist mir neu. Das Ablesen einer Randmagnetisierung wäre ja, wenn machbar auch extrem kostenspielig und mit teilweisem Datenverlust behaftet. Gut, dann eben nur 1 Mal, spart Zeit.

Mich würde wie gesagt interessieren, Windows zu umzubiegen, dass es beim Schreiben den Cluster leert und beim Löschen 1 Mal den allokierten Platz überschreibt, denn mit jedem einfachen Wiederherstellungsprogramm können die Daten wiederkommen. Und selbst wenn man Dateien explizit vernichtet, dann können trotzdem noch Kopien der Datei durch unsichere Vorgänge in der Vergangenheit vorliegen.

himitsu 6. Apr 2009 12:59

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
ich glaub Meutze1 oder Assertor hatte vor 'ner Weile hier auch mal was dazu geschrieben.

Zitat:

rechtlich materiell rausgegeben werden musste
:gruebel:

nja, notfalls macht man es so wie die Banken ... kleinhächseln und verbrennen/einschmelzen :angel2:

Cyf 6. Apr 2009 12:59

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Benutz besser einen inline Hook auf die Löschfunktionen, statt dlls zu patchen.
Bereiche mehr als einmal zu überschreiben ist nicht notwendig.

Assertor 6. Apr 2009 13:00

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Hi,

sicherlich ein immer wieder spannendes Thema.

Aber was hat Datenlöschung und die Abwehr von Keyloggern mit Kryptographie zu tun? Was Du wohl eher meinst ist ein generelles Security-Hardening. Dazu gehört aber mehr als nur oben genanntes in Verbindung mit etwas Verschlüsselung.

Es gibt übrigens auch genügend Hardware-Keylogger ;)

Also für einfache Sachen im Bereich Systemverschlüsselung würde ich die Systemencryption von TrueCrypt empfehlen. Dann erübrigt sich auch die Dikussion wegen der sicheren Löschung nahezu.

Ansosten hier mal ein paar Leitfäden für verschiedene Betriebssysteme:
http://www.nsa.gov/ia/guidance/secur..._systems.shtml

Und das BSI Grundschutzhandbuch gibt es ja auch noch.

Gruß Assertor

blackdrake 6. Apr 2009 13:13

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Zitat:

Zitat von mr_emre_d
Die Message direkt nach dem Auswerten von der Message-Chain(oder wie sie genannt wird) zu löschen wäre ne gute Idee, nur was machst du, wenn der Keylogger zwischen Programm - Auswertung funkt ?
(~Programm - Keylogger - Auswertung)

Keine Ahnung, wie diese Kette funktioniert. Ich dachte, die Focusanwendung bekommt die Info zuerst und kann sie als erstes abarbeiten (evtl. analog zu der VCL mit dem Key := #0 im OnKeyDown)

Zitat:

Zitat von himitsu
nja, notfalls macht man es so wie die Banken ... kleinhächseln und verbrennen/einschmelzen :angel2:

Ui, das ist aber böse, wenn man eine Festplatte wiederhaben will und einen klumpen eingeschmolzenes Metall bekommt.

Zitat:

Zitat von Assertor
Aber was hat Datenlöschung und die Abwehr von Keyloggern mit Kryptographie zu tun?

Ich wusste nicht genau, wie ich das mit "sicher" ausdrücken sollte. "Sicher" ist ein so umfassender Begriff eben und ich will ja nur auf die Datenreste und Keyloggerrisiken eingehen. Außerdem bieten viele Verschlüsselungssoftwares auch gleichzeitig eine Erase-Funktion und manchmal sogar einen Anti-Keylogger (für das eigene Programm) an, aber da ist man nicht geschützt, wenn es nicht von Betriebssystemseite kommt.

Zitat:

Zitat von Assertor
Es gibt übrigens auch genügend Hardware-Keylogger

Ja, das bleibt ein Problem. Meistens manipulieren eingeschleuste Putzfrauen die Bürotastaturen :cat:

Zitat:

Zitat von Assertor
Also für einfache Sachen im Bereich Systemverschlüsselung würde ich die Systemencryption von TrueCrypt empfehlen. Dann erübrigt sich auch die Dikussion wegen der sicheren Löschung nahezu.

TrueCrypt kenne ich und nutze da auch die Systempartitionsverschlüsselung. Das Tool ist echt super. Aber für die DAUs würde ja eine einfache Veränderung im OS die Sicherheit erhöhen (man Denke an die vielen Festplatten, USB-Sticks und SD-Karten mit Restdaten drauf). Aber eigentlich sollten die OS-Hersteller sowas implementieren und eine solche Funktionalität dementsprechend konfigurierbar machen.

Zitat:

Zitat von Assertor
Benutz besser einen inline Hook auf die Löschfunktionen, statt dlls zu patchen.

Hört sich interessant an. Werde ich später mal googeln. Aber die System-DLL patchen und dabei kaputt machen macht doch auch spaß :wink:

blackdrake 6. Apr 2009 21:31

Re: Windows kryptografisch sicher modifizieren - Ideen/Reali
 
Also zu inline Hooks finde ich kaum was...

http://www.google.de/search?client=f...G=Google-Suche

http://www.google.de/search?hl=de&cl...a=lr%3Dlang_de

http://www.google.de/search?hl=de&cl...nG=Suche&meta=

http://www.google.de/search?q=in+lin...restrict&cad=7

Sowie in der DP 2 Threads, die mir aber im Moment wenig bringen, zumal ich ja alle Prozesse z.B. bei DeleteFile* umleiten will und nicht einen gezielten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz