Hackerboard WikiHaboBlog

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

EAccelerator decodieren

Diskussion: EAccelerator decodieren im Forum Cryptography & Encryption, in der Kategorie Security Area; Hallo, ich suche nach einer Möglichkeit diese footer.php zu entschlüsseln.. Ich hatte vor ner weile schonmal danach gefragt, habe dann ...

Antwort
Alt 05.05.10, 12:37   #1 (permalink)
 
Registriert seit: 05.05.10
Mich Leistung: Facit NTK
Likes: 0
Standard EAccelerator decodieren


Hallo,
ich suche nach einer Möglichkeit diese footer.php zu entschlüsseln..
Ich hatte vor ner weile schonmal danach gefragt, habe dann aber schließlich aufgegeben, weil ich nicht weiterkam.
Jetzt denke ich dass ichs vielleich schaffen könnte.

Hier der Code:

PHP-Code:
<?php if (!is_callable("eaccelerator_load") &&  !@dl("eAccelerator.so")) { die("Du hast kein eAcellerator installiert,  was aber zwingend erforderlich ist. <a  href=\"http://eaccelerator.sourceforge.net/\">eAccelerator</a>");  }eaccelerator_load('eJxzdXR2dvVxDXIM8Q9iYGZgYGBiYG   YHUumpJdmplUAeA4TjDeSgAiYkth0j48/GeoapIDYHiGABYjYUlTlo2pmR2BqMzAJAykY/KT+l0o7LRj+jJDfHjsufA2EgMgAARGQRug==');  ?>

Anhand des = -Zeichens am Ende nehme ich an, das es eine Base64- Verschlüsselung ist. Wenn ich das ganze also über base64 decodiere erhalte ich folgendes:
xœsutvvõq rñb`f```b`fRé©%Ù©•@„ã ä &$¶#ãÏÆz†© 6ˆ`b6•9hÚ™‘ØŒÌ@ÊF?)?¥ÒŽËF?£$7ÇŽËŸa 2��Ddº

Wenn ich das nun über gzuncompile nochmals decodiere erhalte ich:

EACCELERATOR��������getkey������getKey������������ ��������������>ù�•�����������������������l������ ��������������������(���O•������������������ ��


So das ist doch schonmal was. man kann schon einelne Befehle lesen.
Es ist nur ne kleine Datei, aber ich weiß nicht mehr was drinne stand, deswegen brauch ich sie unbeding. Ich hoffe ab hier kann mir jemand weiterhelfen. Ich denke das der über base64 decodierte code sowas wie die Binärdatei von dem Php-Code ist. Aber ich bin mir auch nicht so sicher.
Es gibt auf jedenfall eine Möglichkeit, vielleicht kommt einer von euch drauf.

Gruß Mich

Geändert von Mich (05.05.10 um 15:36 Uhr)
Mich ist offline   Mit Zitat antworten
Alt 05.05.10, 13:09   #2 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Hast du schonmal versucht dir den Code von diesem eAccelerator anzuschauen? Das wäre vielleicht einfacher, als herumzuraten
Scheint ja OS zu sein.
Thunderb0lt ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 05.05.10, 15:14   #3 (permalink)
Themenstarter
 
Registriert seit: 05.05.10
Mich Leistung: Facit NTK
Likes: 0
Standard

Das ist schonmal eine Gute Idee. In der Encoder.php finde ich auch die nötige Funktion:

PHP-Code:
function eaccelerator_encode_file($src, $out, $f, $c, $w, $web) {
  if (empty($out)) {
    echo "\n// $src\n";
  }
  $prefix = "";
  $cmp = [B]eaccelerator_encode($src, $prefix)[/B];
  if (empty($cmp)) {
    eaccelerator_error("Can't compile file \"$src\"",$web);
    if ($f) {
      if ($c && !empty($out)) {
        if ($web) {
          global $web_error;
          if (!empty($web_error)) {
            echo "<font color=\"#ff0000\">$web_error</font><br>\n"; flush();
            $web_error = "";
          }
        }
        eaccelerator_copy_file($src, $out, $f, $web);
      }
    } else {
      if (!$web) {
        exit();
      }
    }
  } else {
    if (!$w) {
        $cmp = $prefix.'<?php if (!is_callable("eaccelerator_load") && !@dl((PHP_OS=="WINNT"||PHP_OS=="WIN32")?"eloader.dll":"eloader.so")) { die("This PHP script has been encoded with eAccelerator, to run it you must install <a href=\"http://eaccelerator.sourceforge.net/\">eAccelerator or eLoader</a>");} return eaccelerator_load(''.$cmp."');?>\n";
    }
    else
    {
        
$cmp $prefix.'<?php return eaccelerator_load(\''.$cmp."');?>\n";
    }
    if (!empty(
$out)) {
      if (!
$f && file_exists($out)) {
        
eaccelerator_error("Can't create output file \"$out\" (already exists)",$web);
      } else {
        
$file = @fopen($out,"wb");
        if (!
$file) {
          
eaccelerator_error("Can't open output file \"$out\"",$web);
        } else {
          
fwrite($file,$cmp);
          unset(
$cmp);
          
fclose($file);
          
$stat stat($src);
          
chmod($out$stat['mode']);
          if (
$web) {
            echo 
"<font color=\"#00aa00\">Encoding: \"$src\" -> \"$out\"</font><br>\n";
          }
        }
      }
    } else {
      if (
$web) {
        echo 
"<pre>".htmlspecialchars($cmp)."</pre>\n";
      } else {
        echo 
$cmp;
      }
      unset(
$cmp);
    }
  }
}
Allerdings wird dort eine weitere Funktion aufgerufen (die fett geschriebene), die die eigentliche encodier arbeit erledigt. Diese Funktion wird anscheinend beim Installieren des Eaccellerators Global für alle Php Dateien verfügbar gemacht. Deswegen weiß ich gerade leider nicht wo ich die finde. Vielleicht kann mir das einer sagen? Falls ihr es braucht, den Source Code kann man hier herunterladen:
http://sourceforge.net/projects/eaccelerator/files/

