Script Kiddie Tactics (or the Lack Thereof)
Sunday, March 23rd, 2008When we describe the process an attacker goes through to compromise their target, we usually try to break it up into different phases with terms like reconnaissance, enumeration, probing, and exploitation. This varies when we talk about different kinds of attackers. Some, with no specific target in mind, will skip “casing the joint”, and just scan massive numbers of sites for specific vulnerabilities.
The real bottom-of-the-barrel here is the attacker that tries to compromise a site with a tool meant for vulnerability assessments. These are tools that are not built for any sort of stealth or finesse, because they are meant to be run in the course of a vulnerability assessment by a pentester (using the term loosely here) or systems administrators that want the scan over with quickly. In this case, it doesn’t matter if it leaves a huge signature in the logs or if the IDS screams bloody murder, because the person responsible for tending to those alerts is the person who ran the tool, or is at least aware of the test. This is not as desirable for an attacker who is trying to avoid getting caught or alerting admin/security staff of a breach.
In this specific example, we’ll take a look at some logs generated by an attack launched against this website. The attacker, in this case, is using the Acunetix Web Vulnerability Scanner (likely a pirated copy), and obviously hasn’t thought about what kind of signature it leaves in log files. Those who follow me on twitter and other resourceful readers either already know who this is, or could find out with a little sleuthing and deduction. I haven’t bothered to sanitize the IP address, so you can look through your own logs for traffic like this coming from this guy’s usual range of IP addresses.
Here, I’m going to step through the highlights of the entries that this script kiddie left in my Apache logs. Notice the first two hits from this tool:
20080305.log:75.3.18.189 - - [05/Mar/2008:02:10:49 -0500]
“GET /acunetix-wvs-test-for-some-inexistent-file HTTP/1.0″ 404 240 “-”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
20080305.log:75.3.18.189 - - [05/Mar/2008:02:10:49 -0500]
“GET /acunetix-wvs-test-for-some-inexistent-file-second-try HTTP/1.0″ 404 251 “-”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
So much for coming in undetected.
This serves a couple of purposes. If you were running this as part of a legitimate assessment, it lets you easily find the place in your logs where your vulnerability assessment started, as well as identify the tool used. I believe that this scanner will also use the response in comparison with other responses later, to determine when files aren’t found, although I haven’t personally used or tested Acunetix.
The tool then indexes the entire target website, apparently not throttling itself at all or making any attempt to disguise itself as normal traffic. I’ll spare you from having to look through the complete logs of it spidering my website, but I will bring your attention to a couple of entries, to show you something interesting:
20080305.log:75.3.18.189 - - [05/Mar/2008:02:10:57 -0500]
“GET /training/ HTTP/1.0″ 200 5176 “http://www.mcgrewsecurity.com:80/”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
20080305.log:75.3.18.189 - - [05/Mar/2008:02:10:57 -0500]
“GET /services/ HTTP/1.0″ 200 6405 “http://www.mcgrewsecurity.com:80/”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
Notice the referral URL? It is explicitly specifying port 80, which would not be necessary or normal for a typical web browser. Throughout the logs Acunetix generated, the referral URL consistently had the “:80″. Once it finished indexing, it tried a few (surprisingly few) simple exploits that didn’t work, and then it was over:
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
“GET /cgi-bin/test-cgi.bat?|dir HTTP/1.0″ 404 218 “-”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
“GET /server-info HTTP/1.0″ 404 209 “-”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
“GET /server-status HTTP/1.0″ 404 211 “-”
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
“GET /<<<<<<<<<<<< HTTP/1.0" 404 246 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"GET /error/%5c%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cboot.ini HTTP/1.0" 404 225 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"GET /php/php.exe?c:\\boot.ini HTTP/1.0" 404 209 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"TRACE /TRACE_test HTTP/1.0" 200 398 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"DELETE /wvs_test_for_inexistent_file.txt HTTP/1.0" 405 256 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"TRACK /TRACK_test HTTP/1.0" 501 217 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"PUT /web_scanner_test_file.txt HTTP/1.0" 405 246 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"GET / HTTP/1.0" 200 33894 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
20080305.log:75.3.18.189 - - [05/Mar/2008:02:11:40 -0500]
"GET / HTTP/1.0" 417 397 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
The moral of this story is to realize that, even when it’s not in their best interests, lesser-skilled attackers will use tools that are meant for vulnerability assessments in attacks on systems. These tools are usually a poor choice for an actual attack. Acunetix is one example. Even more often you’ll see attackers using Nessus to test for every single vulnerability they can. These are tools that are trivial to detect and should be very obvious to an alert administrator. If you use these tools in regular assessments of your own organization, be sure that you’re able to determine easily which scans are executed by your staff and which are launched against you by inept attackers.
The attackers that choose these tools typically do so thanks to inexperience. They may feel that if it’s used by “professionals”, then it must also be good for their purposes. They may not understand the attacks or the process of finding vulnerable services, and therefore rely on a tool that seems like it will do all of the work for them. Pirated commercial tools are often desirable, as the inexperienced attacker might place more value on something that’s harder to get, over freeware tools that anyone can download.
I will probably have some more stories about this particular script kiddie coming soon. There’s certainly no shortage of material. The absolute master of script kiddie takedowns has a blog at VitalSecurity and is a must-read. I only hope I can be as entertaining with this as he is.
In the meantime between this post and the next, if you think you know who I’m talking about and have had interactions with him in the past, or you’re just curious, grep through your access logs for “acunetix” and see if something in the 75.3.*.* (75.3.16.0 - 75.3.31.255 to be a little more precise) shows up. If that pops up something, or you see some other unusual activity from that range (admittedly large) send me an email and I might be able to corroborate things from my logs and yours to tie things together. I know for a fact that I’m not the only site he’s been playing with ;) .


















