Delphi-PRAXiS
Seite 14 von 19   « Erste     4121314 1516     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Virus infects Delphi (https://www.delphipraxis.net/138595-virus-infects-delphi.html)

Monien 20. Aug 2009 15:36

Re: Virus infects Delphi
 
Zitat:

Zitat von mkinzler
Wäre dann ja auch eine Anregung an CG

Korrekt. Die Werden zwar nix mehr für D7 oder älter tun, aber der Code dürfte sich ja relativ leicht auch auf neuere DelphiVersionen "upgraden" lassen :-(

mkinzler 20. Aug 2009 15:40

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.

Monien 20. Aug 2009 15:46

Re: Virus infects Delphi
 
Zitat:

Zitat von mkinzler
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.

Klar, das ist richtig - das wäre aber letztlich nur vernünftig über ein Delphi Plugin zu lösen. Dieses müßte dann aber natürlich auch bei Delphi Updates mit den aktuellen Prüfsummen versorgt werden.

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 :-)

guinnes 20. Aug 2009 16:24

Re: Virus infects Delphi
 
Zitat:

Zitat von Monien
Die Werden zwar nix mehr für D7 oder älter tun, aber der Code dürfte sich ja relativ leicht auch auf neuere DelphiVersionen "upgraden" lassen :-(

Wenn bei der Version ein Commandozeilen Compiler dabei ist

Monien 20. Aug 2009 16:27

Re: Virus infects Delphi
 
Zitat:

Zitat von guinnes
Zitat:

Zitat von Monien
Die Werden zwar nix mehr für D7 oder älter tun, aber der Code dürfte sich ja relativ leicht auch auf neuere DelphiVersionen "upgraden" lassen :-(

Wenn bei der Version ein Commandozeilen Compiler dabei ist

Bei allen Delphi-Versionen sind Komandozeilen-Compiler dabei. Die IDE "wrappt" nur den Aufruf der dcc32.exe - das kann man übrigens in dem "Ausgabe Fenster" in Delphi beobachten. Da gibt die IDE haarklein an mit welchen Parametern man den dcc32.exe von Hand aufrufen kann, um das aktuelle Projekt so wie in der IDE kompilieren.

Daniel 20. Aug 2009 16:33

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.

himitsu 20. Aug 2009 16:42

Re: Virus infects Delphi
 
arbeitet quasi fast wie der Virus
Delphi-Quellcode:
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.
Wenn der Virus jetzt kommt, sich die SysConst.pas schnappt
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 :!:

guinnes 20. Aug 2009 16:49

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:

unit sysconst; {Flags: 0x0, Priority: 0x1E}
{Source files: D:\Software\Programme\Borland\Delphi7\lib\sysconst .pas (03.07.2009 15:19:18)}

JamesTKirk 20. Aug 2009 16:51

Re: Virus infects Delphi
 
Zitat:

Zitat von Monien
Die IDE "wrappt" nur den Aufruf der dcc32.exe

Nur ein bisschen Besserwisserei: die IDE selbst verwendet die zur Version passende dcc*.dll, nicht die dcc32.exe... :zwinker: (verifiziert mit ProcessExplorer: keine dcc32.exe zu sehen)

mkinzler 20. Aug 2009 17:15

Re: Virus infects Delphi
 
Zitat:

Zitat von JamesTKirk
Zitat:

Zitat von Monien
Die IDE "wrappt" nur den Aufruf der dcc32.exe

Nur ein bisschen Besserwisserei: die IDE selbst verwendet die zur Version passende dcc*.dll, nicht die dcc32.exe... :zwinker: (verifiziert mit ProcessExplorer: keine dcc32.exe zu sehen)

Bei den alten Versionen auch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.
Seite 14 von 19   « Erste     4121314 1516     Letzte »    

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