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.