Integrity Check: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K (Aktion)
K (Schutz gegen Infektion)
 
(26 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
[[File:Integrity_check_er.jpg|right|Integrity Check]] Früherkennung von gehackten Contao Installationen mittels Integritäts Check einiger Dateien.
+
[[File:check_overview_de.jpg|right|Integrity Check]] Früherkennung von gehackten Contao Installationen mittels Integritäts Check einiger Dateien.
  
 
{{ExtInfo
 
{{ExtInfo
 
| Dev=Glen Langer ([[User:BugBuster|BugBuster]])
 
| Dev=Glen Langer ([[User:BugBuster|BugBuster]])
| DevSite=http://www.contao.glen-langer.de
+
| DevSite=http://contao.ninja
| ExtVersion=1.0.0 rc1
+
| ExtVersion=1.3.10 / 3.4.5
 
| Version=ab 2.10.0
 
| Version=ab 2.10.0
 
| ERLink=http://www.contao.org/de/extension-list/view/integrity_check.de.html
 
| ERLink=http://www.contao.org/de/extension-list/view/integrity_check.de.html
Zeile 20: Zeile 20:
 
<br />
 
<br />
 
Fehler und Wünsche können im [https://github.com/BugBuster1701/integrity_check/issues Tracking System] gemeldet werden.
 
Fehler und Wünsche können im [https://github.com/BugBuster1701/integrity_check/issues Tracking System] gemeldet werden.
 +
 +
=Übersetzungen=
 +
Übersetzungen können auf [https://www.transifex.com/projects/p/contao-integrity_check/ Transifex] durchgeführt werden.
  
 
=Installation=
 
=Installation=
Zeile 31: Zeile 34:
 
Ein Update erfolgt identisch der Installation.
 
Ein Update erfolgt identisch der Installation.
  
=Infektionsbeispiel=
+
=Infektionsbeispiele=
 
Wie sieht nun eine solcher Hack aus?<br />
 
Wie sieht nun eine solcher Hack aus?<br />
 
Im den von mir betrachteten Fällen war es ein Anhang an die index.php der zur Ausführung kam, wenn die Seite nicht aus dem Server-Cache kam.<br />
 
Im den von mir betrachteten Fällen war es ein Anhang an die index.php der zur Ausführung kam, wenn die Seite nicht aus dem Server-Cache kam.<br />
Zeile 39: Zeile 42:
 
echo(gzinflate(base64_decode("ZZBNisMwDIX.......T7oD")));
 
echo(gzinflate(base64_decode("ZZBNisMwDIX.......T7oD")));
 
#/c3284d#  
 
#/c3284d#  
 +
</source>
 +
oder:
 +
<source lang="php">
 +
#d47c75#
 +
echo "<script type=\"text/javascript\" .....</script>";
 +
#/d47c75#
 +
</source>
 +
Oder so (gekürzt):<br />
 +
<source lang="javascript">
 +
<script type="text/javascript">
 +
function frmAdd() {
 +
var ifrm = document.createElement('iframe');
 +
....
 +
};
 +
window.onload = frmAdd;
 +
</script>
 
</source>
 
</source>
  
Zeile 44: Zeile 63:
 
Reagiert man nicht schnell genug, und Google bekommt das mit, wird die Seite auf die schwarze Liste gesetzt. Browser wie Firefox nutzen diese, um vor dem Zugriff darauf zu warnen. Das sieht dann so aus:<br />
 
Reagiert man nicht schnell genug, und Google bekommt das mit, wird die Seite auf die schwarze Liste gesetzt. Browser wie Firefox nutzen diese, um vor dem Zugriff darauf zu warnen. Das sieht dann so aus:<br />
 
[[Datei:site_on_black_list.jpg]]
 
[[Datei:site_on_black_list.jpg]]
 +
 +
Was nun zu tun ist steht im Wiki Beitrag [[Contao_gehackt]].<br />
 +
Und im Google wieder zu überzeugen, man hat aufgeräumt, siehe diese [http://support.google.com/webmasters/bin/answer.py?hl=de&answer=163633 Google Support Seite] dazu.
  
 
=Funktion des Moduls=
 
=Funktion des Moduls=
In der jetzigen Version werden die drei wichtigsten PHP Files prüft auf Veränderungen.<br />
+
In der jetzigen Version werden diese PHP Files prüft auf Veränderungen.<br />
 
Geprüft werden:
 
Geprüft werden:
 
* index.php
 
* index.php
 +
* cron.php (ab Version 1.1.0)
 
* contao/index.php
 
* contao/index.php
 
* contao/main.php
 
* contao/main.php
 +
* .htaccess (ab Version 3.1.0)
 +
 +
Optionale Warning Checks:
 +
* Contao Update Prüfung (ab Version 3.4.0)
 +
* Prüfung auf Installtool Login-Sperre (ab Version 3.4.0)
  
 
==Prüfzeitpunkt==
 
==Prüfzeitpunkt==
Zeile 56: Zeile 84:
  
 
==Erkennung==
 
==Erkennung==
Die Prüfung erfolgt identisch zum offiziellem Contao Check Tool, d.h. über MD5 Checksummen. Es werden die Checksummen für Contao ab 2.10.0 zum Vergleich herangezogen bis zur jeweils freigegebenen Contao Version.
+
Die Prüfung kann erfolgen auf 2 Arten:
 +
* identisch zum offiziellem Contao Check Tool, d.h. über MD5 Checksummen. Es werden die Checksummen für Contao ab 2.10.0 zum Vergleich herangezogen bis zur jeweils freigegebenen Contao Version.
 +
* per Zeitstempel (ab Version 1.1.0). Dazu werden bei der Installation der Erweiterung die Zeitstempel der Dateien erfasst. Diese können auch jederzeit erneuert werden.
  
 
==Information==
 
==Information==
Im Backend kann unter System - System-Log nach dem Ergebnis geschaut werden. Normalerweise, wenn alles OK ist, taucht dort nur eine Meldung auf:
+
Im Backend kann unter System - System-Log nach dem Ergebnis geschaut werden. Normalerweise, wenn alles OK ist, taucht keine Meldung auf. Im moduleigenem Debug Modus erfolgt dann nur eine Meldung:
 
* Integritäts-Überprüfung der Dateien abgeschlossen.
 
* Integritäts-Überprüfung der Dateien abgeschlossen.
 
Wenn Veränderungen entdeckt werden, dann erfolgt eine entsprechende Meldung je Datei die es betrifft:
 
Wenn Veränderungen entdeckt werden, dann erfolgt eine entsprechende Meldung je Datei die es betrifft:
* Integritäts-Status für Datei index.php ist: beschädigt
+
* Integritäts-Status für Datei index.php ist: beschädigt [MD5]
Eine Information per Mail ist möglich, siehe dazu den Punkt [[Integrity_Check#Feinheiten|Feinheiten]].
+
** in dem Fall wurde per Checksumme MD5 geprüft.
 +
* Integritäts-Status für Datei cron.php ist: beschädigt [Zeitstempel]
 +
** in dem Fall wurde per Zeitstempel geprüft, ab Version 1.1.0 möglich.
 +
Eine Information ist per System-Log und per Mail ist möglich, siehe dazu den Punkt [[Integrity_Check#Feinheiten|Feinheiten]].
  
 
=Feinheiten=
 
=Feinheiten=
Zeile 79: Zeile 112:
 
* in Contao 2.10: täglich, wöchentlich, monatlich
 
* in Contao 2.10: täglich, wöchentlich, monatlich
 
* in Contao 2.11: stündlich, täglich, wöchentlich, monatlich
 
* in Contao 2.11: stündlich, täglich, wöchentlich, monatlich
* in Contao 3.0*: minütlich, stündlich, täglich, wöchentlich, monatlich
+
* in Contao 3.0: minütlich*, stündlich, täglich, wöchentlich, monatlich
  *Contao 3.0 Version noch in Entwicklung
+
  *muss manuell aktiviert werden
 
+
  
 
===Erkennung===
 
===Erkennung===
Derzeit ist die Erkennung einer Veränderung der Datei nur per MD5 Checksumme möglich. Es ist in einer späteren Version geplant, auch über einen Zeitstempel die Prüfung vorzunehmen.
+
Die Erkennung einer Veränderung der Datei ist auf zwei Arten möglich:
 +
* über eine MD5 Checksumme  
 +
* über einen Zeitstempel
  
 
===Aktion===
 
===Aktion===
Zeile 93: Zeile 127:
 
==Hinweise==
 
==Hinweise==
 
===System-Log und Mail===
 
===System-Log und Mail===
Möchte man für eine Datei beide Arten der Information haben, legt man einfach im Plan die Überprüfung zweimal an mit je einem der Aktionen: <br />
+
Ab Version 1.1.0 erfolgt automatisch ein Eintrag im System-Log, wenn eine Mail versendet wird.<br /> <br />
 +
Möchte man in Verison 1.0.0 für eine Datei beide Arten der Information haben, legt man einfach im Plan die Überprüfung zweimal an mit je einem der Aktionen: <br />
  
 
[[Datei:check_plan_2_de.jpg]]
 
[[Datei:check_plan_2_de.jpg]]
Zeile 100: Zeile 135:
  
 
===Es kann nur einen geben!===
 
===Es kann nur einen geben!===
Es ist möglich in der Integritäts-Check Übersicht mehrere Checks anzulegen. Das mach im Prinzip aber keinen Sinn. Daher wird dafür gesorgt, dass es nur einen Integritäts-Check geben kann, der aktiv geschaltet ist. Schaltet man einen neuen aktiv, werden automatisch alle anderen vorhandenen inaktiv geschaltet.
+
Es ist möglich in der Integritäts-Check Übersicht mehrere Checks anzulegen. Das macht im Prinzip aber keinen Sinn. Daher wird dafür gesorgt, dass es nur einen Integritäts-Check geben kann, der aktiv geschaltet ist. Schaltet man einen neuen aktiv, werden automatisch alle anderen vorhandenen inaktiv geschaltet.
  
 
==Schutz gegen Infektion==
 
==Schutz gegen Infektion==
Nun, ein genereller Schutz ist wohl nicht möglich. Wenn die Infektion z.B. dadurch passierte, dass jemand an die FTP Daten kam, kann er alles was der Eingentümer auch kann. <br />
+
Nun, ein genereller Schutz ist wohl nicht möglich. Wenn die Infektion z.B. dadurch passierte, dass jemand an die FTP Daten kam, kann er alles was der Eigentümer auch kann. <br />
Es gibt aber eine Möglichkeit, dass der angehangene Code nicht zur Ausführung kommt. In Contao 3 wurde dies bereits auf ähnliche Art umgesetzt. Hier mal kurz die Info für Contao 2.<br />
+
Es gibt aber eine Möglichkeit, dass der angehangene Code nicht zur Ausführung kommt. In Contao 3 wurde dies bereits auf ähnliche Art umgesetzt. Hier mal kurz die Info '''für Contao 2'''.<br />
 
Editiert die index.php und geht in die letzte Zeile der Methode "run", müsste die Zeile 269 sein. (2.11.5) Schreibt davor einfach ein '''''exit;''''' rein, oder fügt eine Zeile dafür ein. Hier mal ab Zeile 268 als Beispiel:
 
Editiert die index.php und geht in die letzte Zeile der Methode "run", müsste die Zeile 269 sein. (2.11.5) Schreibt davor einfach ein '''''exit;''''' rein, oder fügt eine Zeile dafür ein. Hier mal ab Zeile 268 als Beispiel:
 
<source lang="php">
 
<source lang="php">
Zeile 117: Zeile 152:
 
</source>
 
</source>
 
Damit wird die Abarbeitung des Scripte beendet, was auch OK ist, da davor die Seite bereits zum Browser gesendet wurde.
 
Damit wird die Abarbeitung des Scripte beendet, was auch OK ist, da davor die Seite bereits zum Browser gesendet wurde.
Achtung: Nun wird das Integrity Check Tool wie auch das Contao Check Tool eine Veränderung melden.
+
Achtung: Nun wird das Integrity Check Tool wie auch das Contao Check Tool eine Veränderung melden im MD5 Checksummen Test. Ab Version 1.1.0 kann in dem Fall dann der Test per Zeitstempel ausgewählt werden.
  
 
----
 
----
--[[Benutzer:BugBuster|BugBuster]] 21:44, 31. Jul. 2012 (CEST)
+
--[[Benutzer:BugBuster|BugBuster]] ([[Benutzer Diskussion:BugBuster|Diskussion]]) 15:13, 24. Jan. 2015 (CET)

Aktuelle Version vom 24. Januar 2015, 15:14 Uhr

Integrity Check
Früherkennung von gehackten Contao Installationen mittels Integritäts Check einiger Dateien.


Erweiterungs-Übersicht
Name des Entwicklers Glen Langer (BugBuster)
Entwickler Webseite http://contao.ninja
Version der Erweiterung 1.3.10 / 3.4.5
Kompatibilität mit Contao Version ab 2.10.0
Link zum Extension Repository http://www.contao.org/de/extension-list/view/integrity_check.de.html
Den Entwickler unterstützen http://www.amazon.de/wishlist/26HHEJOU03G76
Link zum Tracker https://github.com/BugBuster1701/integrity_check/issues

Wie es dazu kommen kann, und das dabei in den meisten Fällen nicht Contao selbst schuldig ist, kann hier nachgelesen werden: Contao gehackt
Nun muss mal das natürlich noch selber merken, möglichst bevor Google die Seite sperrt.

Forum

Fragen zum Integrity Check Modul werden im Forum beantwortet: Forum
Fehler und Wünsche können im Tracking System gemeldet werden.

Übersetzungen

Übersetzungen können auf Transifex durchgeführt werden.

Installation

Installation erfolgt über das Extension Repository im Backend der Contao Installation.

Eine manuelle Installation ist möglich, dazu die ZIP Datei vom Extension Repository laden, entpacken und entsprechend übertragen.
Dadurch sollte ein Verzeichnis /system/modules/integrity_check angelegt worden sein.
Danach wie dabei üblich /contao/install.php aufrufen um ein eventuelles Update der Datenbank durchführen. (nur bei manueller Installation)
Im System Menü erscheint dann ein neuer Unterpunkt: Integritäts-Check

Installation als Update

Ein Update erfolgt identisch der Installation.

Infektionsbeispiele

Wie sieht nun eine solcher Hack aus?
Im den von mir betrachteten Fällen war es ein Anhang an die index.php der zur Ausführung kam, wenn die Seite nicht aus dem Server-Cache kam.
Dieser sah in etwa so aus (gekürzt):

#c3284d#
echo(gzinflate(base64_decode("ZZBNisMwDIX.......T7oD")));
#/c3284d#

oder:

#d47c75#
echo "<script type=\"text/javascript\" .....</script>";
#/d47c75#

Oder so (gekürzt):

<script type="text/javascript"> 
function frmAdd() { 
var ifrm = document.createElement('iframe'); 
....
}; 
window.onload = frmAdd; 
</script>

Seite auf der schwarzen Liste

Reagiert man nicht schnell genug, und Google bekommt das mit, wird die Seite auf die schwarze Liste gesetzt. Browser wie Firefox nutzen diese, um vor dem Zugriff darauf zu warnen. Das sieht dann so aus:
Site on black list.jpg

Was nun zu tun ist steht im Wiki Beitrag Contao_gehackt.
Und im Google wieder zu überzeugen, man hat aufgeräumt, siehe diese Google Support Seite dazu.

Funktion des Moduls

In der jetzigen Version werden diese PHP Files prüft auf Veränderungen.
Geprüft werden:

  • index.php
  • cron.php (ab Version 1.1.0)
  • contao/index.php
  • contao/main.php
  • .htaccess (ab Version 3.1.0)

Optionale Warning Checks:

  • Contao Update Prüfung (ab Version 3.4.0)
  • Prüfung auf Installtool Login-Sperre (ab Version 3.4.0)

Prüfzeitpunkt

Dieser Test wird automatisch durchgeführt über den Contao-Cron Mechanismus, siehe dazu den Punkt Feinheiten.

Erkennung

Die Prüfung kann erfolgen auf 2 Arten:

  • identisch zum offiziellem Contao Check Tool, d.h. über MD5 Checksummen. Es werden die Checksummen für Contao ab 2.10.0 zum Vergleich herangezogen bis zur jeweils freigegebenen Contao Version.
  • per Zeitstempel (ab Version 1.1.0). Dazu werden bei der Installation der Erweiterung die Zeitstempel der Dateien erfasst. Diese können auch jederzeit erneuert werden.

Information

Im Backend kann unter System - System-Log nach dem Ergebnis geschaut werden. Normalerweise, wenn alles OK ist, taucht keine Meldung auf. Im moduleigenem Debug Modus erfolgt dann nur eine Meldung:

  • Integritäts-Überprüfung der Dateien abgeschlossen.

Wenn Veränderungen entdeckt werden, dann erfolgt eine entsprechende Meldung je Datei die es betrifft:

  • Integritäts-Status für Datei index.php ist: beschädigt [MD5]
    • in dem Fall wurde per Checksumme MD5 geprüft.
  • Integritäts-Status für Datei cron.php ist: beschädigt [Zeitstempel]
    • in dem Fall wurde per Zeitstempel geprüft, ab Version 1.1.0 möglich.

Eine Information ist per System-Log und per Mail ist möglich, siehe dazu den Punkt Feinheiten.

Feinheiten

Integritäts-Check anlegen

Beim Anlegen des Integritäts-Checks muss ein Überprüfungsplan definiert werden. Hier kann für jede der zu prüfenden Dateien der Zeitpunkt, die Erkennung und die Aktion eingestellt werden.

Check plan de.jpg


Anschließend noch die Integritäts-Überprüfung aktivieren.
Will man sehen welche Dateien geprüft wurden und somit ob überhaupt, kann der moduleigene Debug Modus eingeschaltet werden.


Zeitpunkt

  • in Contao 2.10: täglich, wöchentlich, monatlich
  • in Contao 2.11: stündlich, täglich, wöchentlich, monatlich
  • in Contao 3.0: minütlich*, stündlich, täglich, wöchentlich, monatlich
*muss manuell aktiviert werden

Erkennung

Die Erkennung einer Veränderung der Datei ist auf zwei Arten möglich:

  • über eine MD5 Checksumme
  • über einen Zeitstempel

Aktion

  • System-Log: Nachricht erfolgt im System-Log, im Backend einsehbar
  • Mail an Admin: eine Mail an den Admin der Contao Installation erfolgt
    • Es erfolgt dann auch automatisch ein Eintrag im System-Log (ab Version 1.1.0)

Hinweise

System-Log und Mail

Ab Version 1.1.0 erfolgt automatisch ein Eintrag im System-Log, wenn eine Mail versendet wird.

Möchte man in Verison 1.0.0 für eine Datei beide Arten der Information haben, legt man einfach im Plan die Überprüfung zweimal an mit je einem der Aktionen:

Check plan 2 de.jpg
Hier als Beispiel nur für die index.php, dass geht natürlich auch für die anderen Dateien.

Es kann nur einen geben!

Es ist möglich in der Integritäts-Check Übersicht mehrere Checks anzulegen. Das macht im Prinzip aber keinen Sinn. Daher wird dafür gesorgt, dass es nur einen Integritäts-Check geben kann, der aktiv geschaltet ist. Schaltet man einen neuen aktiv, werden automatisch alle anderen vorhandenen inaktiv geschaltet.

Schutz gegen Infektion

Nun, ein genereller Schutz ist wohl nicht möglich. Wenn die Infektion z.B. dadurch passierte, dass jemand an die FTP Daten kam, kann er alles was der Eigentümer auch kann.
Es gibt aber eine Möglichkeit, dass der angehangene Code nicht zur Ausführung kommt. In Contao 3 wurde dies bereits auf ähnliche Art umgesetzt. Hier mal kurz die Info für Contao 2.
Editiert die index.php und geht in die letzte Zeile der Methode "run", müsste die Zeile 269 sein. (2.11.5) Schreibt davor einfach ein exit; rein, oder fügt eine Zeile dafür ein. Hier mal ab Zeile 268 als Beispiel:

        }
    }

wird zu:

        }
        exit;
    }

Damit wird die Abarbeitung des Scripte beendet, was auch OK ist, da davor die Seite bereits zum Browser gesendet wurde. Achtung: Nun wird das Integrity Check Tool wie auch das Contao Check Tool eine Veränderung melden im MD5 Checksummen Test. Ab Version 1.1.0 kann in dem Fall dann der Test per Zeitstempel ausgewählt werden.


--BugBuster (Diskussion) 15:13, 24. Jan. 2015 (CET)

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich überlege gerade warum Contao Developer einen Hangout mit Bildübertragung machen... abgesehen von TheTril sind wir da alle relativ hässliche Typen wo Audio deutlich reichen würde. *g*

Leo Unglaub
In anderen Sprachen
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge