9 przydatnych przykładów poleceń hosta do odpytywania szczegółów DNS

Analiza DNS za pomocą polecenia HOST: Kompleksowy przewodnik

Narzędzie `HOST` to fundamentalne polecenie wiersza poleceń służące do eksploracji i analizy rekordów DNS. Jest ono nieocenione, szczególnie w kontekście bezpieczeństwa sieci i etycznego hakowania, gdzie stanowi kluczowy element początkowego etapu zbierania informacji o celu.

Wyliczanie DNS, czyli szczegółowe badanie rekordów DNS, pozwala na uzyskanie wielu cennych danych. Obejmuje to informacje takie jak adresy IP, nazwy serwerów, detale dotyczące usług poczty elektronicznej oraz parametry TTL (Time To Live). Takie dane mogą stać się punktem wyjścia dla bardziej zaawansowanych działań, np. analizy wewnętrznej struktury sieci.

Chociaż istnieje wiele dedykowanych narzędzi online do analizy DNS, często wystarczające okazuje się proste, ale potężne narzędzie wbudowane w system – `HOST`. W dalszej części artykułu przedstawimy szereg praktycznych przykładów użycia tego polecenia.

Zatem, przejdźmy do praktyki!

Instalacja narzędzia HOST

W niektórych przypadkach, świeżo zainstalowany system operacyjny może nie zawierać narzędzia `HOST` w standardowej konfiguracji. W takiej sytuacji konieczna będzie jego ręczna instalacja. Proces ten jest jednak bardzo prosty.

Wszystkie istotne polecenia związane z DNS, takie jak `nslookup`, `dig` i właśnie `host`, są zazwyczaj zgrupowane w pakiecie `bind-utils`. Aby zainstalować ten pakiet, wystarczy uruchomić następujące polecenie w terminalu:

sudo apt-get install dnsutils -y

To polecenie działa zarówno w środowiskach Linux, jak i macOS.

Sposób użycia polecenia HOST

Ogólna składnia polecenia `host` wyświetla dostępne opcje i argumenty wraz z krótkim opisem każdej z nich. Aby zobaczyć pełną listę dostępnych parametrów, wystarczy uruchomić polecenie bez dodatkowych argumentów.

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host          
Usage: host [-aCdilrTvVw] [-c class] [-N ndots] [-t type] [-W time]
            [-R number] [-m flag] [-p port] hostname [server]
       -a is equivalent to -v -t ANY
       -A is like -a but omits RRSIG, NSEC, NSEC3
       -c specifies query class for non-IN data
       -C compares SOA records on authoritative nameservers
       -d is equivalent to -v
       -l lists all hosts in a domain, using AXFR
       -m set memory debugging flag (trace|record|usage)
       -N changes the number of dots allowed before root lookup is done
       -p specifies the port on the server to query
       -r disables recursive processing
       -R specifies number of retries for UDP packets
       -s a SERVFAIL response should stop query
       -t specifies the query type
       -T enables TCP/IP mode
       -U enables UDP mode
       -v enables verbose output
       -V print version number and exit
       -w specifies to wait forever for a reply
       -W specifies how long to wait for a reply
       -4 use IPv4 query transport only
       -6 use IPv6 query transport only

Ustalanie adresu IP domeny

Aby poznać adres IP przypisany do konkretnej domeny, wystarczy podać jej nazwę jako argument polecenia `host`.

host Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host newsblog.pl.com
newsblog.pl.com has address 104.27.118.115
newsblog.pl.com has address 104.27.119.115
newsblog.pl.com has IPv6 address 2606:4700:20::681b:7673
newsblog.pl.com has IPv6 address 2606:4700:20::681b:7773
newsblog.pl.com mail is handled by 1 aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt1.aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt2.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt3.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt4.aspmx.l.google.com.

