Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Delphi *.dcu Checker for DelphiVirus (https://www.delphipraxis.net/138968-delphi-%2A-dcu-checker-delphivirus.html)

MaBuSE 20. Aug 2009 20:05


Delphi *.dcu Checker for DelphiVirus
 
Liste der Anhänge anzeigen (Anzahl: 2)
Delphi *.dcu Checker for DelphiVirus

Programm zum Aufspüren von Änderungen an den *.dcu Dateien in $(DELPHI)\Lib

In den Medien ist ein "Delphi-Virus" aufgetaucht. Dieser erstellt eine eigene SysConst.dcu, die den Virus Code enthält. Der Virus wird so in Jede mit dem infizierten Delphi kompilierte Anwendung (*.exe, *.dll, *.scr, *.bpl, ...) versucht nun beim Start alle nicht infizierten Delphi Versionen (4 bis 7) auf dem Rechner zu infizieren.
Dieser Virus ist "nur" ein "Proof of Concept", also eine Machbarkeitsstudie. Die sicherlich nicht dazu gedacht war in freien Umlauf zu gelangen. Aber dennoch zeigt sie wie einfach es ist (ca. 150 Zeilen nicht optimierten Code) solch einen Virus zu schreiben. Und sicherlich dauert es nicht mehr lange, bis die ersten Mutationen erscheinen, die andere dcu Dateien befallen bzw. auch Schaden anrichten.

Um sich zu schützen, habe ich ein kleines Programm geschrieben, das die Dateigrößen und die Prüfsummen (CRC32) aller *.dcu Dateien in $(DELPHI)\Lib berechnet und in einer ini-Datei abspeichert und z.B. beim Delphi Start prüfen kann. Das dauert beim Delphi 7 auf meinem PC ca. 1 bis 2 Sekunden.

Dieses Programm veröffentliche ich als OpenSource, um die Ausrottung solcher Delphi Viren zu unterstützen.

Ich werde demnächst auch einen Experten bauen, der diesen Check bei jedem Start von Delphi durchführt. Es ist auch denkbar das als PreCompile Funktion vor jedem Delphi Compile auszuführen, und den Compile dann abzubrechen.

Wichtig ist nur, das die Prüfsummen von einer "sauberen" Delphi-Installation gemacht werden ;-)

Download des neusten Quelltextes und Executables auf www.delphipraxis.net
URL: http://www.delphipraxis.net/internal...t.php?t=163454

verwendete 3rd party Komponenten:
- DEC von Hagen Reddmann (negaH, member of DelphiPraxis.net)

Das Programm ist Freeware und darf beliebig benutzt und erweitert werden. Es wäre nett, wenn dann auch der geänderte Quelltext in obiges URL-Adresse gesendet wird. Dann haben alle was davon. Es wäre auch nett wenn mein (unser) Name in den Dateien enthalten bleibt.
Das Programm wird von Ihnen auf eigenes Risiko eingesetzt. Ich übernehme keine Haftung für Schäden die durch das Programm oder die Benutzung des Programms entstanden sind bzw. entstehen.

(C) 2009, MaBuSE, member of DelphiPraxis.net

Matze 20. Aug 2009 20:56

Re: Delphi *.dcu Checker for DelphiVirus
 
Hi,

als Anregung, denn so hilft das Tool vermutlich nicht vielen:
Wäre es nicht möglich, die Prüfsummen zu integrieren und nur bei Bedarf von der Festplatte einzulesen? Dazu könntest du ein Mini-Tool schreiben, das die Prüfsummen ermittelt und von den Mitgliedern mit sauberen Installationen für dich ausgeführt werden kann. Dann könntest du die meisten Delphi-Versionen von vorn herein abdecken.

Denn aktuell möchten vermutlich viele Wissen, ob der "Virus" bereits auf dem heimischen PC ist. Gut, das kriegt man über die .bak natürlich auch heraus.

Grüße, Matze

mkinzler 20. Aug 2009 21:03

Re: Delphi *.dcu Checker for DelphiVirus
 
Passende Prüfsummen für die verschiedenen Versionen findest du hier
http://www.delphi-forum.de/viewtopic.php?t=94256

BenBE 21. Aug 2009 07:00

Re: Delphi *.dcu Checker for DelphiVirus
 
