e-Construction : Mon cyber-journal perso

"L'intelligence c'est d'apprendre de ses erreurs, la sagesse c'est d'apprendre de celles des autres..."


en flag Read it in english



Alors, enfin j'ai eu un peu de temps pour mener la deuxième partie concernant l'état de DNS gérant les domaines en "dz".
Dès à present, je dirais que les résultats ne sont pas très précis. Je n'ai pas traité les cas où il y a des "erreurs" : non résolution du nom DNS, time out et autres. D'après ce que j'ai pu constater, c'est des erreurs dans les fichiers de configuration des serveurs DNS en question (le named.conf)...ces erreurs sont intéressantes dans le sens où elles renseignent sur l'état de certains domaines :)
En plus, mon script est très élémentaire et fait un peu à la va vite, et il risque d'avoir des erreurs...alors n'hésitez pas svp à me signaler ce que j'ai raté :) (sur le blog ou par mail : salahnadir à gmail).
Quand à l'optimisation de ce script, je n'ai pas vraiment fait de grands éfforts, l'important pour moi était d'avoir des résultats exploitables. Si quelqu'un aussi veut bien apporter des améliorations, c'est avec grand plaisir. Le script est libre d'utilisation et de modification :)


Commençons le travail :
(vous pouvez ne pas lire ce qui suit et lire le script directement téléchargeable en bas, c'est assez compréhensible )

1- D'abord on fait une recherche sur Google sur tous les sites en "dz"
(google apparement n'aime pas ce type de recherche automatique !!)


Url_Base="http://www.google.com/search?num=100&hl=fr&lr=&q=site:dz&sa=N&start="
Url_Add=0
Stop=false

while ! $Stop
do
Url=$Url_Base$Url_Add
wget -E -O result_dz_$Url_Add -U "Mozilla/5.0" -q $Url
if grep "Suivant" result_dz_$Url_Add >/dev/null
then
Url_Add=$((Url_Add + 100))
echo "on continue à "$Url_Add
else
Stop=true
fi
done
On récupère les résultats dans les fichiers result_dz_0, 100, 200.....

2- On appel le script "parse_result" (que j'ai adapté d'un script trouvé sur Internet) pour la récupération des addresses des sites contenues entre le "http://" et le ".dz"
On supprime les résultats contenant google, youtube et les liens cache.
On supprime aussi ce qui est avant le premier point (www ou autre)
Enfin, on met les résultats triés dans le fichier "list_Domaines" après suppression des doublons. (ça contient les domaines et sous domaines)


./parse_result result_dz* egrep -v "(googleyoutube"q=cache")" cut -d . -f 2- sort -u > list_Domaines
NbDomaines=`cat list_Domaines wc -l`
3- On récupére les serveurs DNS autoritaires pour chaque domaine trouvé, en supprimant les lignes non valides : "no NS record", NXDOMAIN, alias.....c'est là qu'on voit quelques problèmes de config.

i=1
while read line
do
host -t ns $line.dz >> list_DNS_Srv_brut
echo -n "$i / $NbDomaines...\r"
i=$((i+1))
done <> list_DNS_Srv
NbSrvDNS=`cat list_DNS_Srv wc -l`

De ces serveurs, il y a certains situés hors Algérie :

echo "---> on a $NbSrvDNS serveurs DNS......dont `cat list_DNS_Srv grep -v dz wc -l` apparement hors Algérie (pas d'extension dz)"

Quel est le nombre de domaines gerés par le Cerist :-) ?

echo "---> presque `grep "decst.cerist.dz" list_DNS_Srv_brut wc -l` / $NbDomaines sous la responsabilité des serveurs DNS du Cerist"
4- Maintenant, c'est la récupération des versions des serveurs DNS trouvés, et là on voit aussi quelques messages d'erreurs intéressants :)


i=1
while read line
do
echo `dig +short @$line txt chaos version.bind cut -d \" -f 2` >> list_Version
fpdns $line grep -i windows >> list_Ver_Win
echo -n "$i / $NbSrvDNS...\r"
i=$((i+1))
done <> list_DNS_Srv


Les numéros de versions sont dans le fichiers list_Version, et les serveur sous Windows (d'apès fpdns) sont dans list_Ver_Win

et les petits malins :)

echo "---> il y a `cat list_Version egrep -v "(out98)" wc -l` malins qui cachent le numéro de version...fpdns peut les faire parler :-)"
Apès, ça donne la répartition des versions entre la 8 et la 9 :

echo "---> `cat list_Version grep 9 wc -l`/$NbSrvDNS serveurs sont en version 9 ... et `cat list_Version grep 8 wc -l`/$NbSrvDNS en version 8"
5- Vérification de la récursivité des serveurs DNS trouvés, on faisant des requêtes sur un site de test...deux fois parceque j'ai vu que quelques fois la première réponse diffère de la première !!

