no one is safe ...

Automatisierung im Rahmen eines Pentests - part 4 (Web discovery)

Teil 4 der Automatisierungsserie :) Im bisherigen Verlauf haben wir Systeme und Services ermittelt und haben in Teil 3 unsere langwierigen Passwortangriffe gestartet. Während diese Bruteforce Vorgänge weiter laufen, lassen sich bereits weitere Aktionen gegen die Zielumgebung starten. In internen Netzwerken trifft man für gewöhnlich auf sehr viele Webserver die möglichst alle zumindest einer Basisuntersuchung unterzogen werden müssen.

Nach dem Discoveryvorgang kann das beispielsweise folgendermaßen aussehen:

10.8.28.2 - (Sessions: 4 Jobs: 0)> services -s http

Services
========

host         port   proto  name  state  info
----         ----   -----  ----  -----  ----
10.8.28.2    80     tcp    http  open   Apache/2.2.14 (Ubuntu)
10.8.28.5    8080   tcp    http  open
10.8.28.5    80     tcp    http  open   Apache/1.3.34 (Debian)
10.8.28.24   80     tcp    http  open   Apache/1.3.28 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.7c
10.8.28.24   443    tcp    http  open   Apache httpd 1.3.28 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.7c
10.8.28.29   80     tcp    http  open   Apache httpd 2.2.3 (CentOS)
10.8.28.29   443    tcp    http  open   Apache httpd 2.2.3
10.8.28.32   80     tcp    http  open   Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
10.8.28.35   80     tcp    http  open   Apache/2.2.3 (Ubuntu) PHP/5.2.1
10.8.28.36   7025   tcp    http  open   Surgemail webmail DNews based
10.8.28.36   80     tcp    http  open   Microsoft-IIS/5.1 ( Powered by ASP.NET )
10.8.28.50   80     tcp    http  open   Microsoft-IIS/5.0
10.8.28.52   80     tcp    http  open   Apache/2.2.3 (CentOS) ( Powered by PHP/5.1.6 )
<snip>

Die Webserver sind auf unterschiedlichsten Ports zu finden und müssen im nächsten Schritt möglichst automatisiert gecrawlt werden und anschl. sollten diese möglichst ebenso automatisiert auf Angriffspotential untersucht werden.

Für den Crawlingvorgang bringt Metasploit ein eigenes Crawler-Auxiliary Modul mit. Mit ein paar Zeilen Rubycode lässt sich daraus ein durchaus mächtiger automatischer Crawler erstellen. Das Resource Script autocrawler.rb liest die bereits ermittelten Webserver und Crawlt diese vollständig automatisch. Im Anschluss an den Crawlingvorgang weist die Metasploit Datenbank umfangreiche Informationen der Webserver auf und ermöglicht eine weitere Analyse eben dieser.

10.8.28.2 - (Sessions: 4 Jobs: 0)> resource /opt/metasploit-4.1.4/msf3/scripts/resource/autocrawler.rc
[*] Processing /opt/metasploit-4.1.4/msf3/scripts/resource/autocrawler.rc for ERB directives.
[*] resource (/opt/metasploit-4.1.4/msf3/scripts/resource/autocrawler.rc)> Ruby Code (1558 bytes)
IP: 10.8.28.50
OS: Microsoft Windows 2000
Servicename: https
Service Port: 443
Service Protocol: tcp
MAX_THREADS => 4
RHOST => 10.8.28.50
RPORT => 443
SSL => true
VERBOSE => true
[*] Auxiliary module running as background job
IP: 10.8.28.50
OS: Microsoft Windows 2000
Servicename: http
Service Port: 80

