rdombach
Avatar rdombach
Themenersteller
Security-Admin
Content Halbgott (608 Beiträge)

Heute: Safer Internet Day

am 08.02.2011, 19:43 Uhr eröffnete rdombach folgenden Thread
Sicherheit    6092 mal gelesen    7 Antwort(en).

Hallo alle miteinander,

da ja heute des SID ist, will ich auch mal zwei Beiträge beisteuern, um das Internet etwas sicherer zu machen!

Kaspersky hat einen "netten" Bericht zu Remote-Installation bei Adroid-Smartphones gebracht (Na, wer hat eines?) - Details siehe www.viruslist.com/de/weblog


Wer nun bei seinem Gmail_Accont ein schwaches Passwort hat, bekommt ggf. ein Problem. Daher Tipp 1 - Nutzt sichere Passwörter! Generell überall!

Virenprogrammierer sind keine Dummies - und die oft zitierten Script-Kiddies sind inzwischen auch erwachsen! Erwachsen, ausgebufft und clever sind auch die Virenprogramme und deren Arbeitsweise! Daher gilt, checkt Eure Daten und eure Webseite / Onlinesshop / Kundenprojekt auf Schadsoftware. Eine Liste von Tools findet ihr hier: www.secuteach.de/__htmlfiles/security-scan-tools.htm


Tipp 2 - Mindestens einmal in der Woche die eigene Webseite auf Viren prüfen!

Beste Grüße
Ralph


Bitte nicht vergessen, Virenscanner und Co. zu aktualisieren!
SecuTipp: GRATIS Security-Informationen für die eigene Webseite und [url="http://twitter.com/secuteach"][img]http://w

seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 09.02.2011, 04:38 Uhr schrieb seitenreport

Hallo Ralph,

ich bin zwar etwas spät, aber bei mir hört der Tag bekanntlich ja erst am nächsten Tag auf, so dass es dann doch noch irgendwie noch passt. :wink:

Hier mein Tipp zum Safer Internet Day:

Es gibt eine Menge Websites auf denen sich Schadsoftware befindet. Surft man diese mit einem ungesichertem Browser / einem ungesichertem System an, ist die Wahrscheinlichkeit hoch, dass man sich dabei infiziert.

Doch wie kann man z.B. als Foren-Betreiber seine Besucher vor gefährlichen Links schützen?
Ganz einfach: automatisiert!

Ich habe hierzu mal kurz eine PHP Klasse geschrieben, die einen beliebigen HTML-Content auf Malware-Links hin prüft. Als Blacklist wird die Malware Domain Blocklist verwendet (es kann aber auch jede andere Blacklist eingebunden werden).

Die PHP Klasse gebe ich unter der GNU Lizenz frei, sie darf also überall beliebig eingebaut und beliebig modifiziert werden (unten im Beitrag gibt es das Ganze auch nochmal gepackt als ZIP-Archiv). :wink:

class.antiMalwareLinks.php

<?php

