samedi 14 février 2009

Commande host

La commande host est fort utile lors d'un audit car elle permet l'interrogation de serveur DNS de façon très simple.

$ host
Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]
[-R number] [-m flag] hostname [server]
-a is equivalent to -v -t ANY
-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
-i IP6.INT reverse lookups
-N changes the number of dots allowed before root lookup is done
-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
-v enables verbose output
-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
-m set memory debugging flag (trace|record|usage)

Cette commande est disponible dans bon nombre de distributions comme par exemple Ubuntu dans le paquet bin9-host. Elle est aussi bien entendu disponible dans Backtrack Beta 4. Elle a la même utilité que les commandes très connues dig et nslookup.

Exemples d'utilisation

$ host www.free.fr
www.free.fr has address 212.27.48.10
www.free.fr has IPv6 address 2a01:e0c:1:1599::1
time0ut# host 212.27.48.10
10.48.27.212.in-addr.arpa domain name pointer www.free.fr.

La commande host peut être utilisée avec en paramètre soit un nom DNS soit avec une adresse IP. Dans le premier cas host fera une requête de résolution de nom, et dans le second cas une requête de résolution inverse. Par défaut le serveur DNS configuré sur la machine est utilisé. Il est possible d'en spécifier à la suite du nom à résoudre, très utile pour interroger un serveur DNS particulier sans pour autant changer la configuration de la machine.

$ host www.free.fr 4.2.2.1
www.free.fr has address 212.27.48.10
www.free.fr has IPv6 address 2a01:e0c:1:1599::1
$ host 212.27.48.10 4.2.2.1
10.48.27.212.in-addr.arpa domain name pointer www.free.fr.


Il est aussi possible de récupérer des informations précises sur un domaine comme par exemple l'adresse du serveur responsable de l'envoi de mails ou le serveur DNS responsable de ce domaine.

$ host -t MX free.fr 4.2.2.1
Using domain server:
Name: 4.2.2.1
Address: 4.2.2.1#53
Aliases:

free.fr mail is handled by 20 mx2.free.fr.
free.fr mail is handled by 10 mx1.free.fr.
$ host -t NS free.fr 4.2.2.1
Using domain server:
Name: 4.2.2.1
Address: 4.2.2.1#53
Aliases:

free.fr name server freens1-g20.free.fr.
free.fr name server freens2-g20.free.fr.


Le transfert de zone peut se faire de deux façons et est bien entendu très souvent impossible.

$ host -t AXFR free.fr 4.2.2.1
Trying "free.fr"
; Transfer failed.
Trying "free.fr"
Using domain server:
Name: 4.2.2.1
Address: 4.2.2.1#53
Aliases:

Host free.fr not found: 9(NOTAUTH)
; Transfer failed.
$ host -l free.fr 4.2.2.1
; Transfer failed.
Using domain server:
Name: 4.2.2.1
Address: 4.2.2.1#53
Aliases:

Host free.fr not found: 9(NOTAUTH)
; Transfer failed.


Cette commande permet de faire des opérations très simples sur des serveurs DNS. Elle doit faire partie de la trousse à outil de toute personne faisant un audit (ou un équivalent). Nous verrons par la suite des commandes plus évoluées permettant par exemple de brute forcer des serveurs DNS n'autorisant pas le transfert de zone.

2 commentaires:

  1. Salut,
    Question de noob ^^, à quoi sert l'option -t ?

    The -t option is used to select the query type. type can be any
    recognized query type: CNAME, NS, SOA, SIG, KEY, AXFR, etc. When no
    query type is specified, host automatically selects an appropriate
    query type.

    Et surtout comment avoir la liste de quoi mettre après l'option -t ? Ce sont des queries spéciales au protocole DNS ?

    Merci ^^

    RépondreSupprimer
  2. Tout à fait, ces options sont spécifiques au protocole DNS.

    RépondreSupprimer