Shellshock - F5 Networks · servers (this technique is called a “Google dork”). A simple Google dork to locate a “Shellshock” vulnerable server might be: inurl: ...
Post on 05-Apr-2018
219 Views
Preview:
Transcript
Shellshock
Oz Elisyan & Maxim Zavodchik
By
1
INTRODUCTION
Once a high profile vulnerability is released to the public, there will be a lot of people
who will use the opportunity to take advantage on vulnerable machines.
The “Shellshock” vulnerability was first identified as CVE-2014-6271 and earned the US-
CERT rate of the whole 10 scores for its high impact and for its exploitation simplicity.
Later, it was assigned 3 more CVEs (CVE-2014-7169, CVE-2014-6277, and CVE-2014-6278)
following several failed attempts to completely fix the issue.
This report will analyze different “campaigns” as were spotted by our honeynet.
Actual attack vectors will be presented as well as analysis of attackers’ intentions and
the “post-exploitation” payload.
TABLE OF CONTENTS
CONTENTS
Introduction ....................................................................................................................... 1
Table of Contents ........................................................................................................ 1
Executive Summary ........................................................................................................... 3
Case 1: Malicious BASH SPEARHEAD ................................................................................ 4
Attack Vector ....................................................................................................... 4
Bot Deployment .................................................................................................... 4
CASE 2: Obfuscated PerlB0T ............................................................................................. 5
Attack Vector ....................................................................................................... 5
Same Old PerlBOT .............................................................................................. 5
CallING the operator ...................................................................................... 6
CASE 3: The “Legend” Bot ................................................................................................ 6
Attack Vector ....................................................................................................... 6
The Legend Is DEad ............................................................................................. 7
CASE 4: Echo Probes .......................................................................................................... 7
The Chinese Imposter ........................................................................................ 8
2
Foo ............................................................................................................................... 8
U name? ...................................................................................................................... 9
CASE 5: CLAM_AV Reverse Shell ....................................................................................... 9
Attack Vector ....................................................................................................... 9
Google DORKS CAmpaign ............................................................................... 9
Shelling the server ......................................................................................... 10
CASE 6: Give Me Your Passwords ................................................................................... 10
Attack Vector ..................................................................................................... 10
Mitigation ......................................................................................................................... 11
3
EXECUTIVE SUMMARY
Once the “Shellshock” vulnerability opened the door to run arbitrary commands on
any CGI server out there, different entities tried to realize their diverse intentions.
The magic string which opened this door in almost all the cases was the:
() { :;};
A variation of this was entering a single word within the curly brackets instead of the
“no operation” keyword:
() { foo;};
In some very rare cases it might look like this:
() {echo "Hello World";};
Although the exploit may be delivered in different HTTP headers (the ones the CGI is
converting to the environment variables), “User-Agent” is used in most of the cases.
From our observations, the payload that is delivered (the actual commands that are
executed) once the vulnerability is exploited has several intentions. The simplest are
the “echo” probes, just sending a vector containing a certain string and expecting to
see it in server’s response, or the “ping back” probes, injecting ping command and
expecting to see the server pinging them. Usually, these are the scanners indexing the
vulnerable servers out there. Others send shell commands, mostly for information
gathering, such as “uname” or “id” commands, while there might be more aggressive
vectors reading sensitive files, such as “/etc/shadow” or creating dummy files on the
file system.
However, the most severe threats are those which open a back door or completely
compromise the server. Those attacks have a very familiar payload fingerprint. These
are the same cyber-criminals who are constantly running their operations on the web,
hunting for vulnerable webservers, and the “Shellshock” is a fresh opportunity to
expand their army of zombie machines.
These serious exploits usually deploy the “Kaiten” (AKA “Tsunami”) bot or variations
of the “perlb0t” making it part of a DDoS business scheme.
4
CASE 1: MALICIOUS BASH SPEARHEAD
ATTACK VECTOR
The attacker tries to inject code into a vulnerable machine via the “User-Agent” header.
This specific header is used in a lot of attacks as we will later see.
Infection steps:
1. Fetch the malicious file named “regular.bot” and saving it under the “/tmp” directory
2. Run it using “sh”, meaning it is a bash script.
3. Remove traces by deleting the executable
The attacker uses a very “good” trick while fetching the malicious executable. He
redundantly uses both “wget” and “curl” in case one of them is not installed on the
vulnerable machine.
BOT DEPLOYMENT
While looking at the previously fetched malicious bash script, we see that it is being
used as a “spearhead” to fetch and run the actual bot. The attacker tries to increase
his chances to infect the machine by targeting multiple platforms. He tries to run a
precompiled Linux executable as well as provide the source code and compile it on
demand with the compiler provided on the target machine (gcc). We see that MACs
(Darwin OS) are also targeted.
The bots deployed are the notorious “Kaiten” (AKA “Tsunami”) bot and also a
variation of the PerlB0t.
5
The attacker adds a layer of persistency, by scheduling a cron job, so once in a week it
will fetch the same bash spearhead script in case someone cleaned up the bot.
CASE 2: OBFUSCATED PERLB0T
ATTACK VECTOR
We see a very similar attack vector, with “User-agent” header used again to deliver the
payload. Unlike the previous case, there is no “spearhead” script and the bot is
delivered directly, downloaded from a UK server, loaded into memory and
immediately removed.
SAME OLD PERLBOT
The downloaded “ec.z” bot is a variation of the perlB0t, however obfuscated using the
base64 encoding, which is usually used so inline IPS or other security solutions won’t
detect it.
To see the code, we replace the “eval” function with a “print” function and easily
remove the obfuscation:
6
CALLING THE OPERATOR
Once infected, the webserver connects an IRC server and joins botnet operator’s
channel.
As we can see, we are not the only one infected and there are already more than 500
bots connected.
Once connected, we send our machine details, and start the “PING-PONG” routine.
The operator instructs our bot to hide its IP address from the channel using the
“MODE” command.
CASE 3: THE “LEGEND” BOT
ATTACK VECTOR
Using the same exploitation style, the “User-Agent” header is used to inject the
commands and download the “Legend” bot, which is another perlb0t variation.
7
THE LEGEND IS DEAD
While trying to reach the IRC C&C channel, we find out that the IRC server is already
dead. Sometimes short-life C&C servers might be used because they are more stealthy,
running the campaign for a very short period and instructing all the connected bots to
hop to another C&C server. However, it might be also that the operation was shut
down by any other party.
CASE 4: ECHO PROBES
There are some more sophisticated attack attempts by first sending a “test probe”.
The probe contains the “echo” command with some random string that is expected
to be echoed back in server’s response if the server is vulnerable.
8
If the server is vulnerable, the attacker will send the actual exploit. However, there are
some probes that won’t be followed by an exploit and are just used to index the
vulnerable servers.
Note that in previous attack vectors the payload had the “/bin/bash –c” part, which is
not required as we see in the “echo” probes. While exploiting the Shellshock
vulnerability it is enough to send the actual shell commands in order for them to
execute, and one does not need to invoke another shell.
THE CHINESE IMPOSTER
One interesting “echo” probe is some very awkward attempt to look like a real request
originating from a “Baidu” search (Chinese search engine). The probe originated from
a Chinese IP address having Chinese browser characteristics (language and charset)
and “Baidu” as the referrer. However it is clearly not a real browser request as the
browser won’t include an exploit in the “User-Agent” header and definitely won’t send
an empty “Cookie” header.
FOO
An “echo” probe to get information on the current running user.
The “foo” string inside the curly brackets draws attention, as all of the other exploits
leave them empty. The string might be added to circumvent weak signatures.
9
U NAME?
Another example of an “Echo” probe to get the current Linux version.
CASE 5: CLAM_AV REVERSE SHELL
ATTACK VECTOR
In a different case, there was no bot deployed. The payload was downloading a python
script that would open a reverse shell back to the attacker’s server.
The actual commands to be executed on a vulnerable machine:
GOOGLE DORKS CAMPAIGN
An attacker can leverage a 0-day vulnerability to build an army of bots by scanning all
IP segments in the Internet. But it is simpler to just use Google to search for vulnerable
servers (this technique is called a “Google dork”).
A simple Google dork to locate a “Shellshock” vulnerable server might be:
inurl: “.cgi” inurl “.sh”
The python reverse shell exploit was reaching our simulated “CGI” pages in such a way.
10
We can see that the botnet which is used to originate this “Shellshock” exploit is not
coordinated. All these requests delivering the same exploit are sent at relatively the
same time, meaning there is no correct “workload” coordination. Once any one of
these bots found a potentially vulnerable server using a “Google” query, the bot
immediately probes the found server without knowing if that server was already
targeted by other bots.
SHELLING THE SERVER
Once being infected and a reverse shell connection has been established, the infected
server just waits for its operator to send shell commands to execute on this server.
CASE 6: GIVE ME YOUR PASSWORDS
ATTACK VECTOR
Several attacks would try to read your password files.
11
Note the “Referrer” header is also used to deliver the exploit.
MITIGATION
“Shellshock” is an example of a high profile vulnerability, however similar
vulnerabilities are yet to be discovered and exploited “in-the-wild” as long as there is
a financial benefit for the cyber-crooks.
There are several things you can do to protect your servers against “Shellshock”. The
definitive way will be installing the latest bash patches from Red Hat:
https://access.redhat.com/solutions/1207723
Until the patches are available or the organization is ready to deploy them, you can
“virtually” patch your servers adding custom signatures to your WAF.
https://devcentral.f5.com/articles/bash-shellshock-mitigation-using-asm-signatures
There are several actions you can do proactively in order to strengthen your security
against 0-day vulnerabilities. You can read more on that here:
https://devcentral.f5.com/articles/mitigating-the-unknown
For further information on “Shellshock” and its mitigation options follow this link:
https://f5.com/shellshock
top related