Making network protocols go crazy - Mot-clé - Perl2017-01-17T17:46:17+01:00grurn:md5:823289cecb88b10a72ab37a35928e25dDotclearSinFP3 enfin publiéurn:md5:876e265f59354703e33768dae706071c2012-09-24T21:47:00+02:002013-02-14T11:19:34+01:00grOutilconférenceekopartyEuSecWestPerlSinFP <p>SinFP3 est maintenant publié, ainsi que les slides de la présentation de l'outil faite à ekoparty et EuSecWest.</p>
<p>Ca se passe ici <a href="http://www.networecon.com/publications/2012/09/24/Conferences-EuSecWest-and-ekoparty-SinFP3-More-Than-A-Complete-Framework-for-Operating-System-Fingerprinting/" hreflang="en">EuSecWest and ekoparty - SinFP3 network reconnaissance framework</a></p>SinFP version 3.00 : bêta testeurs recherchésurn:md5:62e46318544358b8b6d97d361e2794a32012-04-14T12:44:00+02:002012-09-12T15:45:07+02:00grOutilPerlSinFP <p>SinFP<em> version 3.00 est en cours de finalisation. </em>GomoR'' recherche des bêta testeurs pour rapporter d'éventuels bugs ou problèmes. Si vous voulez certaines fonctionnalités, c'est aussi maintenant qu'il faut lui demander ;)</p>
<p><em>SinFP</em>, pour les incultes, c'est ici : <a href="http://www.gomor.org/sinfp" hreflang="en" title="SinFP">http://www.gomor.org/sinfp</a> .</p>
<p>Fonctionnalités actuelles pour la version 3.00 :</p>
<ul>
<li>meilleur algorithme de recherche de correspondences</li>
<li>refonte du moteur de prise d'empreinte en mode passif</li>
<li>une architecture à base de plugins</li>
</ul>
<p>Les volontaires peuvent contacter <em>GomoR</em> (<strong>GomoR(at)gomor.org</strong>).</p>
<p>Exemples d'utilisations :</p>
<pre>
# IPv4 active fingerprinting
$ sinfp3.pl -target gomor.org -port 80
# IPv6 active fingerprinting
$ sinfp3.pl -6 -target gomor.org -port 80
# IPv4 active fingerprinting with a threshold for matching score
$ sinfp3.pl -target gomor.org -port 80 -output Console -output-arg threshold=95
# Export of SinFP's database active signatures
$ sinfp3.pl -output Export -input Null -search Null -mode Null
# ARP discover and fingerprint, output as XML
$ sinfp3.pl -input ArpDiscover -input-arg port=22,80,139,445 -mode Active -outpu
t XML
# Connect mode OS fingerprinting
$ sinfp3.pl -input Connect -mode Active -output Console -input-arg ip=192.168.10
0.12 -input-arg port=80
# Output in Ubigraph after scanning a subnet
$ sinfp3.pl -input Subnet -input-arg 172.16.1.0/24 -port 80,139,22 -mode Active
-output Ubigraph
</pre>hubiC, maintenant vraiment ubiquitousurn:md5:d6ecd1c0b84490c2c50573ddb58901ec2012-01-29T18:02:00+01:002013-06-12T07:28:33+02:00grReversehubicnewsPerlprotocolereverse <p>Votre serviteur s'est intéressé au <em>cloud storage</em> tel qu'implémenté par <a href="http://www.ovh.fr/hubiC/" hreflang="fr" title="hubiC">hubiC</a>. Malheureusement, <a href="http://ovh.com/" hreflang="fr" title="OVH">OVH</a> ne fournit pas encore de binaire pour <em>Linux</em>. Eh oui, <em>OVH</em> a choisi de rendre disponible son espace de stockage uniquement via un client lourd. J'ai décidé d'analyser ce programme afin rendre ce <em>cloud storage</em> interopérable avec mon système (c'est légal).</p>
<p>Tout d'abord, certaines personnes arrivent à se connecter depuis Linux. Ces personnes possédaient un compte <em>CloudNAS</em>, le prédécesseur d<em>'hubiC</em>. Pour ces personnes, pas de problèmes. Pour les nouveaux arrivants (comme moi), le sytème de gestion des comptes d<em>'OVH</em> a changé. Un <em>WAS</em> (<em>Web Application Service</em>) est utilisé pour gérer les crédences d<em>'hubiC</em>. En analysant le programme <em>Windows</em>, je me suis aperçu que le client <em>hubiC</em> effectue 3 requêtes avant d'obtenir les informations qui serviront ensuite à la connexion <em>WebDAV</em>. Pour pouvoir se connecter, il est nécessaire d'avoir :</p>
<ul>
<li>l'URL du <em>WebDAV</em></li>
<li>le login du <em>WebDAV</em></li>
<li>le mot de passe du <em>WebDAV</em></li>
</ul>
<p>Les 3 requêtes sus-mentionnées sont destinées au serveur <em>ws.ovh.com</em> et permettent d'obtenir ces trois informations indispensables à la connexion <em>WebDAV</em>. Sans plus tarder, voici ces requêtes (en mode <em>raw</em>), toutes à destination de <em>ws.ovh.com</em> en <em>HTTPS</em> :</p>
<p>Requête POST nasLogin :</p>
<pre>
'POST /cloudnas/r0/ws.dispatcher/nasLogin HTTP/1.1'."\r\n".
'Content-Type: application/x-www-form-urlencoded'."\r\n".
'User-Agent: hubiC/1.0.9 (Windows NT 6.1; fr_FR)'."\r\n".
'Content-Length: 126'."\r\n".
'Connection: Keep-Alive'."\r\n".
'Accept-Encoding: gzip'."\r\n".
'Accept-Language: fr-FR,en,*'."\r\n".
'Host: ws.ovh.com'."\r\n".
''."\r\n".
'session=&params=%7B%20%22email%22%20%3A%20%22<login>%22%2C%20%22password%2
2%20%3A%20%22<password>%22%20%7D'."\r\n".
"\r\n";
</pre>
<p>Requête POST getNas :</p>
<pre>
'POST /cloudnas/r0/ws.dispatcher/getNas HTTP/1.1'."\r\n".
'Content-Type: application/x-www-form-urlencoded'."\r\n".
'User-Agent: hubiC/1.0.9 (Windows NT 6.1; fr_FR)'."\r\n".
'Content-Length: 54'."\r\n".
'Connection: Keep-Alive'."\r\n".
'Accept-Encoding:gzip'."\r\n".
'Accept-Language: fr-FR,en,*'."\r\n".
'Host: ws.ovh.com'."\r\n".
''."\r\n".
'session=<id>'."\r\n".
"\r\n";
</pre>
<p>Requête POST getCredentials :</p>
<pre>
'POST /cloudnas/r0/ws.dispatcher/getCredentials HTTP/1.1'."\r\n".
'Content-Type: application/x-www-form-urlencoded'."\r\n".
'User-Agent: hubiC/1.0.9 (Windows NT 6.1; fr_FR)'."\r\n".
'Content-Length: 54'."\r\n".
'Connection: Keep-Alive'."\r\n".
'Accept-Encoding: gzip'."\r\n".
'Accept-Language: fr-FR,en,*'."\r\n".
'Host: ws.ovh.com'."\r\n".
''."\r\n".
'session=<id>'."\r\n".
"\r\n";
</pre>
<p>Et voilà. Ca va renvoyer les trois précieuses informations.</p>
<p>Certains pourraient me demander : mais comment avez-vous fait pour avoir ces informations ? Le serveur d<em>'hubiC</em> est en <em>HTTPS</em> ; on ne peut pas écouter la conversation entre le client et le serveur. Effectivement, sauf que le client tourne sur mon système. Rien ne m'empêche de brancher un débuggeur sur mon programme sur ma machine. En deux mots : <a href="http://www.ollydbg.de/version2.html" hreflang="en" title="OllyDbg">OllyDbg</a>, <em>SSL_write</em>.</p>
<p>Bon, comme j'aime aussi le <em>Perl</em>, je fournis le programme qui permet de récupérer les précieux sésames :
<a href="http://www.protocol-hacking.org/public/hubic.pl" hreflang="en" title="hubic.pl">http://www.protocol-hacking.org/public/hubic.pl</a></p>
<pre>
% ./hubic.pl
Usage: ./hubic.pl -l login [-d] [-h]
% ./hubic.pl -l <mon_login_genre_une_adresse_email>
Password:
URL: https://cloudnas1.ovh.com/XXXXXXXXXX/
Login: cloudnas
Password: YYYYYYYYYY
mount -t davfs https://cloudnas1.ovh.com/XXXXXXXXXX/ /mnt
</pre>
<p>Maintenant, <em>hubiC</em> fonctionne sur tous les systèmes supportant un client <em>WebDAV</em>.</p>
<p><strong>UPDATE</strong> : la presse en parle :</p>
<ul>
<li><a href="http://www.pcinpact.com/news/68701-ovh-hubic-webdav-perl-script.htm" hreflang="fr" title="PCinpact">PCinpact</a></li>
<li><a href="http://www.journaldulapin.com/2012/02/02/utiliser-lhubic-dovh-avec-un-mac/" hreflang="fr" title="Journal du lapin">Journal du lapin</a></li>
<li><a href="http://www.presence-pc.com/actualite/hubic-mac-linux-46566/" hreflang="fr" title="Presence-PC">Presence-PC</a></li>
<li><a href="http://www.macworld.fr/2012/02/03/mac/hubic-accessible-directement-depuis-finder/524459/" hreflang="fr" title="Mac world">Mac world</a></li>
</ul>
<p><strong>UPDATE</strong> : autres versions du programme :</p>
<ul>
<li><a href="http://www.protocol-hacking.org/public/Hubic.py" hreflang="en" title="En Python, par Nicolas P">Hubic.py</a></li>
<li><a href="http://www.protocol-hacking.org/public/getHubicWebdavInfos.ps1" hreflang="en" title="En PowerShell, par Stephane OLIVIER">getHubicWebdavInfos.ps1</a></li>
</ul>http://www.protocol-hacking.org/post/2012/01/29/Hubic%2C-maintenant-vraiment-ubiquitous#comment-formhttp://www.protocol-hacking.org/feed/atom/comments/26Vive les fêtesurn:md5:ffc8733940938c09966f7595bc1de4232011-01-04T17:05:00+01:002012-04-05T08:33:43+02:00grOutilPerlSinFP <p>Pour vous souhaiter la bonne année, et un joyeux Noyel, dans le désordre, voici une nouvelle version du "long awaited" SinFP.</p>
<p>Plus d'info ici : <a href="http://www.gomor.org/sinfp" hreflang="en">http://www.gomor.org/sinfp</a></p>
<p>Goulag, je ne me suis toujours pas occupé de ton cas ;)</p>Programmez votre Window Manager en Perl. Oui, je suis fou.urn:md5:cf06bf6952b0e279b646f88bb79022962008-12-20T14:21:00+01:002012-08-09T13:22:30+02:00grProgrammationbindinglibixpPerlWMwmii <p>Cédant à la pression de <a href="http://blog.6dev.net/" hreflang="en">sbz</a>, je vais vous parler d'un Window Manager (WM) qu'il est bien. Je fais également fi de ma ligne éditoriale habituelle (on reste tout de même dans le registre de la folie), étant donné que cela n'a pas grand chose à voir avec le networking.</p>
<p>Ce WM n'est autre que <a href="http://www.suckless.org/wmii/" hreflang="en">wmii</a>. Il est basé sur la bibliothèque <a href="http://www.suckless.org/libs/libixp.html" hreflang="en">libixp</a>, qui elle-même est grandement inspirée de la bibliothèque <a href="http://cm.bell-labs.com/plan9" hreflang="en">Plan 9</a>. Ce WM est "programmable" et "tiled".</p>
<p>Le "programmable" signifie qu'on personnalise le WM en écrivant des lignes de code, dans n'importe quel langage implémentant la bibliothèque libixp. Le "tiled" signifie simplement que chaque fenêtre ouverte prendra le maximum de place de la root Window de votre X display.</p>
<p>Ce WM était "programmable" dans presque tous les langages. Je dis bien presque, car seul un petit village gaulois résistait encore. Mais cette fois, il fut vaincu. Le village <a href="http://search.cpan.org/" hreflang="en">CPAN</a> fut ainsi envahi par la libixp. J'ai écris le <a href="http://search.cpan.org/~gomor/Lib-IXP/" hreflang="en">binding Perl</a> pour la bibliothèque libixp afin de personnaliser mon WM du moment en écrivant des lignes de Perl. Je vous laisse admirer le <a href="http://search.cpan.org/src/GOMOR/Lib-IXP-0.10/examples/perlwmii.pl" hreflang="en">travail</a>.</p>
<p>Oui, je suis fou.</p>Voilà. Injection de packets 802.11 en Perl.urn:md5:3cb0eae1676c47fefed67f61f32347402008-11-09T12:44:00+01:002012-08-09T13:21:15+02:00grProgrammation802.11bindingPerlWi-Fi <p>Il existe depuis près de 2 ans un module Perl[1] pour expédier des packets 802.11 dans les airs. Malheureusement, ce module écrit à l'origine par David Leadbeater est maintenant obsolète par rapport à l'API actuelle de Lorcon[2].</p>
<p>Alors je contacte l'auteur du module, et lui demande si il souhaite garder l'ownership du module, lui disant que ça me plairait bien de reprendre le lead sur ce projet. En effet, j'avais déjà écrit la version 0.02 du module, et n'attendais plus que le feu vert. L'auteur accepte avec joie, n'ayant plus d'intérêt pour l'injection 802.11 pour le moment.</p>
<p>So far, so good, la version actualisée supportant plus de drivers Wi-Fi et fonctionnant avec la dernière version SVN (revision 163)[3] est maintenant dispo sur CPAN[4].</p>
<p>Maintenant un exemple, pour vous montrer a quel point c'est facile à utiliser :</p>
<pre>
use Net::Lorcon qw(:all);
# Injection pour ma carte Intel 3945. Son device est eth1, et le driver requit est iwlwifi
my $tx = Net::Lorcon->new("eth1", "iwlwifi");
$tx->open or die("Impossible d'ouvrir l'interface");
$tx->setfunctionalmode(1);
# Beacon vers le point d'accès ayant pour SSID "Net::Lorcon"
my $packet = "\x80\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x02\x02\xe2\xc4\xef\x00\x02\x
02\xe2\xc4\xef\xd0\xfe\x37\xe0\xae\x0c\x00\x00\x00\x00\x64\x00\x21\x08\x00\x0b\x4e\x65\x
74\x3a\x3a\x4c\x6f\x72\x63\x6f\x6e\x01\x08\x82\x84\x8b\x96\x0c\x12\x18\x24\x03\x01\x0d\x
05\x04\x00\x01\x00\x00\x2a\x01\x00\x32\x04\x30\x48\x60\x6c";
# Et voilà, un packet dans les airs.
$tx->txpacket($packet);
</pre>
<p>Bon. Reste plus qu'à ajouter le support injection Wi-Fi dans Net::Write[5].</p>
<p>[1] <a href="http://search.cpan.org/~dgl/Net-Lorcon-0.01/" hreflang="en">http://search.cpan.org/~dgl/Net-Lorcon-0.01/</a></p>
<p>[2] <a href="http://802.11ninja.net/lorcon" hreflang="en">http://802.11ninja.net/lorcon</a></p>
<p>[3] "svn co http://802.11ninja.net/svn/lorcon/trunk/"</p>
<p>[4] <a href="http://search.cpan.org/~gomor/Net-Lorcon/" hreflang="en">http://search.cpan.org/~gomor/Net-Lorcon/</a></p>
<p>[5] <a href="http://search.cpan.org/~gomor/Net-Write/" hreflang="en">http://search.cpan.org/~gomor/Net-Write/</a></p>
<p><strong>UPDATE :</strong> mon module compile avec la version suivante du SVN de lorcon :
svn co http://802.11ninja.net/svn/lorcon/branch/lorcon-old</p>
<p>Pour une version plus récente de lorcon, j'ai un peu de boulot ^^</p>