Da potentiell die Gefahr besteht, dass auch andere Delphi-Versionen als die durch den Proof of Concept infizierten Versionen 4-7 infiziert werden, arbeite ich derzeit daran, für die verschiedenen Delphi-Versionen die Prüfsummen zusammenzutragen. Das Tool wird voraussichtlich für D3 bis D2009 (ggf. 2010) die Prüfsummen enthalten (deutsche+englische Versionen); wer zusätzliche Units hat, bitte an mich melden (oder im DF mit anhängen lassen).

Das Tool von mir wird voraussichtlich auch einen Patcher für befallene EXE-Dateien beinhalten, der versucht, befallene EXE-Dateien zu reinigen. Dieser Patcher ist jedoch nicht als Ersatz für eine saubere Delphi-IDE, sondern als kurzfristiges Hilfsmmittel zu verstehen, der auf kurze Sicht befallene EXEn nutzbar machen kann.

Derzeit suche ich noch nach einer Möglichkeit um die in meinem Scanner einfließenden Signaturen gegen Manipulationen zu sichern.

Als Quelle für die Prüfsummen sollte die Delphi-Installations-CD verwendet werden.

@MaBuSe: Erweiter bitte dein Programm für die Generierung\Abgleich der im DF genannten Prüfsummen, da wir dann gleich abgleichen können (CRC32, MD5, SHA1, SHA256 und SHA512); zusätzlich das DCU-Source-Datum (das wird dann mein Tool aber mit auslesen, sofern nicht bekannt).

P.S.: Eine verifizierbare GnuPG-Signatur bei deiner EXE wäre nicht schlecht ;-)

MaBuSE 21. Aug 2009 10:09

Re: Delphi *.dcu Checker for DelphiVirus
 
Zitat:

Zitat von BenBE
Da potentiell die Gefahr besteht, dass auch andere Delphi-Versionen als die durch den Proof of Concept infizierten Versionen 4-7 infiziert werden, arbeite ich derzeit daran, für die verschiedenen Delphi-Versionen die Prüfsummen zusammenzutragen. Das Tool wird voraussichtlich für D3 bis D2009 (ggf. 2010) die Prüfsummen enthalten (deutsche+englische Versionen); wer zusätzliche Units hat, bitte an mich melden (oder im DF mit anhängen lassen).

Das ist eine gute Idee. Anhand der gescannten dcu Dateien kannst Du dann auch das Patchlevel der IDE erkennen und den Benutzer auf ein Update hinweisen ;-)

Zitat:

Zitat von BenBE
Das Tool von mir wird voraussichtlich auch einen Patcher für befallene EXE-Dateien beinhalten, der versucht, befallene EXE-Dateien zu reinigen. Dieser Patcher ist jedoch nicht als Ersatz für eine saubere Delphi-IDE, sondern als kurzfristiges Hilfsmmittel zu verstehen, der auf kurze Sicht befallene EXEn nutzbar machen kann.

Das funktioniert natürlich nur bei dem jetzigen Virus. Sobald Mutationen auftreten, die nicht mehr der Signatur entsprechen, nach der Du suchst, ...

Zitat:

Zitat von BenBE
Derzeit suche ich noch nach einer Möglichkeit um die in meinem Scanner einfließenden Signaturen gegen Manipulationen zu sichern.

Das wird schwierig werden, da Du ja auch die Möglichkeit bieten solltest bewust durchgeführte Änderungen an der VCL (z.B. eigene Bugfixes) zuzulassen.
Sprich eigene Signaturen zu erzeugen zu können. Eine Möglichkeit wäre z.B. bei Installation des Scanners ein Passwort zu erfragen, das beim erstellen eigener Signaturen wieder anzugeben ist.

Zitat:

Zitat von BenBE
Als Quelle für die Prüfsummen sollte die Delphi-Installations-CD verwendet werden.

Stimmt, aber nicht alle Versionen gibt es als Install CD.
Z.B. Delphi 7.1 oder Delphi 2007 für Win32 Dez. Upd.

Zitat:

Zitat von BenBE
@MaBuSe: Erweiter bitte dein Programm für die Generierung\Abgleich der im DF genannten Prüfsummen, da wir dann gleich abgleichen können (CRC32, MD5, SHA1, SHA256 und SHA512); zusätzlich das DCU-Source-Datum (das wird dann mein Tool aber mit auslesen, sofern nicht bekannt).