Service Protocol: tcp
[*] [2012.02.20-08:14:41] Crawling https://10.8.28.50:443/...
MAX_THREADS
=> 4
[-] [2012.02.20-08:14:41] [00001/00500]    ERR - 10.8.28.50 - https://10.8.28.50/
RHOST
=> 10.8.28.50
[*] [2012.02.20-08:14:41] Crawl of https://10.8.28.50:443/ complete
RPORT => 80
SSL => false
VERBOSE => true
[*] Auxiliary module running as background job
IP: 10.8.28.35
[*] [2012.02.20-08:14:42] Crawling http://10.8.28.50:80/...
OS:
Linux
Servicename: http
Service Port: 80
Service Protocol: tcp
MAX_THREADS => 4
RHOST => 10.8.28.35
RPORT => 80
SSL => false
[*] [2012.02.20-08:14:42] [00001/00500]    200 - 10.8.28.50 - http://10.8.28.50/
VERBOSE
=> true
[*] [2012.02.20-08:14:42] Crawl of http://10.8.28.50:80/ complete
[*] Auxiliary module running as background job
[*] [2012.02.20-08:14:42] Crawling http://10.8.28.35:80/...
<snip>
[*] [2012.02.20-08:15:26] Crawling http://10.8.28.29:443/...
OS:
Microsoft Windows
Servicename: http
Service Port: 5560
Service Protocol: tcp
[*] [2012.02.20-08:15:26] [00007/00500]    200 - 10.8.28.24 - http://10.8.28.24/cgi-bin/badstore.cgi?action=aboutus
[*] [2012.02.20-08:15:26] [00062/00500]    200 - 10.8.28.2 - http://10.8.28.2/beef/js/
[*] [2012.02.20-08:15:26]                         FORM: GET /cgi-bin/badstore.cgi
[*] [2012.02.20-08:15:27]                         FORM: GET /cgi-bin/badstore.cgi
[*] [2012.02.20-08:15:27] [00008/00500]    200 - 10.8.28.24 - http://10.8.28.24/scanbot/scanbot.html
RHOST
=> 10.8.28.110
[*] [2012.02.20-08:15:27] [00009/00500]    200 - 10.8.28.24 - http://10.8.28.24/cgi-bin/badstore.cgi?action=supplierlogin
[*] [2012.02.20-08:15:27]                         FORM: GET /cgi-bin/badstore.cgi
RPORT => 5560
[-] [2012.02.20-08:15:27] [00001/00500]    ERR - 10.8.28.29 - http://10.8.28.29:443/
SSL
=> false
[*] [2012.02.20-08:15:28]                         FORM: GET /cgi-bin/badstore.cgi
[*] [2012.02.20-08:15:28] [00010/00500]    200 - 10.8.28.24 - http://10.8.28.24/cgi-bin/badstore.cgi?action=cartview
VERBOSE
=> true
[*] [2012.02.20-08:15:28] Crawl of http://10.8.28.29:443/ complete
[*] [2012.02.20-08:15:28]                         FORM: GET /cgi-bin/badstore.cgi
<snip>

Mit dem wmap-Plugin lässt sich die ermittelte Seitenstruktur anzeigen:

10.8.28.2 - (Sessions: 4 Jobs: 0)> wmap_sites -l
[*] Available sites
===============

     Id  Host         Vhost        Port   # Pages  # Forms
     --  ----         -----        ----   -------  -------
     0   10.8.28.110  10.8.28.110  5560   7        0
     1   10.8.28.111  10.8.28.111  5500   2        0
     10  10.8.28.173  10.8.28.173  5800   2        0
     11  10.8.28.2    10.8.28.2    80     99       2
     12  10.8.28.201  10.8.28.201  5357   2        0
     18  10.8.28.231  10.8.28.231  80     31       4
     19  10.8.28.231  10.8.28.231  10000  5        3
     2   10.8.28.126  10.8.28.126  8222   3        0
     20  10.8.28.233  10.8.28.233  443    1        0
     21  10.8.28.233  10.8.28.233  10000  4        1
     23  10.8.28.24   10.8.28.24   443    2        0
     24  10.8.28.24   10.8.28.24   80     31       18

10.8.28.2 - (Sessions: 4 Jobs: 0)> wmap_sites -s 10.8.28.231
    [10.8.28.231]
          |
          |-----/arachni
          |-----/home (5)
                |-----/faq.html
                |-----/home_menu.html
                |-----/home_news.html
                |-----/home_notice.html
                |-----/home_top.html
          |-----/icons (1)
                |-----/small
          |-----/main (1)
                |-----/auth (2)
                      |-----/inscription.php
                      |-----/lostPassword.php
          |-----/index.php

Falls ihr weitere Informationen zu Metasploit benötigt findet ihr diese in meinem Buch. Erste Probekapitel findet ihr zudem auf der dpunkt-Webseite. Das Buch lässt sich natürlich auf Amazon bestellen.

Have phun und bis zum nächsten Eintrag zu möglichen Automatisierungsmechanismen

mIke