Wie kann man ein PHP-Programm absichern?

Bash, Shell, PHP, Python, Perl, CGI
sandro
Posts: 46
Joined: 2007-02-11 23:39

Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-04-30 00:23

Hallo,
auf einem Ubuntu-Server soll ein PHP-Programm gegen Diebstahl abgesichert werden. Das Programm liegt mit Hilfe von “Zend Guard“ in Binärform auf dem Server.

Wenn zum Beispiel der Server angegriffen wird und das Programm kopiert wird, oder wenn der Provider das Programm kopiert, denn der Provider hat einen direkten zugriff auf die Festplatte. Wie kann ich am besten das Programm schützen?

Wie sicher ist, wenn ich wie folgt nach IP-Adresse bzw. Domainname abfrage:

If(($_SERVER[’SERVER_ADDR’] ==’12.34.56.78’) && (($_SERVER[’SERVER_NAME’] ==’Meindomein’))

Ist diese Methode sicher oder kann man irgendwie die $_SERVER –Variablen manipulieren?

Hat jemand vielleicht eine bessere Idee?

Vielen Dank im Voraus.
Gruß, Sandro

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: Wie kann man ein PHP-Programm absichern?

Post by freddy36 » 2008-04-30 08:12

Einfache Antwort: Garnicht!

In entsprechenden Kreisen gibt es entsprechend modifizierte PHP Versionen in die man beliebige PHP "binär" Daten reinkloppt und normaler PHP code rauskommt.

Bei Zend bekommt man sogar sehr gut lesbaren code heraus, andere Programme ersetzen noch Variablen Namen mit a1, a2, a3, etc. das macht den Code dann schwerer zu lesen, aber bringt nicht wirklich was.

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-04-30 21:04

Danke für die Antwort. Ich werde trotzdem “Zend Guard“ benutzen, immerhin besser als nichts.

Gruß, Sandro

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie kann man ein PHP-Programm absichern?

Post by Joe User » 2008-04-30 21:41

Security through obscurity hat noch nie funktioniert...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-05-01 19:32

Ich habe noch etwas recherchiert, außer einige Behauptung, habe keinen Argument gegen Einsatz von “Zand Guard“ gefunden.

Folgendes habe ich aus einem Forum:
Zend Guard "verschlüsselt" die Scripte nicht, sondern kompiliert sie in einen maschinenlesbaren Code, genauso, wie das php Modul das während der Interpretation des Quellcode macht.

“Damit ist eine "Entschlüsselung" nicht möglich, sondern man würde einen Re-Compiler benötigen, den es definitiv für php nicht gibt.

Zend wäre ja schön blöd, eine Codierungssoftware für 1150 Euro zu verticken und dann einen Re-Compiler zu bauen.“


Naja, die jetzige Version von ZandGuard verschlüsselt inkl. Einbindung der IP, Domainname, …

Für mich hört es sich vernünftig an! :!:
Gruß, Sandro

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie kann man ein PHP-Programm absichern?

Post by Joe User » 2008-05-01 20:10

Man benötigt lediglich ein licht modifiziertes PHP-Binary um an einen funktionierenden Quellcode zu kommen. Solche Binaries sowie die entsprechenden Patches sind seit Jahren im Netz frei verfügbar. Daher sind Produkte wie ZendGuard rausgeschmissenes Geld und eine völlig unnötige Verschwendung von wertvollen Ressourcen, sowohl beim Entwickler als auch beim Kunden. Es ist das gleiche Phänomen wie bei "Personal Firewalls": Reines Marketing.
Um seinen Quellcode effektiv zu schützen, muss man mittels Assambler tief in die Trickkiste greifen und für Hochsprachen unerreichbare (undokumentierte) Hardware-Features nutzen und/oder man nutzt die Hardware anders als vom Hersteller ursprünglich vorgesehen. Alles andere ist auf Dauer wirkungslos...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: Wie kann man ein PHP-Programm absichern?

Post by freddy36 » 2008-05-01 20:39

“Damit ist eine "Entschlüsselung" nicht möglich, sondern man würde einen Re-Compiler benötigen, den es definitiv für php nicht gibt.


Sowas gibts eben doch :)

