An Insight into the Aurora Communication Protocol
Monday January 18, 2010 at 11:02 pm CST
Posted by Guilherme Venere
As we know, the recent Operation Aurora has been making waves due to a highly organized attack targeting companies such as Google, Adobe and other high profile companies. A security breach due to a vulnerability in Microsoft’s Internet Explorer, CVE-2010-0249, caused remote code execution leading to download of malware on compromised systems.
At McAfee Labs, researchers have been working around the clock across regions to delve deeper into the inner workings of this attack in an effort to educate and assist customers in its mitigation. In this blog we discuss the communication protocol being utilized by Aurora which depicts how organized and technical this attack is.
We also discuss the backdoor components of Aurora which would allow the hackers to take complete control of the victim’s machine. The backdoor components, which were dropped in the system by Roarur.dr after the successful exploitation by Exploit-Comele, are composed of several variants of Roarur.dll.
All samples used highly obfuscated code, with small pieces of code connected via jumps and calls, and separated by NOPs:
One thing in common between these DLL variants is the protocol used to communicate with the command & control server. Let’s take a look at how this protocol works.
After the initialization of the malware DLL, a connection is made to the command and control (C&C) server. The connection is made on port 443 which is usually used by the HTTPS protocol, encrypted with SSL. During analysis, we noticed that the employed protocol on this port was not the standard SSL protocol, but a custom encrypted protocol.
The backdoor client initiates the protocol by issuing a packet which always has the same first 20 bytes:
[ ff ff ff ff ff ff 00 00 fe ff ff ff ff ff ff ff ff ff 88 ff ]
After the initiator handshake, the protocol uses a 20 byte packet as header for all communication that follows. All data sent from client to server is encoded with a logical NOT, and all data received from server is XOR encoded with 0xCC. So the first reply from server would be:
[ CC CC CC CC CD CC CC CC CD CC CC CC CC CC CC CC XX XX XX XX ]
(where XX can represent any byte)
The handshake is followed by information gathering. The backdoor gathers the following information from the victim’s machine and sends it back to the server:
- Content of HARDWARE\DESCRIPTION\System\CentralProcessor\MHz registry key
- Service pack name
- Machine name
- OS Version
At the time the operation was made public by Google, the control servers were offline, hence we don’t have access to the actual communication. However after understanding the protocol and the expected commands at the client end, we were able to set up a fake environment allowing us to initiate commands to the client. In this way we were able to force the malware to behave in a way we requested.
Based on this, we found that the structure of the header is the following:
Commands can have any value between 0×02 and 0×14, which gives the hacker 18 possible commands. But these commands can be extended by the use of the parameters, which change the behavior of the command executed:
One interesting note on the protocol is the fact that each client uses a different encryption key to obfuscate the data sent to server. It makes a call to GetTickCount() to generate a random encryption key which is sent as part of the header in the outgoing packet. This key is used to encrypt the data between client and server afterwards. Indeed an interesting approach.
The “extra data” part of the packet can contain any information the hacker wants. Based on the commands executed, this could be which drives/files the user has on the system, information to install a new service, or even a file to drop on the system.
The transmission of this extra data is made in two steps:
- The backdoor receive the header, decrypts it with XOR 0xCC and gets the command
- The command is executed
- Based on the command, if there is extra data to receive, get the extra data size and check if the encryption key is the same as the one sent before
- Apply a XOR 0xCC decryption to the Extra Data.
- Decrypt with given encryption key
We believe this is how the file Acelpvc.dll was dropped on the system. This is another backdoor component which can be installed as a service and receive two parameters: IP and port.
Acelpvc.dll, once loaded, opens a connection on this server:port using the same encrypted protocol. This way, the hackers could make the victim’s computer connect to another server and guarantee his access to the system even if his connection is cut.
As you can see this attack involved very advanced methods with several pieces of malware working in concert to give the attackers full control of the infected system, at the same time it attempts to disguise itself as a common connection to a secure website. This way the attackers were able to covertly gather all the information they wanted without being discovered.
Hopefully this brief will provide users with a good basic understanding of the custom backdoor protocol used during Operation Aurora. Stay tuned for more information on Aurora as McAfee dissects it
Update Jan 19, 2010 (product coverage update)
McAfee Network Security Platform: The UDS release of January 19 contains the signature “UDS-BACKDOOR: Operation Aurora Channel Detected” to detect this backdoor.