SiteDeTest="www.cnn.com"
i=1
while read line
do
dig @$line +nocmd +nostats +noquestion +noanswer +noadditional +noauthoritY $SiteDeTest grep ra >/dev/null
if dig @$line +nocmd +nostats +noquestion +noanswer +noadditional +noauthoritY $SiteDeTest grep ra >> list_recursion
then dig +short @$line porttest.dns-oarc.net TXT grep is >> list_vuln
fi
echo -n "$i / $NbSrvDNS...\r"
i=$((i+1))
done <> list_DNS_Srv
Les serveurs récursifs sont dans list_recursion, et ceux d'entre eux vulnérable au cache poisoning (Kaminsky) sont dans list_vuln.

PS : dans le code qui précède, à chaque <> c'est en fait un <....dans le script c'est ok, mais blogger me fait chier avec un message d'erreur..et je m'en fout :) C'est tout...voici le resumé des résultats (nettoyé des messages d'erreurs) : ====================================================
DNS_DZ v1.0 : audit des serveurs DNS des domaines DZ
====================================================
récupération des résultats de recherche sur Google...

on continue à 100
on continue à 200
on continue à 300
on continue à 400
on continue à 500
on continue à 600
on continue à 700

récupération des domaines dz avec élimination des doublons ....

---> 558 domaines trouvés !

récupération des serveurs DNS autoritaires pour chaque domaine trouvé....

558 / 558...

on ne retient que les données (supprimer NXDOMAIN, connection timed out, no NS record, alias...

---> on a 155 serveurs DNS......dont 19 apparement hors Algérie (pas d'extension dz)

quel est le nombre de domaines gerés par le Cerist :-) ?

---> presque 274 / 558 sous la responsabilité des serveurs DNS du Cerist

récupération des Versions des serveurs DNS trouvés...regarder les erreurs, ça en dit beaucouq sur certains domaines :-)

---> il y a 46 malins qui cachent le numéro de version...fpdns peut les faire parler :-)

---> il y a aussi - si on croit fpdns - 0 serveur DNS Windows

---> 69/155 serveurs sont en version 9 ... et 17/155 en version 8

Test de récursivité des serveurs DNS trouvés et le cache poisoning...en utilisant le site de test www.cnn.com

---> on a 72 serveur récursifs et 35 d'entre eux vulnerables au cache poisoning !!!

Ces résultats sont biensûr en fonction du moment de l'execution du script (nombre de réponses google, serveurs up ou down, connexion réseau...)

Le script ainsi que les différents fichiers obtenus sont par ici


UPDATE 1 --- 13 sep 2008

J'ai failli déroger à une règle bien établie chez nous Algériens...se comparer toujours à nos voisins :)

Alors, j'ai adapté les scripts pour les domaines marocains (ma) et tunisiens (tn)
Les résultats sont dans les archives maroc_dns.tgz et tunisie_dns.tgz

Un petit comparatif : (respectivement dz - ma - tn)

- Nombre de domaines / sous-domaines : 558 - 815 - 907
- Nombre de serveurs DNS autoritaires : 155 - 524 - 4
- Nombre de domaines gérés par le Registrar : 274 / 558 - 140 / 815 - 804 / 907
- Nombre de serveurs en version 9 : 69 / 155 - 243 / 524 - 2 / 4
- Nombre de serveurs en version 8 : 17 / 155 - 6 / 524 - 0 (les deux autres sous PowerDNS)
- Nombre de serveurs récursifs : 72 / 155 - 161 / 524 - 0
- Nombre de serveurs récursifs et vulnérables : 35 / 155 - 61 / 524 - 0

Vous remarquez qu'on est globalement les "moins bons" :)
Une chose interessante ou étonnante est le quasi monopole du service DNS en tunisie par l'Agence Tunisienne d'Internet !!!!!

UPDATE 2 -- 17 sep 2008

je voudrais ajouter ici la contribution excellente de tixxDZ, qui a porté et optimiser mon script shell en script perl appelé dnschk . Il y a plein d'améliorations ...mais on reste ouverts à toute nouvelle suggestion :)
Merci encore tixxDZ (il contribue avec pertinence dans forumdz)

2 commentaires

  1. Anonyme  

    Oh woow !
    Un travail de titan man. Ah là franchement bravo. Je n'aurai pas fait mieux, franchement.

    Et les résultats sont "No Comment" mdrrr

    Excellente analyse comme d'habitude.

    Il est temps d'agir. Cette situation ne peut plus durer wellah. Il faut un vrai plan pour les nouvelles technologies en Algérie.

    Sinon, au passage, jetes un oeil sur Robtex.com au cas où. Je pense que tu connais ;)

    Pour ceux qui ne le connaissent pas, Robtex est le couteau suisse du web ;)

    Salutations amicales

  2. SecDZ - Salah Nadir  

    @ButterflyOfFire

    Pour Robtex.com...il est noyé dans mes lines favoris dans la sections "OUTILS"...mais honnetement je ne l'utilise pas frequement, tu sais qu'on en s'habitue un quelque chose on s'y colle même sil y a mieux.

Enregistrer un commentaire

Inscription à : Publier les commentaires (Atom)