AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsselungs-Trojaner, Hilfe benötigt

Ein Thema von Michael Habbe · begonnen am 18. Mai 2012 · letzter Beitrag vom 27. Dez 2017
 
Marcu

Registriert seit: 20. Mai 2012
50 Beiträge
 
#11

AW: Verschlüsselungs-Trojaner, Hilfe benötigt

  Alt 5. Aug 2012, 22:42
Hallo Michael
Zitat:
Wenn man nun versucht mit Bruteforce die Datei(en) zu entschlüsseln, wie kann man dann während der Suche erkennen, ob die Datei richtig entschlüsselt wurde? Man weiss ja prizipiell nicht für jede Datei genau, obs nun eine doc, jpg, odt, ... ist. Es müsste doch nach jedem Schlüssel versucht werden die Datei zu öffnen, oder?
Genau so ist. Es gibt keinen Rückgabewert der den Erfolg anzeigt. Man muss nach nach jedem Entschlüsselungsversuch nachschauen ob es geklappt hat.

In diesem Fall muss man darauf hoffen, dass man nach der Entschlüsselung etwas bekommt das ungefähr so aussieht wie das Beispiel im Posting #247.

Anfangs hatte ich eine sehr kleine Funktion die ungefähr so aussah:
Delphi-Quellcode:
 Result := (Size >= 4)
      and (p[1] = ':') and (P[2] = '\') and (P[3] = '\')
      and (P[0] >= 'C') and (P[0] <= 'Z');
Der Ausdruck prüft einfach, ob nach der Entschlüsselung etwas vorliegt was mit "C:\\" oder mit "D:\\" oder mit ... oder mit "Z:\\" anfängt.

Es stellte sich aber heraus, dass die Funktion zu ungenau war. Es gab viele "False Positives" und viel Adrenalin wurde bei den Programmierern verschwendet die an einer Brute-Force-Methode arbeiten.

Deshalb habe ich eine genauere Funktion geschrieben:
Delphi-Quellcode:
function IsCatalogDecrypted(P: PAnsiChar; Size: DWORD): Boolean;

  function HasDriveSignature: Boolean;
  begin
    Result := (Size >= 4)
      and (p[1] = ':') and (P[2] = '\') and (P[3] = '\')
      and (P[0] >= 'C') and (P[0] <= 'Z');
  end;

  function HasValidCharacters: Boolean;
  var
    n: DWORD;
  begin
    Result := True;
    for n := 0 to Size - 1 do
      if ((P[n] < #32) and not (P[n] in [#10, #13]))
        or (P[n] in ['*', '?', '<', '>', '|', '"', '/', #127]) then
      begin
        Result := False;
        break;
      end
  end;

  function IsRndString(s: string; minlen, maxlen: Integer): Boolean;
  const // Thanks Martin!
    A = ['q', 'e', 't', 'u', 'o', 'a', 'd', 'g', 'j', 'l', 'x', 'v', 'n', 'p',
      'f', 'r', 'y', 's', 'Q', 'E', 'T', 'U', 'O', 'A', 'D', 'G', 'J', 'L', 'X',
      'V', 'N'];
  var
    i, l: Integer;
  begin
    l := length(s);
    Result := (l >= minlen) and (l <= maxlen);
    if Result then
      for i := 1 to l do
        if not (s[i] in A) then
        begin
          Result := False;
          Break;
        end;
  end;

  function HasCatalogFormat: Boolean;
  var
    sl: TStringList;
    i: Integer;
  begin
    sl := TStringlist.create;
    sl.text := copy(p, 1, size);
    result := sl.count mod 4 = 0;
    if result then
    begin
      i := 0;
      while i < sl.count - 4 do
      begin
        Result := (ExtractFilePath(sl[i]) = ExtractFilePath(sl[i + 1]))
          and IsRndString(ExtractFilename(sl[i + 1]), 14, 21) //Neuname
          and IsRndString(sl[i + 2], 30, 61) //Passwort
          and (sl[i + 3] = ''); //Leerzeile
        if not Result then
          break;
        inc(i, 4);
      end;
    end;
    sl.free;
  end;

begin
  Result := HasDriveSignature and HasValidCharacters and HasCatalogFormat
end;
Damit gab es soweit ich weiß noch keine False Positives - aber leider auch noch kein True Positive.
Die genauere Funktion prüft sehr viel mehr ab. Es wird z.B: geprüft ob die Passwörter nur aus genau den Zeichen bestehen, die Hofmar im Beitrag #181 ermittelt hat.


Viele Grüße
Marcu
Angehängte Dateien
Dateityp: zip Decrypter5.zip (120,8 KB, 11x aufgerufen)
Dateityp: zip SampleDatafiles.zip (982,9 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
 

 

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 19:39 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