Aby uzyskać bardziej szczegółowe informacje, można użyć opcji `-a` lub `-v`. Te flagi aktywują tryb pełnego, szczegółowego wyjścia.

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -a newsblog.pl.com 
Trying "newsblog.pl.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24690
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;newsblog.pl.com.                 IN      ANY

;; ANSWER SECTION:
newsblog.pl.com.          3789    IN      HINFO   "RFC8482" ""
newsblog.pl.com.          3789    IN      RRSIG   HINFO 13 2 3789 20220307065004 20220305045004 34505 newsblog.pl.com. HW0Lfr5HazPMaACSBHmFqs94usKUljX+kONW/8Q2jwQ1QoAO9DEMjwDX rIQKODGtGnEizj2SzBF98mC2uQr7hQ==

Received 161 bytes from 192.168.1.1#53 in 64 ms

Opcja `-a` wyświetla wszystkie rekordy związane z domeną, w tym informacje o strefach. Dodatkowo, można zaobserwować adres lokalnego serwera DNS, który był użyty do wykonania zapytania.

Wykonanie odwrotnego wyszukiwania DNS

Polecenie `host` umożliwia również wykonanie odwrotnego wyszukiwania DNS, czyli identyfikację nazwy hosta na podstawie znanego adresu IP.

Składnia polecenia w tym przypadku wygląda następująco:

host Adres-IP

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host dnsleaktest.com                                                                                  
dnsleaktest.com has address 23.239.16.110
                                                                                                              
┌──(newsblog.pl㉿kali)-[~]
└─$ host 23.239.16.110  
110.16.239.23.in-addr.arpa domain name pointer li685-110.members.linode.com.

Po skopiowaniu i wklejeniu adresu wskaźnika do przeglądarki, użytkownik zostanie przekierowany na odpowiednią stronę.

Wyszukiwanie serwerów nazw domeny

Opcja `-t` pozwala na określenie typu rekordu, o który chcemy zapytać. W przypadku poszukiwania serwerów nazw, wykorzystujemy typ `ns`.

Rekord NS (Name Server) wskazuje autorytatywne serwery nazw dla danej domeny.

host -t ns Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -t ns newsblog.pl.com
newsblog.pl.com name server olga.ns.cloudflare.com.
newsblog.pl.com name server todd.ns.cloudflare.com.

Zapytanie do konkretnego serwera nazw

Możliwe jest skierowanie zapytania do konkretnego, autorytatywnego serwera nazw. W tym celu w składni polecenia należy uwzględnić jego adres.

host Nazwa-domeny [Adres-serwera-nazw]

Przykładowe dane wyjściowe:

┌──(root💀kali)-[/home/geekflare]
└─# host newsblog.pl.com  olga.ns.cloudflare.com.                                                           1 ⨯
Using domain server:
Name: olga.ns.cloudflare.com.
Address: 173.245.58.137#53
Aliases: 

newsblog.pl.com has address 104.27.118.115
newsblog.pl.com has address 104.27.119.115
newsblog.pl.com has IPv6 address 2606:4700:20::681b:7773
newsblog.pl.com has IPv6 address 2606:4700:20::681b:7673
newsblog.pl.com mail is handled by 1 aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt1.aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt2.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt3.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt4.aspmx.l.google.com.

Wyszukiwanie rekordów MX domeny

Rekordy MX (Mail Exchanger) wskazują serwery pocztowe odpowiedzialne za obsługę poczty elektronicznej danej domeny. Aby je znaleźć, należy użyć opcji `-t mx`.

host -t MX Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -t mx  newsblog.pl.com
newsblog.pl.com mail is handled by 1 aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt1.aspmx.l.google.com.
newsblog.pl.com mail is handled by 5 alt2.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt3.aspmx.l.google.com.
newsblog.pl.com mail is handled by 10 alt4.aspmx.l.google.com.

Rekord MX jest kluczowy w procesie dostarczania wiadomości e-mail.

Wyszukiwanie rekordów TXT domeny

