Partager des fichiers et envoyer des mails sans être espionné, c’est bien.
Héberger votre propre serveur de voix sur IP (VoIP) c’est mieux ! Adieu Skype et consorts !
Vous voulez voir la bouille de votre fille, les boutons de vos potes ou les barbes des hackers de votre équipe en temps réel rien qu’avec un navigateur Internet récent (testé sous Chrome) ? Vous êtes au bon endroit !
Introduction
Après quelques recherches sur Internet, j’ai trouvé un logiciel open source de voix sur IP en peer to peer. (telepresence)
Ce logiciel permet de faire simplement des vidéoconférences sécurisées et est censé permettre le partage de documents (je n’ai pas réussi à faire fonctionner le partage de documents…)
Vous pouvez également sécuriser le canal de transmission avec SSL, mais je n’aborderai ici que l’installation d’un serveur SIP basique.
La documentation de l’outil est bien faite : http://conf-call.org/technical-guide.pdf?svn=2
Installer les outils nécessaires
Avant tout, nous devons installer de quoi récupérer du code source et le compiler.
sudo apt-get update sudo apt-get install git subversion autoconf libtool pkg-config cmake
Nous avons maintenant un environnement complet qui va nous permettre de compiler des drivers et autres outils.
Installer les drivers
Afin d’utiliser n’importe quel navigateur Internet récent comme client de vidéoconférence, il faut installer la librairie libsrtp.
Attention : La version disponible dans le gestionnaire de paquets ne doit pas être utilisée, la version de développement est nécessaire !
Pour toute la suite, nous téléchargerons les sources dans le dossier /opt :
cd /opt
Récupérons, configurons, compilons et installons libsrtp :
sudo git clone https://github.com/cisco/libsrtp/ cd libsrtp sudo CFLAGS="-fPIC" ./configure --enable-pic sudo make sudo make runtest sudo make install
Vous pouvez aussi obtenir un meilleur son en installant OpenAL, qui n’est malheureusement pas disponible via le gestionnaire de paquets :
cd /opt sudo wget http://kcat.strangesoft.net/openal-releases/openal-soft-1.15.1.tar.bz2 sudo tar -xvjf openal-soft-1.15.1.tar.bz2 cd openal-soft-1.15.1/build sudo cmake . sudo make sudo make install
Le reste des drivers et autres librairies nécessaires peuvent être installés grâce au gestionnaire de paquets officiel (pourquoi se compliquer la vie ? ) :
sudo apt-get install openssl speex yasm vpx-tools libvpx-dev libx264-dev libfreetype6-dev libreoffice libreoffice-dev
Installer FFMpeg
L’utilitaire bien connu de réencodage vidéo FFMpeg est utilisé par open telepresence. Encore une fois, la version fournie par le gestionnaire de paquets ne convient pas, nous devons récupérer les sources.
cd /opt sudo git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg
Des modifications majeures ont été apportées à FFMpeg avec la version 2, nous devons utiliser la version n1.2 :
sudo git checkout n1.2
Si, comme moi, vous avez voulu tenter avec la dernière version de FFMpeg (on ne se refait pas), vous devrez nettoyer vos sources avant de chercher à compiler la bonne version de FFMpeg :
sudo make distclean
Note : En règle générale, si vous avez des erreurs de compilation avec un code source fraîchement récupéré, un distclean peut régler le problème.
Il nous reste à configurer (avec tout un tas d’options récupérées de la documentation officielle), compiler et installer :
sudo ./configure --extra-cflags="-fPIC" --extra-ldflags="-lpthread" --enable-pic --enable-memalign-hack --enable-pthreads --enable-shared --disable-static --disable-network --enable-pthreads --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe --enable-gpl --disable-debug --enable-libfreetype --enable-libx264 sudo make sudo make install
Entre chaque commande, vous avez le temps de vous faire un petit café 🙂
Lier le tout avec Doubango
Doubango doit être compilé sur le système où il est installé, pour lier tous les drivers disponibles.
cd /opt sudo svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango cd doubango sudo ./autogen.sh sudo ./configure --with-speexdsp --with-ffmpeg sudo make sudo make install
Je ne sais pas pourquoi, mais, pour moi, installer doubango me désinstalle les librairies de ffmpeg. Il me faut donc réinstaller ffmpeg…
cd /opt/ffmpeg sudo make install
Si quelqu’un a une meilleure solution au problème, je suis preneur…
Enfin, installer telepresence
Note : Si vous êtes sur un système 32 bits, tout devrait bien aller avec les sources officielles. J’ai eu quelques soucis pour obtenir la vidéo, je documenterai ici une modification à appliquer dans les sources avant de compiler.
Commençons par récupérer les sources :
cd /opt sudo svn checkout https://telepresence.googlecode.com/svn/trunk/ telepresence cd telepresence
Continuons avec un petit coup de configuration automatique :
sudo ./autogen.sh sudo ./configure
On peut ensuite compiler et installer :
sudo make sudo make install
Configuration de telepresence
Un fichier de configuration se trouve dans le dossier /usr/local/sbin, aux côtés de telepresence. Par défaut, le serveur cherche le fichier de configuration dans le dossier courant. Il faut bien penser à se déplacer dans /usr/local/sbin avant de le lancer.
Ouvrons le fichier /usr/local/sbin/telepresence.cfg pour configurer le serveur :
accept-sip-reg = yes ... codecs = pcma;pcmu;vp8;h264-bp;h264-mp ... # my first test bridge [bridge] # The id is mandatory. The SIP clients will call "sip:10060@domain" to connect to this bridge. id=10060 # The pin-code to protect the bridge. pin-code=1234 # my second test bridge [bridge] id=10061 pin-code=0000
Bien sûr, vous pouvez configurer les « bridges » que vous voulez… Mais qu’est-ce qu’un « bridge » ?
Un « pont » en anglais (‘Merica !) sert à configurer une salle de conférence virtuelle. Vos amis qui se connecteront à une même salle pourront communiquer.
Accept-sip-reg devrait permettre à n’importe qui de se créer sa propre salle virtuelle. Il n’est alors plus nécessaire de les configurer dans le fichier de configuration.
Il ne reste qu’à démarrer le serveur :
cd /usr/local/sbin sudo ./telepresence
Problèmes rencontrés
Value 4611686018427387904.000000 for parameter ‘sws_flags’ out of range
Si comme moi, vous obtenez ce type d’erreur lorsque vous entamez une conversation vidéo, j’ai une bonne nouvelle :
[swscaler @ 0xabaa29bc] Value 4611686018427387904.000000 for parameter 'sws_flags' out of range [0 - 4.29497e+09] Error initializing filter 'scale' with args 'w=640:h=360'
J’ai la solution ! 🙂
Ce problème ne devrait apparaître que sur les systèmes 64 bits. En effet, « 4.29497e+09 » est l’entier non signé maximum sur les systèmes 32 bits. Or, « 4611686018427387904 » est l’entier signé maximum sur les systèmes 64 bits.
Une petite modification de code source sera nécessaire. Ouvrez le fichier /opt/telepresence/source/filter/OTOverlay.cc et modifiez le code autour de la ligne 168 :
if(nInWidth != nOutWidth || nInHeight != nOutHeight || strFilterDesc.empty())
{
tsk_istr_t iH, iW;
tsk_itoa(nOutWidth, &iW); // "-1" to keep aspect ratio
tsk_itoa(nOutHeight, &iH);
strFilterDesc = "scale=w=" + std::string(iW) + ":h=" + std::string(iH) + ":flags=2" + (strFilterDesc.empty() ? "" : (", " + strFilterDesc));
}
En spécifiant le « drapeau » (flag), on n’utilise plus la valeur par défaut qui fait tout planter et ça fonctionne bien !
Après avoir modifié les sources, il faut recompiler et réinstaller telepresence :
cd /opt/telepresence sudo make sudo make install
No codec matched
Si (toujours comme moi…) vous avez une erreur du type « No codec matched », ça veut tout simplement dire que vous avez mal installé doubango ou que vous n’avez pas installé le codec utilisé par votre client SIP.
Dans mon cas, je n’avais pas installé le codec libvpx permettant de supporter le conteneur vidéo *.webm utilisé par les clients SIP sous Chrome et Firefox.
Après avoir installé un codec, il faut recompiler doubango et réinstaller ffmpeg s’il est supprimé lors de l’installation de doubango…
# Vous installez le codec qui va bien selon la documentation officielle, puis exécutez ces lignes pour reconstruire doubango et ffmpeg cd /opt/doubango sudo ./autogen.sh sudo ./configure --with-speexdsp --with-ffmpeg sudo make sudo make install cd /opt/ffmpeg sudo make install
Il n’est pas nécessaire de reconstruire telepresence car il utilise les librairies partagées par doubango.
Se connecter avec un simple navigateur
Je n’ai testé qu’avec Chrome, je ne garantis pas que ça fonctionne avec un autre navigateur !
Le client Internet fourni par l’équipe du logiciel fonctionne à merveille. Connectons-nous simplement sur son site : http://conf-call.org/
Il faut commencer par paramétrer le client dans l’onglet « settings ».
Chaque champ contient des valeurs par défaut pour vous aider à saisir ce qu’il faut. Vous ne devriez pas avoir de soucis.
N’oubliez pas de cliquer sur « Save » avant de revenir à l’écran de connexion où vous entrerez l’identifiant de votre salle virtuelle et son mot de passe, si nécessaire.
Un petit clickou sur « join » et le tour est joué !
Vous pouvez maintenant inviter vos amis et discuter un peu !
Vous pourrez remarquer qu’avec ce client, la personne qui parle apparaît au centre de l’écran et les participants apparaissent en bas.
Un autre client : Jitsi
Vous pouvez également utiliser d’autres clients SIP pour discuter. Par exemple, le client gratuit jitsi.
La plupart des clients SIP ne supportent pas les mots de passe pour les salles virtuelles. Vous devrez donc supprimer (ou commenter) le code PIN de votre salle virtuelle dans votre fichier de configuration avant de redémarrer telepresence.
Commençons par ouvrir Jitsi et annuler lorsqu’il nous demande les identifiants pour nos comptes.
Un tour vers « Fichier > Ajouter un nouveau compte » nous permet de configurer ce que l’on veut.
Sélectionnons le protocole SIP avant de cliquer sur « Avancé ».
Dans le premier onglet, il faut saisir son nom d’utilisateur privé, son domaine, ainsi que son mot de passe et son nom affiché. Il n’y a pas besoin de mot de passe avec notre configuration par défaut.
Allons maintenant dans l’onglet « Connexion ».
Le plus important est de décocher la case « Configuration automatique du proxy », de sélectionner « UDP » et de configurer votre serveur (utilisez l’adresse IP si vous ne disposez pas d’un nom de domaine public) avec le port 20060.
Cliquons ensuite sur « Suivant » puis « S’identifier ». Vous devriez apparaître connecté.
Appelez ensuite la salle virtuelle : « sip:10060@homeserver » pour discuter avec vos amis !
Pour aller plus loin
Vous pouvez suivre la documentation officielle pour configurer la couche de transport sécurisé (TLS) de votre serveur et ainsi chiffrer vos communications. C’est bien documenté et assez de personnes se sont cassé les dents pour que vous trouviez la réponse à vos questions sur le groupe Google officiel : https://groups.google.com/forum/#!forum/opentelepresence
Je n’ai pas été en mesure d’utiliser la fonctionnalité de partage de présentation (PowerPoint, dans mon cas). J’ai peut-être manqué quelque chose, mais je ne voulais pas me prendre la tête avec ça, vu que le but principal était d’avoir un outil de voix sur IP fonctionnel, indépendant, léger et gratuit. 😉
Conclusion
Je vous ai bien dégrossi le travail, mais croyez moi, ça a été bien laborieux pour installer cet outil et le faire marcher (au moins pour le son et la vidéo sous Chrome). Je n’ai pas installé tout ce qui était conseillé dans la documentation technique. Peut-être que si l’on installe tout, la solution fonctionne mieux…
Dans tous les cas, pour faire de la voix (et de la vidéo) sur IP et pouvoir organiser des vidéoconférences simplement, cet outil est plutôt bien fait, simple à installer et à configurer (si quelqu’un s’est déjà cassé les dents sur les problèmes). Il met à la portée de tous le contrôle de ses communications, ce qui n’est plus un luxe avec toutes les affaires d’espionnage qui courent… Il remplacera à merveille Skype ou un téléphone, le tout pour pas un rond !
Open telepresence n’est pas exempt de bugs mais pour une version beta, on peut bien lui pardonner 🙂
C’est simple (quand ça marche) et convivial (une fois installé), que demande le peuple ?
Parce que je n’ai pas la science infuse : sources
Eh! Pour le coup, je n’ai pu me référer qu’au site officiel, je n’ai pu trouver d’aide nulle part ailleurs…
salut, pour commencer désolé de poster dans cet articel mais ne connaissant pas wordpress, si je postait dans lsujet original je n’était pas sur que tu appercoives ce qui suit. ( et je ne volais pas t’envoyer de mais dans l’hypothèse ou cela servirait à d’autre personnes )
concernant https://piratercommeunnul.wordpress.com/2013/01/06/contourner-un-ids-comme-un-null/
donc si j’ai bien compris le payload ( on appelera comme cela la partie éxécutée sur la victime ), le seul truc qui est détecté est : metsrv.dll qui est encoyé.
ensuite le trafic est chiffré en aes ( ca pas sur, juste d’apreès metasploit-framework/lib/msf/core/handler/reverse_tcp.rb et des sessions wireshark qui ne montrent qu’un traffic chiffré ).
premièrement le payload reverse_tcp_rc4 ne doit-il pas justement palié à ce problème ? ( désolé je ne peut pas faire les teste ne disposant pas du matériel nécessaire pour mettre en place Snort )
deuxièmement, lors d’analyse réseau avec wireshark, je trouve bien la chaine que tu décris comme détectée cependant je ne la trouve pas dans metsrv.dll… cela veut-il dire qu’il y a d’autres fichiers envoyés ?
De plus dans la console il est marqué : 768512 bytes sent ( en gros ) alors que la dll ne fait que 69632 octets sais-tu ce qui explique une telle différence ?
sinon merci beaucoup pour tes articles qui sont très biens faits !
ah et j’oubliais, n’est-il pas possible d’inclure directemetn la dll dans l’éxécutable afin de ne pas avoir à la retransférer à chaque fois ? je n’ai rien trouvé à ce sujet 😦
bon, désolé du flood mai apparement la fatigue me fait dire n’importe quoi … donc pour ma part c’est metsrv.x86.dll qui est envoyé … et qui fait bien 768512 octets !
cependant elle ne contient pas la signature d’injection contenue dans l’article. Cependant, il semblerait que les 16 premiers octects soient remplacé par un header de 63 octets dont je n’ai pas encore l’explication.
voila, si certains ont des réponses au reste qu’ils n’hésitent pas
au cas ouca interesserait concernant mon flood de hiers, voici l’expliation de la différence de header de la dll lorsqu’elle est envoyée : http://blog.csdn.net/gaa_ra/article/details/6528359
Bonjour,
Tout d’abord, oui tu pouvais commenter mon article initial. (Par contre, je ne peux pas le déplacer…)
Concernant la signature d’injection de l’article, il se peut que les bases de signatures de Snort aient changées. As-tu essayé avec ta propre instance de Snort ?
Merci pour le lien, je ne m’étais pas posé la question du header. Je prendrai le temps de parcourir l’article plus tard (je ne parle pas couramment le chinois 🙂 )
Super intéressant !
A quand un article complet sur les Binder/Crypter pour rendre un fichier FUD ?
Après cette série de 6 articles, je reviendrai sur des sujets liés de plus près à la sécurité informatique.
Bonsoir Mystcaster, est ce que tu aurais l’envie et le temps de faire un article sur la faille Portable SDK for UPnP Devices et la manière de pouvoir l’exploiter ?
J’ai fais une petite pause dans mon blog, mais je note les idées.
à quand la fin de la série des 6 articles ? 😀
Bravo et merci pour ton travail et ton temps. Ton blog est très enrichissant
On attend toujours la suite avec impatience!
Désolé, il n’y aura pas de partie 6… Je vais stopper cette série pour me recentrer sur le piratage.
Tu n’a jamais fais une pause aussi longue ^^ j’espère que tu reviendra quand même xD
Demain (samedi 13 septembre 2014), promis.
Je me suis installé dans ma nouvelle maison, ça m’a pris un peu de temps. 🙂