/***************************************************************
* Copyright notice
*
* (c) 2011 Matthias Gläßner <info@matthias-glaessner.de>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at

* www.gnu.org/copyleft/gpl.html.


*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

class antiMalwareLinks {

private $url = \'\'; // aktuelle Website => URLs dieser Domain (=interne Links) werden nicht geprüft

private $blacklisted_domains = \'\'; // Datei der Malware Domains z.B. mirror1.malwaredomains.com/files/domains.txt


private $delimiter = ""; // z.B. \\t = tab
private $del_index_url = 0; // an welcher Position befindet sich die URL
private $exclude = array(); // Exclude Felder oder Domains
private $blacklist = array();

/**
* ************************************************
* __construct
* Werte zuweisen und blacklisted_domains einlesen
* ************************************************
* @param url STRING
* @param blacklisted_domains FILE
* @param delimiter STRING
* @param del_index_url INTEGER
* @param exclude ARRAY
* @author Matthias Gläßner <info@matthias-glaessner.de>
*/
function __construct($url, $blacklisted_domains, $delimiter, $del_index_url, $exclude){

// Werte zuweisen
$this->url = $url;
$this->blacklisted_domains = $blacklisted_domains;
$this->delimiter = $delimiter;
$this->del_index_url = $del_index_url;
$this->exclude = $exclude;

// Datei als Array einlesen
$lines = file($this->blacklisted_domains, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Datei zeilenweise durchgehen und Blacklist erstellen
foreach ($lines as $line_num => $line) {
// Zeile aufsplitten
$data = explode($this->delimiter,$line);

// Host der jeweiligen Zeile holen
$domain = $data[$this->del_index_url];

// Prüfen, ob es sich um Feld/Domain ignoriert werden soll
if (!in_array($domain,$this->exclude)) {

// falls nicht, zur Blacklist hinzufügen
$this->blacklist[] = $domain;
}
}
}


/**
* ************************************************
* Function check()
* Prüft einen HTML Content auf Links, die
* auf Malware-URLs verweisen
* ************************************************
* @param html TEXT(HTML)
* @return INTEGER Anzahl der gefundenen Malware Links
* @author Matthias Gläßner <info@matthias-glaessner.de>
* @author Florian Buenzli <floern.com> (Links finden)
*/
public function check($html) {
$urls_malicious = 0; // Anzahl der Malware Links

// Links finden
if(preg_match_all(\'#<a\\s([^>]*)>#Usi\', $html, $array)){
foreach($array[1] as $key){
if(preg_match(\'#href=(\\\'|")([^>"\\\']+)(\\\\1)#Uis\',$key,$href) && !preg_match(\'#href=(\\\'|")\\##is\',$key)){
$href = trim($href[2]);
$host = preg_replace(\'#^.+://([^/]+)(/.*)?$#\', \'$1\', $this->url);

if(preg_match(\'#^https?://#Usi\', $href) && !preg_match(\'#^https?://\'.preg_quote($host,\'#\').\'#Usi\', $href)){
// Nur externe Links prüfen
$urlhost = parse_url($href,PHP_URL_HOST);

// Falls www. => www. entfernen
if (substr($urlhost,0,4)==\'www.\') {$urlhost=substr($urlhost,4,strlen($urlhost)-4);}

// URL auf Blacklist-Eintrag checken
if (in_array($urlhost,$this->blacklist)) {$urls_malicious++;}
}
}
}
}

// Anzahl der Malware Links zurückgeben
return $urls_malicious;
}
}
?>


antiMalwareLinks.php (Beispielaufruf)

<?php

// Klasse einbinden
require_once(\'class.antiMalwareLinks.php\');

// Beispiel HTML Content holen
$html = file_get_contents(\'http://www.seitenreport.de\');

// Der HTML einen infizierten Link (ACHTUNG!) hinzufügen
$html .= \'Ich bin infiziert\';

/**********
* Klasse erzeugen
*********/
$antiMalware = new antiMalwareLinks(
/* interne Links dieser Domain nicht prüfen */ \'http://www.seitenreport.de\',
/* blacklisted_domains */ \'http://mirror1.malwaredomains.com/files/domains.txt\', /* Tipp: lokal abspeichern und auf {meinverz}/domains.txt ändern */
/* delimiter */ "\\t", /* tabulator */
/* an welcher pos befindet sich jeweils die URL */ 2,
/* exclude fields or domains */ array(\'domain\',\'notice\')

);

// Ergebnis ausgeben
echo \'Gefundene Malware Links: \'.$antiMalware->check($html);

?>


Die Klasse eignet sich z.B. hervorragend, um User-generated-Content zu prüfen, kann aber genausogut als Malware-Check für fremde Seiten verwendet werden (wird in Kürze auch als neuer Analysepunkt in den Seitenreport eingebaut )

Beste Grüße,
Matthias


SEO Analyse und Website-Check mit Seitenreport

ptra
Avatar ptra
Designerin (Print & Web)
Content Meister (473 Beiträge)
am 09.02.2011, 07:46 Uhr schrieb ptra

Hallo Matthias,

ich würde sehr gern was für die Sicherheit meiner eigenen Webseitenbesucher tun. Wie binde ich jetzt das Ganze in meine händisch programmierte Site ein, um es nutzen zu können? Oder aber auch in meine neue Wordpress-Baustelle?

Gruß. Petra


Gegen die Infamitäten des Lebens... (siehe Hermann Hesse) http://www.universoom.de

seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 09.02.2011, 15:05 Uhr schrieb seitenreport

Hallo Petra,

hierzu kannst Du z.B. das folgende PHP-Script in Deine PHP-Dateien includen. Dieses prüft automatisch jede bei Dir angesurfte Seite und benachrichtigt Dich per E-Mail, falls etwas gefunden wird. Der Cache sorgt dafür, dass die Seite nicht bei jedem Aufruf neu getestet werden muss. Der Prüfungsintervall liegt bei 1 Tag (lässt sich aber beliebig anpassen). Die domains.txt bitte lokal herunterladen und im gleichen Verzeichnis ablegen.

autotestMalwareLinks.inc.php (ungetestet!)
Einbinden per require_once(\'autotestMalwareLinks.inc.php\');

<?php
/***************************************************************
* Copyright notice
*
* (c) 2011 Matthias Gläßner <info@matthias-glaessner.de>
* All rights reserved
*
* Links jeder angesurften Webseite automatisch auf
* Malware prüfen und bei Fund per E-Mail benachrichtigen
* (inkl. Caching)
*
* Einbindung in jede beliebige PHP Website per
* require_once(\'autotestMalwareLinks.inc.php\');
*
***************************************************************/

// Klasse einbinden
require_once(\'class.antiMalwareLinks.php\');

// CONFIGs
$_EMAIL_FROM = \'Seitenreport <info@seitenreport.de>\';
$_EMAIL_TO = \'Seitenreport <info@seitenreport.de>\';
$_EMAIL_BETREFF = \'Malware Fund\';
$cachelifetime = 3600*24; // = 1 Tag; Lifetime des Caches in Sekunden

// URLs

$base =(isset($_SERVER[\'HTTPS\'])?\'https\':\'http\').\'://\' . $_SERVER[\'HTTP_HOST\']; // Base URL (z.B. www.seitenreport.de)


$currenturl = $base.$_SERVER[\'REQUEST_URI\']; // beim Aufruf gerade aktive URL

// Cache (Datei basiert)
$cachefile = base64_encode($currenturl);
$cachefile = str_replace(\'/\',\'_\',$cachefile); // etwaige "/" umwandeln, da im Dateinamen nicht gültig

if (!file_exists($cachefile) || filemtime($cachefile) < (time()-$cachelifetime)) {
/* Cache für diese URL nicht vorhanden oder abgelaufen => erneuern */

// HTML Content der Seite holen
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $currenturl);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); // timeout
curl_setopt($curl, CURLOPT_TIMEOUT, 15); // timeout
curl_setopt($curl, CURLOPT_ENCODING, \'gzip\');
curl_setopt($curl, CURLOPT_USERAGENT, \'Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6.3\');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(\'Accept-Language: de-de\'));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($curl);
curl_close($curl):

/**********
* Klasse erzeugen
*********/
$antiMalware = new antiMalwareLinks(
/* interne Links dieser Domain nicht prüfen */ $base,
/* blacklisted_domains */ \'domains.txt\',
/* delimiter */ "\\t", /* tabulator */
/* an welcher pos befindet sich jeweils die URL */ 2,
/* exclude fields or domains */ array(\'domain\',\'notice\')

);

// Bei Fund per E-Mail benachrichtigen
if ($antiMalware->check($html)>0) {
$header = \'From: \'.$_EMAIL_FROM ."\\n";
$header .= "Content-Type: text/html; charset=utf-8\\n";
$header .= " Content-Transfer-Encoding: 8bit\\n";
$message = \'Auf der Website \'.$curenturl.\' wurde ein Link entdeckt, der auf eine Malware-Seite verweist. Bitte prüfen!\';
@mail($_EMAIL_TO, $_EMAIL_BETREFF, $message, $header);
}

// Cache File erzeugen oder erneuern
touch($cachefile);

}

?>


Beste Grüße,
Matthias


SEO Analyse und Website-Check mit Seitenreport

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 09.02.2011, 16:08 Uhr schrieb romacron

Hallo Matthias,

das Skript ist richtig gut geschrieben. Kompliment!

Sollte man dieses Script fix als Joomla Plugin schreiben? Es müsste ein wenig auf Joomla gemünzt werden, wenn du nichts dagegen hast.
So haben die Joomla Admins ihr gewohntes Backend samt der Einstellmöglichkeiten.

Gerade für Foren die in Joomla integriert sind, wird dies von grossem Nutzen sein. Wer möchte seinen Nutzern miese Links liefern, wenn man das bereits im Vorfeld abstellen kann.

Ein Artikel zum Thema Portal-Sicherheit, oder besser gesagt,
"wie man als einfacher User ganz easy bestimmte User-Daten tracken kann" steht im Augenblick noch an.

Ggf kann man die Abwehrmassnahme mit deinem Script kombinieren


ptra
Avatar ptra
Designerin (Print & Web)
Content Meister (473 Beiträge)
am 09.02.2011, 16:51 Uhr schrieb ptra

seitenreport schrieb:
Hallo Petra, hierzu kannst Du z.B. das folgende PHP-Script in Deine PHP-Dateien includen. Beste Grüße, Matthias



Danke Matthias,
das werde ich ausprobieren. Toller Service

Gruß. Petra.


Gegen die Infamitäten des Lebens... (siehe Hermann Hesse) http://www.universoom.de

rdombach
Avatar rdombach
Security-Admin
Content Halbgott (608 Beiträge)
am 09.02.2011, 20:28 Uhr schrieb rdombach

SUPER ARBEIT & ein AUSGEZEICHNETER, NÃœTZLICHE BEITRAG!

Danke Matthias!

Beste Grüße

Ralph

PS: Da kann nun wirklich jeder was für Security tun!


Bitte nicht vergessen, Virenscanner und Co. zu aktualisieren!
SecuTipp: GRATIS Security-Informationen für die eigene Webseite und [url="http://twitter.com/secuteach"][img]http://w

seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 13.02.2011, 13:43 Uhr schrieb seitenreport

romacron schrieb:

Hallo Matthias,

das Skript ist richtig gut geschrieben. Kompliment!

Sollte man dieses Script fix als Joomla Plugin schreiben? Es müsste ein wenig auf Joomla gemünzt werden, wenn du nichts dagegen hast.
So haben die Joomla Admins ihr gewohntes Backend samt der Einstellmöglichkeiten.

Gerade für Foren die in Joomla integriert sind, wird dies von grossem Nutzen sein. Wer möchte seinen Nutzern miese Links liefern, wenn man das bereits im Vorfeld abstellen kann.


Hallo Roman,

von mir aus gerne, vielen Dank.

Ich werde die Klasse sobald ich zwischenzeitlich etwas Zeit finde, auch nochmal als eigenständige TYPO3 Extension freigeben, die sich dann via Hook(s) in andere Extensions "einbinden" kann.

Beste Grüße,
Matthias


SEO Analyse und Website-Check mit Seitenreport

  • 1


« zurück zu: Sicherheit

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48346 Mitglieder registriert.