<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UNTITLED.BLOG &#187; Tips&amp;tricks</title>
	<atom:link href="http://blog.felix-aime.fr/category/astuces/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.felix-aime.fr</link>
	<description>Blog de Félix Aimé, étudiant à SRC Bordeaux.</description>
	<lastBuildDate>Mon, 28 Jun 2010 20:05:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Petit tour des librairies de visualisation de données en JavaScript</title>
		<link>http://blog.felix-aime.fr/developpement-web/petit-tour-des-librairies-de-visualisation-de-donnees-en-javascript/</link>
		<comments>http://blog.felix-aime.fr/developpement-web/petit-tour-des-librairies-de-visualisation-de-donnees-en-javascript/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 17:14:50 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Design web]]></category>
		<category><![CDATA[Développement (divers)]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data vistualization]]></category>
		<category><![CDATA[graphiques]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[visutalization]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=331</guid>
		<description><![CDATA[
Vous ne le saviez peut-être pas, mais un de mes passes temps en ce moment est d&#8217;étudier la visualisation de données notamment pour le web, car ce domaine est en pleine ébullition actuellement avec l&#8217;apparition de l&#8217;HTML5 et de sa balise canvas (non standardisé dans la version 4) mais aussi toutes ces libraires JavaScript permettant [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.felix-aime.fr/pics/visualization.png" class="topimg" alt="Javascript visualization" /></p>
<p>Vous ne le saviez peut-être pas, mais un de mes passes temps en ce moment est d&#8217;étudier la visualisation de données notamment pour le web, car ce domaine est en pleine ébullition actuellement avec l&#8217;apparition de l&#8217;HTML5 et de sa balise canvas (non standardisé dans la version 4) mais aussi toutes ces libraires JavaScript permettant de faire de beaux graphiques comme on aime.</p>
<p>J&#8217;utilise assez rarement des outils de visualisation de données, car j&#8217;en ai pas besoin dans mon travail actuel (études ou projets perso) mais je surveille de très prêt et teste une grande partie des solutions mises en avant (sauf flash &amp; flex qui ont d&#8217;ailleurs de très bonnes librairies de visualisation.). Voici donc un petit résumé de ce qu&#8217;il se fait en la matière actuellement :</p>
<p><strong><a href="http://www.thejit.org">The JavaScript InfoVis Toolkit</a> </strong>- Librairie vraiment sympa surtout en ce qui concerne données hiérarchisées. Elle possède une très large documentation avec de nombreux exemples.</p>
<p><strong><a href="http://danvk.org/dygraphs">Dygraphs</a></strong> &#8211; Très bonne libraire pour représenter sous forme de graphiques lambda  (axes abscisses et ordonnées) des données plus couramment de type temporelles. Sympa pour des activités serveur par exemple.</p>
<p><strong><a href="http://processingjs.org">Processingjs</a></strong> &#8211; On ne présente plus la librairie Java processing, véritable leader de la visualisation en Java. Voici son &laquo;&nbsp;équivalent&nbsp;&raquo; en Javascript. Tout comme processing en Java, son utilisation s&#8217;avère complexe pour des développeurs non matheux du dimanche (moi ?) cependant, elle permet de faire bien des choses !</p>
<p><strong><a href="http://omnipotent.net/jquery.sparkline">jquery.sparkline</a></strong> &#8211; Cette libraire jquery permet de faire des petits charts vraiment superbes et peut posséder de multiples utilisations telles que pour modéliser des hits de téléchargements, de visites ou des activités clients side ou server side.</p>
<p><strong><a href="http://vis.stanford.edu/protovis">Protovis</a></strong> &#8211; Là, nous atteignons le summum de la visualisation de données en JavaScript. Cette librairie permet de tout faire (ou presque &#8211; sauf 3D) et possède un très bon rendu des charts. Si je me rappelle bien, c&#8217;est la seule permettant <a href="http://vis.stanford.edu/protovis/ex/cars.html">de parser des données par coordonnées parallèles</a> permettant ainsi une bonne visualisation de données complexes du type logs de connexions par exemple. (étant une visualisation notamment utilisé par <a href="http://www.synack.fr/project/fp/fp.html">FP</a>).</p>
<p>En ce qui concerne la visualisation de liens entre objet, nous pouvons noter quelques librairies sympa comme :</p>
<p><strong><a href="http://www.unwieldy.net/projects/moowheel">Moowheel</a></strong> &#8211; Cette libraire permet simplement de modéliser des liens entre objets disposés autour d&#8217;un même cercle avec de belles couleurs (ou non). L&#8217;utilité de ce script peut prendre sa place pour modéliser des liens entre personnes sur des réseaux sociaux ou autres.</p>
<p><strong><a href="http://www.jsviz.org">JsViz</a></strong> &#8211; Cette libraire est assez cool, cependant elle reste mal gérée par les navigateurs. Elle permet là aussi de faire des liens dans l&#8217;espace entre différents objets et possède plusieurs modes d&#8217;affichage. Elle est encore trop lourde pour être ergonomique sur les différents navigateurs Internet ce qui en fait son principal défaut aujourd&#8217;hui.</p>
<p><strong>The JavaScript InfoVis Toolkit</strong> &#8211; Là aussi cette librairie permet de modéliser des liens entre différents objets, notamment avec son mode <a href="http://thejit.org/Jit/Examples/Hypertree/example1.html">Hypertree</a>.</p>
<p>Voilà ce que l&#8217;on peut dire de la visualisation de données en javascript aujourd&#8217;hui. Récemment, google a mis en ligne une <a href="http://code.google.com/intl/fr-FR/apis/visualization/">API de visualisation</a> permettant là aussi de faire des beaux charts, mais je préfère pas en parler, car faire sa propre cuisine est toujours plus enrichissant. De plus, plusieurs hacks CSS/HTML permettent sans javascript de faire des trucs sympa tels que des <a href="http://petewilliamsagency.com/oldsite/css/examples/pie/">pie charts</a> ou autres.</p>
<p>Si vous voulez poursuivre votre voyage et avoir une réelle overview de ce qui se fait tant au point JS que PHP/Flash, voici un petit lien qui devrait vous plaire <a href="http://www.tripwiremagazine.com/2009/12/70-tools-for-visualizing-your-data-css-flash-jquery-php.html">Tools for visualizing your data</a>. =)</p>
<p>[<a href="http://www.flickr.com/photos/40995569@N05/3831915968/">Entête</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/developpement-web/petit-tour-des-librairies-de-visualisation-de-donnees-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passive &amp; Active fingerprinting : Méthodes, limites et défenses</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/passive-active-fingerprinting-methode-limites-et-defenses/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/passive-active-fingerprinting-methode-limites-et-defenses/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:49:43 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[fingerprinting]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[systèmes d'exploitations]]></category>
		<category><![CDATA[waf]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=302</guid>
		<description><![CDATA[
La prise d’empreinte d’un hôte ou réseau distant est une certaine science en attaque des systèmes d’information. Le but avoué est simplement de connaitre, dans le cadre d’un hôte, son système d’exploitation ou la présence de certains équipements réseau entre l’attaquant et la cible (reverse-proxy, load-balancers, firewalls, routeurs etc.) pouvant certaines fois aboutir à un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.felix-aime.fr/pics/fringerprint.jpg" alt="Fingerprinting" class="topimg" />
<p>La prise d’empreinte d’un hôte ou réseau distant est une certaine science en attaque des systèmes d’information. Le but avoué est simplement de connaitre, dans le cadre d’un hôte, son système d’exploitation ou la présence de certains équipements réseau entre l’attaquant et la cible (reverse-proxy, load-balancers, firewalls, routeurs etc.) pouvant certaines fois aboutir à un cartographie très relative du réseau visé.</p>
<p><em>Obfusquer</em> un système d’exploitation ou même le nombre d’hôtes/sous réseaux derrière un routeur ou tout autre périphérique réseau actif est une des principales mesures à réaliser face à un possible attaquant déterminé. Comme le dit souvent l’oncle Sun Tzu, il faut avant tout aveugler l’ennemi. Un ennemi aveuglé aura du mal à avancer et son attaque sera beaucoup plus longue.</p>
<p>De plus, le fait d’<em>obfusquer</em> un système montre bien que l’administrateur n’est pas né de la dernière pluie et qu’il possède des connaissances en sécurité informatique (wahou). En outre, dans le cadre de serveurs accessibles depuis le net, cette sécurisation évitera de se faire ficher par le nouveau né <a href="http://shodan.surtri.com">SHODAN</a> qui se base sur les bandeaux des services du type SSH, Apache, IIS, Nginx ou toute autre application un peu trop bavarde.[1]</p>
<p><strong>Il existe deux types de prise d’empreinte à distance, une active et une passive. (Et une autre un peu <em>#WTF</em> mais pas<em>#NSFW</em> pour certaines attaques)</strong></p>
<p><strong>La prise d’empreinte active,</strong> la plus connue, interagit directement avec le système distant. Nous pouvons citer comme logiciels Nmap ou Xprobe permettant ainsi, &#8211; suite à l’envoi de certains paquets forgés &#8211; déterminer grâce aux réponses faites par l’host, le système d’exploitation. Ce type de scanners, bien que répandus sont souvent utilisés dans leurs fonctions standard et les fonctions avancées sont souvent oubliées pour un Scan « basique ». De plus, ces dernières permettent de reconnaitre un OS de façon plus ou moins fiable suivant le type d’équipements réseaux/sécurités ou même les spécificités du scanner…</p>
<p>En ce qui concerne les services tournant sur les hôtes, la technique la plus triviale consiste en la récupération de bandeaux émis par ces derniers afin de déterminer de façon plus ou moins fiable la version des services et des fois, les modules ajoutés pouvant êtres faillibles. Cette technique, bien que sa mise en œuvre soit plus que facile, peut être facilement bloquée en quelques modifications sur les fichiers de configuration de ces services.</p>
<p>Pour ce qui est de la reconnaissance de load-balancers, il existe un petit tool sympa se basant sur la couche application (HTTP) du modèle OSI. Ainsi, <a href="http://halberd.superadditive.com">Halberd</a> compare les entêtes HTTP reçues telles que l’heure des serveurs, l’ordre des entêtes ou même le fameux header « X-Forwarded-For » (le tout par hash notamment) afin de déterminer la possible présence de plusieurs serveurs derrière un load-balancer. Pour résumé, cette méthode est simple mais surtout très astucieuse.</p>
<p>Enfin, nous n’allions pas parler de fringerprinting actif distant sans parler de WAF, aujourd’hui thème à la mode, les Firewalls pour Applications Web sont disposés tels des reverse-proxy. Ces derniers, permettent principalement de contrer les attaques par Injections (JS, LDAP, SQL etc.) mais possèdent bien des spécificités permettant de les <em>fingerprinter</em>. Aujourd’hui, un tool sort du lot pour cela, <a href="http://code.google.com/p/waffit/">Wafwoof</a> permettant de <em>fringerprinté</em> plus de 20 WAF différents parmi le plus connu dans l’OpenSource Mod_Security d’Apache. (Qui d’ailleurs avait une petite technique d’évasion sur les SQL injections il y a quelques jours… ;)</p>
<p><strong>La prise d’empreinte passive</strong> quant à elle s’inscrit lorsqu’on n’a pas un « accès direct » (pour faire simple) vers l’hôte (réseau NATé, firewallé, load-balancé, IDSé etc.). Elle peut se faire par différents moyens. Cependant, les plus connus restent la prise d’empreinte de la pile TCP/IP, les TTL des paquets reçus (façon vague de déterminer l’OS – sert pour architecture interne d’un réseau NATé – mais tout de même performante lorsqu’on a pas de tools[2]). D’autres logiciels beaucoup plus fiables mais plus complexes se basent sur l’entête TCP/IP des systèmes d’exploitation grâce à (liste non exhaustive) : la taille de la fenêtre, TTL, les flags ou même les options contenues dans l’entête (avec <a href="http://lcamtuf.coredump.cx/p0f.shtml">p0f</a> notamment &lt;3. Il faut pour cela que l&#8217;hôte distant se connecte à un serveur dont l&#8217;attaquant possède les droits dessus (compromis ou pas, au bon vouloir de l&#8217;attaquant) ou qu&#8217;il sniffe la connexion entre deux systèmes (donc doit être déjà présent sur un réseau).</p>
<p>Nous pouvons aussi réaliser le fingerprinting passif grâce aux numéros de séquence (pseudo aléatoires) contenus dans les entêtes des paquets TCP-IP. Du fait de leur randomisation non parfaite, chaque système possède sa propre &laquo;&nbsp;empreinte ISN&nbsp;&raquo; pouvant être comparable dans le temps avec d&#8217;autres empreintes ISN. Ce type de fingerprinting est très bien documenté par son créateur sur ce site internet [3]). Cette technique possède cependant des limites. Ainsi il faut un grand nombre de paquets échangés afin de posséder une bonne empreinte permettant de déterminer quel est le système distant. En outre les systèmes actuels s&#8217;orientent vers une randomisation plus fiable. Cependant, sa mise en place peut être utilisée pour déterminer le nombre de serveurs derrière un load-balancer (avec ISNprober notamment). &#8211; Ci dessous, un fingerprinting des ISN générées par Windows XP (voir [3]) :</p>
<p><img src="http://blog.felix-aime.fr/pics/isn.jpg" alt="Fingerprinting" /></p>
<p>Un « troisième type », encore plus &laquo;&nbsp;rock’n&#8217;rool&nbsp;&raquo; et beaucoup moins &laquo;&nbsp;matheu&nbsp;&raquo; peut permettre la prise d’empreinte d’un système utilisé en regardant simplement les META-DONNES des fichiers déposés sur des serveurs web ou envoyés directement par l’entité par le biais de simples emails. Ainsi, certaines applications trop bruyantes laissent des infos pouvant permettre à un attaquant de déterminer le système cible (grâce à des full path, les applications etc. contenus dans les fichiers) et les versions (les paths users diffèrent par exemple d’un WinXP à un Vista) des programmes spécialisés permettent de récupérer ses informations juteuses telles que <a href="http://www.edge-security.com/metagoofil.php">Metagoofil</a> (par le biais de Google) ou des fois un bon éditeur full-text fera l&#8217;affaire. Certaines informations dépassent totalement le cadre du simple fingerprinting système mais sont croustillantes à souhait (noms d’utilisateurs, paths, applications utilisées avec leur version etc.).</p>
<p>Cependant, pour cette dernière, il faut absolument que le fichier ai été modifié ou créé sur le poste (ou le domaine si utilisateurs) que l’attaquant veut « visiter ». Donc en d’autres termes, c’est bien pour se renseigner sur des hôtes de (sous)-réseaux d’entreprises et les logiciels employés (quoi ? le service de com’ utilise semble-t-il une version vulnérable d’OpenOffice ?), cependant, dans le cadre d’un bastion, cela ne servira totalement à rien… après tout, c’est logique. (Note : Regarder les META des communiqués de presse et etc. sur les sites institutionnels des entreprises ;)</p>
<p><strong>Peut-on se protéger contre le fingerprinting ?</strong></p>
<p>Comme toujours, la sécurité d’un bastion ou d’une station en particulier est beaucoup plus facile à mettre en œuvre que la sécurité d’un système d’information composée de plusieurs hôtes, réseaux, sous-réseaux, serveurs etc… Je vais vous présenter quelques pistes pour sécuriser ce petit monde, cependant, il vous faudra poursuivre par vous-même la sécurisation de vos équipements, car comme dirait papy geek « Read that fu*king manual ».</p>
<p><strong>Protection des services</strong></p>
<p>Ainsi, pour bien protéger les services, il faut faire taire ses applications, la plupart des services http, ftp,  ssh ou autres possèdent leurs propres directives à changer dans les fichiers de configuration des services afin de réduire le bruit émi et la possibilité de reconnaissance de services à distance. On essayera de réduire un max les infos, essayant de ne plus rien divulger.</p>
<p>Cependant, certains services laissent encore le nom du service tout en rendant invisible sa version (c’est le cas d’<strong>Apache</strong> par exemple ou il faut aller voir dans le <a href="http://httpd.apache.org/docs/1.3/mod/core.html">apache2.conf</a> et mettre ServerTokens sur Prod – et ne pas oublier par la même occasion ServerSignature sur off ;). En ce qui concerne <strong>IIS</strong> (éh oui…) il faut simplement valeur de registre DisableServerHeader à cette adresse <em>HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters</em> et hop, plus de signature. Et pour finir, autant faire ça pour <strong>Nginx</strong> où la manœuvre est un peu plus complexe. Pour cela, DIY dans le code source en éditant les constantes de version dans les fichiers <em>src/core/nginx.h</em> &amp; <em>src/http/modules/perl/nginx.pm</em> et enfin, en re-compilant le tout. Dans le cas d’autres services c’est à peu prêt les mêmes méthodes, pour savoir comment faire, il vous suffit de faire un simple « <em>[nom du service] disable server signature</em> » ou même « <em>[nom du service] disable welcome message</em> » dans google pour avoir des réponses à vos questions :)</p>
<p>En ce qui concerne la protection de WAF, à ce que j&#8217;ai pu lire <a href="http://tacticalwebappsec.blogspot.com/2009/06/waf-detection-with-wafw00f.html">sur ce site</a>, que nous pouvons facilement protéger <strong>mod_security</strong> en customisant les réponses du firewall suite à certaines requêtes ou en changeant simplement la signature du serveur apache (dans les headers HTTP) en utilisant l&#8217;option SecServerSignature dans la configuration de mod_security (contenue dans apache2.conf)  (<a href="http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/06-special_features.html">voir ici</a>). Je n&#8217;ai jamais utilisé d&#8217;autres WAF donc l&#8217;aide sera limitée à cela.</p>
<p><strong>Protection des bastions &amp; hôtes</strong></p>
<p>En ce qui concerne les scans liés au SI (hosts, bastions, firewalls, passerelles etc.) beaucoup de logiciels ont étés développés il y a quelques années afin de limiter les tentatives de fingerprinting de stations comme IPpersonnality ou Fingerprint Fucker patchant le kernel afin de modifier la pile TCP/IP des systèmes Linux pour se faire passer pour d’autres systèmes ou périphériques réseaux. Aujourd’hui est développé <a href="http://blog.hynesim.org/fr/ipmorph/">IPMorph</a> permettant là aussi d’obfusquer le système d’exploitation réel et de le faire passer pour un autre (plus que prometteur car permettant de tromper des logiciels de fingerprinting actifs et passifs tels que Nmap, p0f, Xprobe2, ou même SinFP). Vous trouverez une bonne documentation technique sur le site du SSTIC’09 <a href="http://actes.sstic.org/SSTIC09/IpMorph-unification_de_la_mystification_de_prise_d_empreinte/SSTIC09-article-G-Prigent-F-Vichotet-F-Harrouet-IpMorph-unification_de_la_mystification_de_prise_d_empreinte.pdf">ICI</a>. Je ne l’ai pas encore utilisé/testé mais j’ai vraiment hâte à la suite de cette lecture :)</p>
<p>Concernant le réseau, un attaquant peut s’amuser aussi à déterminé l’architecture interne de ce dernier de façon très superficielle (os et équipements) à l’aide des TTL des paquets. Effectivement, certains équipements réseaux décrémentent les TTL lors du passage d’un paquet. Il est donc bon de rétablir à une valeur par défaut le champ TTL des paquets sortant du réseau. Pour cela, il existe des options pour <a href="http://security.maruhn.com/iptables-tutorial/x10539.html">IPtables</a>.</p>
<p>Je ne sais pas si PF le fait (sale inculte – je connais que la limitation de TTL de PF), cependant, il est fort probable que comme IpTables nous pouvons le faire en cherchant un peu dans les mailinglists ou docs de PF. En ce qui concerne les autres Firewalls, à vous de voir, je ne pourrai pas trop vous aider. On peut également aller voir dans /proc/sys/net/ipv4/ip_default_ttl pour Linux et je ne sais plus quelle clé de registre pour Windows.</p>
<p>Ensuite, pour le reste, libre à vous pour ce qui est de la configuration des firewalls pour laisser passer certains paquets (ICMP etc.)  ou non dans vos DMZ, réseaux internes etc. Je ne vais pas rentrer dans ce débat troolesque à souhait aujourd&#8217;hui.</p>
<p><strong>Conclusion</strong></p>
<p>Le procédé fingerprinting système/réseau est une science où chaque système/réseau possède ses particularités. Aujourd&#8217;hui, les principales attaques possèdent des contre-mesures pouvant être mises en place plus ou moins facilement par rapport à l&#8217;architecture du SI associé.</p>
<p>Cependant, il faut trouver comme toujours <strong>le juste milieu</strong> entre la sécurité voulue, le coup de mise en place de cette dernière et l&#8217;importance des données contenues dans le systèmes pouvant être la cible d&#8217;une tentative d&#8217;attaque (qu&#8217;elle soit bien évidement interne à l&#8217;entité ou externe.).</p>
<p><strong>[1]</strong> SHODAN : Le grand jeu aujourd’hui est de trouver des tips&amp;tricks sur Shodan shells disants ouverts (<a href="http://www.twitter.com/hdmoore/statuses/6009657364">root</a> ou non), serveurs vulnérables ou déjà compromis etc.</p>
<p><strong>[2] </strong>PING/TTL : Un simple tracereoute ou un ping et roule ma poule. (Dans le cadre d&#8217;un bastion avec les requêtes ICMP vers ce dernier non dropées par un éventuel firewall.)</p>
<p><strong>[3] </strong><a href="http://lcamtuf.coredump.cx/oldtcp/tcpseq/print.html">Strange Attractors and TCP/IP Sequence Number Analysis</a></p>
<p><strong>[4] </strong>Voir les champs /Producer /Creator et /CreationDate afin d’être sur que le PDF publié est récent, cependant, certains sont encodés demandant l&#8217;ouverture par Adobe AR ou tout autre logiciel lisant les &laquo;&nbsp;entêtes&nbsp;&raquo; des PDF.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/passive-active-fingerprinting-methode-limites-et-defenses/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Backdoorer un compte Twitter&#8230;</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/backdoorer-un-compte-twitter/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/backdoorer-un-compte-twitter/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 22:25:14 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[backdoor]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=170</guid>
		<description><![CDATA[Une news récente a permise de mettre la main sur une technique loin d&#8217;être bête permettant, par le biais d&#8217;un protocole développé à l&#8217;origine pour croiser des services de manière sécurisée (sans stocker les mots de passes des utilisateurs de l&#8217;API) de backdoorer un service utilisant ce dernier. Et évidemment, ce service, est Twitter. 
Twitter [...]]]></description>
			<content:encoded><![CDATA[<p>Une news récente a permise de mettre la main sur une technique loin d&#8217;être bête permettant, par le biais d&#8217;un protocole développé à l&#8217;origine pour croiser des services de manière sécurisée (<a href="http://blog.felix-aime.fr/twitter-et-un-point-sur-la-securite-du-tout-ouvert/">sans stocker les mots de passes des utilisateurs de l&#8217;API</a>) de <a href="fr.wikipedia.org/wiki/Porte_dérobée">backdoorer</a> un service utilisant ce dernier. Et évidemment, ce service, est <a href="http://www.twitter.com">Twitter</a>. </p>
<p>Twitter et la sécurité ce n&#8217;est pas une histoire d&#8217;amour tant pour ses utilisateurs, que la société elle-même. Bref, il s&#8217;agit d&#8217;un certain Terence Eden, qui, après avoir changé son mot de passe qui était compromis s&#8217;est aperçu que le <a href="http://www.oauth.net/">protocole OAuth</a> permettait, même après le changement d&#8217;un mot de passe, d&#8217;avoir la main sur le compte Twitter de la victime. Et oui, la révocation du token d&#8217;authentification de <a href="http://www.oauth.net/">OAuth</a> n&#8217;est pas automatique suite au changement de son mot de passe sur le service. </p>
<p>Bref, une seule chose à faire, <a href="http://twitter.com/account/connections">supprimer dans la configuration du profil</a> d&#8217;éventuelles applications mises en place par l&#8217;attaquant ou tout simplement, pour les plus paranos d&#8217;entre nous, ne pas utiliser Twitter même si cela est &laquo;&nbsp;l&#8217;outil idéal&nbsp;&raquo; de <a href="http://twitter.com/felixaime/securityresearch">veille en sécurité</a>. </p>
<p>Tiens, cela me rappelle que l&#8217;on peut aussi facilement backdoorer des comptes Gmail, mais ceci est une autre histoire ;) Keep Update ! =)</p>
<p>[<a href="http://www.h-online.com/security/news/item/Shutting-Twitter-backdoors-850717.html">Source</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/backdoorer-un-compte-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Requête POST en cross-domain &#171;&#160;presque-sans&#160;&#187; JavaScript.</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 16:13:02 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Bypass]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[noscript]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=63</guid>
		<description><![CDATA[Il y a encore quelques mois, on me disait qu&#8217;il était impossible de réaliser une requête POST automatiquement sans passer par de l&#8217;Ajax ou un Framework javascript tiers. (notez que celles en GET nécessitaient simplement un appel vers la page demandée par l&#8217;intermédiaire d&#8217;une image mal formée, un embed, ou une feuille de style etc.)
Cette [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a encore quelques mois, on me disait qu&#8217;il était <strong>impossible</strong> de réaliser une requête POST automatiquement sans passer par de l&#8217;<strong>Ajax</strong> ou un Framework javascript tiers. (notez que celles en GET nécessitaient simplement un appel vers la page demandée par l&#8217;intermédiaire d&#8217;une image mal formée, un embed, ou une feuille de style etc.)</p>
<p>Cette histoire de POST pouvait poser quelques problèmes lors de lorsqu&#8217;un script appelait des variables en POST et que PHP était configuré sans les <em>register_globals</em> (donc à off). Ainsi, nous devions forcément passer par une requête POST afin de faire passer les variables, cela incluait alors, dans le cadre d&#8217;attaques <strong>CSRF</strong> l&#8217;utilisation d&#8217;ajax dans une page afin de perpétrer l&#8217;attaque et d&#8217;envoyer les données au script.</p>
<p>Gros problème, les navigateurs empêchent les requêtes ajax POST en cross domain pour des raisons évidentes de sécurité. Et puis, j&#8217;ai eu une idée, pourquoi ne pas passer par un formulaire HTML pur et de le valider sur un évènement ? Là était la réponse ! =) Il suffit simplement de réaliser une page contenant un formulaire et une image qui ne se charge pas contenant l&#8217;évènement (non DOM) onerror , par exemple, quelque chose dans ce genre :</p>
<pre>&lt;form id="form" action="[vers la page vuln aux CSRF]" method="POST"&gt;
&lt;input name="test1" type="hidden" value="valeur test 1" /&gt;
&lt;input name="test2" type="hidden" value="valeur test 2" /&gt;
&lt;/form&gt;
&lt;img src="xxxx" onerror="form.submit()" /&gt;</pre>
<p>Et hop, vous avez votre requête POST, cross domain sans utiliser de l&#8217;Ajax =) Vous voulez voir ce que cela donne ? <a href="http://www.felix-aime.fr/projets/securite/bypass_post_noscript/badaboum.html">Allez par ici -&gt; [ -]</a></p>
<p>Pour conclure, nous pouvons dire que le code est simple, très simple, voir même trop simple. Nous pourrions un peu le customiser afin que l&#8217;envoi des données soit invisible pour l&#8217;utilisateur, mais je reste dans le cadre d&#8217;un PoC, donc pas de choses très méchantes ici.</p>
<p>De plus, cette technique reste assez limitée dans l&#8217;efficacité qu&#8217;aurai pu avoir une requête à dose de javascript, car cela permet de faire autre chose bien plus élaborées&#8230; et surtout de récupérer certaines informations lorsque nous sommes sur le même domaine&#8230; (arf, le cross domaine, les navigateurs n&#8217;aiment pas cela et nous pouvons les comprendre&#8230; ah si, ie6 et &lt; aiment ça, mais c&#8217;est une autre histoire&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jolicloud, installation sur VMware et premières impressions</title>
		<link>http://blog.felix-aime.fr/astuces/jolicloud-installation-sur-vmware-et-premieres-impressions/</link>
		<comments>http://blog.felix-aime.fr/astuces/jolicloud-installation-sur-vmware-et-premieres-impressions/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 12:55:16 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[jolicloud]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[virtuelle]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=4</guid>
		<description><![CDATA[Jolicloud est un système d&#8217;exploitation orienté web basé cloud computing et réseaux sociaux, multimédia. Il est développé sur une base Ubuntu et est depuis quelques temps disponible en version Alpha (privée) permettant ainsi à diverses personnes de le tester, de déceler des bugs et de dire leur avis sur le système. Bref, le système en [...]]]></description>
			<content:encoded><![CDATA[<p>Jolicloud est un système d&#8217;exploitation orienté web basé cloud computing et réseaux sociaux, multimédia. Il est développé sur une base Ubuntu et est depuis quelques temps disponible en version Alpha (privée) permettant ainsi à diverses personnes de le tester, de déceler des bugs et de dire leur avis sur le système. Bref, le système en lui-même est sympa même si je trouve qu&#8217;il ressemble encore trop à Ubuntu sans parler de quelques défauts dans le graphisme (qui j&#8217;espère vont changer, car le menu sur fond noir est vraiment moche). Au pire ce n&#8217;est qu&#8217;une alpha donc il y a encore du temps avant sa vraie sortie donc je ne m&#8217;inquiète pas trop pour cela.</p>
<p>Personnellement, j&#8217;ai installé jolicloud sur une VMware permettant ainsi de faire différents tests sans réellement l&#8217;installer en dur et pouvoir ainsi facilement faire des tests réseaux, sécurité (je vous en parlerai plus tard, après que certaines découvertes soient corrigées) etc. Donc, vu que beaucoup de personnes se demandent comment l&#8217;installer sur une <strong>VMware</strong> et bien je vais vous montrer comment faire (c&#8217;est simple&#8230;). Mais le mieux est tout de même de le tester sur un netbook, afin de voir réellement la qualité de ce dernier comparé aux autres &laquo;&nbsp;Netbook os&nbsp;&raquo;.</p>
<p>Donc pour l&#8217;installer sur une VMware, vous créez tout d&#8217;abord une nouvelle machine avec un <strong>Linux 2.6 lambda</strong>, environ <strong>512Mo de mémoire vive</strong> histoire que cela aille vraiment vite pendant le Boot. Après avoir créé votre machine, vous allez dans les préférences (settings) afin de changer les options de disques durs, vous supprimez l&#8217;ancien que vous avez créé. Enfin, vous en rajoutez un avec l&#8217;option &laquo;&nbsp;<strong>use physical disk</strong>&nbsp;&raquo; et sélectionnez votre <strong>clé USB</strong>, si vous ne savez pas laquelle c&#8217;est, vous avez juste à en sélectionner un puis ensuite regarder la taille du disque. Puis vous refaites un autre disque dur virtuel.</p>
<p>Et voilà, maintenant, vous allez pouvoir booter Jolicloud sur votre clé USB depuis VMware (mais aussi toutes les distributions Linux liveUSB).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/astuces/jolicloud-installation-sur-vmware-et-premieres-impressions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Knock Knock Neo &#8211; Installation de port-knocking sur une BOX</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/knock-knock-neo-installation-de-port-knocking-sur-une-box/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/knock-knock-neo-installation-de-port-knocking-sur-une-box/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 12:30:31 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[attaque]]></category>
		<category><![CDATA[bruteforce]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[knockd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[netfilter]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[port-knocking]]></category>
		<category><![CDATA[protection]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=8</guid>
		<description><![CDATA[Le port-knocking est une technique assez méconnue des administrateurs serveurs, cependant, elle est l&#8217;une des meilleures afin d&#8217;établir des règles dynamiques de Firewall tout en étant extrêmement simple à mettre en place sur un serveur. Cette technique peut aussi servir à exécuter d&#8217;autres commandes et à démarrer des services, sans pour autant avoir un shell [...]]]></description>
			<content:encoded><![CDATA[<p>Le port-knocking est une technique assez méconnue des administrateurs serveurs, cependant, elle est l&#8217;une des meilleures afin d&#8217;établir des règles dynamiques de Firewall tout en étant extrêmement simple à mettre en place sur un serveur. Cette technique peut aussi servir à exécuter d&#8217;autres commandes et à démarrer des services, sans pour autant avoir un shell sous la main. Ce petit article va faire une brève description de ce qu&#8217;est le port-knocking, et ensuite, la mise en place de ce dernier sur une Ubuntu/Debian (la configuration ne change pas, seule l&#8217;installation change selon les distributions.)</p>
<p><strong>1. Port-knockwa ?</strong></p>
<p>Même si ce nom est assez barbare pour un français, son sens est devinable en deux secondes. Il veut littéralement signifier frapper sur les ports (&#8230;pour ouvrir la porte). En deux mots, c&#8217;est comme dans tous les films d&#8217;espionnage amateurs, on toc à la porte selon une certaine séquence afin que la personne étant derrière la porte sache que c&#8217;est vous pour venir l&#8217;ouvrir (voir le film Léon&#8230;).</p>
<p>Cette technique, passée à la moulinette informatique se traduit par la modification des règles de Firewall à la volée, suite à l&#8217;envoi par un client d&#8217;une séquence de paquets SYN sur différents ports de la BOX. Par exemple, la séquence de paquets SYN sur les ports 45324, 15432 et 23942 changera les règles d&#8217;Iptables afin d&#8217;accepter la réception de paquets sur le port 22 provenant de l&#8217;IP source (envoyant les paquets SYN). Nous ferons une autre séquence afin de refermer la porte derrière nous à la fin de notre session SSH.</p>
<p><strong>2. L&#8217;intérêt du port-knocking</strong></p>
<p>L&#8217;intérêt est simplement d&#8217;interagir avec le serveur sans passer par une connexion distante, ainsi, nous pouvons ouvrir un service, changer son état ou modifier les règles de son fonctionnement. Il est principalement utilisé par pour manipuler les Firewalls afin d&#8217;ouvrir des ports prétendus bloqués. Ceci permettant ainsi d&#8217;éviter les attaques sur certains services par des Botnets remuant un peu trop les logs, ou des attaques ciblés contre votre box se faisant à la main.</p>
<p>La chance de tomber par hasard sur la bonne combinaison pour un pirate est extrêmement petite (pour vous faire une petite idée) :</p>
<pre>   * 65535^2 = 4 294 836 225 possibilités
   * 65535^3 = 2.81462092 × 10^14 possibilités
   * 65535^4 = 1.84456182 × 10^19 possibilités
   * etc...</pre>
<p>Autant vous dire que cette protection va limiter grandement le pirate dans ses tentatives d&#8217;attaque tellement les possibilités sont énormes, cependant, il existe quelques faiblesses matérielles et humaines à cette technique.</p>
<p><strong>3. Faiblesses</strong></p>
<p>Il existe deux principales faiblesses à cette technique de port-knocking. Tout d&#8217;abord, la possibilité pour un attaquant d&#8217;effectuer une attaque Man In The Middle (Monkey in the Middle pour les intimes) en local permettant ainsi de récupérer la séquence dans le flot de données en sniffant simplement la connexion.</p>
<p>Une seconde vulnérabilité est plus imputable à l&#8217;humain, ainsi, nous avons pas un random service intégré dans notre cerveau donc souvent, un pirate expérimenté pourra tenter de deviner les numéros de ports employés par l&#8217;administrateur, souvent des multiples ou une séquence facilement mémorisable. (sans parler de l&#8217;administrateur qui laisse par défaut la séquence contenue dans le fichier de configuration après installation ou la lecture d&#8217;un tutoriel&#8230;).</p>
<p>Nous pouvons aussi noter d&#8217;autres faiblesses où le pirate doit avec accès au client exécutant knockd, ainsi, si l&#8217;administrateur ne supprime pas ses logs de sessions sur le terminal, le pirate pourra avoir la suite des ports en faisant un petit <em>$cat .bash_history</em></p>
<p>Après avoir vu les faiblesses, nous allons passer à l&#8217;installation et la configuration du serveur, puis ensuite, l&#8217;utilisation du système de port-knocking avec un client.</p>
<p><strong>4. Installation et configuration</strong></p>
<p>Vu que nous n&#8217;allons pas réinventer la roue, nous allons utiliser un logiciel déjà développé afin de mettre en place la solution de port-knocking, son nom : knockd. L&#8217;installation (sur une Débian) se fait facilement avec un petit :</p>
<pre>   * (# | sudo ) apt-get install knockd</pre>
<p>Cela va installer proprement (et tant mieux&#8230;) le programme. Après, nous allons passer à la configuration de la chose, vous allez voir, c&#8217;est d&#8217;une simplicité détonante. Donc c&#8217;est parti, tapez dans votre shell (je sais, j&#8217;utilise nano et j&#8217;aime ça) :</p>
<pre>   * (# | sudo ) nano /etc/default/knockd</pre>
<p>Hop, là dans ce fichier knockd nous allons configurer le demon afin qu&#8217;il sache sur quelle interface réseau écouter et s&#8217;il doit s&#8217;exécuter au démarrage de la machine. pour ce faire, il suffit simplement de mettre :</p>
<pre>   * START_KNOCKD=1 # Ainsi il démarrera au démarrage de la box
   * KNOCKD_OPTS="-i [votre interface (eth0, eth1 etc.)]"</pre>
<p>(si vous ne savez par votre interface, faites un petit ifconfig et regardez&#8230;) Arrivé à ce point là, nous sommes déjà bien partis, le demon peut fonctionner, reste maintenant à éditer les règles, pour cela, go to :</p>
<pre>   * (# | sudo ) nano /etc/knockd.conf</pre>
<p>Et éditez vos rêgles simplement en faisant :</p>
<pre>   * [Nom de la rêgle]
   * sequence = XXXXX, XXXX, XXXXX [séquence des ports]
   * seq_timeout = 5 [quant-est-ce que la séquence est "finie"]
   * command = /sbin/iptables (+règles) [commande à exec.]
   * tcpflags = syn</pre>
<p>Par défaut, les ports de la séquence sont en TCP, mais on peut s&#8217;amuser pour compliquer encore l&#8217;affaire à alterner TCP et UDP en faisant : XXX:tcp, XXXXX:udp, XXXX:tcp, XXXXX:tcp&#8230; Ainsi, un fichier de configuration bien paramétré, ressemblera à quelque chose (<a title="http://www.felix-aime.fr/projets/blog/knockd.conf" href="http://www.felix-aime.fr/projets/blog/knockd.conf">comme cela &#8211; lien</a>). (n&#8217;oubliez pas de droper les paquets par défaut sur Iptables&#8230; car sinon, cela ne sert à rien&#8230;) Ensuite, nous devons redémarrer knockd afin qu&#8217;il reprenne bien en compte les nouveaux paramètres, pour se faire, une simple commande suffit :</p>
<pre>   * (# | sudo ) /etc/init.d/knockd restart</pre>
<p>Voilà, l&#8217;installation, et la configuration est finie, reste plus qu&#8217;à tester avec un client !</p>
<p><strong>5. Utilisation d&#8217;un client</strong></p>
<p>Il existe des clients pour tous les systèmes d&#8217;exploitation, et cela, c&#8217;est cool ! Ainsi, il suffit simplement d&#8217;exécuter le binaire client knockd comme ceci afin de réaliser le port-knocking :</p>
<pre>   * &gt; knock (ip du serveur) (port):(tcp|udp) (port):(tcp|udp)...</pre>
<p>Vous trouverez les binaires et sources des clients sur le site de knockd : <a title="http://www.zeroflux.org/projects/knock" href="http://www.zeroflux.org/projects/knock">http://www.zeroflux.org/projects/knock</a> (il existe même un client pour Iphone!). Bref, libre à vous ensuite de vous amuser avec knockd, sur différentes box et à partir de différents clients.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/knock-knock-neo-installation-de-port-knocking-sur-une-box/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Make ur home secure web server !</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/make-ur-home-secure-web-server/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/make-ur-home-secure-web-server/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:00:08 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[box]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[personnel]]></category>
		<category><![CDATA[protection]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=23</guid>
		<description><![CDATA[Un ami veut se faire un petit serveur privé chez lui et je lui ai passé quelques astuces afin d&#8217;avoir le moins possible à payer en terme d&#8217;équipement ou même de consommation d&#8217;énergie. De plus quelques astuces en sécurité histoire d&#8217;avoir un serveur personnel pas très cher, mais robuste. Je me souviens d&#8217;ailleurs de mon [...]]]></description>
			<content:encoded><![CDATA[<p>Un ami veut se faire un petit serveur privé chez lui et je lui ai passé quelques astuces afin d&#8217;avoir le moins possible à payer en terme d&#8217;équipement ou même de consommation d&#8217;énergie. De plus quelques astuces en sécurité histoire d&#8217;avoir un serveur personnel pas très cher, mais robuste. Je me souviens d&#8217;ailleurs de mon premier serveur maison, il y a de ça quelques années j&#8217;en avais réalisé un dans une boite en carton d&#8217;écran LCD, ce qui au niveau chaleur n&#8217;était pas trop trop conseillé.</p>
<p><strong>Bref, donc tout d&#8217;abord, quel matériel choisir ?</strong></p>
<p>Là, question coût, nous n&#8217;allons pas acheter quelque chose de très puissant, car il sera principalement réalisé afin de permettre le téléchargement de fichiers (après vous voyez pour la légalité), la mise en place d&#8217;un serveur web voire mail si vous le souhaitez. Donc pour faire &laquo;&nbsp;bien&nbsp;&raquo; à pas cher, vous avez deux choix :</p>
<p><strong>1. Le choix Système-D :</strong> Allez acheter sur un site ex : leboncoin.fr un netbook avec un écran cassé, on en trouve de très bons à pas cher 50 à 80 euros avec 1go de Ram, 900hz, entre 4 et 16go de disque dur etc. Ceci est bien car les personnes vendant ce matériel ne savent pas que ce qui compte dans une grande partie des cas, ce n&#8217;est pas l&#8217;écran, mais bien l&#8217;intérieur de la bête.</p>
<p><strong>2. Le choix résonné :</strong> Si vous avez un peu d&#8217;argent devant vous (environ 200 euros) vous pouvez vous prendre un petit soekris histoire d&#8217;être sûr d&#8217;avoir du bon matos. Il n&#8217;est pas bruyant et consomme rien. Cependant ceux qui sont allergiques aux lignes de commande vont vivre quelques heures de configuration fastidieuses. Ce choix est résonné par rapport à la consommation d&#8217;énergie si votre bébé va tourner 7j/7.</p>
<p>Maintenant que vous avez le matériel, où l&#8217;installer ? Là vous avez plusieurs possibilités et tout dépend là aussi de la chaleur qu&#8217;il dégage. J&#8217;ai fait des tests dans plusieurs endroits aussi atypiques les uns que les autres et ce qui en ressort c&#8217;est qu&#8217;un petit serveur comme vous allez faire n&#8217;a pas besoin d&#8217;une chambre froide afin de fonctionner non-stop. Cependant, j&#8217;ai testé la méthode dans le frigo et cela s&#8217;avère un assez bonne alternative :) (si vous n&#8217;avez pas de légumes/fruits/etc dedans).</p>
<p><strong>Et le web fut !</strong></p>
<p>Pour ce qui est de la connectivité, oubliez le WIFI et préférez le filaire cela permettra d&#8217;avoir moins de problèmes de paramétrage au cas où le serveur redémarre ou si le wifi merdoy. Une chose est sûre, les câbles, malgré ce que l&#8217;on en dit, ont encore de beaux jours devant eux ! Le raccordement à la box fait, sécurisez cette dernière, mettez un mot de passe d&#8217;accès si cela n&#8217;est pas déjà fait. Activez l&#8217;IP forwarding vers l&#8217;adresse IP statique de votre serveur en question à partir de la console d&#8217;administration. Pourquoi mettre un mot de passe ? Tout simplement pour éviter les attaques CSRF, mais aussi (et surtout) éviter que l&#8217;on ait accès à son administration si votre serveur est éteint.</p>
<p>Ceci fait, tous les flux entrants par le(s) port(s) que vous avez désignés vont être aiguillés vers votre serveur (Cool, non ? Non ? Bon d&#8217;accord&#8230;) Maintenant vous n&#8217;avez plus qu&#8217;à installer votre petite solution LAMP sur votre serveur et les différents services que vous voulez. N&#8217;oubliez pas d&#8217;activer les virtual hosts sur Apache si vous avez fait pointer des noms de domaines sur votre BOX.</p>
<p><strong>La sécurité avant tout !</strong></p>
<p>Passons maintenant à la sécurité du serveur, car il faut bien le dire, un serveur non implanté dans une DMZ présente un vrai risque pour la sécurité du réseau et la confidentialité des informations transférées sur ce dernier. Donc il faut absolument le sécuriser de toutes parts. Tout d&#8217;abord, contre le fingerprinting actif et passif. Il faut pour cela changer le TTL de Linux pour faire croire aux différents scanners que c&#8217;est Windows qui est sur la machine (on on change le TTL de 64 en 128) (les scanners ne se basent pas que sur le ttl pour déduire les version des Os, mais c&#8217;est une méthode, et autant la brouiller), on change aussi les différents bandeaux des différentes applications telles que SSH, Apache et autres trucs comme cela. Moins l&#8217;attaquant en sait sur le système visé depuis l&#8217;extérieur mieux c&#8217;est pour vos fesses ! (d&#8217;ailleurs documentez-vous sur ce petit soft bien sympa : <a hreflang="fr" href="http://ippersonality.sourceforge.net/">IP personnality</a>, même s&#8217;il est pour les 2.4, la doc est assez sympa histoire de voir comment cela fonctionne&#8230;). Il y a aussi ce petit <a hreflang="fr" href="http://nmap.org/misc/defeat-nmap-osdetect.html#FF">lien</a> avec quelques logiciels du même type.</p>
<p>Ceci fait, il nous faut changer quelques configurations par défaut, tout d&#8217;abord, SSH. On enlève la possibilité de login en Root à distance sur le système, on change le port par défaut du service histoire de ne pas être attaqué par des Boots où des SK. Ensuite on va configurer un petit utilitaire afin de détecter la moindre tentative manquée de connexion à différents services, cet utilitaire est connu et bien sympa. Surtout si on le couple à un service d&#8217;envoi d&#8217;SMS pour avec un temps de réponse post-attaque rapide. Son nom : fail2ban. Et oui, on ne change pas une équipe qui gagne ! Bon pour la documentation direction <a hreflang="fr" href="http://www.fail2ban.org/wiki/index.php/Main_Page">ICI</a> où tout y est très bien expliqué. Amusez-vous avec IP tables afin de dropper les paquets qui sont méchant, pour cela, il existe des tonnes de ressources sur Internet donc je vous fait confiance.</p>
<p>Vous pouvez aussi envisager une solution de <a href="http://blog.felix-aime.fr/knock-knock-neo-installation-de-port-knocking-sur-une-box/">port knocking</a> afin de gérer les ports dynamiquement, cette solution permet beaucoup de choses, et surtout réduit considérablement les logs de tentatives d&#8217;attaques :)</p>
<p>Il faut aussi créer un utilisateur dans un espace confiné, afin d&#8217;emprisonner le pirate dès l&#8217;obtention d&#8217;un shell d&#8217;attaque sur un processus utilisé par cet utilisateur. La technique s&#8217;appelle le chroot et est difficile à mettre en place si on ne l&#8217;a pas fait trente six mille fois sur différents logiciels (moi aussi j&#8217;ai encore du mal à chrooter). Au programme, récupération des librairies utiles au logiciel, création de l&#8217;espace restreint dans un répertoire à la racine et emprisonnement des processus. Vous pouvez le faire, ou pas. Si vous ne voulez pas passer par cette tâche longue et fastidieuse, vous pouvez désactiver pour les utilisateurs autres que le root les programmes utiles au pirate en tant d&#8217;attaque tels que wget, gcc, python, cURL, vim, nano, pico etc. afin qu&#8217;il ait beaucoup de mal à devenir root sur votre machine (chmod 700). On peut aussi, afin qu&#8217;il ne s&#8217;amuse pas à essayer d&#8217;entrevoir la topologie de notre réseau chmoder les ifconfig, ping etc. Vous pouvez aussi vous amuser avec le petit tool de la NSA dénommé SElinux perrmettant de mettre des droits pour des processus à des fichiers pécis, et cela, un Linux standard ne le fait pas ! :D Cela devient très vite utile en cas d&#8217;attaque. Voir plus d&#8217;infos <a hreflang="fr" href="http://www.nsa.gov/research/selinux/news.shtml">ici</a> ou sur <a hreflang="fr" href="http://www.google.fr/search?q=selinux">Google</a> ;)</p>
<p>Enfin, pour la configuration du serveur (apache, php etc.) désactivez tout ce qui peut permettre l&#8217;identification là aussi des versions utilisés, donc direction tout d&#8217;abord httpd.conf et désactivez les signatures du serveur. Vérifiez que la valeur expose_php dans le php.ini est à off, si elle ne l&#8217;est pas, mettez-là ! En ce qui concerne aussi le php.ini, mettez le safe_mod sur on, les magic_quotes aussi, modifier l&#8217;open base dir et mettez allow_url_fopen sur Off. Désactivez de plus certaines fonctions qui sont pas très très sympa&#8230; Ne laissez jamais MySQL s&#8217;exécuter avec l&#8217;utilisateur root de ce dernier, créez des utilisateurs avec des droits restreint afin de ne pas aller vers la catastrophe. Par ailleurs, mettez en place un petit IDS codé en PHP sur votre site dynamique afin de voir s&#8217;il est la cible d&#8217;attaques&#8230; (voir <a hreflang="fr" href="http://php-ids.org/">PHPIDS</a>, même si à ma grande surprise, il ne contre pas certaines attaques que mon IDS php à moi détecte&#8230; :D)</p>
<p><strong>Et maintenant ?</strong></p>
<p>Et bien, si vous avez tout fait et que vous arrivez encore à lire ces lignes, je dois dire bravo ! Il ne vous reste plus qu&#8217;à veiller sur les mises à jour de votre système, de créer un Cron qui exportera vos logs (mysql/apache/acces/ssh) toutes les semaines vers une adresse mail mise en place pour l&#8217;occasion afin d&#8217;entrevoir des tentatives d&#8217;attaque qui seraient passées entre les mailles du filet. On peut aussi s&#8217;amuser à envoyer des mails ou des SMS, mais ceci est une autre histoire. Veillez à faire un rkhunter avec Cron quelques fois afin de voir s&#8217;il n&#8217;y a pas de rootkits sur le système et&#8230; voilà !</p>
<p>Désolé si cet article manque de références ou n&#8217;est pas complet, j&#8217;ai écrit cela &#8211; un peu &#8211; à l&#8217;arrache aujourd&#8217;hui et je ne vais pas aller chercher des références si j&#8217;en n&#8217;ai pas pris pour le réaliser. La prochaine fois, j&#8217;essayerai de faire quelque chose de plus &laquo;&nbsp;pro&nbsp;&raquo;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/make-ur-home-secure-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter et sécurité&#8230; Arf.</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/twitter-et-securite-arf/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/twitter-et-securite-arf/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 07:14:52 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[attaques]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[protection]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=34</guid>
		<description><![CDATA[Depuis quelques jours, petit buzz sur la toile française. Nous pouvons changer le statut Twitter d&#8217;une personne visitant notre site Internet grâce au chargement d&#8217;une URL. Astuce présentée -et non découverte- par le blogueur Korben et reprise un peu partout, là, là ou même là.
C&#8217;est la deuxième fois qu&#8217;un problème de sécurité est présenté sur [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques jours, petit buzz sur la toile française. Nous pouvons changer le statut <a hreflang="fr" href="http://www.twitter.com/">Twitter</a> d&#8217;une personne visitant notre site Internet grâce au chargement d&#8217;une URL. Astuce présentée -et non découverte- par le blogueur <a hreflang="fr" href="http://www.korben.info/petit-cours-de-twitt-jacking.html">Korben</a> et reprise un peu partout, <a hreflang="fr" href="http://www.lepost.fr/article/2009/01/30/1406101_facile-de-se-faire-squater-son-compte-twitter.html">là</a>, <a hreflang="fr" href="http://netreader.vendredi.info/+-Netosphere-+.html">là</a> ou même <a hreflang="fr" href="http://search.twitter.com/search?q=twitt-jacking">là</a>.</p>
<p>C&#8217;est la deuxième fois qu&#8217;un problème de sécurité est présenté sur le service Twitter, la première était le piratage de quelques gros comptes suite à une attaque par force brute d&#8217;un compte d&#8217;administrateur.</p>
<p>Beaucoup de personnes ont donc parlées de cette possibilité de changement de statut par un site tiers, mais personne n&#8217;a encore solutionné le problème. Donc je vais vous livrer quelques astuces pour sécuriser son site internet contre ces attaques mais aussi, vous sécuriser vous. Car il est en partie possible de se sécuriser contre ces attaques connues appelées CSRF.</p>
<p><strong>Attaque ? Où, où ça ?</strong></p>
<p>Tout d&#8217;abord étudions l&#8217;attaque. En temps normal, la personne étant loggée envoie son statut par l&#8217;intermédiaire d&#8217;une requête POST et Twitter le met à jour. Cependant, les requêtes POST et GET peuvent se confondre donc nous pouvons charger dans l&#8217;URL les données que nous voulons envoyer par l&#8217;intermédiaire de la variables statut. Ex : http://twitter.com/home?status=<a title="le statut à mettre" href="http://felix-aime.fr/dotclear/le%20statut%20%C3%A0%20mettre">le statut à mettre</a>.</p>
<p>A partir de là, il devient facile pour une personne de mettre un script dans son site Internet faisant le travail et changeant le statut de n&#8217;importe qui loggé sur twitter et visitant le site. <a hreflang="fr" href="http://www.korben.info/petit-cours-de-twitt-jacking.html">Voir le PoC (proof of concept) ici</a>.</p>
<p><strong>Bon, ceci dit, comment se protéger ?</strong></p>
<p>Tout d&#8217;abord, le site Internet doit être protégé au niveau du code. Ainsi, on n&#8217;accepte pas n&#8217;importe quelle variable envoyée depuis n&#8217;importe quel site Internet. Pour ce faire, une technique assez simple est de mettre un champ en hidden avec une valeur aléatoire envoyée en même temps que notre valeur (dans le cas de Twitter le statut.). Ainsi, grâce aux sessions, le site Internet garde en mémoire cette valeur. Lorsque la page reçoit le statut, la valeur cachée est comparée à celle en mémoire. S&#8217;il y en a pas où si cela n&#8217;est pas la bonne, en refuse le changement de statut. (encore dans le cadre de Twitter.)</p>
<p>Je vous ai fait un petit script que l&#8217;on peut tester et <a href="http://www.felix-aime.fr/projets/securite/twitter-csrf/csrf_attaque1.php">disponible ICI</a>.</p>
<p>Cette valeur doit réellement être aléatoire et être <em>hashée</em> de préférence en sha1 pour (encore) plus de sécurité. En fait, tout dépend de la longueur de la chaine et du nombre de possibilités pour chaque case. Si cette dernière est élevée (comme dans mon exemple, 32 cases) il n&#8217;est pas réellement nécessaire de prévoir un <em>hashage</em> de cette dernière.</p>
<p>De plus l&#8217;utilisateur, lui, ne peut jamais être protégé. Ainsi, même en désactivant le Javascript sur son navigateur, en empêchant l&#8217;affichage des iframes, cela ne fera que stopper les attaques CSRF complexes, mais pas ce genre de petites attaques, car l&#8217;URL peut être appelée depuis n&#8217;importe quel code que cela soit une iframe, une image, une feuille de style etc.</p>
<p>Développeurs, développeuses, je vous encourage à patcher tous les champs de vos différents formulaires car cette faille est très &#8211; trop ? &#8211; répendue ! (Administrations de routeurs, de box, réseaux sociaux, sites bancaires (?), sites d&#8217;ecommerce, services de blogs etc.). Bref, maintenant la balle est dans votre camp !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/twitter-et-securite-arf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
