Avatar

Ps0ke

Φίλιππος Στέφανος

Nocturnal Inclination

Nerdkram, Internethumor und der ganzen Rest.

Warum man bei meiner Oma Viagra kaufen konnte

Eine Notiz vorweg: Bei sowas bitte immer einen rel="nofollow" auf die Links setzen, damit diese Betrüger nicht auch noch im Pagerank steigen!

Update 2013-02-18 20:34: Ich habe mal die .htaccess-Datei, die Ursache allen Übels, am Ende angehängt.

Meine Großeltern haben eine Ferienwohnung, die sie an Besucher vermieten. Um auch gefunden zu werden haben sie natürlich auch eine Homepage: Ferienwohnung Karola. Jetzt rief dort jemand an und meinte, wenn man bei Google nach "ferienwohnung versbach" (die Wohnung ist in Versbach) suchte, komme man auf eine kanadische Viagra Seite. Oha :D

Ich also erstmal gegeooglet:

% firefox http://www.google.de/?q=ferienwohnung+versbach

Da bekommt man dann ungefähr beim vierten Hit:

Helga Stephan

ferienwohnung-karola.de/

Wenn man nun diesen Link allerdings klickt kommt man tatsächlich bei http://offeemedic.com/ raus. Die wollen einem dann Ganz seriös Viagra verkaufen:

Liebe Besucher!

9/10 unseres Glücks beruhen auf der Gesundheit!

Diese Website helfen Männer und Frauen aller Sozialstatus gesund zu sein und die Helligkeit des Lebens zu fühlen! Häufig Menschen trauen sich Generic Medikamente einzukaufen, weil sie sind viel billiger als Markenmedikamente, aber mit gleicher pharmakologischen Wirkung. Sie wissen einfach nicht, was Generics sind.

Na dann mal los!

Jetzt mal Spaß bei Seite, seltsam ist das schon. Also habe ich natürlich erst mal geschaut, ob denn die Seite selbst infiziert wurde und vielleicht umleitet:

% firefox http://ferienwohnung-karola.de/

Nein, http://ferienwohnung-karola.de/ bringt einen tatsächlich auf die richtige Seite. Ich habe auch den Cache geleert, Javascript angemacht und alles mögliche: Es existiert kein Redirect, Clickjacking oder XSS. Die Seite scheint sauber zu sein.

Vielleicht ist was am Routing kaputt?

(Das ganze kann man sich auch als "asciicast", einem Screencast meines Terminals, anschauen. Inklusive peinlicher Vertipper ;)

% traceroute ferienwohnung-karola.de
traceroute to ferienwohnung-karola.de (46.163.79.113), 64 hops max, 52 byte packets
 1  fritz.box (192.168.178.1)  0.902 ms  0.625 ms  0.552 ms
 2  87.186.225.75 (87.186.225.75)  92.717 ms  38.952 ms  38.589 ms
 3  217.237.156.198 (217.237.156.198)  38.939 ms  38.395 ms  38.904 ms
 4  d-ed1-i.d.de.net.dtag.de (62.154.15.182)  50.509 ms
    d-ed1-i.d.de.net.dtag.de (62.154.15.202)  65.516 ms
    d-ed1-i.d.de.net.dtag.de (62.154.15.214)  50.985 ms
 5  62.157.250.114 (62.157.250.114)  52.495 ms  51.290 ms  88.926 ms
 6  xe-0-3-0.dr-master.r2.cgn3.he-core.de (176.28.4.54)  50.724 ms  51.037 ms  50.088 ms
 7  * * *
 8  powerc120.galaxy-gmbh-service.de (46.163.79.113)  51.802 ms  52.447 ms  51.676 ms

Nein, das ist es nicht, galaxy-gmbh-servie.de ist tatsächlich der Hoster der Seite. Da ist alles sauber. Auch der whois-Eintrag stimmt:

% whois ferienwohnung-karola.de
# [...]
Domain: ferienwohnung-karola.de
Nserver: ns1.toptip-dns.de
Nserver: ns2.toptip-dns.de
Status: connect
Changed: 2010-12-29T21:47:00+01:00

[Tech-C]
Type: PERSON
Name: Dirk Anschuetz
Organisation: Galaxy GmbH
Address: Hohenzollernring 57
PostalCode: 50672
City: Koeln
CountryCode: DE
Phone: +49-221-3553350510
Fax: +49-221-3553350519
Email: mail@galaxy-gmbh-service.de
Changed: 2012-02-02T01:50:08+01:00

[Zone-C]
Type: PERSON
Name: Dirk Anschuetz
Organisation: Galaxy GmbH
Address: Hohenzollernring 57
PostalCode: 50672
City: Koeln
CountryCode: DE
Phone: +49-221-3553350510
Fax: +49-221-3553350519
Email: mail@galaxy-gmbh-service.de
Changed: 2012-02-02T01:50:08+01:00