Hier mal ein Beispiel, habe auf die schnelle mal das Captcha Script von http://www.roscripts.com/PHP_captcha_script-88.html genommen (Hab ich auf die schnelle gefunden).

Das original wurde mit voller Optimierung mit Zend verschlüsselt, anschließend wieder "Entschlüsselt".

Original: http://pastebin.com/f66fe89bb
Entschlüsselt: http://pastebin.com/f3892e119

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-05-02 00:42

Hallo,
zuerst einmal danke für die Beiträge.
Es ist das gleiche Phänomen wie bei "Personal Firewalls": Reines Marketing.

"Personal Firewalls" :!: Wie meinst Du es? Unter Windows benutze ich die kostenlose Version von “ZoneAlarm“. Von Innen nach außen funktioniert sehr gut. Es meldet bzw. sperrt alle Programm die eine Verbindung nach außen aufbauen wollen.

Von außen nach Innen habe keinen Test durchgeführt, aber einpaar Mal, als ich auf einige unseriöse Seiten (natürlich zufällig bin dort gelandet!) gelandet war, hat mir Angriffe gemeldet.
Ich halte die Firewalls (unter Windows) nicht für überflüssig.

Zurück in PHP:
Ich habe auch hier unten ein kleines PHP-Script. Das habe ich mit ZendGuard in Binär-Format und verschlüsselt.

Code: Select all

Zend 2006022801 3 0 0 1331 2573 xù
Ÿ2 þQ©y)
®y Š¦X™f&æ@¼AØU€êÐ’Ôâ’xCS# S ƒ&&¦&FF†ÙV¯?7$í¿Â|È£ZØG:»üÀniÖžÐýYË?Çœ¼yÅÆæíûúº¸©æ²3—–|jøþñß,Å‹¥O6èê<=3szmÉéøÈÚFi_Ÿùº§³d×(Ù,zÎ]Á¨¹RèÌÖÕ¯vž¿tõ¨ù…—&
I‡ç4.»SŸg¶Ë£ÍVò¹UUËÙâ¿}|Ü”%÷aºÝgõkÕÎÏß?=¶+…¯÷üµ3aÖ_§ÞÈ/}¡öaÓ÷ïK-ÿšÛ
Qß[|¥ñ©ÀBeßY‘.É׫VÝj»tñÒñ­/´÷>x³ÒârãÎÇw_ŠÛ˜0ùÞŒîm|Éß®Ëز®™«Þ½Â1ÍÕ„eý³k :Í'dD3‰2´™¾pÚZ|0)÷PÐÇ‚òWK]ÖÆÁlrâÖ%:⏸ƒn}rd±ú%°äz‡C]Ú”Ÿ¬!;>·¦ÍòµpxV¿ÀêJhÜ´Óa|_**¿V½ß?ý!g›û½Ó; ¾®ýêÏyÞ[óbô¢¼ZÓIþ÷÷÷Îdõxÿp]‘ñÅ)öäû""w&m¼)èÉË#á9©ØdùÎg{7–LX«irºš/ûgšìÄ

“ëL„ÜÍÄ7Ì›~M‚CF<ôøãÞ
͐ÿnì}özèóÒÅW¯6Ô‹õȨ¦MÖû”»{
›­JÛÙÐÆ—íªî›Üy.û Sgºçå6Fò'óÌ(>sïÖe–Òo›î_² qÝ?WæØÿ*knš^à¾xŽÅ ”P˜U@áoºì—q›]`ÁÅÏOܸ´è"ËÉG÷–†ON²æžâ¨s.ˆ=ðøµ6Žˆ¹³B Ú//› ï»ûxÛj¿-š;Ù7>®V¤{i®yí¤ãŒ§*çÇ–8~CæwTå]ß¾À…¦!ëÞÖïÿhhªh.`{w÷>†ü³Rn1i–ÆÁê‰r“oÇÅ?W¾5;w´…á4Õÿ7«nñÌ5º£~9ªåì~³¼ŠÃá3÷/š£s÷ÏÏÏF{š9%f~Ïøz!FÞ¼ïû>­§†v·ÿݺ½7aEëÍÓiò­1·³êdq¹Ãý¡¤,Î$vµõgË+7MÚ™Ì/èû©¿eÍ­UÓ˜–pËÉÿt+ÖÔ‚ÑÌ2šYðenC# 43°4e ±
 ÍL@l]## cKKSP»Ã€!¥47·R/1%¥Tj[@©…bUܺ†¦F¦&†f¦N´øg Öù–` 駷ÁÚÏ Èµ