January 18th, 2010 at 23:35
Why use the tickcount? I would have expected higher encryption like RSA…
January 19th, 2010 at 01:33
If the protocol works from port 443 wouldn’t RSA reveal that it’s not SSL… if you make some custom encryption no one will recognise it and make it harder to detect…. this is what they did
January 19th, 2010 at 03:52
Very interesting, amazing hack-job. IMO, Aurora Project is a 9-11-99 for internet…
Well done, McAfee…
January 19th, 2010 at 04:05
All the malware needs to do is disguise the content it is exporting from filters that are intended to stop the leaking of sensitive files from corporate networks. Even Rot-13 coding might be enough for that purpose!
January 19th, 2010 at 04:59
WTG, Venere. Nice detailed and important analysis my friend.
Congrats,
Sandro Süffert
January 19th, 2010 at 06:53
@alex2308, because most strong crypto code is easy to spot, relatively heavy on CPU resources, and it’s just as useless if poorly implemented. There’s a good chance it will be implemented incorrectly because of the complexity, not just of the code itself but the associated protocols (key management, etc.). The code and protocol here is lightweight and not seen before, real advantages in this situation.
January 19th, 2010 at 07:07
[...] the 443 port — typically reserved for the HTTP SSL transfer of data.Over at Avert Labs, there a good write-up describing the structure and interaction of multiple software cogs that each contributed to the [...]
January 19th, 2010 at 09:16
Could it be possible for this second malware to stipulate a server:port combination within the targeted organisation, thus centralising the collection of data/information, a sort of staging area before using a single system to export the data out of the organisation? thoughts?
January 19th, 2010 at 11:24
First nice write up. I appreciate the detail rather than speculation seen most places.
I’m with the other commenters in that I don’t understand why they would not use SSL. Even if they want to enable some level of encryption/encoding in addition to SSL it would make more sense to use it. I think this is odd for several reasons:
1. having written software for pen tests, I know backdoors are sometimes blocked by firewalls/proxies. I prefer to inject into IE for it’s authorized outbound connectivity and for the nicely wrapped windows functions. Using SSL is fairly easy using MS’s libraries.
2. Not being SSL stands out. Random data is hard to distinguish between encrypted data but it stuck out enough to be noticed here.
3. This reminds me of another piece of malware (I think Conficker) did something similar where the encoding key was sent in the initial packets. Have you looked for that relationship and any possibility similarities to whatever piece of malware that might be. Sorry for not being able to identify the code I’m thinking of off hand.
January 19th, 2010 at 13:31
Nice insight. Makes me informed about an effective computer security research.
January 19th, 2010 at 19:02
“Joe Stewart, a malware specialist with SecureWorks, a computer security company based in Atlanta, said he determined the main program used in the attack contained a module based on an unusual algorithm from a Chinese technical paper that has been published exclusively on Chinese-language Web sites” – ref: http://www.nytimes.com/2010/01/20/technology/20cyber.html
S.S.
January 19th, 2010 at 19:19
[...] An Insight into the Aurora Communication Protocol – McAfee’s analysis of the protocol used by the malware involved in “Operation Aurora” [...]
January 20th, 2010 at 11:09
[...] An Insight into the Aurora Communication Protocol http://www.avertlabs.com/research/blog/index.php/2010/01/18/an-insight-into-the-aurora-communication... [...]
January 21st, 2010 at 19:26
… “highly obfuscated”? There’s nops between each legitimate instruction, and branches.
January 25th, 2010 at 14:59
[...] An excellent write-up of the protocol and behavior of the Trojan can be found here. [...]
April 27th, 2010 at 15:35
[...] Computer Security Research – McAfee Labs Blog [...]