How to detect/block WebApp Scanners
Wikipedia said:
“A web application security is a program witch comunicates with a web application through the web front-end in order to identify potential security vulnerabilities in the web aplication and architectural weaknesses. “
The ideia about this is to explain how it’s simple to block this kind of scanners using mod_security (windows users should try URLScan) and Snort.
In my analysis i discovery a lot of patterns that this scanners use in your execution timeline. All scanners analyzed here have the same design execution erros in the analysis process.
This design erros are they always send the same requests to find the vulnerabilities in your plugins base, they never change the priority order of the requests, the same User Agent etc. So, mapping this requests it’s easy to create rules to block/detect this scanners.
Lets start with Nessus.
” The Nessus® vulnerability scanner is the world-leader in active scanners, featuring high-speed discovery, configuration auditing, asset profiling, sensitive data discovery and vulnerability analysis of your security posture.” From Nessus Website.
I create for my analysis a profile with only the WEB APP plugins in nessus scanner.
The first common point in nessus web module is that he start the scanner with the same request. Look the log above:
Possible Snort Rule
alert tcp any any -> any any (content:"intruvert/jsp/admin/Login.jsp"; msg:"Possible Nessus Scanner"; sid 10000003;rev:1;)
The same User Agent:
Possible Snort Rule
alert tcp any any -> any any (content:”Nessus”; msg:”Possible Nessus Scanner”; sid 10000003;rev:1;)
2 Nikto
Nikto do the same requests:
127.0.0.1 – - [10/Jul/2010:21:49:52 -0300] “HEAD / HTTP/1.1″ 200 -
127.0.0.1 – - [10/Jul/2010:21:49:52 -0300] “GET / HTTP/1.1″ 200 -
127.0.0.1 – - [10/Jul/2010:21:49:53 -0300] “GET / HTTP/1.0″ 200 -
127.0.0.1 – - [10/Jul/2010:21:49:53 -0300] “GET /JNMaauje.htpasswd HTTP/1.0″ 404 215
127.0.0.1 – - [10/Jul/2010:21:49:53 -0300] “GET /JNMaauje.fhp HTTP/1.0″ 404 210
127.0.0.1 – - [10/Jul/2010:21:49:53 -0300] “GET /JNMaauje.xsql HTTP/1.0″ 404 211
127.0.0.1 – - [10/Jul/2010:21:49:53 -0300] “GET /JNMaauje.xml+ HTTP/1.0″ 404 211
OpenVAS With Web App Plugins
127.0.0.1 – “GET / HTTP/1.0″ 200 454 “-” “-”
127.0.0.1 – “GET / HTTP/1.0″ 200 454 “-” “-”
127.0.0.1 – “GET / HTTP/1.1″ 200 461 “-” “-”
127.0.0.1 – “GET / HTTP/1.1″ 200 454 “-” “-”
127.0.0.1 – “GET /limesurvey/admin/admin.php HTTP/1.1″ 404 502 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET /phpsurveyor/admin/admin.php HTTP/1.1″ 404 503 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET /survey/admin/admin.php HTTP/1.1″ 404 498 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET //admin/admin.php HTTP/1.1″ 404 491 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET /cgi-bin/admin/admin.php HTTP/1.1″ 404 499 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET /scripts/admin/admin.php HTTP/1.1″ 404 499 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
127.0.0.1 – “GET /admin/admin.php HTTP/1.1″ 404 491 “-” “Mozilla/4.75 [en] (X11, U; Nessus)”
Nikto Web Scanner With IDSEVASION
127.0.0.1 – - [09/Nov/2010:09:08:09 -0300] “HEAD / HTTP/1.1″ 200 315 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:Port Check)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET / HTTP/1.1″ 200 491 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:getinfo)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.asa HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.html+ HTTP/1.1″ 404 527 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.nsf HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.prf HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.cellsprint HTTP/1.1″ 404 532 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.xbb HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.TPF HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.CGI HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.htw HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:10 -0300] “GET /5pgWiDQ2.vts HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “HEAD / HTTP/1.1″ 200 315 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:Port Check)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET / HTTP/1.1″ 200 491 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:getinfo)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.csp HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.2 HTTP/1.1″ 404 523 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.shm HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.idc HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.iso-ru HTTP/1.1″ 404 528 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.se HTTP/1.1″ 404 524 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6/ HTTP/1.1″ 404 522 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.fhp HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.eml HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.dpgs HTTP/1.1″ 404 526 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:06:02 -0300] “GET /R0OOgcA6.pl HTTP/1.1″ 404 524 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “HEAD / HTTP/1.1″ 200 315 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:Port Check)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET / HTTP/1.1″ 200 491 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:getinfo)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.SMAIL893 HTTP/1.1″ 404 530 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.dpgs HTTP/1.1″ 404 526 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.iso-ru HTTP/1.1″ 404 528 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.dbf HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.xsql HTTP/1.1″ 404 526 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.bat|dir HTTP/1.1″ 404 529 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.thtml HTTP/1.1″ 404 527 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.sys HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.shtml HTTP/1.1″ 404 527 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:08:49 -0300] “GET /btHyJEDP.nn HTTP/1.1″ 404 524 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:2) (Test:map_codes)”
Without Evasions
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “HEAD / HTTP/1.1″ 200 315 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:Port Check)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET / HTTP/1.1″ 200 491 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:getinfo)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.jsp HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.printer HTTP/1.1″ 404 529 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.utf8 HTTP/1.1″ 404 526 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.password HTTP/1.1″ 404 530 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.php HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.iso8859-8 HTTP/1.1″ 404 531 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.10:100 HTTP/1.1″ 404 528 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.properties HTTP/1.1″ 404 532 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:17 -0300] “GET /4BHHXLXB.pt-br HTTP/1.1″ 404 527 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:53 -0300] “HEAD / HTTP/1.1″ 200 315 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:Port Check)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET / HTTP/1.1″ 200 491 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:getinfo)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.bin HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.pwd HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.TXT HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.es HTTP/1.1″ 404 524 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.log HTTP/1.1″ 404 525 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.tw HTTP/1.1″ 404 524 “-” “Mozilla/4.75
(Nikto/2.1.3) (Evasions:None) (Test:map_codes)”
127.0.0.1 – - [09/Nov/2010:09:09:54 -0300] “GET /FFrjb35O.2 HTTP/1.1″ 404 523 “-” “Mozilla/4.75 (Nikto/2.1.3) (Evasions:None) (Test:map_codes)”