Gruß Mich

Geändert von Mich (05.05.10 um 15:35 Uhr)
Mich ist offline   Mit Zitat antworten
Alt 05.05.10, 17:22   #4 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Na ja, das scheint ja eine Erweiterung für PHP zu sein, also musst du dir den Sourcecode dieser Erweiterung anschauen und nicht diese PHP Datei. Vom Namen her würde ich also vielleicht in der encoder.c anfangen.

http://dev.eaccelerator.net/eacceler....9.5/encoder.c
Thunderb0lt ist offline   Mit Zitat antworten
Alt 05.05.10, 17:23   #5 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
eAccelerator "kompiliert" PHP Scripts, so dass diese direkt ausgeführt werden können ohne erst den aufwendigen (d.h. zeitraubenden) Umweg über den PHP Interpreter zu gehen. Damit soll man Performancevorteile bekommen.

Deswegen lässt sich das auch nicht leicht dekodieren, da du eben dort nicht kodierten PHP Code vorfindest. Stattdessen müsstest man es disassemblieren, wie man es von normalen Programmen herkennt. Gut möglich, dass du dann am Ende mit einer Art Maschinencode dortstehst.

Ob es vernünftige disassembler für PHP Binärcode / eAccelerator gibt kann ich nicht sagen. Es könnte sein dass es schonen einen gibt der dir das in PHP Code zurückübersetzt (ähnlich wie mit Bytecode bei Java), kann aber auch sein, dass dort noch niemand ein Programm geschrieben hat.
Elderan ist offline   Mit Zitat antworten
Alt 05.05.10, 19:41   #6 (permalink)
Themenstarter
 
Registriert seit: 05.05.10
Mich Leistung: Facit NTK
Likes: 0
Standard

Danke für eure Antworten. Ich habe mir die encode C-Datei angesehen.
Leider kann ich kein C, die Sprache ist zwar nicht besonders schwer, aber so ganz Blicke ich da nicht durch. Ich habe schon nach einem Eaccelerator decoder oder disassemblierer gesucht, allerdings findet man dort nichts.
Ich finde nur dauernt von verschiedenen Leuten postings, dass sie es geschafft haben, allerdings nirgends einen Hinweis wie. Was mir auch komisch vorkommt, ist es das ich da ja mit meinen ersten Versuchen schon ein paar Lesbare sachen rausbekommen hab, was mir ein bisschen Hoffnung gibt, dass es doch irgendwie klappen könnte. Hat jemand zu meinem ersten Ansatz (also erst Base64 dann gzuncompile) vielleicht noch ne Idee?
Mich ist offline   Mit Zitat antworten
Alt 05.05.10, 22:13   #7 (permalink)
 
Benutzerbild von Dresko
 
Registriert seit: 30.01.10
Dresko Leistung: 8086Dresko Leistung: 8086
Likes: 1
Standard

PHP wird wie Java in einer VM ausgeführt. Der Grund ist aber nicht die Plattformunabhängigkeit, sondern das grundlegende Design von PHP. Denn die Zend-Engine übersetzt nicht nur die 75 Basisoperationen eines x86-Chipsatzes, sondern nutzt auch noch eigene Kommandos (nennt man Opcodes). Es gibt also innerhalb der Zend-Engine neben Addition, Subtraktion usw. auch noch Implementierungen für include(), echo() usw.

Wenn nun eine PHP-Source-Datei von einem Client angefragt wird, nimmt die Zend-Engine die Source-Datei, interpretiert sie und übersetzt sie in den sogenannten Bytecode (kann man sich wie Assembler-Code vorstellen). Dieser Bytecode wird nun in ein Array gepackt (dem sog. Op-Array). Danach wird von einer anderen Komponente der Zend-Engine dieses Op-Array Schritt-für-Schritt ausgeführt.

Genau da setzen nun Programme wie eAccelerator, ionCube, ZenGuard usw an.
Auf der einen Seite wird der Bytecode schon vorkompiliert und gecached, sodass dieser Zwischenschritt nicht immer wieder gemacht werden muss, zum anderen sollen sie meist dabei helfen den Source-Code zu verschleiern, damit er nicht einfach kopiert oder geändert werden kann.
Um dies halbwegs effektiv bewerkstelligen zu können, müssen sie die Zend-spezifischen Opcodes und die zend_compile()- und zend_execute()-Funktionen durch eigene Versionen ersetzen bzw. erweitern.

Ganz egal was du machst, du wirst also höchstens an diesen Bytecode rankommen. Mit VLD oder mit ByteKit kannst du dann zwar die Oparrays dumpen und dir die Opcodes in lesbarer Form anzeigen lassen, aber wie schon erwähnt, ist das sehr Assembler-ähnlich und auch ähnlich komplex.

Interessant dazu:
http://powerofcommunity.net/poc2008/stefan.pdf
http://elearn.jku.at/wiki/index.php/...Gruppe_7/Paper
__________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
- Rick Cook -

Geändert von Dresko (05.05.10 um 22:18 Uhr)
Dresko ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » EAccelerator decodieren
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61