Aber was ist denn dann das Problem? Vielleicht liegt das Problem ja bei Google?

Also hab ich noch mal die Suchseite aufgerufen

% firefox http://www.google.de/?q=ferienwohnung+versbach

Helga Stephan

ferienwohnung-karola.de/

und mir den Link mal genauer angesehen. Google schickt einen nämlich vorher noch einmal durch einen kleinen Proxy, damit sie die Klicks zählen können. Der Sucheintrag verweist also nicht direkt auf http://ferienwohnung-karola.de/ sondern auf dieses Ungetüm (Ich habe bereits alle unnötigen Argumente gekürzt):

http://www.google.de/url?sa=t&rct=j&q=ferienwohnung%20versbach&source=web&cd=4&ved=0CEoQFjAD&url=http%3A%2F%2Fferienwohnung-karola.de%2F&ei=UTEhUZHJEIqt4AS3t4GoCg&usg=AFQjCNEBH_rG1AyvavGw3rltFv3-RRS3EA&bvm=bv.42553238,d.Yms&cad=rja

Naja, hab ich mir gedacht, schauen wir doch mal, was man da so bekommt. Für so etwas greife ich lieber auf die Kommandozeile zurück, da ist cURL das Tool der Wahl:

% curl "http://www.google.de/url?sa=t&rct=j&q=ferienwohnung%20versbach&source=web&cd=4&ved=0CEoQFjAD&url=http%3A%2F%2Fferienwohnung-karola.de%2F&ei=UTEhUZHJEIqt4AS3t4GoCg&usg=AFQjCNEBH_rG1AyvavGw3rltFv3-RRS3EA&bvm=bv.42553238,d.Yms&cad=rja"
<script>window.googleJavaScriptRedirect=1</script><script>var m={navigateTo:function(b,a,d){if(b!=a&&b.google){if(b.google.r){b.google.r=0;b.location.href=d;a.location.replace("about:blank");}}else{a.location.replace(d);}}};m.navigateTo(window.parent,window,"http://ferienwohnung-karola.de/");
</script><noscript><META http-equiv="refresh" content="0;URL='http://ferienwohnung-karola.de/'"></noscript>

Aha, da wird also Javascript ausgeführt, welches die URL tauscht, oder, wenn Javascript aus ist, wird ein <meta http-equiv="refresh" content="0;URL='http://ferienwohnung-karola.de/'"> ausgeführt, also eine Weiterleitung zu http://ferienwohnung-karola.de/ nach 0 Sekunden.

Die URL bei Google stimmt also doch. Aber warum bekomme ich von der URL-Leiste eine Wohnung, von Google Viagra? Vielleicht hängt es mit dem "Referrer" zusammen? Einem HTTP-Header, der einer Website sagt, von welcher Website ein neuer Nutzer zu ihr verwiesen wurde?

Bei cURL kann man über --referer <url> einen Referer festlegen, --head zeigt nur den Header an.

% curl --head --referer "http://www.google.de" "http://ferienwohnung-karola.de/"
HTTP/1.1 302 Found
Date: Sun, 17 Feb 2013 19:55:16 GMT
Server: Apache
Location: http://mediciron.ru/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

Aha! Wenn man also von Google aus kommt, wird man auf eine Seite namens http://mediciron.ru/ weitergeleitet. Aber wo führt die hin?

% curl --head "http://mediciron.ru/"
curl: (52) Empty reply from server
[1]    6576 exit 52    noglob curl --head "http://mediciron.ru/"

Es wurde kein Inhalt zurückgeschickt? Aber warum wird man dann normalerweise Weitergeleitet?

Vielleicht muss wieder der Referer stimmen?

% curl --head  --referer "http://ferienwohnung-karola.de/" "http://mediciron.ru/"
curl: (52) Empty reply from server
[1]    6580 exit 52    noglob curl --head --referer "http://ferienwohnung-karola.de/"

Nein, das kann es nicht sein. Aber

% firefox http://mediciron.ru/

führt mich wieder zu http://offeemedic.com/. Seltsam. Der Browser leitet mich weiter, cURL nicht… Das muss am Useragent liegen! Der Useragent ist ein HTTP-Header, der dem Server sagt, welchen Browser der Nutzer verwendet. cURL lässt einen auch den Browser einstellen. Ich hab mich dann mal als Google Chrome ausgegeben

% curl --head \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.91 Safari/537.11" \
"http://mediciron.ru/"

