September 5, 2008
phpGuardian Guide
Sommario
Capitolo I: Introduzione
Capitolo II: Cosa è e cosa fa (o dovrebbe)
Capitolo III: Lato Client
Capitolo III.I: Lato Client - Modulo Logger
Capitolo IV: Lato Server
Capitolo IV.I: Lato Server - Modulo Logger
Capitolo IV.II: Lato Server - Modulo Encoder
Capitolo IV.III: Lato Server - Modulo Obfuscator
Capitolo IV.IV: Lato Server - Impostazioni
CAPITOLO I
Introduzione
Come prima cosa un ringraziamento a SuperSavio che se non fosse per lui questo progetto chissa quando avrebbe visto alla luce la versione 3.0, un grazie a tutti quelli che hanno scaricato lo script e continuano a farlo. Beh oltre 800 download (sia pure in 1 anno e mezzo) per me significa tanto perchè vuol dire che è utile, non dico indispensabile però utile si.
Questo progetto è partito tutto da un'idea di base di voler proteggere i miei lavori, come del resto voi che state leggendo. All'inizio era soltanto un modulo che loggava le esecuzioni dei miei script in modo da controllare se venivano riutilizzati in altri siti. Poi per poter prevenire l'esecuzione “indesiderata” l'unico modo per bloccarla, su un server su cui non si dispone l'accesso, era creare una sorta di backdoor. Così implementai una funzionalià per eseguire qualsiasi codice php decidessi all'interno dello script monitorato, quindi garantendomi la possibilità di bloccare o riservarmi qualsiasi modifica (o eliminazione, se vorrete) allo script. Poi siccome l'idea di base del semplice logger non sarebbe bastata al mio scopo, poichè chi capisse un poco di php eliminando due o tre righe di codice nel punto giusto avrebbe neutralizzato il logger, ho pensato di codificare solo quelle due o tre righe di codice impedendo all'utente smaliziato di capire cosa facessero. Però sarebbe bastato eliminarle e così ritorniamo al punto d'inizio, allora l'idea di codificare o meglio offuscare il codice, ecco che iniziai a sviluppare un offuscatore di codice php non sapendo dove si iniziasse ho iniziato a svilupparlo prendendo spunto un po in giro per la rete e mano a mano migliorandolo. Poi l'idea “ho fatto il logger e l'offuscatore, perchè non codificare realmente il codice?” da li ho implementato un metodo semplice e già visto ripetutamente in giro per internet, la coppia gzipinflate & base64_decode metodo semplice e poco efficace per proteggere realmente una pagina però una buon metodo per chi non ha pretese. Successivamente al gzip & base64 ho deciso di farmi un algoritmo per codificare uno xor tra il codice e una chiave privata, con questo metodo ho implementato due metodi: uno simile al precedente (gzip & base64) soltanto che il blocco da decodificare era col “mio” algoritmo, l'altro invece prevede che il codice codificato venisse salvato in un file a parte e che contenesse solo codice codificato e niente php, poi tramite l'.htaccess viene reindirizza la chiamata ad una pagina ad hoc che docodifica ed esegue il codice. Altri metodi altri problemi “l'.htaccess funziona solo su apache e iis?” o tralasciavo gli utenti di iis o trovavo un altro modo, allora mi venne in mente di creare un modulo isapi per iis, così decisi di iniziare a sviluppare una libreria (aumentanto notevolmente la sicurezza rispetto al semplice .htaccess) da dover includere all'interno del sorgente di php, ovviamente da compilare, in modo che potesse garantire il supporto su tutti i web server, attualmente è ancora in fase di sviluppo (rilascerò quanto prima i files necessari per compilare php con il supporto per phpGuardian. L'algoritmo è rimasto sempre quello xor tanto affezzionato...quando avrò tempo per poter progettare un algoritmo decente lo implementerò al volo...se mi riuscirà nelle prossime release cercherò di inserire qualche algoritmo esistente.
Un grazie a tutti quelli che utilizzano il mio script e un grazie ancora più grande a quelli che attendono con ansia ogni novità che riguarda il progetto!
Ora basta chiacchere, eccovi la guida tanto attesa
CAPITOLO II
Cosa è e cosa fa (o dovrebbe)
Introduzione
phpGuardian, alle origini “logging”, è uno script in php che permette di monitorare gli accessi ai vostri script, ed eventualmente di eseguire nello script del codice aggiuntivo (es. per bloccare l'esecuzione a chi volete).
Inoltre è anche un offuscatore e codificatore dei sorgenti, prevenendo la visualizzazione e la modifica del codice php.
Caratteristiche
Qui sotto c'è la lista delle caratteristiche di phpGuardian:
Controllo sull'esecuzione degli script
Esecuzione di codice aggiuntivo all'interno degli script monitorizzati
Lista degli utenti che utilizzano gli script controllati
Informazioni dettagliate su ogni utente
Codifica dei sorgenti php con algoritmi differenti e con vari livelli di sicurezza
Profili di esecuzione, per codificare / offuscare gli stessi file con le stesse impostazioni più e più volte
Astrazione del database astraction, per creare indipendenza dal database in uso (MySQL, SQLite, PostGreSQL, Oracle, ...)
Offuscatore
CAPITOLO III
Lato Client
CAPITOLO III.I
Lato Client – Modulo Logger
Introduzione
Questo modulo permette di controllare i vostri script, inserendo 3 linee di codice, dove e quando vengono eseguiti. Quindi potrete verificare se vengono eseguiti su server esterni, e volendo potete bloccare la visualizzazione inserendo del codice da eseguire all'interno dello script (es. die();) oppure eseguendo qualsiasi cosa vogliate.
Installazione
Per installare il logger in un vostro script basta semplicemente seguire questi 6 passi:
Copiare il file 'lib.php' nella root del server;
Inserire nello script le seguenti righe di codice:
require "/path/of/file/lib.php";
$pG = new phpGuardian();
$response = $pG->getResponse($_SERVER);
Sarebbe opportuno posizionarle in un punto che viene eseguito frequentemente.
Modificare l'url al 'server.php' nel file 'lib.php';
Copia il contenuto della cartella 'server' nel tuo server
Esegui le query sql contenute nel file 'sql.sql';
Modifica il file 'config.php' con le impostazioni del tuo database.
CAPITOLO IV
Lato Server
Introduzione
Questa parte di phpGuardian è semplicemente un pannello di controllo che racchiude i tre moduli (logger, encoder e obfuscator) in un'interfaccia comune con alcune funzionalità utili alla gestione semplificata ed efficiente di tutto l'insieme. La parte server è per la maggior parte una sezione di controllo, però il cuore effettivo non è il pannello di controllo, ma il file 'server.php' che si interfaccia direttamente con i vari client.
Installazione
Per installare la parte server bisogna copiare l'intera cartella 'server' sul proprio server web e poi configurare con le impostazioni del vostro database nel file 'config.php'. Due semplici operazioni per avere una versione funzionante della parte server di phpGuardian.
Utilizzo
Per poter accedere al pannello di controllo, tramite il vostro browser, basta visitare l'url http://localhost/phpGuardian/server/admin (ovviamente personalizzando l'url con il vostro percorso a phpGuardian) ed per effettuare il login utilizzare come username 'admin' e come password 'admin'. Una volta entrati potrete cambiare la password (e l'username, se volete) dalla sezione di configurazione, ma di come configurare phpGuardian se ne parlerà più avanti.
Appena entrati questa è la schermata che vi comparirà:
Fig. 1 – Homepage della parte server di phpGuardian
Nella testata (vicino al logo di phpGuardian) c'è un banner che vi informerà sulle novità riguardo al progetto, rilascio di nuove versioni, informazioni su bug e/o errori, qualsiasi cosa che gira intorno al progetto o che lo riguarda.
Nella zona sotto la testata c'è un menu rapido che vi consentirà di accedere velocemente agli strumenti principali (logger, encoder, obfuscator e impostazioni dello script).
La barra laterale a destra vi mostrerà informazioni utili riguardo alla sezione in cui vi trovate, fornendo anche un piccolo help per ogni funzionalità. Inoltre vi informa se avete l'ultima versione aggiornata (funzionalità che si può disabilitare) e un link rapido per la disconnessione dal pannello di controllo.
Nella zona centrale della pagina vi verrà mostrato, in base alla sezione che avrete scelto, la relativa pagina di controllo o di configurazione.
CAPITOLO IV.I
Lato Server – Modulo Logger
Introduzione
Questa parte di phpGuardian è semplicemente un pannello di controllo che racchiude i tre moduli (logger, encoder e obfuscator) in un'interfaccia comune con alcune funzionalità utili alla gestione semplificata ed efficiente di tutto l'insieme. La parte server è per la maggior parte una sezione di controllo, però il cuore effettivo non è il pannello di controllo, ma il file 'server.php' che si interfaccia direttamente con i vari client.
Utilizzo
Per usare il modulo logger, ci sono vari modi:
loggare e controllare l'uso degli script per verificare se vengono eseguiti su altri servers;
loggare l'uso degli script per verificare il traffico generato
Se vuoi monitorare i tuoi script con questa funzionalità, segui le istruzioni per l'installazione descritte nel capito dedicato (Capitolo III.I).
Fig. 2 – Sezione logger della parte server di phpGuardian
Nella pagina vengono elencati tutti i domini che utilizzano o hanno utilizzato, almeno una volta, uno dei vostri script monitorizzati, per ogni dominio vengono fornite informazioni aggiuntive sul dominio. In più ci sono dei tool per informazione sul server (ping e whois), esecuzione di codice php aggiuntivo all'interno degli script monitorizzati, impostazione della chiave di decodifica (da utilizzare per il modulo encoder), percentuali degli accessi assoluti e relativi.
Per eseguire del codice aggiuntivo all'interno dello script monitorato cliccare sul link “Cambia stato” e si aprirà la seguente pagina:
Fig. 3 – Funzione 'esecuzione codice' della sezione logger della parte server di phpGuardian
Per impostare il codice da eseguire basta semplicemente inserirlo all'interno della textarea e verrà eseguito al primo accesso utile allo script monitorato.
Per visualizzare quale degli script monitorati vengono eseguiti su un dominio cliccare su “Mostra(x)”, dove x è il numero dei vostri script che vengono eseguiti su un determinato server.
Fig. 4 – Funzione 'Script controllati' della sezione logger della parte server di phpGuardian
CAPITOLO IV.II
Lato Server – Modulo Encoder
Introduzione
Questo modulo permette di codificare i vostri script, attraverso il pannello di controllo potrete scegliere quali file o quali cartelle codificare, impostando alcuni parametri è possibile cambiare il tipo di algoritmo e/o livello di sicurezza.
Utilizzo
Copiare il file 'lib.php' nella root del server;
Crea un file chiave;
Genera l'hash md5 del file chiave (dentro la cartella server/includes c'è un tool apposito per la generazione dell'hash md5: md5.php?file=xxx);
Dal pannello di controllo codifica i file, usando come chiave l'hash appena generato;
Modifica il file 'lib.php' con il file chiave (percorso e nome del file).
Per personalizzare le impostazioni per codificare avete vari modi:
Fig. 5 – Sezione encoder della parte server di phpGuardian
Il box 'Backup' consente di selezionare il formato del file che verrà creato:
.bak, il file originale verrà salvato con estensione aggiuntiva .bak;
_new.php, il file originale rimarra intatto e il nuovo file verrà salvato con il suffisso _new.
Il box 'Metodi' permette di scegliere l'algoritmo di codifica, per comprendere meglio cosa fa e come funziona ogni algoritmo nel paragrafo successivo viene approfondito ognuno di essi.
Nel box 'Method of getting key' si definisce il metodo di recupero della chiave di decodifica:
offline, tramite l'hash del contenuto del file chiave;
online, tramite il file 'server.php' che recupera la chiave dal database e la invia allo script (per impostarla bisogna andare nella sezione 'logger' e selezionare il link 'Imposta' relativo alla voce 'Chiave di decodifica'.
Informazioni aggiuntive
Per usare l'encoder dei sorgenti, puoi codificarli in vari modi:
Base
GZip + Base64
Htaccess
Il metodo 1) è un'algoritmo di codifica scritto dall'autore dello script, permette di creare una versione codificata dei sorgenti utilizzando l'operatore XOR. La gestione della chiave può essere sia online che offline.
Il metodo 2) comprime il contenuto del sorgente php ed in seguito lo codifica tramite l'algoritmo base64. La gestione della chiave non è supportata.
Il metodo 3) è un'implementazione del primo metodo, questo metodo crea i sorgenti codificati senza la funzione per decodificare all'interno dello script, che è contenuta nel file execute.php e con il file .htaccess rendirizza l'accesso di ogni pagina al file execute.php. Il file execute.php recupera il contenuto codificato e provvede a decodificarlo ed a eseguirlo. La gestione della chiave può essere soltanto offline.
CAPITOLO IV.III
Lato Server – Modulo Obfuscator
Introduzione
Questo modulo permette di offuscare il codice sorgente dei vostri script per rendere molto complicata la comprensione del codice php, tramite dei parametri si può diminuire il grado di comprensione del codice (es. eliminando gli spazi, eliminando i commenti oppure rinominando le funzioni con dei nomi incomprensibili).
Utilizzo
Per utilizzare l'obfuscator basta andare nella sezione apposita:
Fig. 6 – Sezione obfuscator della parte server di phpGuardian
Il box 'Backup', è speculare a quello dell'encoder, consente di selezionare il formato del file che verrà creato:
.bak, il file originale verrà salvato con estensione aggiuntiva .bak;
_new.php, il file originale rimarra intatto e il nuovo file verrà salvato con il suffisso _new.
Il box 'Impostazioni' permette di impostare vari parametri per diminuire la comprensione del sorgente:
Lunghezza dei nomi, imposta una lunghezza fissa per i nomi di funzioni, variabili e nomi delle classi (genera un'hash md5 del nome e ne recupera solo x caratteri)
Rimozione degli spazi, rimuove dal sorgente qualsiasi carattere di spaziatura (tab, a capo, spazio)
Rimozione commenti, rimuove sia i commenti su una riga singola (// commento) che quelli su più righe (/* commento */).
CAPITOLO IV.IV
Lato Server – Impostazioni
Introduzione
Questa sezione permette di personalizzare le impostazioni globali dello script, in modo da porter utilizzare nello script delle opzioni utili ed eventualmente nei moduli encoder e obfuscator le impostazioni preferite.
Utilizzo
Fig. 7 – Sezione impostazioni della parte server di phpGuardian








