AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Delphi *.dcu Checker for DelphiVirus
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi *.dcu Checker for DelphiVirus

Ein Thema von MaBuSE · begonnen am 20. Aug 2009 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE
Registriert seit: 23. Sep 2002
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
Angehängte Dateien
Dateityp: zip delphidcucheckerexe_931.zip (237,7 KB, 83x aufgerufen)
Dateityp: zip delphidcuchecker_176.zip (8,8 KB, 51x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
 
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#2
  Alt 20. Aug 2009, 20:56
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
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#3
  Alt 20. Aug 2009, 21:03
Passende Prüfsummen für die verschiedenen Versionen findest du hier
http://www.delphi-forum.de/viewtopic.php?t=94256
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BenBE
BenBE

 
Delphi 5 Enterprise
 
#4
  Alt 21. Aug 2009, 07:00
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
Benny Baumann
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#5
  Alt 21. Aug 2009, 10:09
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 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 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 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 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 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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#6
  Alt 21. Aug 2009, 11:41
Da gibt es doch diesen Überwachungsdienst, welcher die Windows-Systemdateien überwacht ... diesen könnte man doch auf die Delphidatei loslassen?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#7
  Alt 21. Aug 2009, 12:38
Zitat von MaBuSE:
[...]
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 von MaBuSE:
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
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
Ha die Option "-u" tuts So im Anhang meine Signatur der zip-Datei der Exe (also nicht des Quellcodes). Den öffentlichen Schlüssel bekommt ihr da hier.

MfG
xZise
Angehängte Dateien
Dateityp: txt delphidcucheckerexe.zip_174.txt (88 Bytes, 26x aufgerufen)
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#8
  Alt 24. Aug 2009, 14:31
Also ein kleinen Tipp für GnuPG (oder GPG):
http://de.wikibooks.org/wiki/GnuPG

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 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