Rekordy TXT przechowują dowolne informacje tekstowe dotyczące domeny. Mogą one zawierać różnego rodzaju dane, od weryfikacji własności domeny po polityki SPF. Aby je znaleźć, należy użyć opcji `-t txt`.

host -t txt Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -t txt newsblog.pl.com
newsblog.pl.com descriptive text "google-site-verification=MRSwa454qay1S6pwwixzoiZl08kfJfkhiQIslhok3-A"
newsblog.pl.com descriptive text "google-site-verification=7QXbgb492Y5NVyWzSAgAScfUV3XIAGTKKZfdpCvcaGM"
newsblog.pl.com descriptive text "yandex-verification: 42f25bad396e79f5"
newsblog.pl.com descriptive text "v=spf1 include:_spf.google.com include:mailgun.org include:zcsend.net ~all"
newsblog.pl.com descriptive text "ahrefs-site-verification_8eefbd2fe43a8728b6fd14a393e2aff77b671e41615d2c1c6fc365ec33a4d6d0"
newsblog.pl.com descriptive text "ca3-7fbfaa573ba248ddb17a618e5b46ca01"

Wyszukiwanie rekordów SOA domeny

Rekord SOA (Start of Authority) zawiera kluczowe informacje administracyjne o domenie, takie jak podstawowy serwer nazw, adres e-mail administratora i parametry odświeżania strefy. Aby go wyświetlić, użyj opcji `-t soa`.

host -t soa Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -t soa newsblog.pl.com
newsblog.pl.com has SOA record olga.ns.cloudflare.com. dns.cloudflare.com. 2271966690 10000 2400 604800 3600

Polecenie z opcją `-C` porównuje rekordy SOA ze wszystkich autorytatywnych serwerów nazw dla danej domeny, co pozwala na wykrycie ewentualnych niespójności.

host -C Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -C newsblog.pl.com                                                                                 2 ⨯
Nameserver 173.245.58.137:
        newsblog.pl.com has SOA record olga.ns.cloudflare.com. dns.cloudflare.com. 2271966690 10000 2400 604800 3600

Wyszukiwanie rekordów CNAME domeny

Rekord CNAME (Canonical Name) tworzy alias dla innej domeny. Jest używany do przekierowania jednej nazwy domeny na inną. Aby go znaleźć, użyj opcji `-t cname`.

host -t cname Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(newsblog.pl㉿kali)-[~]
└─$ host -t cname  newsblog.pl.com
newsblog.pl.com has no CNAME record

Jeśli dla danej domeny istnieją rekordy CNAME, zostaną one wyświetlone po uruchomieniu polecenia.

Wyświetlanie informacji o TTL domeny

TTL (Time To Live) określa czas, przez jaki rekord DNS jest przechowywany w pamięci podręcznej serwera DNS. Informacja ta jest ważna przy analizie wydajności i aktualności danych DNS. Aby wyświetlić wartość TTL, należy użyć opcji `-v` i `-t a`.

host -v -t a Nazwa-domeny

Przykładowe dane wyjściowe:

┌──(root💀kali)-[/home/geekflare]
└─# host -v -t a newsblog.pl.com                                                                            1 ⨯
Trying "newsblog.pl.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2479
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;newsblog.pl.com.                 IN      A

;; ANSWER SECTION:
newsblog.pl.com.          30      IN      A       104.27.119.115
newsblog.pl.com.          30      IN      A       104.27.118.115

Received 63 bytes from 192.168.1.1#53 in 60 ms

Podsumowanie

Mamy nadzieję, że przedstawione przykłady użycia polecenia `host` okazały się przydatne i pomogą w lepszym zrozumieniu i analizie rekordów DNS.

Dodatkowo, jeśli jesteś zainteresowany, warto zapoznać się z dostępnymi online, darmowymi narzędziami do sprawdzania rekordów DNS dla wybranej domeny.