Tñy¸$´ZODUp CAª‚p|Æ‚  ]¨Z¨l6Z šG &F–fÀ¦ЗPe ò0C µ9¸¤'BP
ƒv¤{á=scÐpÌ&  %Ô|=´^Š,¡#n°›Ò„+ˆ„×å° J†6, 
fáò¥   ¨;÷e~_Ú²`(úò¼_n„Ó—ðfJ÷*é mî ûîºÿp_‚c™E·'Nš"Çãü>ü‚: †êÃÝÈ]1>,ÇÚ­‚Jž6ÄÀm3¸   F ººP%Ø•€ZÐ.‰À®sq‰BjfžBv6”B€í#EX:‡{Íê5d»m8P‚Ñv†Ê¿ÄÚ“„µæ íAT Wc†Ä¢Jn#K`óÌÜÌœ¾‹Ã‹@îâÖ55564³0€w¨ ÙÓ)²


Kannst Du es mir in Klar Text also, Quell-Code umwandeln! (Falls der Datename notwendig ist: Crypt_Test.php)
Ich hoffe, dass Du es nicht schaffst. [-o<

Gruß, Sandro

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: Wie kann man ein PHP-Programm absichern?

Post by freddy36 » 2008-05-02 07:47

Wenn du mir die Datei in Binäre Form zu Verfügung stellst kann ich mein Glück versuchen. Aber binäre Daten in nem [code ] tag funktioniert dann doch nicht so gut ;)

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-05-02 11:27

Wie kann ich dir die Datei sonst zu schicken? :-k Hast Du vielleicht eine GMX, Yahoo, … Email-Adresse für so etwas? Dann werde ich sie Dir per Email senden!

Gruß, Sandro

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: Wie kann man ein PHP-Programm absichern?

Post by freddy36 » 2008-05-02 12:05

Hab dir ne PM geschickt, gibt mehr als genug von irgendwelchen seiten wo man mal schnell ne Datei hochladen kann

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-05-02 12:36

Ich habe Dir sie per Email gesendet. :-D
Gruß, Sandro

wgot
RSAC
Posts: 1707
Joined: 2003-07-06 02:03

Re: Wie kann man ein PHP-Programm absichern?

Post by wgot » 2008-05-02 12:47

Hallo,

Sandro wrote:Es meldet bzw. sperrt alle Programm die eine Verbindung nach außen aufbauen wollen.

nein.
Das Marketing besteht darin, den Leuten genau das einzureden.

Gruß, Wolfgang

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Wie kann man ein PHP-Programm absichern?

Post by sandro » 2008-05-02 13:02

Da musst du dich etwas ausführlicher ausdrücken! Ich sehe/ verstehe immer noch nicht das Problem.
Wieso einzureden? Das ist doch eine Tatsache, dass man durch die Firewalls die Verbindungen kontrollieren kann, oder? Was ist daran schlimm?

Meinst Du vielleicht die Marketing und Werbung?

Gruß, Sandro

wgot
RSAC
Posts: 1707
Joined: 2003-07-06 02:03

Re: Wie kann man ein PHP-Programm absichern?

Post by wgot » 2008-05-02 13:07

Hallo,

