WordPress Security: Nulled Scripts and the CryptoPHP Infection
Our friends over at Fox-IT based in Delft in the Netherlands just contacted me with some amazing research they’ve just published. If you’re technically minded and want as much detail as possible, For WordPress Security I recommend you skip this blog entry and head straight over to the Whitepaper that Fox-IT has published on the CryptoPHP backdoor (It’s 50 pages). I’ve summarized the details and our response:
Nulled scripts are commercial web applications that you can obtain from pirate websites that have been modified to work without a license key. They are the web equivalent of pirated software. They include commercial WordPress themes and plugins.
It’s come to our attention courtesy of Fox-IT that nulled scripts are being distributed via several websites with a sophisticated infection pre-installed. Fox-IT has dubbed it CryptoPHP because of the fact that it encrypts data before it sends it to command and control servers.
The infection is relatively simple: Inside a nulled script there’s a little line of code that looks like this:
<?php include('assets/images/social.png'); ?>
If you’re a PHP developer you will immediately recognize this as looking strange: It is a PHP directive to include an external file containing PHP source code, but the file is actually an image. Inside this image file is actual PHP and the code is obfuscated (hidden through scrambling) to try and hide the fact that it’s malicious.
If you’re a Wordfence customer, and you are doing scans, the default settings for Wordfence do not scan image files for infections. However, we are aware of these kinds of infections so a while back we added an option to scan image files as if they are PHP code. However, with the detection we just added, Wordfence will detect the ‘include’ directive above in your PHP source, so even if you haven’t enabled image-file scanning, you will still catch all known variants of this infection provided you are running the newest version of Wordfence.
Fox-IT has determined that the purpose of the malware is, currently, to engage in black-hat SEO by injecting links to other, presumably malicious, websites into your content. However, this infection is sophisticated and it communicates with command and control servers that can instruct it to do a variety of tasks including the ability to upgrade itself. So this is a classic botnet infection which turns all infected websites into drones that can be instructed to do just about anything, from sending spam email to SEO spam to hosting illegal content to performing attacks on other websites.
The researchers think they may have identified the location of the author. Inside the code of the malware is a user-agent (browser) check that checks to see if the web browser user-agent equals ‘chishijen12’. If it does, then the application is instructed to output all PHP errors to the browser, presumably for debugging purposes. Fox-IT found an IP address that is associated with that user-agent and the IP is based in the state of Chisinau in Moldova. The name of the state is similar to the user-agent string, which gives their theory some WordPress Security credence.
This infection doesn’t just affect WordPress but affects Drupal and Joomla too. The detection we’ve added will actually detect the infection in Drupal or Joomla source code too if that lives under your WordPress directory.
If you’re an enterprise customer and are using an IDS like Snort or the EmergingThreats ruleset, Fox-IT has created Snort signatures which are in the WordPress Security whitepaper and I see that EmergingThreats have updated their open ruleset today to detect this.
You can find the full white paper discussing this new threat here in WordPress Security and it includes quite a bit of technical detail if you’re a developer or information security researcher.
Please help spread the word about the danger involved in downloading or distributing nulled scripts and help keep the community safe.