During the past two months, the Guardicore Labs team says that it has been following a China-based campaign trying to infect Windows MS-SQL and PHPMyAdmin servers worldwide.
They observed that the breached machines included over 50,000 servers belonging to companies in the healthcare, telecommunications, media and IT sectors. The servers were infected with malicious payloads which then dropped a crypto-miner and — this is the interesting part of it — installed a sophisticated kernel-mode rootkit to prevent the malware from being terminated.
This attack — they call it NanshOu — leverages some techniques that have often been seen in advanced persistence threats (APTs) such as fake certificates and privilege escalation exploits.
They first found the attacks, which had a source IP address in South Africa, in April. They were all hosted by an ISP named VolumeDrive. The same process was seen in all the attacks, ranging from breaching to post-compromise.
Using this discovered pattern and looking back, they found evidence of attacks starting on February 28 with over 700 new victims per day. Guardicore found 20 versions of malicious payloads that were used in the overall attack campaigns. New payloads were seen to be created at least once a week and then used immediately after their creation time.
The attacks began with authentication attempts to a MS-SQL server using known and common credentials. This credential-stuffing approach eventually led to a successful login with administrative privileges thrown in for good measure.
The attacker then configured server settings to allow a “smooth” and errorless attack flow. The attacker’s servers were all running HTTP File Server (HFS) and serving files of different types.
Three major functional units were seen in the attack: 1. Port scanner known since 2014. It was used to detect MS-SQL servers by scanning IP addresses and checking whether typical MS-SQL ports were open. Scanning results were then fed to the brute-force module.
2. MS-SQL brute-force tool. The attacker attempted to login to each MS-SQL server using tens of thousands of common credentials. If the authentication succeeds then the server’s address, username and password are saved to a file for future use.
3. Remote Code Executor. Carries out the breaching process through the use of a script and an executable.
The attack continues with a privilege escalation using the Apolmy exploit and it affects both Desktop and Server versions of Windows (XP to 8.1 and 2003 to 2012 R2, respectively). The executable used to do this will run any program with SYSTEM privileges. It copies the SYSTEM process access token to its own process. With that token, the exploiting process runs the payload with full control over the victim machine.
Another exploit using SetDebugPriviege has also been seen in use.
The attack goes out and gets a payload a wrapper which has several functionalities:
- Execute the crypto-currency miner;
- Create persistency by writing registry run-keys;
- Protect the miner process from termination using a kernel-mode rootkit;
- Ensure the miner’s continuous execution using a watchdog mechanism. Unlike many other malicious drivers, the driver for it is protected and obfuscated.
It creates a device named SA6482, allowing processes to communicate with it. The device receives process IDs (PIDs) meant to be protected — in this case, the miner PID.
This kernel-leveraging driver has been previously seen used in a past Chinese APT to target various companies. Other tools used in the attacks suggest that they were originally APT-level hacks that have now been used for non-state sponsored efforts — sort of like a Chinese Shadow Brokers situation.
Guardicore thinks that because of various typos and mistakes made in the attack that this was not a thoroughly tested operation. But it shows that common passwords still comprise the weakest link in today’s attack flows.