HTTP/1.1 302 Moved Temporarily
Server: Apache
Date: Sun, 17 Feb 2013 19:48:44 GMT
Content-Type: text/html
Content-Length: 161
Connection: close
Location: http://offeemedic.com/

Soso, jetzt haben wir ihn also, den Redirect auf http://offeemedic.com/. Zusammenfassend muss man also von Google kommen und einen normalen Browser verwenden, um weitergeleitet zu werden. (--location lässt cURL automatisch den Redirects folgen)

% curl --head \
--location \
--referer "http://www.google.de" \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.91 Safari/537.11" \
"http://ferienwohnung-karola.de/"

HTTP/1.1 302 Found
Date: Sun, 17 Feb 2013 23:27:46 GMT
Server: Apache
Location: http://mediciron.ru/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Moved Temporarily
Server: Apache
Date: Sun, 17 Feb 2013 23:27:46 GMT
Content-Type: text/html
Content-Length: 161
Connection: close
Location: http://offeemedic.com/

HTTP/1.1 200 OK
Server: Apache
Date: Sun, 17 Feb 2013 23:27:49 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Set-Cookie: holiday=presidents-day; path=/
Set-Cookie: site_id=101; path=/
Set-Cookie: flag_country=de; path=/
Set-Cookie: heatmap=; path=/; expires=Sat, 18-Feb-2012 23:27:49 GMT
Set-Cookie: CGISESSID=cc309bda57d1a711391340a4a993afb7; path=/; expires=Tue, 27-Dec-2022 23:27:49 GMT
Expires: Sun, 17 Feb 2013 23:27:48 GMT
Cache-Control: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Sun, 17 Feb 2013 23:27:48 GMT

Der Grund ist wahrscheinlich eine Konfiguration des Webservers des Hosters. Es scheint fast so als hätte der sich irgendwelche Malware eingefangen. Man muss aber zugeben, dass das ganze sehr geschickt ist, weil man es mit den normalen Methoden die ein Sysadmin wahrscheinlich erstmal Probieren würde oder zum Monitoring verwendet nur sehr schwer findet und die Suchmaschiene es nciht mitbekommt, denn die hat ebenfalls einen anderen Useragent. So werden die Seiten auch nicht nach unten geranked, führen aber zu dieser Viagraseite.

Jetzt ist noch interessant, dass das nicht nur Google betrifft, sondern auch Yahoo…

% curl --head --referer "http://www.yahoo.de" "http://ferienwohnung-karola.de/"
HTTP/1.1 302 Found
Date: Sun, 17 Feb 2013 19:52:49 GMT
Server: Apache
Location: http://mediciron.ru/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

…und bing.

% curl --head --referer "http://www.bing.de" "http://ferienwohnung-karola.de/"
HTTP/1.1 302 Found
Date: Sun, 17 Feb 2013 19:52:49 GMT
Server: Apache
Location: http://mediciron.ru/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

Und hier möchte ich noch mal auf meine derzeitige Suchmaschiene hinweisen: DuckDuckGo, diese ist nämlich nicht betroffen ;)

% curl --head --referer "https://duckduckgo.com/" "http://ferienwohnung-karola.de/"
HTTP/1.1 200 OK
Date: Sun, 17 Feb 2013 19:53:06 GMT
Server: Apache
Last-Modified: Tue, 12 Feb 2013 14:42:15 GMT
ETag: "e9a01d9-37c6-4d58808197fc0"
Accept-Ranges: bytes
Content-Length: 14278
Vary: Accept-Encoding
X-Powered-By: PleskLin
Content-Type: text/html

Ursache ist, wie sich jetzt geklärt hat, die .htaccss-Datei, eine Konfigurationsdatei des Apache-Webservers, mit dem unter Anderem auch das Routing konfiguriert wreden kann. Irgendwie muss folgende .htaccess-Datei unbemerkt in den DocumentRoot des Webservers gelangt sein, anscheindend hat sich jemand unerlaubt Zugriff beschafft. Das Passwort ist geändert, die Datei gelöscht und der Hoster informiert.

Options -Indexes
RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*ask.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*baidu.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*youtube.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*wikipedia.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*qq.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*excite.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*netscape.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*hotbot.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*goto.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*mamma.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*alltheweb.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*lycos.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*search.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*metacrawler.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*bing.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*dogpile.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*facebook.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*twitter.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*blog.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*live.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*myspace.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*linkedin.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*altavista.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*infoseek.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yandex.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*rambler.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*mail.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*ya.*$ [NC]
RewriteRule .* http://mediciron.ru/ [R,L]
ErrorDocument 401 http://mediciron.ru/
ErrorDocument 403 http://mediciron.ru/
ErrorDocument 404 http://mediciron.ru/
ErrorDocument 500 http://mediciron.ru/