Einzelnen Beitrag anzeigen

Marcu

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

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

  Alt 7. Jun 2012, 14:27
Hallo TBUndertaker

Zitat:
Ist es nur ein Passwort für Alle? Gibt es jeden Tag ein neues Password? Gibt es für jeden Rechner eins?
Ich habe es missverständlich formuliert.

Der Virus bestimmt per Zufall ein individuelles und zufälliges Passwort auf jedem PC und verschlüsselt damit eine Datei die gebraucht wird um alle verschlüsselten Dateien zu entschlüsseln. Der Ablauf ist folgendermaßen:

(Für Leute mit Debugger: Sucht die Funktion bei der eine lokale Variable mit folgendem String initialisiert wird "cmd=lfk&ldn=%u&stat=CRA&rev=%s&data=". Oder sucht die Funktion in der GetLogicalDrivesStringA aufgerufen wird.)

Code:
procedure BuildCatalogFiles ".$02" und ".$03" and EncryptUserfiles

  while Busyflag do
    sleep(1000)
  Busyflag:=True

  Download $Desk-File;

  l:=RandomNumber
  CatalogPassword:=RandomString(l) //l ist Länge des Passworts
  PasswordCopy:=CatalogPassword;

  //Das Passwort für die folgende Verschlüsselung ist leicht zu errechnen
  EnryptWithCrypdllMD5(PasswordCopy)

  //Die folgende Verschlüsselung nenne ich Verschlüsselung. So Leute wie Bruce Schneier nennen so etwas wahrscheinlich "alberne Spielerei". HomeBrewCrypt ist lediglich ein etwas kompliziertere XOR-Verschlüsselung. Man kann in Delphi einfach die disassemblierte Funktion per Cut&Paste zwischen ein "asm" und "end" kopieren. Nach einigen Anpassungen ist dann "HomebrewCrypt" einsatzfähig - ohne anstrengende Rückübersetzung.
 
  EncryptWithHomeBrewCrypt(PasswordCopy);

  UrlEncode(PasswordCopy);

  // CatalogPasswort wird mit einen ID an einen C&C-Server geschickt.ID=HarddriveSerialnumber+Computername
  Done:=SendViaInternetToC&C-Server(HarddriveSerialnumber+Computername,CatalogPassword)
 
  if Done then
  begin
    Catalog$02=GlobalAlloc
    Catalog$03=GlobalAlloc
 
    Drives:=GetLogicalDrivesStringA
    do
       D:=FirstDrive(Drives)  
     
       CreateThread( BuildCatalogEntriesForDrive(D) )
             
       Drives:=Drives-D
    until Empty(Drives);
   
    sleep(3000)
    do
      sleep(1000)
   until all Threads finished

   // Hier kommt das CatalogPasswort zum Einsatz. Nach dem ersten Ausschalten des  Computers
   // ist das Password allein in den Händen der Erpresser.
   EncryptAndSaveToFile (Catalog$02,CatalogPassword)
   
   EncryptAndSaveToFile (Catalog$03,HarddriveSerialnumber+Computername)
   
   EncryptUserFiles(Catalog$02,Catalog$03);
   
  end;

  Busyflag=False;
 
end.
Zitat:
Ich stelle mir gerade vor, welchen administrativen Aufwand die Verwaltung der Passworddatenbank bedeutet.
Genau damit hatte ich auch ein Problem. Bevor ich den Code reversed habe dachte ich noch an eine Art Hashfunktion die billig auf den C&C-Servern zu implementieren ist und aus einer ID ein Passwort generiert. Diese Vermutung war aber dann schnell dahin.
Es ist tatsächlich so, dass ein Passwortbestand von den Erpressern gepflegt wird. In diesem Datenbestand ist für jeden verschlüsselten Computer eine ID (Seriennummer+Computername) und das CatalogPasswort eingetragen.

Ob der Datenbestand in einer Textdatei oder in einer Datenbank oder in einer Cloud steckt kann man rausfinden wenn man die Datei "index.php" anschaut, die auf jedem C&C Server installiert ist. Ich wünschte so sehr, dass ich diese Datei hätte. Hätte man die "index.php" dann hätte man Zugriff auf die Passwörter der Opfer und könnte im Handumdrehen ein Programm schreiben, welches alle Computer entschlüsselt.

Das soll jetzt kein Aufruf zum illegalen Eindringen in fremde Computersysteme werden. Aber wenn mich einer per PM darüber informiert was für Tricks es gibt um php-Scripte auszuhebeln, dann wäre ich ihm auf ewig dankbar. Ich habe das Gefühl, dass die Erpresser sich seit ein paar Tagen über meine staubigen Sql-Injektionversuche totlachen.

Der Virus ist so ausgelegt, dass er die Daten entschlüsseln kann. Ich habe mehrmals Testdaten während einer Simulation vom Virus wieder entschlüsseln lassen. Der Grund dafür, dass bei den Leuten die tatsächlich bezahlen es nicht funktioniert, liegt bei C&C-Servern oder an einem Computer dahinter. Der Virus erhält einfach kein/oder ein falsches Feedback von den C&C-Servern. Gestern Nacht konnte ich nicht ein einziges Mal einen C&C-Server dazu bringen bei mir eine Verschlüsselung zu kommandieren. Es wundert mich nicht, dass das Entschlüsseln gleich schlecht funktioniert.

Der administrative Aufwand für die Verwaltung der Passwörter ist anscheinend zu groß. Vielleicht klappt es deswegen nicht mit dem Entschlüsseln. Vielleicht sind es auch Probleme die außerhalb der Reichweite der Virenprogrammierer liegen. Möglicherweise gibt es Probleme beim verifizieren der Paycodes.

Viele Grüße
Marcu
  Mit Zitat antworten Zitat