Sandro wrote:Da musst du dich etwas ausführlicher ausdrücken

für ausführliche Diskussion sind wir hier im falschen Forum.

Das ist doch eine Tatsache, dass man durch die Firewalls die Verbindungen kontrollieren kann, oder?

Aber nicht alle, insbesondere nicht: Programme welche die Firewall deaktivieren und Programme welche Module des Standardbrowsers für die Internetverbindung einsetzen.

Gruß, Wolfgang

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 408
Joined: 2008-03-12 05:36

Re: Wie kann man ein PHP-Programm absichern?

Post by rudelgurke » 2008-05-11 02:25

Ähm - mal einfacher gesagt - wenn sich eine Personal Firewall wegen einem Trojaner zuckt ist es ohnehin schon zu spät und das Ding ist auf dem Rechner. Wenn nicht - braucht man auch keine - dazu gibt's Zugriffsrechte bei NTFS, Virenscanner usw. usw. und vor allem das menschliche Gehirn nicht alles zu öffnen was per Mail reinkommt.

Zurück zum Thema - warum nicht das Script lizenzieren und fremde Nutzung ohne Erlaubnis untersagen ?
Verschlüsseln bringt kaum etwas und solchen Leuten ist meist dann auch die Lizenz egal, wer nicht "illegal" entschlüsselt dürfte wohl auch eine Lizenz beachten

kama
Posts: 51
Joined: 2004-05-11 22:07
Location: Aachen

Re: Wie kann man ein PHP-Programm absichern?

Post by kama » 2008-05-11 13:12

Hallo,

Wenn zum Beispiel der Server angegriffen wird und das Programm kopiert wird,

Dann würde ich sagen, dass Du andere Probleme hast als deine Software zu schützen....den meisten Angreifern geht es nicht um Software, sondern um Rechner die z.B. als Spam-Schleudern missbraucht werden können.....

Weiterhin würde ich die Software selbst einmal einer genauen Untersuchung unterziehen....Cross-Site-Scripting, SQL Injection, Verwendung von Register-Globals (on?), Korrekte Prüfung von GET/POST Daten, system-Calls aus PHP heraus (system, shell-exec etc.).....Login in deine Applikation/Seiten nur noch verschlüsselt (https) etc. Login auf den Server nur noch per Public-Key Verfahren und nicht mehr mit Username und Passwort....usw. usw. nur ein paar Hinweise....
oder wenn der Provider das Programm kopiert, denn der Provider hat einen direkten zugriff auf die Festplatte.

Wenn Du so wenig Vertrauen in deine Provider hast, würde ich Dir raten sofort den Provider zu kündigen und vor allem den Kram von der Festplatte der Maschine zu entfernen....Du bist also bei einem Massenhoster, sprich auf dem Server laufen noch hunderte andere Kunden....Dann gehört so etwas dort nicht hin....besorg Dir einen eigenen Root-Server dann hat sich das mit dem Provider....der darf dann nur noch mit Deiner Zustimmung auf die Maschine drauf....

BTW: Denke auch an eventuelle Backups die Du von der Server-Platte machst, die ja auch irgendwo gespeichert werden müssen (Verschlüsselung?)...

Lizensierung wurde ja schon genannt...

Weiterhin ist bedenken, dass wenn es denn wirklich so wichtige Software ist oder so hoch brisante Software, dann gebe ich Dir den Rat so etwas schlicht nicht auf einen Server zu legen, der via Internet erreichbar ist.....Dann liegt da das größte Problem....

Weiterhin mal ein grundlegender Gedanke zum Thema Binärform (z.B. ZendGuard, was keine Verschlüsselung ist)...Prinzip Bedingt kann jedes Programm, dass per Compiler übersetzt wurde wieder zurück gewandelt werden....Da liegt nur die Frage im Aufwand, sprich im Preis bzw. anders herum wie wichtig ist die Information die darin enthalten ist....

Apropos noch ein Tip: Wie wäre es mit http://www.roadsend.com/

MfG
Karl Heinz Marbaise