![]() |
Re: Virus infects Delphi
Grundsätzlich sind alle Programmentwicklungssysteme bzw. Compiler betroffen, die externe Dateien in das fertige Kompilat linken, wobei diese externen Dateien überschreibbar sind. Auch Interpreter wären betroffen, wenn sie implizit irgendwelche Startup-Skripte verwenden (die widerum nicht ausreichend geschützt sind).
Nur Systeme, die gänzlich ohne Zusatzbibliotheken auskommen, sind sicher(er). Wobei dann nur noch der Angriff auf den nackten Compiler bliebe. Edit: Zitat:
|
Re: Virus infects Delphi
@mkinzler: ich hatte zwar schon per PM eine kleine Diskussion dazu mit himitsu, wo er mein "gering" etwas entkräftet hat, aber hier meine Gedanken dazu:
Der Pfad zum Compiler steht nicht in der Registry. Wenn man Lazarus installiert hat, kann man allerdings entweder in dessen Einstellungen nachsehen (die man in den Anwendungsdaten erst suchen muss) oder sich die Einstellungen anhand des Unistallerpfads in den Registry Einstellungen des Installers zusammenreimen. Bei ersterem ist das Problem, dass eventuell diese Einstellungen gar nicht verwendet werden (und damit möglicherweise nicht korrekt sind). Dies passiert zum Beispiel dann, wenn man Lazarus (per Kommandozeilenparameter) anweist eine andere Konfiguration zu verwenden (es gibt Gründe dafür). Der zweite Fall ist problematisch, wenn nicht der mitgelieferte Compiler verwendet wird (z. B. 2.3.1 statt 2.2.4). Liegt diese alternative Version dann auch nicht im Verzeichnis %lazarus%\fpc, dann hat man Pech ghabt, da ein anderer Compiler irgendwo im System verwendet wird. Eine weitere Möglichkeit wäre es den Compiler per PATH zu finden, unter Windows ist dies allerdings nicht standardmäßig der Fall. Hat man den Compiler dann gefunden ist noch das Problem eine passende Unit zu finden, allerdings bin ich davon ausgegangen, dass ich eine Unit benutze, die immer eingebunden wird (System.pas oder ObjPas.pas) und diese um ein Include erweitere. himitsu hat mich allerdings darauf aufmerksam gemacht, dass man auch eine seltenere Unit verwenden könnte, was zwar das Ausbreitungspotential senkt, aber trotzdem funktioniert. Wenn man dann eine passende Unit gefunden hat, muss man diese noch so modifizieren, dass die Programme weiterhin kompilieren (sonst wirds mit der Ausbreitung nichts). Der letzte Punkt trifft aber sowohl auf FPC, als auch Delphi zu. Ich denke ich muss selbst mal mit dem Virus rumspielen, um das genauer zu verifizieren :gruebel: Am Ende muss man, wenn man FPC wirklich hart treffen möchte, das ganze auch noch plattformunabhängig schreiben. So... das ist meine Begründung für meine These. Nun zerfleischt sie :mrgreen: Gruß, Sven |
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Hallo Olaf, habe dir den Code geschickt.
|
Re: Virus infects Delphi
Jetzt werden die Dinger schon frei Haus verkauft. :stupid:
Naja, das Teil findet man ja leider immer noch im Netz. |
Re: Virus infects Delphi
Und in den infizierten Exen
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Zitat:
Mir schwebt so eine Art "AntiVirus" unit vor, die beim Programmstart nix anderes macht, als nach bestimmten "Signaturen" zu suchen (also konkret nach dem was wir derzeit über diesen einen Virus wissen) und sich dann mit einer EVirusInfection Exception meldet, so dass man zumindest neukompilierte Delphi Programme schützen kann eine infizierte Unit einzukompilieren. |
Re: Virus infects Delphi
Wäre dann ja auch eine Anregung an CG
|
Re: Virus infects Delphi
Und am besten gleich noch die Selbstheilung draufpacken. :duck:
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Da wäre aber ein Ansatz per Prüfsumme besser. Also ein Mechanismus, bei dem man Prüfsummen in eine Datenbank ablegen kann, welche dann abgeglichen werden können.
|
Re: Virus infects Delphi
Zitat:
Wobei auch das in die Hose gehen kann. Denken wir uns doch mal besser nicht daran, was passieren würde, wenn Andreas auf die dunkle Seite der MAcht gezogen würde und seine speziellen Techniken verwendet, um den Schadcode quasi "dynamisch" zu injizieren :-) |
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Ja, alle "echten" Versionen. Nur Turbo Delphi Explorer kam ohne Kommandozeilen-Compiler daher. Ist aber eigentlich auch egal. Delphi 2010 beispielsweise ist definitiv mit einem Compiler für die Kommandozeile ausgestattet.
|
Re: Virus infects Delphi
arbeitet quasi fast wie der Virus
Delphi-Quellcode:
Wenn der Virus jetzt kommt, sich die SysConst.pas schnappt
Program Project1;
{$APPTYPE CONSOLE} Uses Windows, SysUtils, Classes; Const Pfade: Array[0..7, 0..2] of String = ( ('Software\Borland\Delphi\4.0', '\Source\RTL\Sys\', '\Lib\'), ('Software\Borland\Delphi\5.0', '\Source\RTL\Sys\', '\Lib\'), ('Software\Borland\Delphi\6.0', '\Source\RTL\Sys\', '\Lib\'), ('Software\Borland\Delphi\7.0', '\Source\RTL\Sys\', '\Lib\'), ('Software\Borland\BDS\2.0', '\Source\Win32\RTL\Sys\', '\Lib\'), ('Software\Borland\BDS\3.0', '\Source\Win32\RTL\Sys\', '\Lib\'), ('Software\Borland\BDS\4.0', '\Source\Win32\RTL\Sys\', '\Lib\'), ('Software\CodeGear\BDS\6.0', '\Source\Win32\RTL\Sys\', '\Lib\')); Var H: HKEY; i, i2: Integer; A: Array[1..255] of Char; S: String; SL: TStringList; Begin Try SL := TStringList.Create;; Try For i := 0 to High(Pfade) do If RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(Pfade[i][0]), 0, KEY_READ, H) = 0 Then Begin i2 := 255; If RegQueryValueEx(H, 'RootDir', nil, nil, @A, @i2) = 0 Then Begin S := PChar(@A); If not FileExists(S + Pfade[i][1] + 'SysConst.bak') Then Begin Try RenameFile(S + Pfade[i][1] + 'SysConst.pas', S + Pfade[i][1] + 'SysConst.bak'); SL.LoadFromFile(S + Pfade[i][1] + 'SysConst.bak'); i2 := SL.IndexOf('interface'); SL.Insert(i2 + 1, 'uses SysConst_Check;'); SL.Insert(i2 + 1, ''); SL.SaveToFile(S + Pfade[i][1] + 'SysConst.pas'); SL.Text := 'Unit SysConst_Check;'#13#10 + ''#13#10 + 'Interface'#13#10 + ''#13#10 + 'Implementation'#13#10 + ' Uses Windows;'#13#10 + ''#13#10 + 'Initialization'#13#10 + ' MessageBox(0, ''Delphi ist von Win32/Induc.* befallen!!!'',' + ' ''Alarm'', MB_OK or MB_ICONEXCLAMATION or MB_TASKMODAL);'#13#10 + ' Halt;'#13#10 + ''#13#10 + 'End.'#13#10; SL.SaveToFile(S + Pfade[i][2] + 'SysConst_Check.pas'); WriteLn('Backup angelegt,'); WriteLn('Datei modifiziert'); WriteLn('und Prüfdatei angelegt'); WriteLn(' > ' + S + Pfade[i][1] + 'SysConst.pas'); WriteLn(' > ' + S + Pfade[i][1] + 'SysConst.bak'); WriteLn(' > ' + S + Pfade[i][2] + 'SysConst_Check.pas'); Except WriteLn('der Schutz konnte nicht angelegt werden (z.B. fehlende)'); WriteLn('(z.B. ungenügend Zugriffsrechte)'); WriteLn(' > ' + S + Pfade[i][1] + 'SysConst.pas'); End; End Else Begin WriteLn('ist schon geschützt (vermutlich)'); WriteLn(' > ' + S + Pfade[i][1] + 'SysConst.pas'); End; WriteLn(''); End; RegCloseKey(H); End; WriteLn('fertig'); ReadLn; Finally SL.Free; End; Except On E:Exception do Begin WriteLn(E.Classname, ': ', E.Message); ReadLn; End; End; End. und neu kompiliert, dann kompiliert er auch diesen Code mit ein und bei Programmstart kommt ein Fenster und das infizierte Programm wird beendet, noch bevor der Virus sich vervielfältigen kann. Solange sich der Virus nicht dran zu schaffen macht, bleibt die SysConst.dcu unverändert und auch dieser Code (siehe [delphi]\Lib\SysConst_Check.pas) ist nicht eingebunden (abbeitet bis Delphi 2009 ... solange Schreibrechte existieren) Aber es ist dennoch besser erst erst garkeine Schreibrechte für die betreffenden Verzeichnisse vergeben zu haben :!: |
Re: Virus infects Delphi
Eine weitere Schwachstelle im Virus ist, dass er das Erstellungsdatum der Quellfiles nicht ändern kann : ( oder nur mit einem Aufwand )
Zitat:
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
Dann könnte man ja einfach die DCC32 umbenennen und gut ist
|
Re: Virus infects Delphi
Das bezweifle ich mal, denn Dll <> Exe
|
Re: Virus infects Delphi
Dcc32.exe umbenannt in Dcc32.exeBlaBla
Delphi kompiliert weiterhin. Aber es gibt die Dcc32.exe nicht mehr -> zumindest temporärer Schutz |
Re: Virus infects Delphi
Ok, ich habe deine Antwort anders verstanden
|
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
und was machen all diejenigen, welche den Komandozeilenkompiler benötigen?
(alle ihre Skripte ändern, oder wie?) Schreibrechte auf die entsprechenden Verzeichnisse entfernen und nicht mehr ständig mit Adminrechten arbeiten |
Re: Virus infects Delphi
Zitat:
|
Re: Virus infects Delphi
|
Re: Virus infects Delphi
Zitat:
Die Prüfsummen und Dateigrößen aller *.dcu-Dateien in $(DELPHI)\Lib werden in einer Ini-Datei abgelegt. Und können dann beliebig oft verglichen werden. Nach einem Delphi Update kann man einfach neue Prüfsummen erstellen ;-) Das macht aber nur Sinn wenn die Prüfsummen auf einem noch nicht infiziertem Delphi erstellt werden. Das Programm ist OpenSource / Freeware. Damit keiner denkt ich wollte ihm einen Virus unterschieben :megreen: Ich werde demnächst noch einen Experten erstellen, der das bei jedem Delphi Start prüft. Ich hoffe das hilft einigen die Angst vor weiteren Mutanten inkl. Schadfunktion zu nehmen. Viele Grüße MaBuSE ps: Ach ja der Link: ![]() |
Re: Virus infects Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Code:
C:\Programme\Borland\Delphi7\Lib\SysConst.dcu
is probably free of Win32/Induc.* C:\Programme\Borland\Delphi7\Lib\Debug\SysConst.dcu is probably free of Win32/Induc.* C:\Programme\Borland\BDS\4.0\Lib\SysConst.dcu is probably free of Win32/Induc.* C:\Programme\Borland\BDS\4.0\Lib\Debug\SysConst.dcu is probably free of Win32/Induc.* C:\Programme\CodeGear\RAD Studio\6.0\Lib\SysConst.dcu is probably free of Win32/Induc.* C:\Programme\CodeGear\RAD Studio\6.0\Lib\Debug\SysConst.dcu is probably free of Win32/Induc.* *end* |
Re: Virus infects Delphi
|
Re: Virus infects Delphi
Zitat:
Deshalb wurde das Delphi 7 bei mir auch nicht infiziert, das hatte ich ja auch schon kurz geprüft als der Virus bekannt wurde (ohne zu wissen, dass ich den tatsächlich bekommen hatte). Aber das wurde ja auch schon gesagt, dass es ganz einfach reicht nicht als Admin zu arbeiten bzw. wie bei mir die UAC unter Vista aktiviert zu lassen, damit der Virus nichts bewirken kann. |
Re: Virus infects Delphi
Zitat:
Das sicherste ist alle Delphi dcu-Dateien mit einer Prüfsumme abzusichern. Und beim Delphistart / vor jedem Compile automatisch zu prüfen. (Dauert bei mir ca. 1 bis 2 Sekunden) |
Re: Virus infects Delphi
Wenn die Verzeichnisse aber so geschützt sind, dass ein Überschreiben der Original-Dateien verhindert wird, ist es eigentlich egal, was der Virus sonst macht.
|
Re: Virus infects Delphi
Zitat:
Unter XP z.B. kann man meist ohne Administratoren Rechte den Besitz von Dateien übernehmen. Wenn die Dateien erst mal mir gehören, dann ich die Zugriffsrechte ändern. Das Recht "Besitz übernehmen" ist per Default dem Benutzer zugewiesen. Das muß man z.B. durch Systemrichtlienien explizit wegnehmen. Probier es doch mal unter XP aus:
Es gibt ja auch noch viele andere Löcher. Wenn diese durch den "Administrator" nicht gestopft werden, bringt es nur eine trügerische Sicherheit. Das ist ja das brühmte Katz und Maus Spiel zwischen Hackern/Virenschreibern und den SystemAdministratoren/Firewall-und Antivirenprogramm-Schreibern Das bedeutet aber nicht, das ich dagegen bin nur mit Benutzer Rechten zu arbeiten. Das ist absolut sinnvoll!!! Aber man sollte nicht denken, das dann alles sicher ist. |
Re: Virus infects Delphi
Es verlassen sich zu viele auf ihr hohes "ich bin kein Admin" Ross. Eine vernünftige Absicherung des kompletten Netzes ist deutlich mehr Wert als ständiges aufpoppen von nervigen Berechtigungsabfragen, die über kurz oder lang ungelesen weggeklickt werden (und zwar per OK-Knopf).
Sherlock |
Re: Virus infects Delphi
Hallo,
Für alle diejenigen, die infizierte Programme jetzt nicht mehr starten können, weil die Antiviren-Software die Ausführung verhindert (den schadhaften Code aber nicht entfernt), gibt es unter ![]() ein Programm, das Ihnen helfen kann. |
Re: Virus infects Delphi
Zitat:
Zitat:
Was die Absicherung angeht hast du aber natürlich Recht und da kümmere ich mich auch bei mir immer drum. |
Re: Virus infects Delphi
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz