NFsec Logo

Podstawy bezpieczeństwa BIND 9 cz. II

08/04/2017 w Bezpieczeństwo, Pen Test 1 komentarz.  (artykuł nr 602, ilość słów: 410)

W

pierwszej części poznaliśmy podstawowe opcje konfiguracyjne uniemożliwiające wykorzystanie naszego serwera jako open resolver oraz pozyskania plików stref. W tej części zajmiemy się blokowaniem informacji, które mogą dostarczyć atakującemu niezbędnej wiedzy podczas rekonesansu. Serwery BIND (oraz wiele innych) potrafią zwracać “ukryte” informacje, gdy zostanie wysłane do nich specjalne zapytanie DNS. Zazwyczaj nie jest to pożądana ekspozycja dlatego należy ją zablokować.

5. Zapytania typu CHAOS:

Za pomocą następujących zapytań jesteśmy w stanie wyciągnąć wersję serwera BIND:

agresor@darkstar~:$ dig @dns.ofiary.pl version.bind txt chaos

; ||| DiG 9.8.3-P1 ||| @dns.ofiary.pl version.bind txt chaos
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 9363
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;version.bind.            CH    TXT

;; ANSWER SECTION:
version.bind.        0    CH    TXT    "9.9.5-P3"

;; AUTHORITY SECTION:
version.bind.        0    CH    NS    version.bind.

;; Query time: 30 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Fri Apr  7 13:30:44 2017
;; MSG SIZE  rcvd: 65

oraz jego hostname (który może okazać się nazwą w wewnętrznej sieci):

agresor@darkstar~:$ dig @dns.ofiary.pl hostname.bind txt chaos

; ||| DiG 9.8.3-P1 ||| @dns.ofiary.pl hostname.bind txt chaos
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 28365
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;hostname.bind.            CH    TXT

;; ANSWER SECTION:
hostname.bind.        0    CH    TXT    "dnssrv1.lan"

;; AUTHORITY SECTION:
hostname.bind.        0    CH    NS    hostname.bind.

;; Query time: 29 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Fri Apr  7 13:31:35 2017
;; MSG SIZE  rcvd: 76

W celu ukrycia tych informacji wystarczy, że do opcji naszego serwera BIND dodamy następujące wpisy:

options {
        version "[Secured]";
        hostname "[Secured]";
        server-id "[Secured]";
};

i zrestartujemy serwer.

Więcej informacji: Requirements for a Mechanism Identifying a Name Server Instance, Hide DNS Software Version

Kategorie K a t e g o r i e : Bezpieczeństwo, Pen Test

Tagi T a g i : , , , , , , ,

1 komentarz.

  1. Innym rozwiązaniem jest także manualne dodanie obsługi strefy bind.. Wystarczy, że w pliku named.conf dodamy:

    zone "bind" { 
      type master;
      file "bind.dns";
      allow-query { any; };
    };
    

    I stworzymy plik strefy bind.dns o zawartości:

    $TTL 1D
    $ORIGIN bind.
    @   1D   CHAOS   SOA   localhost.   root.localhost. (
             2017122701    ; serial
             3H            ; refresh
             1H            ; retry
             1W            ; expiry
             1D )          ; minimum
        CHAOS NS   localhost.
    
    version.bind.   CHAOS   TXT "6.6.6"
    authors.bind.   CHAOS   TXT "Johny 5"
    hostname.bind.  CHAOS   TXT "unknown.localhost"
    

    Możemy także logować żądania o strefę bind. w ten sposób śledząc wszystkich klientów, którzy chcieli uzyskać wrażliwe informacje o naszej maszynie.