Kann ich bei Gelegenheit machen, aber ich habe im Moment viel zu tun...

Zitat:

Zitat von BenBE
P.S.: Eine verifizierbare GnuPG-Signatur bei deiner EXE wäre nicht schlecht ;-)

Klingt gut, aber ich muß mich erst mal schlau machen was GnuPG Signaturen sind :stupid:

himitsu 21. Aug 2009 11:41

Re: Delphi *.dcu Checker for DelphiVirus
 
Da gibt es doch diesen Überwachungsdienst, welcher die Windows-Systemdateien überwacht ... diesen könnte man doch auf die Delphidatei loslassen?

xZise 21. Aug 2009 12:38

Re: Delphi *.dcu Checker for DelphiVirus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von MaBuSE
[...]
Zitat:

Zitat von BenBE
Derzeit suche ich noch nach einer Möglichkeit um die in meinem Scanner einfließenden Signaturen gegen Manipulationen zu sichern.

Das wird schwierig werden, da Du ja auch die Möglichkeit bieten solltest bewust durchgeführte Änderungen an der VCL (z.B. eigene Bugfixes) zuzulassen.
Sprich eigene Signaturen zu erzeugen zu können. Eine Möglichkeit wäre z.B. bei Installation des Scanners ein Passwort zu erfragen, das beim erstellen eigener Signaturen wieder anzugeben ist.[...]

Oder mittels asymmetrischer Verschlüsselung eine Signatur erstellen, welche mit dem Geheimen Schlüssel erstellt wurde, und nachher dann mittels des öffentlichen Schlüssels verifiziert werden kann. Das heißt, ohne wissen des geheimen Schlüssels (denn man ja symmetrisch verschlüsseln kann) kann keiner (also auch nicht der Virus) eine gültige Signatur erstellen.

Ich weiß nicht, ob das sicher oder optimierbar ist, aber ich würde das so machen:
  1. Geheimen/Öffentlichen Schlüssel erstellen
  2. Geheimen mittels einer symmetrischen Verschlüsselung (z.B. AES oder Twofish) verschlüsseln
  3. Einen Hash (z.B. MD5 oder SHA) der verwendeten DCUs erstellen
  4. Diese Hashes in einer Datei zusammenfassen
  5. Diese Datei dann mithilfe des geheimen Schlüssels asymmetrisch verschlüsseln
Jetzt kann man beim Start:
  1. Ein Hash jeder DCU erstellen
  2. Die Hashdatei mithilfe des öffentlichen Schlüssels entschlüsseln
  3. Die Ergebnisse vergleichen

Der Vorteil dieser Hashdatei ist, dass diese Datei ausgetauscht werden kann.
Ich weiß jetzt nicht, ob das DEC auch asymmetrische Verschlüsselungen unterstützt.

Zitat:

Zitat von MaBuSE
Zitat:

Zitat von BenBE
P.S.: Eine verifizierbare GnuPG-Signatur bei deiner EXE wäre nicht schlecht ;-)

Klingt gut, aber ich muß mich erst mal schlau machen was GnuPG Signaturen sind :stupid:

Einfach gesagt: Das ist ein Verschlüsselter Hash (so ähnlich wie ich das oben vorgeschlagen habe). Dabei ist aber die Verschlüsselung asymmetrisch und damit kann jeder die Signatur entschlüsseln (in der Regel benutzt man es andersherum: Der Sender verschlüsselt die Informationen mit den Öffentlichen Schlüssel und dann kann der Empfänger mithilfe des geheimen Schlüssels die Informationen entschlüsseln).

Ich habe versucht mal eine Signatur zu erstellen, aber ich kriege es nicht hin GPG zu sagen, welchen Schlüssel er nehmen soll :D
Ha die Option "-u" tuts :D So im Anhang meine Signatur der zip-Datei der Exe (also nicht des Quellcodes). Den öffentlichen Schlüssel bekommt ihr da hier.

MfG
xZise

xZise 24. Aug 2009 14:31

Re: Delphi *.dcu Checker for DelphiVirus
 
Also ein kleinen Tipp für GnuPG (oder GPG):
http://de.wikibooks.org/wiki/GnuPG

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

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