En ce moment je cherche à acheter <insérer un nom de bidule ici>. Déjà je ne sais pas si ça va vraiment m'être utile, mais je finis par me décider... Bon je vais éviter de prendre de la merde, mais parfois ça peut s'avérer être un bon choix. J'ai entendu des maçons polonais qui achetaient des perceuses à 15€ et qui en étaient contents. Elles restaient rentables même en lâchant au bout de 6 mois 1 an. En fait plus tu prends de la qualité bien chère, plus tu ... Ah en fait non, la durée de garantie est identique...
Bref, moi c'est un <bidule> de l'ordre de 400€ qui m'intéresse, pour un usage de l'ordre de 3 ou 4 fois par an en espérant que l'engin tienne 10 à 15 ans, mais sans garantie... J'hésite quasiment à en prendre un en location. J'en ai vu à 15€ la journée, mais il faut aller le chercher et il sera assez vieux et pas dans un état très terrible.
Ok ! Continuons dans notre choix, existe 5 marques connues de <bidule>. 2 sont vraiment pour les pro et hors de prix. Une marque est reconnue sur le marché, mais profite un peu trop de sa réputation pour utiliser des matériaux trop fragiles... Et les 2 autres n'apportent pas d'innovation et ne sont pas non plus réputés pour la qualité.
Allons, voir les commentaires. Pas mal de commentaires de gens satisfaits et d'autres déçus en général par le rapport qualité prix. Sauf que le prix baisse régulièrement et le commentaire n'indique pas le prix d'achat... Les commentaires sont quasi-tous rédigés après la première utilisation... et quand on trouve des commentaires sur une utilisation plus régulière sur des forums, le produit n'est plus au catalogue.
Pour l'anecdote, j'avais acheté une plaque de cuisson sur Internet. Après réception j'ai reçu un mail pour laisser mon avis. Quelques mois après j'ai eu un problème de feu qui s'éteignait tout seul. Un réparateur est venu et a tordu la sonde thermique. 1 mois après ça recommence et le nouveau réparateur a retiré un bouton de réglage pour accéder à des valves et a réglé avec la vraie méthode la sonde... J'ai alors voulu poster mon avis et je me suis rendu compte que le lien n'était valable qu'un mois et qu'il n'y a pas d'autre moyen pour poster son avis.
Les fabricants ne publient aucune statistique sur les retours et sur les types de panne. Il n'est pas souvent possible d'acheter des pièces de rechange. En fait on peut tomber très facilement sur des cas d'obsolescence programmée. J'ai presque parfois tendance à croire qu'avant on ne cherchait pas à diminuer le coût de fabrication et limitant la quantité de matière à l'épaisseur nécessaire pour que le matériel fonctionne durant le temps de garantie.
Bref, il est très difficile de choisir quoique de soit de nos jours (même si ce n'était pas mieux avant). Très peu de fabricants ne diffusent des statistiques de retour matériel et la transparence est loin d'être au rendez-vous...
samedi 31 mai 2014
mercredi 14 mai 2014
PASSI simple !
Sans doute dans l'attente de passer l'examen du PASSI, aussi bien pour ma société qu'à titre personnel, je m'interroge sur la façon de faire des audits "complets" et reproductibles sans qu'il ne puisse nous être reprochés d'avoir commis une négligence.
La première idée est simplement d'être certifié, mais rien n'empêche les baisses de régime ou le départ d'un membre de l'équipe...
La deuxième idée est de faire un contre-audit par d'autres membres de l'équipe lorsqu'aucune vulnérabilité n'est découverte. C'est du temps consommé en plus donc un manque à gagner, sauf s'il est vendu comme tel au client lors de l'avant-vente, mais de toute façon il faut être cohérent avec le tarif des concurrents et aucun n'a une telle pratique.
La troisième solution est de tout procédurer, de tout documenter et d'avoir des listes de contrôle pour chaque technologie et quasiment pour chaque type de fonctionnalité (authentification, réinitialisation de mot de passe, gestion des sessions, moteur de recherche, etc...). Tout le monde va vers cette solution consommatrice en temps de cerveau de stagiaire, mais sur la durée il est dure de maintenir à jour les procédures et les listes de contrôle avec l'évolution constante des technologies. On reste finalement un métier d'artisans où le savoir faire individuel des auditeurs est primordial.
Une quatrième solution pourrait se dégager, et est finalement toute simple à mettre en œuvre... s'appuyer sur des outils commerciaux du marché. Comment reprocher à un consultant qui a lancé Nessus sur une infrastructure d'être passé à côté d'une vulnérabilité ? Idem avec Acunetix sur un site web... Mais alors comment distinguer un bon auditeur d'un mauvais auditeur ? Ce n'est pas si simple :)
Finalement ce qui me tient à cœur, ce n'est pas tant de découvrir des vulnérabilités, c'est de savoir creuser une SQL injection pour trouver des hashs faibles ou récupérer le numéro de version d'un MySQL obsolète, et c'est aussi de savoir transmettre un message au client afin qu'il prenne conscience du risque et qu'il puisse juger lui-même de la nécessité de corriger une vulnérabilité ou de l'accepter.
La première idée est simplement d'être certifié, mais rien n'empêche les baisses de régime ou le départ d'un membre de l'équipe...
La deuxième idée est de faire un contre-audit par d'autres membres de l'équipe lorsqu'aucune vulnérabilité n'est découverte. C'est du temps consommé en plus donc un manque à gagner, sauf s'il est vendu comme tel au client lors de l'avant-vente, mais de toute façon il faut être cohérent avec le tarif des concurrents et aucun n'a une telle pratique.
La troisième solution est de tout procédurer, de tout documenter et d'avoir des listes de contrôle pour chaque technologie et quasiment pour chaque type de fonctionnalité (authentification, réinitialisation de mot de passe, gestion des sessions, moteur de recherche, etc...). Tout le monde va vers cette solution consommatrice en temps de cerveau de stagiaire, mais sur la durée il est dure de maintenir à jour les procédures et les listes de contrôle avec l'évolution constante des technologies. On reste finalement un métier d'artisans où le savoir faire individuel des auditeurs est primordial.
Une quatrième solution pourrait se dégager, et est finalement toute simple à mettre en œuvre... s'appuyer sur des outils commerciaux du marché. Comment reprocher à un consultant qui a lancé Nessus sur une infrastructure d'être passé à côté d'une vulnérabilité ? Idem avec Acunetix sur un site web... Mais alors comment distinguer un bon auditeur d'un mauvais auditeur ? Ce n'est pas si simple :)
Finalement ce qui me tient à cœur, ce n'est pas tant de découvrir des vulnérabilités, c'est de savoir creuser une SQL injection pour trouver des hashs faibles ou récupérer le numéro de version d'un MySQL obsolète, et c'est aussi de savoir transmettre un message au client afin qu'il prenne conscience du risque et qu'il puisse juger lui-même de la nécessité de corriger une vulnérabilité ou de l'accepter.
Offre d'emploi mensongère :-/
Juste un petit coup de gueule parce que je vois des offres d'emploi attrayantes qui sont tagguées Areva et qui ne sont en fait que pour leur ex-filiale informatique Euriware.
Pour avoir côtoyé cette société, les missions étaient rarement pour la maison mère et un pentester faisait vaguement du pentest à 30% de son temps et même penser à approcher un système SCADA relevait du fantasme. Leur seul intérêt était les passerelles avec le groupe, mais encore fallait-il faire des missions pour les bonnes personnes pouvant créer un poste pour vous internaliser. Je ne parle pas non plus de la convention Syntec et de l'intéressement qui était celui de la filiale et non du groupe. De quoi déprimer quand on fait une régie longue durée dans une équipe Areva sans avoir les avantages de ses collègues de bureau.
Force est de constater qu'Euriware joue encore à ce petit jeu (source APEC) :
Alors qu'Euriware n'a plus de rapport avec Areva.
Bref, c'est moche de tagguer l'annonce sous la société Areva... Déjà que ce n'était pas terrible avant :D
Pour avoir côtoyé cette société, les missions étaient rarement pour la maison mère et un pentester faisait vaguement du pentest à 30% de son temps et même penser à approcher un système SCADA relevait du fantasme. Leur seul intérêt était les passerelles avec le groupe, mais encore fallait-il faire des missions pour les bonnes personnes pouvant créer un poste pour vous internaliser. Je ne parle pas non plus de la convention Syntec et de l'intéressement qui était celui de la filiale et non du groupe. De quoi déprimer quand on fait une régie longue durée dans une équipe Areva sans avoir les avantages de ses collègues de bureau.
Force est de constater qu'Euriware joue encore à ce petit jeu (source APEC) :
Alors qu'Euriware n'a plus de rapport avec Areva.
Bref, c'est moche de tagguer l'annonce sous la société Areva... Déjà que ce n'était pas terrible avant :D
lundi 12 mai 2014
A propos d'orange
Disclaimer : Je ne cherche pas à faire de la diffamation, ce qui va suivre reflète ce que je pense vraiment.
Update : J'avais raté ce discours de Stéphane Richard : "A chaque attaque, nous progressons". Au moins il y a du positif :-)
A l'annonce d'un deuxième piratage de données à caractère personnel depuis le début de l'année chez orange, je ne peux m'empêcher de réfléchir à cette situation (allez savoir pourquoi). Ma piste principale est qu'il n'y a pas vraiment plus de piratage qu'avant, mais qu'on en parle plus (Why Has There Been So Much Hacking Lately? Or Is It Just Reported More? A Freakonomics Quorum). En effet orange étant opérateur Internet, il est soumis à l'obligation de notifier les personnes victimes d'un vol de données (legifrance).
Il est évident qu'orange a une surface d'attaque immense entre les jeux éphémères, les sites promotionnels, les différents portails, les applications pour les utilisateurs et les applications internes. De plus les jeux et sites promotionnels sont généralement créés par des startups qui n'ont aucune idée des bonnes pratiques de codage. Côté portail, on peut repérer des grosses pointures comme Laurent BUTTI qui maitrise son sujet (vous trouverez de nombreux articles dans MISC (où il publie à titre personnel ?) ou dans les archives de l'ossir). Mais force est de constater qu'il travaille aussi bien en boite blanche qu'en boite noire... Si vous voulez lire plein de discussion d'expert sécurité d'orange, leur blog est pas mal.
D'un autre côté orange veut devenir un leader en sécurité informatique et pour cela a racheté Atheos, mais j'ai peur que ça tourne comme pour AQL (racheté en 2007) dont le CESTI a depuis été fermé (pas vraiment de message officiel, mais AQL ou orange ne figure plus sur le site de l'ANSSI).
Mais il ne faut pas confondre centre de cout et centre de profit. Ces sociétés ont été rachetées pour vendre du service directement aux clients d'orange business service et non pour servir l'interne. A noter qu'on trouve un entretien de Nicolas Furgé (responsable des offres sécurité chez OBS) qui noie le poisson en mélangeant les experts qui sont sur des projets internes et ceux qui travaillent pour les clients. Et hop ! OBS devient ainsi la "plus importante société de services européenne dans le marché de la cyberdéfense, renforçant son positionnement d’acteur majeur dans ce domaine sur le plan mondial".
Pour l'anecdote, après le piratage d'un jeu à 2 balles d'orange en 2009 (ou 2010, je ne trouve pas d'archive), quelques pentesters d'AQL ont voulu faire du proactif et ont failli se faire licencier pour tentative d'intrusion... De quoi mettre la bonne ambiance et donner envie de contribuer à sa société.
Pour faire un peu dans l'analyse, je dirai qu'orange a une surface d'attaque colossale et qu'on n'entend pas parler de tous les piratages et surtout que les piratages ne sont pas tous détectés... La sécurité au sein d'orange n'est pas en avance sur les autres sociétés et les process internes sont vieux jeu. orange va conserver Athéos telle quelle et vendre du service, pourtant 130 experts supplémentaires ne seraient pas inutiles pour améliorer la sécurité interne d'orange. Je m'attends à davantage de piratages massifs tels que peuvent en subir des Google, Microsoft et Facebook et j'espère qu'orange mette en place une "vraie" dynamique sécurité en interne (à différencier d'un service minimum pour réparer la casse).
Petite idée pour la fin : Ca serait beau qu'orange soit une des premières société française à mettre en place un bug bounty (viadeo en a déjà un).
Quelques archives de piratages d'orange :
http://www.ehackingnews.com/2012/10/news-nullcrew-hacked-orange-uk.html
http://www.dslreports.com/forum/r22439596-Orange-French-Portal-Hacked-250-000-accounts-compromised
Ou encore le fail du logiel HADOPI et de la plateforme web qui allait avec :
http://sid.rstack.org/blog/index.php/413-hadopi-et-orange-unis-pour-le-pire
J'avais souvenir que Sid disait (à l'instar d'EADS) qu'il y avait des experts reconnus chez orange, mais que bien souvenant dans les grands groupes, ils ne sont pas consultés sur des projets sur lesquels ils auraient pu apporter leur précieuse expertise.
Update : J'avais raté ce discours de Stéphane Richard : "A chaque attaque, nous progressons". Au moins il y a du positif :-)
A l'annonce d'un deuxième piratage de données à caractère personnel depuis le début de l'année chez orange, je ne peux m'empêcher de réfléchir à cette situation (allez savoir pourquoi). Ma piste principale est qu'il n'y a pas vraiment plus de piratage qu'avant, mais qu'on en parle plus (Why Has There Been So Much Hacking Lately? Or Is It Just Reported More? A Freakonomics Quorum). En effet orange étant opérateur Internet, il est soumis à l'obligation de notifier les personnes victimes d'un vol de données (legifrance).
Il est évident qu'orange a une surface d'attaque immense entre les jeux éphémères, les sites promotionnels, les différents portails, les applications pour les utilisateurs et les applications internes. De plus les jeux et sites promotionnels sont généralement créés par des startups qui n'ont aucune idée des bonnes pratiques de codage. Côté portail, on peut repérer des grosses pointures comme Laurent BUTTI qui maitrise son sujet (vous trouverez de nombreux articles dans MISC (où il publie à titre personnel ?) ou dans les archives de l'ossir). Mais force est de constater qu'il travaille aussi bien en boite blanche qu'en boite noire... Si vous voulez lire plein de discussion d'expert sécurité d'orange, leur blog est pas mal.
D'un autre côté orange veut devenir un leader en sécurité informatique et pour cela a racheté Atheos, mais j'ai peur que ça tourne comme pour AQL (racheté en 2007) dont le CESTI a depuis été fermé (pas vraiment de message officiel, mais AQL ou orange ne figure plus sur le site de l'ANSSI).
Mais il ne faut pas confondre centre de cout et centre de profit. Ces sociétés ont été rachetées pour vendre du service directement aux clients d'orange business service et non pour servir l'interne. A noter qu'on trouve un entretien de Nicolas Furgé (responsable des offres sécurité chez OBS) qui noie le poisson en mélangeant les experts qui sont sur des projets internes et ceux qui travaillent pour les clients. Et hop ! OBS devient ainsi la "plus importante société de services européenne dans le marché de la cyberdéfense, renforçant son positionnement d’acteur majeur dans ce domaine sur le plan mondial".
Pour l'anecdote, après le piratage d'un jeu à 2 balles d'orange en 2009 (ou 2010, je ne trouve pas d'archive), quelques pentesters d'AQL ont voulu faire du proactif et ont failli se faire licencier pour tentative d'intrusion... De quoi mettre la bonne ambiance et donner envie de contribuer à sa société.
Pour faire un peu dans l'analyse, je dirai qu'orange a une surface d'attaque colossale et qu'on n'entend pas parler de tous les piratages et surtout que les piratages ne sont pas tous détectés... La sécurité au sein d'orange n'est pas en avance sur les autres sociétés et les process internes sont vieux jeu. orange va conserver Athéos telle quelle et vendre du service, pourtant 130 experts supplémentaires ne seraient pas inutiles pour améliorer la sécurité interne d'orange. Je m'attends à davantage de piratages massifs tels que peuvent en subir des Google, Microsoft et Facebook et j'espère qu'orange mette en place une "vraie" dynamique sécurité en interne (à différencier d'un service minimum pour réparer la casse).
Petite idée pour la fin : Ca serait beau qu'orange soit une des premières société française à mettre en place un bug bounty (viadeo en a déjà un).
Quelques archives de piratages d'orange :
http://www.ehackingnews.com/2012/10/news-nullcrew-hacked-orange-uk.html
http://www.dslreports.com/forum/r22439596-Orange-French-Portal-Hacked-250-000-accounts-compromised
Ou encore le fail du logiel HADOPI et de la plateforme web qui allait avec :
http://sid.rstack.org/blog/index.php/413-hadopi-et-orange-unis-pour-le-pire
J'avais souvenir que Sid disait (à l'instar d'EADS) qu'il y avait des experts reconnus chez orange, mais que bien souvenant dans les grands groupes, ils ne sont pas consultés sur des projets sur lesquels ils auraient pu apporter leur précieuse expertise.
dimanche 23 mars 2014
Nmap, scapy, python
S'il y a bien un outil essentiel lors d'un pentest, il s'agit de nmap. Maîtriser cet outil peut permettre de gagner du temps et obtenir plus d'information lors de la phase de reconnaissance d'un audit. Mais j'ai l'impression qu'il a perdu en fiabilité ces derniers temps.
En particulier, je déteste le fait qu'un plantage en fin de scan sur des milliers d'adresses perdent le résultat des machines correctement scannées. Et des plantages, ce n'est pas rare. C'est d'ailleurs extrêmement courant en UDP et avec des scripts NSE comme les enumérations netbios.
Sans quand on recherche l'exhaustivité totale, il est devenu plus logique de faire un premier scan de détection des live hosts. Là encore nmap est la référence, mais il risque de se faire détrôner par zmap ou masscan (que je n'ai pas testé de peur de faire tomber les réseaux). Pour nmap, je n'ai jamais réussi à maîtriser totalement les retry et timeout, ce qui fait que la durée des scans dérive parfois énormément. J'ai finalement opté pour mon programme en python/scapy.
Je commence par définir les paquets que je souhaite envoyer avec quelques informations :
Puis une liste d'IP ou de hostname :
Et enfin mon programme qui enverra uniquement les paquets que j'ai défini et rien d'autre :
La commande suivante me sort le résultat attendu :
Et voilà ! On obtient une jolie liste des IP up qu'on va pouvoir scanner intégralement avec Nmap.
En particulier, je déteste le fait qu'un plantage en fin de scan sur des milliers d'adresses perdent le résultat des machines correctement scannées. Et des plantages, ce n'est pas rare. C'est d'ailleurs extrêmement courant en UDP et avec des scripts NSE comme les enumérations netbios.
Sans quand on recherche l'exhaustivité totale, il est devenu plus logique de faire un premier scan de détection des live hosts. Là encore nmap est la référence, mais il risque de se faire détrôner par zmap ou masscan (que je n'ai pas testé de peur de faire tomber les réseaux). Pour nmap, je n'ai jamais réussi à maîtriser totalement les retry et timeout, ce qui fait que la durée des scans dérive parfois énormément. J'ai finalement opté pour mon programme en python/scapy.
Je commence par définir les paquets que je souhaite envoyer avec quelques informations :
ICMP 8 ICMP 13 ICMP 17 TCP 80 S TCP 80 A TCP 443 S TCP 443 A UDP 53 UDP 161
Puis une liste d'IP ou de hostname :
example.com example.com google.com scanme.insecure.org
Et enfin mon programme qui enverra uniquement les paquets que j'ai défini et rien d'autre :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import argparse
from threading import *
from scapy.all import *
import Queue
import time
conf.verb = 0
conf.noenum.add(TCP.sport, TCP.dport, UDP.sport, UDP.dport, ICMP.type)
maxConnections = 100
timeoutPing = 3
connection_lock = BoundedSemaphore(value=maxConnections)
logQueue = Queue.Queue()
threads = []
endScript = False
def printThread(logQueue,logFile):
while True:
if not logQueue.empty():
val = logQueue.get()
logFile.write(val+"\n")
print val
else:
if endScript:
break
time.sleep(2)
def sendPacketICMP(packet,logQueue):
ans=sr1(packet,timeout=timeoutPing)
text=''
if ans:
text = '[+] ' + packet.sprintf("%IP.dst% ICMP/%ICMP.type%") + \
' > ' + ans.sprintf("%IP.src% ICMP/%ICMP.type%")
logQueue.put(text)
else:
text = '[-] ' + packet.sprintf("%IP.dst% ICMP/%ICMP.type%") + ' > No response'
logQueue.put(text)
def sendPacketTCP(packet,logQueue):
ans=sr1(packet,timeout=timeoutPing)
text=''
if ans:
text = '[+] ' + packet.sprintf("%IP.dst% TCP/%TCP.dport%/%TCP.flags%") + \
' > ' + ans.sprintf("{IP:%IP.src% {ICMP:ICMP/%ICMP.type%}{TCP:TCP/%TCP.sport%/%TCP.flags%}}")
logQueue.put(text)
else:
text = '[-] ' + packet.sprintf("%IP.dst% TCP/%TCP.dport%/%TCP.flags%") + ' > No response'
logQueue.put(text)
def sendPacketUDP(packet,logQueue):
ans=sr1(packet,timeout=timeoutPing)
text=''
if ans:
text = '[+] ' + packet.sprintf("%IP.dst% UDP/%UDP.dport%") + \
' > ' + ans.sprintf("{IP:%IP.src% {ICMP:ICMP/%ICMP.type%}{UDP:UDP/%UDP.sport%}}")
logQueue.put(text)
else:
text = '[-] ' + packet.sprintf("%IP.dst% UDP/%UDP.dport%") + ' > No response'
logQueue.put(text)
def sendPacket(ip,logQueue,proto,port,flag):
if proto=='ICMP':
packet=IP(dst=ip)/ICMP(type=port)
sendPacketICMP(packet,logQueue)
elif proto=='TCP':
packet=IP(dst=ip)/TCP(dport=port,flags=flag)
sendPacketTCP(packet,logQueue)
elif proto=='UDP':
packet=IP(dst=ip)/UDP(dport=port)
sendPacketUDP(packet,logQueue)
def ping_ip(ip,logQueue,config):
try:
for p in config:
if len(p)==2:
sendPacket(ip,logQueue,p[0],int(p[1]),'')
else:
sendPacket(ip,logQueue,p[0],int(p[1]),p[2])
finally:
connection_lock.release()
def main():
parser = argparse.ArgumentParser(description='Superping')
parser.add_argument('-i', metavar='ip list', type=argparse.FileType('rt'), required=True)
parser.add_argument('-c', metavar='config', type=argparse.FileType('rt'), required=True)
parser.add_argument('-o', metavar='out-file', type=argparse.FileType('wt'), required=True)
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
try:
results = parser.parse_args()
except IOError, msg:
parser.error(str(msg))
lc = sum(1 for l in results.c)
results.c.seek(0, 0)
print '[*] Chargement de '+ str(lc) +' types de ping'
config = [line.strip().split() for line in results.c.readlines()]
lc = sum(1 for l in results.i)
results.i.seek(0, 0)
print '[*] Lancement du scan de '+ str(lc) +' machines'
t = Thread(target=printThread,args=(logQueue,results.o))
t.daemon = True
child = t.start()
lines = results.i.readlines()
for ip_line in lines:
connection_lock.acquire()
t = Thread(target=ping_ip,\
args=(ip_line.rstrip('\n'),logQueue,config))
t.daemon = True
child = t.start()
threads.append(t)
[x.join() for x in threads]
endScript = True
print '[*] Fin des threads'
if __name__ == '__main__':
main()
La commande suivante me sort le résultat attendu :
./superping.py -i ip_list -c config -o log 2> /dev/null
[*] Chargement de 9 types de ping
[*] Lancement du scan de 3 machines
[+] Net('google.com') ICMP/8 > 74.125.132.138 ICMP/0
[+] Net('example.com') ICMP/8 > 93.184.216.119 ICMP/0
[+] Net('scanme.insecure.org') ICMP/8 > 74.207.244.221 ICMP/0
[+] Net('scanme.insecure.org') ICMP/13 > 74.207.244.221 ICMP/14
[-] Net('google.com') ICMP/13 > No response
[-] Net('example.com') ICMP/13 > No response
[-] Net('scanme.insecure.org') ICMP/17 > No response
[+] Net('scanme.insecure.org') TCP/80/S > 74.207.244.221 TCP/80/SA
[-] Net('google.com') ICMP/17 > No response
[-] Net('example.com') ICMP/17 > No response
[+] Net('google.com') TCP/80/S > 74.125.132.138 TCP/80/SA
[+] Net('example.com') TCP/80/S > 93.184.216.119 TCP/80/RA
[+] Net('google.com') TCP/80/A > 74.125.132.139 TCP/80/R
[-] Net('scanme.insecure.org') TCP/80/A > No response
[+] Net('example.com') TCP/80/A > 93.184.216.119 TCP/80/R
[+] Net('google.com') TCP/443/S > 74.125.132.113 TCP/443/SA
[+] Net('scanme.insecure.org') TCP/443/S > 74.207.244.221 TCP/443/RA
[+] Net('example.com') TCP/443/S > 93.184.216.119 TCP/443/RA
[+] Net('example.com') TCP/443/A > 93.184.216.119 TCP/443/R
[+] Net('google.com') TCP/443/A > 74.125.132.138 TCP/443/R
[+] Net('scanme.insecure.org') TCP/443/A > 74.207.244.221 TCP/443/R
[+] Net('scanme.insecure.org') UDP/53 > 74.207.244.221 ICMP/3
[+] Net('scanme.insecure.org') UDP/161 > 74.207.244.221 ICMP/3
[-] Net('google.com') UDP/53 > No response
[-] Net('example.com') UDP/53 > No response
[*] Fin des threads
Et voilà ! On obtient une jolie liste des IP up qu'on va pouvoir scanner intégralement avec Nmap.
vendredi 1 novembre 2013
Mon petit 0day pour l'ANSSI :)
Au cours d'un test un peu farfelu je suis tombé sur une faille un peu inclassable et un peu inutile :)
Mais finalement vu tous les articles sur la "privacy" qu'on peut lire actuellement, je vais balancer mon 0day... et puis je doute obtenir un bug bounty de Microsoft.
Je faisais de la classification d'informations recueillies avec FOCA et j'ai creusé un peu plus que nécessaire dans les metadata des documents récupérés. Dans un premier temps j'ai fait une passe sur les metadata des fichiers PDF avec pdfinfo, puis j'ai fait la même chose sur les images avec exiv2. Et là je me suis dit. Est-ce qu'on ne pourrait pas chopper les données exif des images contenues dans les pdf ???
Rien de plus simple ! Il existe un outil qui s'appelle pdfimages pour extraire les images des pdf. Alors en route.
Ce script va extraire les images dans un sous-répertoire, ma première idée était de visualiser les images pour ne pas à me palucher 800 documents à lire. Donc j'ai mis une moulinette qui supprime les images trop petites. A vous de voir la quantité d'images que vous obtenez.
A noter que PDF Creator simule une imprimante virtuelle. J'ai l'impression qu'il fait des miettes d'images minuscules (des milliers). C'est pour cela que j'ai viré les petites images.
Puis enfin je passe le script exif sur les images :
Si je prends par exemple un fichier appelé ANSSI_Presentation_PASSI_du_10_sept_2013.pdf, j'obtiens les informations suivantes avec pdfinfo :
Et la sortie de mon script :
Rien de vraiment intéressant, mais une belle preuve de concept montrant qu'Office 2010 ne supprime pas les données Exif des images intégrées dans les documents lorsqu'ils sont enregistrés en PDF. Je n'ai constaté le même résultat avec PDF creator ou PDF distiller. Je n'ai pas non plus tester sur un fichier issu d'Office 2013.
Mais finalement vu tous les articles sur la "privacy" qu'on peut lire actuellement, je vais balancer mon 0day... et puis je doute obtenir un bug bounty de Microsoft.
Je faisais de la classification d'informations recueillies avec FOCA et j'ai creusé un peu plus que nécessaire dans les metadata des documents récupérés. Dans un premier temps j'ai fait une passe sur les metadata des fichiers PDF avec pdfinfo, puis j'ai fait la même chose sur les images avec exiv2. Et là je me suis dit. Est-ce qu'on ne pourrait pas chopper les données exif des images contenues dans les pdf ???
Rien de plus simple ! Il existe un outil qui s'appelle pdfimages pour extraire les images des pdf. Alors en route.
#!/bin/bash
# dependances:
# md5deep
# poppler-utils -> pdfimages
mkdir images
for file in *.pdf
do
echo ${file}
pdfimages -j "${file}" ./images/"${file}"
#on vire les bouzins n&b
find ./images/ -name "${file}*.pbm" -exec rm -f {} \;
#ppm
find ./images/ -name "${file}*.ppm" -size -300k -exec rm -f {} \;
#jpg
find ./images/ -name "${file}*.jpg" -size -20k -exec rm -f {} \;
#moulinette pour virer les doublons
md5deep "./images/${file}"* | sort | while read arg1 arg2
do
newsum=$arg1
if [ "$newsum" = "$oldsum" ]
then
rm "$arg2"
fi
oldsum="$newsum"
done
done
#doublons inter documents
md5deep ./images/* | sort | while read arg1 arg2
do
newsum=$arg1
if [ "$newsum" = "$oldsum" ]
then
rm "$arg2"
fi
oldsum="$newsum"
done
Ce script va extraire les images dans un sous-répertoire, ma première idée était de visualiser les images pour ne pas à me palucher 800 documents à lire. Donc j'ai mis une moulinette qui supprime les images trop petites. A vous de voir la quantité d'images que vous obtenez.
A noter que PDF Creator simule une imprimante virtuelle. J'ai l'impression qu'il fait des miettes d'images minuscules (des milliers). C'est pour cela que j'ai viré les petites images.
Puis enfin je passe le script exif sur les images :
#!/bin/bash
# dependance: exiv2
for file in *.jpg
do
nbLine=$(exiv2 ${file} | grep -c "Exif")
if [ "${nbLine}" -ne 0 ]
then
echo ${file}
exiv2 -pt -u "${file}"
fi
done
Si je prends par exemple un fichier appelé ANSSI_Presentation_PASSI_du_10_sept_2013.pdf, j'obtiens les informations suivantes avec pdfinfo :
pdfinfo ANSSI_Presentation_PASSI_du_10_sept_2013.pdf Creator: Microsoft® PowerPoint® 2010
Et la sortie de mon script :
Exif.Image.0x0302 Ascii 22 Photoshop ICC profile Exif.Image.Software Ascii 37 Adobe Photoshop Elements 8.0 Windows Exif.Image.DateTime Ascii 20 2011:08:09 09:08:37 Exif.Photo.UserComment Undefined 122 CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 90
Rien de vraiment intéressant, mais une belle preuve de concept montrant qu'Office 2010 ne supprime pas les données Exif des images intégrées dans les documents lorsqu'ils sont enregistrés en PDF. Je n'ai constaté le même résultat avec PDF creator ou PDF distiller. Je n'ai pas non plus tester sur un fichier issu d'Office 2013.
lundi 9 septembre 2013
CVSS ou pas ?
Je suis actuellement sur une campagne de 15 pentests pour un client qui veut que l'on note chaque vulnérabilité avec un niveau CVSS. L'exercice est assez particulier et m'a fait perdre la foi dans cette métrique :)
Armé de mon petit calculateur de CVSS que j'ai développé en moins de 30 minutes en utilisant le manuel de référence, je m'en vais mettre des notes à mes vulns et là c'est la douche froide.
Un peu comme je l'évoque pour le XSS, il existe des scénarios qui enchaînent les failles. Par exemple une interface admin accessible, un contournement d'authentification, une élévation de privilège et compromission totale du serveur. Et puis quoi ? Avec des si on mettrait Paris en bouteille.
Ce dont il faut bien se souvenir quand on utilise CVSS, c'est qu'on mesure la criticité d'une vulnérabilité, on ne mesure pas le risque. Est-ce que l'entreprise est grande, a beaucoup de concurrence, a une population technophile (SSII), qui aime assez peu sa société (mauvaise rémunération) ? CVSS n'en tient pas compte. C'est à l'auditeur de faire une analyse de risque et de faire ressortir ce qui est réellement critique dans le contexte de l'entreprise.
Armé de mon petit calculateur de CVSS que j'ai développé en moins de 30 minutes en utilisant le manuel de référence, je m'en vais mettre des notes à mes vulns et là c'est la douche froide.
- Comment noter une fonctionnalité dangeureuse comme le transfert automatique de message dans Exchange ?
- Comment noter une faille dans un système d'authentification forte qui réduit alors l'authentification au seul mot de passe ?
- Comment qualifier le fait qu'un utilisateur puisse accéder aux interfaces d'administration d'un serveur ?
- Comment noter un bête XSS sur une applications interne ?
- Faut-il considérer l'attaque depuis le réseau (Internet) ou depuis un adjacent network ?
- Est-ce que l'Access Complexity est élevé car nécessitant une phase d'ingénieurie sociale (phishing) ou moyenne car c'est un bête XSS sur un moteur de recherche ?
- Avec un XSS on peut voler le cookie d'une personne et accéder à l'application avec ses droits. On peut altérer ses données. Avec le cookie d'un admin on peut supprimer la base de données. Sauf qu'on attaque personne par personne. Comment qualifier l'impact DIC de façon pertinente ?
Un peu comme je l'évoque pour le XSS, il existe des scénarios qui enchaînent les failles. Par exemple une interface admin accessible, un contournement d'authentification, une élévation de privilège et compromission totale du serveur. Et puis quoi ? Avec des si on mettrait Paris en bouteille.
Ce dont il faut bien se souvenir quand on utilise CVSS, c'est qu'on mesure la criticité d'une vulnérabilité, on ne mesure pas le risque. Est-ce que l'entreprise est grande, a beaucoup de concurrence, a une population technophile (SSII), qui aime assez peu sa société (mauvaise rémunération) ? CVSS n'en tient pas compte. C'est à l'auditeur de faire une analyse de risque et de faire ressortir ce qui est réellement critique dans le contexte de l'entreprise.
Inscription à :
Articles (Atom)







