Auteur Sujet: Captures réseau du démarrage et fonctionnement de la Neufbox 6  (Lu 22501 fois)

0 Membres et 1 Invité sur ce sujet

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Salut !

Peut-être vous êtes-vous déjà demandé :
  • Ce que votre box envoie sur le réseau au démarrage ?
  • Comment vous identifie-t-elle sur le réseau national ?
  • Quelles informations envoie-t-elle lors de l'échange DHCP ?
  • Comment récupère-t-elle sa configuration ?
  • Comment encapsule-t-elle l'IPv6 ?
  • Comment encapsule-t-elle vos communications téléphoniques ?
  • Comment identifie-t-elle les personnes qui se connectent aux hotspots SFR WiFi ?
  • Comment réaliser une capture de ce qui passe par votre box afin d'obtenir de telles informations ?
Ce sujet devrait répondre à toutes ces questions (et même un peu plus) ! :)

Les captures qui suivent ont été réalisées sur une connexion SFR ADSL en PPPoE, avec l'IPv6 et les hotspots activés.

Table des matières
« Modifié: 08 mars 2014 à 19:16:24 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #1 le: 03 janvier 2014 à 04:21:55 »
Capture du démarrage de la box

Télécharger la capture

Notez que les captures que je vous propose de télécharger ne sont pas tout à fait les originales : j'ai modifié certaines informations personnelles (mes adresses IP, l'adresse MAC de la box, mon numéro de téléphone, ce qui touche à mes identifiants PPP IPv6, SIP et SFR WiFi...). Cependant, j'ai pris soin de conserver le format des informations, la structure des paquets, et de recalculer les checksums, donc ça ne devrait pas poser problème ! Pour cela, j'ai utilisé la bibliothèque Python Scapy, qui permet notamment de manipuler des fichiers pcap.

Il faut savoir que la box reçoit et envoie divers paquets même quand elle n'est pas utilisée (notamment des ping PPP LCP, de l'ARP sur des adresses 10.*.*.*, des messages de contrôle L2TP, un peu d'IGMP, etc.). Il y en a pas mal à la fin de la capture du démarrage notamment. Si ça vous gêne, vous pouvez les masquer facilement avec des filtres Wireshark.

La Neufbox commence d'abord par envoyer des paquets discover DHCP, dans laquelle elle fait savoir notamment sa version matérielle, sa version logicielle, et les informations qu'elle souhaiterait obtenir en retour. Ensuite, elle envoie des paquets de découverte PPPoE dans lesquels elle indique notamment ses débits de synchronisation ADSL.

On peut voir le DSLAM Huawei envoyer des requêtes ARP en permanence pour savoir à quelle machine appartient telle adresse IP privée (pas seulement pendant le démarrage). On peut voir de nombreuses requêtes ARP qui ne nous sont pas adressées.

Ensuite, rien de nouveau, jusqu'à l'obtention d'une adresse IP de la part du BAS SFR, 25 secondes après l'envoi du premier paquet de découverte PPPoE. Le BAS nous informe qu'il appartient à LDCom (ancien nom de Neuf/SFR) et qu'il s'appelle SE100-CRL1-1, SE100 parce que c'est un Ericsson SE100, CRL probablement parce qu'il se trouve à Creil, une des principales villes du département. On le retrouve sur le réseau IPv4 public : se100-crl1-1.teloise.net = 85.192.192.27.

La communication continue avec les protocoles PPPoED, PPP LCP, PPP CHAP, PPP IPCP et PPP IPv6CP (même si ce dernier ne servira à rien). L'identifiant est envoyé, ainsi que le mot de passe, en utilisant un système de challenge (même si de toutes manières c'est le mot de passe par défaut, neufpnp). Vous pouvez d'ailleurs vous amuser à le recalculer, la formule est md5(identifier + "neufpnp" + challenge), sachant qu'identifier est un octet qui vaut 0x01, et challenge une suite d'octets aléatoires présente dans le paquet précédent qui vaut 0xb4e9e3423c7f0ff2a055b7519ab8c242. La connexion IPv4 vers internet est établie, et le BAS nous fait connaître notre adresse IP publique ainsi que nos serveurs DNS.

Ensuite, la Neufbox informe un des serveurs Syslog de SFR (dbpolling-master.diag.sfr.net = 93.20.126.110) que la connexion internet est établie, qu'on a telle adresse IP publique avec tel modèle de box, telle adresse MAC, telle technologie de connexion et tel firmware.

Puis une requête DHCP semblable à celles qui étaient envoyées depuis le début est envoyée, le DSLAM nous répond alors quasi-instantanèment, et il nous apprend notamment qu'il est un Huawei 5600T, que l'on doit utiliser tels serveurs DNS, ainsi que quelques autres infos. Un deuxième paquet Syslog est envoyé, semblable au premier mais avec moins d'informations, cette fois à un autre serveur (93.20.126.48 = events.neufbox.neuf.fr). Des paquets PPP LCP ping sont envoyés au BAS, mais ils seront aussi envoyés régulièrement pendant le fonctionnement de la box. Également, un serveur de SFR (86.64.145.29) nous envoie un ping ICMP, probablement pour des statistiques.

Vient ensuite le moment de récupérer la configuration de la box. Une requête HTTP vers http://general.nb6dsl.neufbox.neuf.fr/cfgnb6dslgeneral.xml est envoyée, avec en paramètres GET diverses informations, telles que l'adresse MAC et l'adresse IP privée de la box, le login PPP, le modèle de box, le firmware et l'activation ou non du hotspot WiFi. Vous pouvez utiliser le filtre http dans Wireshark pour ne voir que les requêtes et les réponses HTTP. 8 requêtes différentes sont faîtes, vous pouvez retrouver les réponses dans /tmp/autoconf/ sur la box, et les requêtes dans /var/log/daemon.log.

Voici le premier fichier, cfgnb6dslgeneral.xml :

<?xml version="1.0"?>
<conf>
  <http_request_interval>3600</http_request_interval>
  <name version="201311051112">general</name>
  <upgrade-delay>0</upgrade-delay>
 
  <service enable="true">
    <name version="201308012016">firmware</name>
    <file>cfgnb6dslfirmware.xml</file>
    <url>general.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="true">
    <name version="201309051000">hotspot</name>
    <file>cfgnbXchilli_201309051000.xml</file>
    <url>hotspot.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="false">
    <name version="201212031801">tvservices</name>
    <file>cfgnb4tvservices_201212031801.xml</file>
    <url>tv.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="true">
    <name version="201312280534">wanservices</name>
    <file>cfgnb4dslwanservices.xml</file>
    <url>wan.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="true">
    <name version="201304231100">ca</name>
    <file>cfgnb4ca_201304231100.xml</file>
    <url>ca.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="true">
    <name version="201303121117">voip</name>
    <file>cfgnb4sip.xml</file>
    <url>voip.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
  <service enable="true">
    <name version="201312280534">wanservices</name>
    <file>cfgnb4dslwanservices.xml</file>
    <url>wan.nb6dsl.neufbox.neuf.fr</url>
    <protocole>http</protocole>
  </service>
 
</conf>

Il permet de connaître les autres fichiers à télécharger et leur fonction. Par la suite, il sera récupéré de nouveau toutes les heures mais avec le paramètre genrel contenant la date de dernière modification du fichier cfgnb6dslgeneral.xml (ici 201311051112) au lieu de 0. Cela permet à la box d'être tenue au courant des changements dans la configuration. Voici à quoi ressemblera la réponse HTTP s'il n'y a pas eu de mise à jour :

<?xml version="1.0"?>
<conf>
  <http_request_interval>3600</http_request_interval>
  <name version="201311051112">general</name>
  <upgrade-delay>0</upgrade-delay>
 
</conf>

Ensuite, le fichier permettant de connaître la dernière version du firmware, cfgnb6dslfirmware.xml, est récupéré :

<?xml version="1.0"?>
<firmware version="201308012016">
  <vendor-id>NB6-FXC-r2</vendor-id>
  <url>ncdn.nb6dsl.neufbox.neuf.fr/nb6dsl_Vers%203.3.4_ter</url>
  <protocole>http</protocole>
  <main hash="62797705144e82b7c44963aa8ea13442d12057e7d01f33ed67bfab3f6d4e70d5">NB6-MAIN-R3.3.4</main>
  <rescue hash="f00d0b3b8e6a88efaac18f80967e83c49b3454bbe26764a70a0dbfee3973442d">NB6-RESCUE-R3.1.8</rescue>
  <config hash="0ea220adfb9dd1c845d9ec0e3d537aab281b5d45ba51b3688c69074225dd8cb4">NB6-CONFIG-R3.3.4.2</config>
  <bootloader hash="3ece945cf370ff987ea184f3ac859d590b0a830d74949e8aa0c71900663d4d6c">NB6-BOOTLOADER-R3.2.4</bootloader>
  <dsldriver hash="d6f592f35abe6e9914fe1b14560b764ee23c846d6c9b5bdecd3300a2b3afeb25">NB6-ADSL-A2pD035p</dsldriver>
  <mac>00:17:33</mac>
  <mac>00:25:15</mac>
  <mac>e0:a1:d7</mac>
  <mac>30:7e:cb</mac>
</firmware>

C'est ce fichier qui est récupéré toutes les 15 minutes par le site https://www.neufbox4.org/firmwares/.

Ensuite, le fichier cfgnb4tvservices_201212031801.xml est récupéré, il contient une liste d'adresses IP avec lesquelles le décodeur TV sera susceptible de communiquer (ce qui ne me sert pas à grand chose puisque je n'en ai pas) :

<?xml version="1.0" encoding="UTF-8"?>
<tvservices version="201212031801">
  <igmp-src-list>
    <net>86.65.232.0/24</net>
    <net>80.118.201.0/24</net>
    <net>84.96.146.0/24</net>
    <net>84.96.219.0/24</net>
    <net>80.118.192.0/24</net>
    <net>86.65.94.0/24</net>
    <net>86.65.95.0/24</net>
    <net>86.64.245.128/25</net>
    <net>86.64.159.201/32</net>
    <net>93.17.149.158/32</net>
    <net>109.203.65.49/32</net>
  </igmp-src-list>
  <igmp-stream-list>
    <net>232.0.0.0/7</net>
  </igmp-stream-list>
  <pfstv-list>
    <!-- PFS TV -->
    <net>86.64.159.127</net>
    <net>86.64.233.32/28</net>
    <net>84.103.237.80</net>
    <net>84.103.237.192/28</net>
    <net>109.0.66.32/30</net>
    <net>109.0.66.48/30</net>
    <net>109.0.66.64/30</net>
    <net>109.0.66.80/30</net>
    <!-- PFS TV dev -->
    <net>109.0.64.96/28</net>
    <net>109.0.65.96/28</net>
    <!-- M6 REPLAY -->
    <net>160.92.103.29</net>
    <net>160.92.103.30</net>
    <net>86.64.233.160/28</net>
    <!-- VOD -->
    <net>86.64.160.240/29</net>
    <net>86.64.161.192/29</net>
    <net>86.64.159.24/29</net>
    <net>86.64.159.72/29</net>
    <net>86.64.160.232/29</net>
    <net>80.118.202.96/29</net>
    <net>86.66.127.56/29</net>
    <net>86.65.125.31</net>
    <net>86.64.241.160</net>
    <!-- WCS V7 -->
    <net>109.0.74.78</net>
    <!-- Nouveaux POP VOD -->
    <net>93.17.162.128/29</net>
    <net>93.17.190.8/29</net>
    <net>93.17.190.72/29</net>
    <net>93.17.190.136/29</net>
    <net>93.17.190.216/29</net>
    <net>93.17.191.24/29</net>
    <net>93.17.190.88/29</net>
    <net>93.17.191.160/29</net>
    <net>93.20.92.32/27</net>
    <net>93.20.92.96/27</net>
    <net>93.17.191.216/29</net>
    <net>93.17.191.240/29</net>
    <net>93.20.107.8/29</net>
    <net>93.20.107.32/29</net>
<net>93.20.92.64/27</net>
    <net>86.65.123.192/26</net>
    <!-- Pure Pixel -->
    <net>86.66.127.160/27</net>
    <!-- M6 -->
    <net>160.92.103.11</net>
    <net>160.92.106.7</net>
    <net>195.88.194.48/29</net>
    <!-- Dailymotion -->
    <net>10.103.15.140/30</net>
    <net>10.103.15.151</net>
    <!-- TF1 -->
    <net>84.103.236.248/30</net>
    <!-- Canal Plus -->
    <net>84.96.146.171</net>
    <net>84.96.146.172</net>
    <!-- EPG -->
    <net>160.92.11.52</net>
    <!-- Courbevoie -->
    <net>84.96.217.32</net>
    <!-- CAS Cardless SFR -->
    <net>86.66.0.128/28</net>
    <!-- VIP VCAS VOD -->
    <net>93.17.149.16/28</net>
    <!-- GOD Preprod -->
    <net>93.20.51.64/27</net>
    <!-- GOD -->
    <net>109.24.9.16/28</net>
    <net>109.0.66.224/27</net>
    <!-- Wiztivi -->
    <net>84.96.238.192/28</net>
    <!-- mySniffer -->
<net>93.17.162.181</net>
<net>93.17.190.52</net>
<net>93.17.190.117</net>
<net>93.17.190.197</net>
<net>93.17.191.148</net>
<net>93.17.191.196</net>
<net>93.17.191.4</net>
<net>93.17.191.68</net>
<net>93.20.107.148</net>
<net>93.20.107.165</net>
<net>93.20.107.53</net>
<!-- NCDN -->
<net>93.20.64.7</net>
<!-- NCDN Pr-prod-->
<net>93.20.64.244</net>
  </pfstv-list>
</tvservices>

Ensuite, le fichier cfgnbXchilli_201309051000.xml, qui permet la configuration du hotspot WiFi, est récupéré, avec notamment des infos sur le serveur radius, le portail captif, les SSID à èmettre et les adresses IP autorisées avec lesquelles un utilisateur non-authentifié du hotspot peut communiquer :

<?xml version="1.0"?>
<chilliconf version="201309051000">
<version>201309051000</version>
 <ssid enable="true">
  <mode3>SFR WiFi Public</mode3>
  <mode4>SFR WiFi FON</mode4>
 </ssid>
 <ssid enable="true">
  <mode5>SFR WiFi Mobile</mode5>
 </ssid>
 <max_users>10</max_users>
 <eapsim>
  <radhost>proxyradeapprod.neufbox.neuf.fr</radhost>
  <radchan>4</radchan>
  <max_users>10</max_users>
  <autoregu>
<enable>false</enable>
<down>100</down>
<up>20</up>
<looptime>30</looptime>
<incstep>2</incstep>
<hidessid>true</hidessid>
  </autoregu>
  <radacct_interiminterval>8000</radacct_interiminterval>
  <radattr_nasportid>99.Neufbox-NB4.33</radattr_nasportid>
  <radattr_wispr_locationid>isocc=FR,cc=33,ac=x,network=SFRWiFiMobile/Neufbox</radattr_wispr_locationid>
  <radattr_wispr_locationname>SFR,Neufbox</radattr_wispr_locationname>
 </eapsim>
 <qos enable="true"/>
 <pat enable="true"/>
 <bwrestrict enable="true" up="320" down="1280"/>
 <bw_ratio>30</bw_ratio>
 <idle_timeout>1200</idle_timeout>
 <dhcp_lease_time>1200</dhcp_lease_time>
 <session_timeout>7200</session_timeout>
 <mode_syslog>1</mode_syslog>
 <uam_channel>0</uam_channel>
 <radius_channel>0</radius_channel>
 <lan_ipaddr>192.168.2.1</lan_ipaddr>
 <URL_portail_pub>neufpub.neufbox.neuf.fr</URL_portail_pub>
 <URL_portail_captif>hotspot.wifi.sfr.fr</URL_portail_captif>
 <URL_portail_captif_full>[url]https://hotspot.wifi.sfr.fr/indexEncryptingChilli.php[/url]</URL_portail_captif_full>
 <URL_proxy_radius>proxyradius.neufbox.neuf.fr</URL_proxy_radius>
 <URL_conditions>http://hotspot.wifi.sfr.fr/mentions.html</URL_conditions>
 <radius_nasportid>99.Neufbox-NB4.33</radius_nasportid>
 <radius_locationid>isocc=FR,cc=33,ac=x,network=NeufWifi/Neufbox_</radius_locationid>
 <radius_locationname>Neuf-Cegetel,Neufbox_</radius_locationname>
 <whitelisttwin>
  <access-list>
   <proto>all</proto>
   <url>195.8.210.141</url>
   <port>all</port>
  </access-list>
 </whitelisttwin>
 <autrewhitelist>
 <access-list>
   <proto>all</proto>
   <url>[url=https://www.sfr.fr]www.sfr.fr[/url]</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>s1.s-sfr.fr</url>
   <port>all</port>
  </access-list> 
  <access-list>
   <proto>all</proto>
   <url>assistance.sfr.fr</url>
   <port>all</port>
  </access-list>
   <access-list>
   <proto>all</proto>
   <url>backup.sfr.fr</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>213.91.9.206</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>193.200.4.155</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>93.20.51.218</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>93.17.134.136</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>93.17.134.137</url>
   <port>all</port>
  </access-list> 
  <access-list>
   <proto>all</proto>
   <url>86.65.62.3</url>
   <port>all</port>
  </access-list> 
  <access-list>
   <proto>all</proto>
   <url>86.65.63.3</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>199.7.48.0/20</url>
   <port>all</port>
  </access-list> 
  <access-list>
   <proto>all</proto>
   <url>199.7.71.0/24</url>
   <port>all</port>
  </access-list> 
  <access-list>
   <proto>all</proto>
   <url>199.16.83.0/24</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>62.39.9.151</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>62.39.9.152</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>[url=http://www.fon.com]www.fon.com[/url]</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>support.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>corp.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>purchases.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>payment.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>static.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>stats.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>sfr.portal.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>sfr.purchases.fon.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>fon.zendesk.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>ocsp.comodoca.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>crl.comodoca.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>[url=http://www.verisign.net]www.verisign.net[/url]</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>crl.verisign.net</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>[url=http://www.mopay.com]www.mopay.com[/url]</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>help.mopay.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>static.mopay.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>securepay.mopay.com</url>
   <port>all</port>
  </access-list>
  <access-list>
   <proto>all</proto>
   <url>safebrowsing.clients.google.com</url>
   <port>all</port>
  </access-list>
 </autrewhitelist>
 <whitelist-auth>
  <access-list>
   <port>22</port>
   <proto>both</proto>
  </access-list>
  <access-list>
   <port>25</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>53</port>
   <proto>udp</proto>
  </access-list>
  <access-list>
   <port>80</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>110</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>143</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>220</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>443</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>465</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>500</port>
   <proto>udp</proto>
  </access-list>
  <access-list>
   <port>587</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>993</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>995</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>1291:1296</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>2001</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>4500</port>
   <proto>udp</proto>
  </access-list>
  <access-list>
   <port>4995</port>
   <proto>both</proto>
  </access-list>
  <access-list>
   <port>5223</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>5228</port>
   <proto>both</proto>
  </access-list>
  <access-list>
   <port>8080:8082</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>8787</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>9200:9207</port>
   <proto>tcp</proto>
  </access-list>
  <access-list>
   <port>10000</port>
   <proto>both</proto>
  </access-list>
 </whitelist-auth>
</chilliconf>
« Modifié: 11 janvier 2017 à 13:55:01 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #2 le: 03 janvier 2014 à 04:22:36 »
Ensuite, le fichier cfgnb4dslwanservices.xml est récupéré, celui-ci contient les informations nécessaires pour se connecter au tunnel IPv6 (le mot de passe PPP est déchiffré avec le même algorithme que la mot de passe SIP), ainsi que différents serveurs Syslog/NTP/SMTP de SFR :

<?xml version="1.0"?>
<wan_services version="201312280534">
  <rand>50a29b54e5d6e8cf9d75ff88652f8718</rand>
  <vendor-id>NB6-FXC-r2</vendor-id>
  <ipv6>
    <infra>Tunnel</infra>
    <lns>109.6.1.72</lns>
    <forcev6 enable="false"/>
    <ppp-password>2445ed086172d7663fe65254b0cdabb9</ppp-password>
    <AdvValidLifetime>604800</AdvValidLifetime>
    <AdvPreferredLifetime>604800</AdvPreferredLifetime>
  </ipv6>
  <ppp>
    <timeout>20</timeout>
    <failure>3</failure>
    <interval>20</interval>
  </ppp>
  <whitelist-smtp>
    <url>ghostsmtp.neufbox.neuf.fr</url>
  </whitelist-smtp>
  <ntp>
    <server>ntp.neufbox.neuf.fr</server>
    <timezone>CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00</timezone>
  </ntp>
  <pushlog>
    <server>stats.neufbox.neuf.fr</server>
    <eventserver>events.neufbox.neuf.fr</eventserver>
    <errorserver>errors.neufbox.neuf.fr</errorserver>
    <interval>86400</interval>
  </pushlog>
  <slid />
</wan_services>

Ensuite, le fichier cfgnb4ca_201304231100.xml, qui contient la configuration du Contrôle d'Accès, c'est-à-dire du service de contrôle parental de SFR, est récupéré :

<?xml version="1.0"?>
<ca version="201304231100">
<!-- Parametres du CA  -->
<general>
<!-- Autorisation blocage flux tele -->
<lock>
<device>stb</device>
<device>femto</device>
</lock>
</general>
<!-- Notification -->
<notification>
<server>90.20.51.204</server>
</notification>
<!-- Portail -->
<portal>http://controle-acces.sfr.fr</portal>
<!-- Proxy -->
<proxy>
<url>93.20.51.215</url>
<port>80</port>
<!-- Securite -->
<RSA>C65EA19C47F7277BF25F681CE56E356FCF67A195830CFB3AEBDDA41ABD81B82DB821B00AC4C552D282ECB4157A3E85DEA3D6F680CEF3C0D0D87B0E0D4960CA644BFA1F3BC3713FD378423C0F2157B4C1964854B39F1768DEF6012EE91A38D98B09D2CDB33B715947B1A6291D2275364630DE0286A30834516EAF7C65E50415B5</RSA>
</proxy>
<!-- profiles -->
<redir>
<!-- lock -->
<url>93.20.51.204</url>
<port>8186</port>
<profile name="enfant">
<url>93.20.51.204</url>
<port>8187</port>
</profile>
<profile name="ado">
<url>93.20.51.204</url>
<port>8188</port>
</profile>
</redir>
<!-- Liste blanche filtrage: eviter blocage utilisateur -->
<whitelist>
<!-- Port 80 -->
<access-list>
<url>controle-acces.sfr.fr</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>[url=https://www.sfr.fr]www.sfr.fr[/url]</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>img.s-sfr.fr</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s1.s-sfr.fr</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s2.s-sfr.fr</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<!-- Port 443 -->
<access-list>
<url>[url=https://www.sfr.fr]www.sfr.fr[/url]</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>img.s-sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s1.s-sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s2.s-sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<!-- Site Mobile SFR -->
<access-list>
<url>m.sfr.fr</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>mist.m.sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>static.s-sfr.fr </url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<!-- Portail SRR -->
<access-list>
<url>authentification.sfr.re</url>
<port>80</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>authentification.sfr.re</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s3.s-sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>s4.s-sfr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>
<access-list>
<url>monprofil.srr.fr</url>
<port>443</port>
<proto>tcp</proto>
</access-list>

</whitelist>
<!--  -->
</ca>

Enfin, la configuration pour le SIP, contenue dans cfgnb4sip.xml, est récupérée. Quelqu'un a publié un script pour déchiffrer le mot de passe, on peut voir qu'il va chercher le contenu des variables <rand> et <password>, mais qu'il utilise également une clé différente pour chaque Neufbox, présente dans la mémoire flash et associée à l'adresse MAC (c'est pourquoi il ne faut jamais effacer ou réecrire une certaine partie de la NVRAM de la box sans sauvegarde, sinon vous risquez de perdre cette clé).

<?xml version="1.0"?>
<voipconf version="201303121117">
  <rand>7199811705e658f475a07bd062bd74ed</rand>
  <vendor-id>NB6-FXC-r2</vendor-id>
  <port>FXS</port>
  <group>no</group>
  <voice-network>
    <protocol>3</protocol>
    <stack>2</stack>
    <unbundled>2</unbundled>
  </voice-network>
  <telephony-services>
    <pub-identity-sip>+33360653674</pub-identity-sip>
    <display-name>0360653674</display-name>
    <password>5ccdc8d79c337c9d2459588901e96b91</password>
    <realm>ims.mnc010.mcc208.3gppnetwork.org</realm>
    <digest-username>NDI0360653674.PCA.DGP@sfr.fr</digest-username>
    <proxy port="5060" id="1" dnstype="naptr">fixed.p-cscf.sfr.net</proxy>
    <proxy port="5060" id="2">fixed.p-cscf.sfr.net</proxy>
    <registrar port="5060">fixed.p-cscf.sfr.net</registrar>
    <as port=""></as>
    <pub-identity-tel>+33360653674</pub-identity-tel>
    <supplementary-services>096eaada484971f9d7cf99dec425601e85c8d650f6ada07afe3ece79f93f33d64f3065abad1565e50709985a100cf665</supplementary-services>
    <conference-factory-uri>conference@sfr.net</conference-factory-uri>
  </telephony-services>
  <localSettings>
    <port>5060</port>
    <dscpRtp>0x2D</dscpRtp>
    <dscpProto>0x2D</dscpProto>
    <strictRTPaddress>on</strictRTPaddress>
    <strictSSRC>off</strictSSRC>
    <ignoreVia>on</ignoreVia>
    <noUnregister>on</noUnregister>
    <OIP>3651</OIP>
    <OIR />
  </localSettings>
  <data-access>
    <profile>5</profile>
  </data-access>
  <media>
    <codec enable="true" id="1">G711_alaw</codec>
    <codec enable="true" id="2">G711_mulaw</codec>
    <codec enable="true" id="3">G729_ab</codec>
    <codec enable="false" id="4">G726</codec>
    <codec enable="false" id="5">G722</codec>
    <dtmf enable="true">rfc2833</dtmf>
    <dtmf enable="true">inband</dtmf>
    <fax>upspeed</fax>
    <jitter-buffer-size>100</jitter-buffer-size>
    <confort-noise>disabled</confort-noise>
    <gain signal="input">0</gain>
    <gain signal="output">0</gain>
    <rtp>
      <port-min>35500</port-min>
      <port-max>35599</port-max>
    </rtp>
  </media>
  <sip-timers>
    <register-expire>3600</register-expire>
    <invite-expire>900</invite-expire>
    <subscribe-expire>900</subscribe-expire>
    <t1>500</t1>
    <t2>4000</t2>
    <nat>3595</nat>
  </sip-timers>
  <dialplan>
    <number route="voip" length="open">00</number>
    <number route="voip" length="10">01</number>
    <number route="voip" length="10">02</number>
    <number route="voip" length="10">03</number>
    <number route="voip" length="10">04</number>
    <number route="voip" length="10">05</number>
    <number route="voip" length="10">06</number>
    <number route="voip" length="10">07</number>
    <number route="voip" length="10">08</number>
    <number route="voip" length="10">09</number>
    <number route="voip" length="4">10</number>
    <number route="voip" length="open">110</number>
    <number route="voip" length="open">111</number>
    <number route="voip" length="3">112</number>
    <number route="voip" length="open">113</number>
    <number route="voip" length="3">114</number>
    <number route="voip" length="3">115</number>
    <number route="voip" length="6">116</number>
    <number route="voip" length="open">117</number>
    <number route="voip" length="6">118</number>
    <number route="voip" length="3">119</number>
    <number route="voip" length="open">12</number>
    <number route="voip" length="open">13</number>
    <number route="voip" length="open">140</number>
    <number route="voip" length="open">141</number>
    <number route="voip" length="open">142</number>
    <number route="voip" length="open">143</number>
    <number route="voip" length="open">144</number>
    <number route="voip" length="open">145</number>
    <number route="voip" length="open">146</number>
    <number route="voip" length="3">147</number>
    <number route="voip" length="open">148</number>
    <number route="voip" length="open">149</number>
    <number route="voip" length="2">15</number>
    <number route="voip" length="open">16</number>
    <number route="voip" length="2">17</number>
    <number route="voip" length="2">18</number>
    <number route="voip" length="open">19</number>
    <number route="voip" length="open">2</number>
    <number route="voip" length="4">30</number>
    <number route="voip" length="4">31</number>
    <number route="voip" length="4">32</number>
    <number route="voip" length="open">33</number>
    <number route="voip" length="4">34</number>
    <number route="voip" length="4">35</number>
    <number route="voip" length="4">360</number>
    <number route="voip" length="4">361</number>
    <number route="voip" length="4">362</number>
    <number route="voip" length="4">363</number>
    <number route="voip" length="4">364</number>
    <number route="voip" length="4">3650</number>
    <number route="voip" length="open">3651</number>
    <number route="voip" length="open">3652</number>
    <number route="voip" length="4">3653</number>
    <number route="voip" length="4">3654</number>
    <number route="voip" length="4">3655</number>
    <number route="voip" length="4">3656</number>
    <number route="voip" length="4">3657</number>
    <number route="voip" length="4">3658</number>
    <number route="voip" length="4">3659</number>
    <number route="voip" length="4">366</number>
    <number route="voip" length="4">367</number>
    <number route="voip" length="4">368</number>
    <number route="voip" length="4">369</number>
    <number route="voip" length="4">37</number>
    <number route="voip" length="4">38</number>
    <number route="voip" length="4">39</number>
    <number route="voip" length="open">4</number>
    <number route="voip" length="open">5</number>
    <number route="voip" length="open">6</number>
    <number route="voip" length="open">7</number>
    <number route="voip" length="open">8</number>
    <number route="voip" length="open">9</number>
    <number route="local" length="3" serviceid="1">999</number>
    <number route="local" length="4" serviceid="2">*70#</number>
    <number route="local" length="4" serviceid="3">*71#</number>
    <number route="local" length="4" serviceid="4">*72#</number>
    <number route="voip" length="4" serviceid="5">*79#</number>
    <number route="local" length="5" serviceid="6">*#70#</number>
    <number route="local" length="5" serviceid="7">*#71#</number>
    <number route="local" length="5" serviceid="8">*#72#</number>
    <number route="voip" length="5" serviceid="9">*#79#</number>
    <number route="local" length="4" serviceid="10">#70#</number>
    <number route="local" length="4" serviceid="11">#71#</number>
    <number route="local" length="4" serviceid="12">#72#</number>
    <number route="voip" length="4" serviceid="13">#79#</number>
    <number route="voip" length="open">*</number>
    <number route="voip" length="open">#</number>
    <number route="local" length="2" serviceid="14">R1</number>
    <number route="local" length="2" serviceid="15">R2</number>
    <number route="local" length="2" serviceid="16">R3</number>
    <number route="local" length="2" serviceid="17">R9</number>
  </dialplan>
</voipconf>

Le fichier cfgnb4dslwanservices.xml est également téléchargé une deuxième fois avec les mêmes paramètres et la même réponse, je ne sais pas pourquoi.

Passons à la suite : la connexion IPv6. Une connexion PPP semblable à la première est mise en place, à la différence que le login PPP ne commence pas par « ppp/ » mais par « ipv6/ ». Cependant le BAS n'en veut pas et nous renvoie un « Configuration Nak » et un « Protocol Reject » quand on veut se connecter en IPv6, je suppose qu'il ne supporte pas encore IPv6 nativement. C'est donc le tunnel qui va être utilisé.

La box se synchronise en NTP, la colonne « Time » de Wireshark affiche alors une valeur différente, correspondant davantage au timestamp. La box envoie également une requête IGMP.

Ensuite, la box effectue une requête DNS qui lui permet de connaître la liste des serveurs SIP disponibles (SRV _sip._udp.fixed.p-cscf.sfr.net), et d'en choisir un au hasard (172.26.235.86 = val3isc04.fixed.p-cscf.sfr.net), puis elle lui envoie une requête SIP REGISTER en UDP (le port source est 5060, le port de destination est 5062). Le mot de passe chiffré, déchiffré depuis le fichier de configuration cfgnb4sip.xml, est envoyé avec un système de challenge standard (Authorization: Digest). Une nouvelle requête SIP REGISTER sera envoyée toutes les 54 minutes. Pour information, les communications SIP sont loggées sur la box dans /var/log/voip_proto.log.

Étape suivante : l'établissement du tunnel IPv6. Comme indiqué dans le fichier cfgnb4dslwanservices.xml, une connexion L2TPv2 au LNS 109.6.1.72 est établie sur le port 1701. La Neufbox utilise le client L2TP libre xl2tpd. Le mot de passe L2TP, à ne pas confondre avec le mot de passe PPP IPv6, est « 6pe », en trois caractères (il est pareil pour tout le monde). Ici, il est envoyé en utilisant le système de challenge CHAP. Une fois la connexion L2TP établie, une connexion PPP s'établit au-dessus du tunnel. Si l'identifiant PPP est le même qu'avec la session PPP IPv4, le mot de passe, quant à lui, est déchiffré depuis le fichier cfgnb4dslwanservices.xml en utilisant le même algorithme que pour le mot de passe SIP (j'ai légèrement adapté le script permettant de déchiffrer ce dernier pour le savoir). Il est transmis en clair, je l'ai donc remplacé par un autre choisi au hasard qui utilise un format similaire dans la capture.

Ensuite, quelques paquets ICMPv6 « Multicast listener report » sont envoyés au serveur ff02::16, puis un échange DHCPv6 avec le serveur ff02::1:2 est effectué : la box envoie au serveur DHCPv6 des informations telles que sa version de firmware ou son adresse MAC, et le serveur répond avec notamment le préfixe IPv6 fixe du client.

Ensuite ? Rien de bien intéressant, quelques requêtes DNS, et des paquets déjà vus.
« Modifié: 10 janvier 2014 à 04:31:21 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #3 le: 03 janvier 2014 à 04:22:59 »
Capture de l'envoi de quelques paquets HTTP

Télécharger la capture

Tapez http dans le champ « Filter » de Wireshark pour ne voir que les requêtes HTTP.

Ici, trois requêtes HTTP sont effectuées, à quelques secondes d'intervalle :
  • Une sur le réseau privé de SFR, qui sert au téléchargement de la configuration, à la VoIP, aux mises à jour... La requête GET est effectuée vers http://ncdn.nb6dsl.neufbox.neuf.fr/nb6dsl_Vers%203.3.4_ter/nb6-3.3.4_ter.sha256sum. L'encapsulation utilisée pour la communication avec le réseau privé est IPoE.
  • Une vers internet, en IPv4. La requête GET est effectuée vers http://ipv4.icanhazip.com/. L'encapsulation utilisée pour la communication avec le réseau IPv4 public est PPPoE.
  • Une vers internet, en IPv6. La requête GET est effectuée vers http://ipv6.icanhazip.com/. L'encapsulation utilisée pour la communication avec le réseau IPv6 public est un peu particulière (notez que contrairement à ce qu'indique le titre de ce sujet, les préfixes IPv6 sont désormais fixes chez SFR).

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #4 le: 03 janvier 2014 à 04:23:16 »
Capture d'un appel téléphonique

Télécharger la capture

Contrairement à ce que j'avais lu, les communications téléphoniques ne sont pas chiffrées. En allant dans « Telephony ⇨ VoIP Calls », Wireshark vous permet d'ailleurs de ré-écouter celle-ci (une très brève communication avec le répondeur SFR au 147 dans laquelle je dis « allo allo test allo », rien de très intéressant). Le protocole SIP est utilisé pour les informations sur l'envoi et la réception des appels (je sais qu'une autre partie des abonnés SFR était en MGCP, je ne sais pas si c'est toujours le cas), et le protocole RTP est utilisé pour la transmission des données vocales. Le format de compression des données utilisé est « ITU-T G.711 PCMA ».

Pour ce qui est de la connexion au serveur SIP de SFR, les données sont dans la capture du démarrage. Seuls les identifiants ne sont pas transmis en clair, cependant il existe un script pour les déchiffrer. J'espère que ces quelques informations aideront les abonnés FTTH (j'en serai peut-être un d'ici quelques mois) à améliorer le bypass de la Neufbox :)
« Modifié: 08 mars 2014 à 19:19:38 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #5 le: 03 janvier 2014 à 04:23:30 »
Capture d'une connexion à un hotspot SFR WiFi

Télécharger la capture

Ici, j'essaye de me connecter à http://perdu.com/ depuis un hotspot, je saisis mes identifiants SFR WiFi, puis je suis redirigé vers le site que je voulais consulter.

Pour commencer, vous pouvez utiliser le filtre !l2tp && !arp && !lcp && !igmp afin de masquer les paquets qui ne nous intéressent pas.

On peut d'abord observer que la Neufbox informe un des serveurs Syslog de SFR (62.39.3.142 = serversyslog.neufbox.neuf.fr) à chaque fois qu'un nouveau client se connecte en WiFi à un hotspot, avec son adresse MAC et son adresse IP locale. Cela rappelle donc aux vilains pirates que sans spoofing de l'adresse MAC, leur machine est loin d'être anonyme quand elle se connecte à un hotspot.

Ensuite, mon navigateur est redirigé (ça je crois qu'on ne le voit pas car le navigateur a dû le mettre en cache, désolé) vers le portail captif qui me demande mes identifiants : https://hotspot.wifi.sfr.fr/. Le trafic vers le portail captif est chiffré, il n'est donc pas très intéressant pour nous. Ajoutez ceci au filtre si vous souhaitez masquer le trafic chiffré vers les serveurs de SFR et Verisign :

&& (!ip || (ip.dst != 109.0.74.75 && ip.src != 109.0.74.75 && ip.src != 199.7.71.72 && ip.dst != 199.7.71.72))

Après la validation du formulaire, vous pouvez constater en utilisant la console web de votre navigateur (généralement accessible à l'aide du raccourci clavier F12) que le formulaire est envoyé vers https://hotspot.wifi.sfr.fr/nb4_crypt.php, qui, si les identifiants sont corrects, chiffre le mot de passe WiFi, puis envoie le nom d'utilisateur en clair ainsi que le mot de passe chiffré vers http://192.168.2.1:3990/logon. Il est normal que vous ne voyiez pas cette dernière étape dans la capture, car cela se passe sur le réseau local.

La Neufbox envoie ensuite le nom d'utilisateur en clair et le mot de passe chiffré au serveur radius de SFR WiFi (80.118.192.115 = proxyradius.neufbox.neuf.fr), qui répond alors que ok, j'ai le droit d'utiliser le hotspot !

Le logiciel libre ChilliSpot est utilisé pour faire fonctionner le portail captif, renseignez-vous sur son fonctionnement si vous souhaitez en savoir plus.
« Modifié: 06 janvier 2014 à 23:17:13 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #6 le: 03 janvier 2014 à 04:23:45 »
Comment réaliser une telle capture ?

Il y a deux gros cas de figure : si vous avez une box ouverte, ou pas. Par « box ouverte », je veux dire box avec laquelle vous avez la possibilité d'obtenir un accès shell root, afin de faire fonctionner un programme tel que tcpdump, par exemple en flashant un firmware alternatif, et ainsi capturer ce qui passe par la box directement sur la box.

À ma connaissance, voici l'état des choses chez les principaux FAIs français :
  • SFR : la Neufbox est très ouverte, SFR nous donne la possibilité de la flasher facilement un firmware alternatif, et ce depuis 2007. SFR a également libéré une partie du code source de la box (et sans se limiter, comme le font Free ou Orange, à ce qui doit obligatoirement être libéré pour pour cause de GPL). C'est une des raisons pour lesquelles je suis passé chez SFR (avec le peering désastreux de mon ancien FAI − vous devinerez peut-être duquel je parle).
  • Free : la Freebox est une boîte noire. Il y a eu quelques tentatives d'ouverture en 2006/2007, mais le projet ne semble plus être actif, et j'ai lu qu'il y a une protection qui empêche de mettre un firmware autre que celui de Free à partir de la v5 (la Freebox serait « tivoïsée »).
  • Orange : il y a peu, il était possible d'avoir un accès Telnet limité par défaut, ainsi qu'un accès Telnet root en utilisant des identifiants qui ont fuité sur internet. Cependant, en août 2011, des hackers espagnols ont mis un joyeux bazar en publiant une application pour smartphone utilisant l'accès Telnet afin de déverrouiller certaines fonctionnalités normalement payantes, ce qui a provoqué la colère d'Orange qui a retiré tous les accès Telnet connus. Cependant, avec la Livebox 2, il semblerait qu'il soit possible, en se mettant sur le firmware rescue, puis en downgradant le firmware, de se retrouver avec un accès shell root sur votre box. Pour ce qui est de la Livebox 3 (Play), je n'ai aucune idée des possibilités.
  • Bouygues, Numericable : aucune idée.
« Modifié: 02 juillet 2016 à 20:26:26 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #7 le: 03 janvier 2014 à 04:24:02 »
Si vous avez une box ouverte

Je vais décrire les manipulations qui m'ont permises de flasher la Neufbox 6 et de réaliser les captures que je viens de vous montrer. Ces manipulations seront bien sûr totalement différentes avec une autre box.

Étape 1 − flasher la box. Pour cela j'ai utilisé ce tutoriel. Le firmware que j'ai flashé était semblable à l'original, j'ai juste effectué deux modifications :
  • J'ai ajouté mes identifiants dans /etc/passwd et /etc/shadow, afin de pouvoir me connecter en SSH, comme expliqué dans le tutoriel.
  • Dans le script /etc/preinit, j'ai remplacé celle ligne :
    [ -x /usr/bin/usb-boot ] && usb-boot && usbfs_union || tmpfs_union
    par celle-ci :
    usbfs_union || tmpfs_union

    Pourquoi ? Parce qu'il y a un bug dans le bootloader de la Neufbox 6, qui n'est pas présent sur la Neufbox 4, qui empêche la box de se souvenir que l'utilisateur a activé le mini_fo sur cette page. Qu'est-ce que le mini_fo ? C'est une fonctionnalité très pratique qui permet de brancher une clé USB formatée en ext2 sur la box, et de s'en servir pour étendre sa capacité de stockage. En effet, de base, elle n'en a pas beaucoup (16 Mo seulement de mémoire flash pour la Neufbox 6, 8 Mo pour la Neufbox 4, et 64 Mo pour la récente Neufbox 6V).

    Ainsi, avec le mini_fo, on peut par exemple installer des logiciels supplèmentaires ou faire des captures réseau (c'est pour ça que je vous en parle :P) sans trop se soucier de l'espace disque. Cette fonctionnalité est également très pratique parce qu'en cas de plantage à cause d'un logiciel installé sur la box, il suffira de débrancher la clé USB et de redémarrer pour résoudre le problème. Si vous n'avez pas de clé USB, il est également possible de faire une capture qui sera enregistrée sur le système de fichiers temporaire présent dans la RAM, cependant il faut faire attention à ne pas saturer cette dernière.
Bref, en dehors de ça, il suffit de suivre le tutoriel : télécharger le firmware, l'extraire, modifier les fichiers mentionnés ci-dessus, recompresser le firmware, configurer et lancer dnsmasq, puis redémarrer la box (branchée en ethernet ou en CPL à votre PC) en appuyant quelques secondes sur le bouton de service... Ensuite, attendre quelques minutes, et une fois le flashage fini vous devriez pouvoir vous connecter en SSH sur 192.168.1.1:1288 avec le compte utilisateur que vous avez ajouté.

Attention, si vous avez un autre modèle de Neufbox (4, 5, 6V...), les manipulations ne seront pas les mêmes :
  • Avec la Neufbox 4, suivez ce tutoriel (un peu plus simple car il suffit de lancer un script Python pour le flashage, pas besoin de dnsmasq ; pas besoin non plus de modifier le fichier /etc/preinit).
  • Avec la Neufbox 5, box beaucoup plus rare, la documentation est moins présente. Pour le téléchargement et la décompression du firmware, allez voir ce tutoriel, pour le flashage, quelques infos ici, dans le doute allez demander plus d'infos sur le forum (MàJ juin 2014 : le tutoriel a été complété avec des informations concernant le flashage).
  • Avec la Neufbox 6V, la méthode pour extraire et reconstruire le firmware est ici, pour le flashage vous pouvez appliquer la même méthode que pour la Neufbox 6 (MàJ juin 2014 : un tutoriel complet est désormais disponible).
Des liens vers les derniers firmwares officiels à télécharger sont disponibles ici (dans la colonne MAIN). En cas de problème, vous pouvez aller demander conseil sur le forum dédié.

Étape 2 − mettre en place le mini_fo.

Branchez une clé USB sur votre PC, formatez-là en ext2 si ce n'est pas déjà fait, puis mettez un fichier nommé nommé par exemple « toto » à sa racine. Si vous avez une Neufbox 4 ou 5 avec un firmware qui n'est pas encore en 3.3.x, le fichier ne doit pas être à la racine de la clé mais dans un répertoire nommé /sto/. Allez ensuite brancher la clé USB sur la box.

Ensuite, assurez-vous que le mini_fo est activé :
  • Si vous avez une Neufbox 6, la modification du fichier /etc/preinit devrait avoir fait l'affaire (elle est peut-être aussi nécessaire avec la Neufbox 6V, je ne sais pas). Redémarrez manuellement la box.
  • Avec la Neufbox 4 et les autres modèles, il faut aller activer le mini_fo sur cette page : http://192.168.1.1/rootfs qui vous proposera ensuite de redémarrer la box.
Une fois la box redémarrée, connectez-vous en SSH : si vous voyez votre fichier /toto à la racine, c'est bon.

Le fichier /toto devrait être aussi visible dans /overlay/ si vous avez un firmware 3.3.x, ou dans /tmp/sto/ si vous avez un firmware moins récent. Ce dossier représente le contenu de la clé USB. On va écrire dedans afin d'être sûr que les fichiers aillent sur la clé USB et pas sur un des autres systèmes de fichiers .

Étape 3 − effectuer une capture du fonctionnement de la box.

Pour cela, j'ai utilisé le programme tcpdump, qui est installé de base sur la box. En SSH, vous pouvez voir la liste des interfaces réseau sur lesquelles vous pouvez capturer en tapant la commande tcpdump -D.

root@nb6:~# tcpdump -D
1.ifb0
2.bcmsw
3.eth0
4.wl0
5.wl0.1
6.wl0.3
7.eth0.1
8.hotspot0
9.mv0
10.nas_0_65
11.nas_0_48
12.nas_0_49
13.nas_0_50
14.nas_0_51
15.nas_0_52
16.nas_0_53
17.nas_0_54
18.nas_0_55
19.eth0.2
20.lan0
21.voip0
22.tv0
23.wan0
24.ppp0
25.tun0
26.mv1
27.ppp1
28.mv2
29.nas_8_35
30.nas_8_36
31.any (Pseudo-device that captures on all interfaces)
32.lo

L'interface qui nous intéresse est l'interface nas_8_35, car elle permet de capturer ce qui passe par le VC ATM 8/35, ce qui inclut chez SFR la connexion internet, la récupération des fichiers de configuration, la téléphonie SIP... Il y a peut-être d'autres VC susceptibles de faire passer d'autres données (télévision ?) mais nous ne nous y intéresserons pas ici.

Maintenant, passons à la capture en elle-même. Voici une commande qui permet de capturer sur la clé USB :

tcpdump -w /overlay/macapture.pcap -i nas_8_35 -c 5000

Explication des arguments passés au programme :
  • -w /overlay/macapture.pcap : la capture sera faîte dans un fichier nommé macapture.pcap, à la racine de la clé USB et du système de fichiers visible de la box.
  • -i nas_8_35 : la capture sera faîte sur l'interface nas_8_35, décrite ci-dessus.
  • -c 5000 : la capture s'arrêtera au bout de 5000 paquets capturés si vous ne l'arrêtez d'ici là. Vous pouvez modifier cette limitation, la supprimer ou la remplacer par une autre.
Vous pouvez ensuite arrêter la capture en faisant Ctrl+C.

Utilisez ensuite la commande scp pour transférer votre capture vers votre PC sous Linux (remplacez ob6 par le nom d'utilisateur que vous avez choisi) :

scp -P 1288 ob6@neufbox:/overlay/macapture.pcap .

Si vous souhaitez que la capture continue même si vous vous déconnectez du SSH, il faut ajouter un & à la fin de la commande :

tcpdump -w /overlay/sfrwifi.pcap -i nas_8_35 -c 5000 &

Vous pouvez ensuite vous déconnecter du SSH (Ctrl+D ou exit) tout en laissant tcpdump tourner. Pour arrêter la capture, il faudra entrer la commande killall tcpdump.

Étape 4 − effectuer une capture du démarrage de la box.

Voici une petite description partielle du système de lancement des scripts de démarrage de la Neufbox (si par la suite vous souhaitez en savoir plus sur le processus de démarrage des systèmes basés sur OpenWRT, allez voir ici) : le fichier /etc/inittab est d'abord lu ;

root@nb6:~# cat /etc/inittab
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
::once:/etc/init.d/networks boot
::once:/etc/init.d/services boot
ttyS0::askfirst:-/bin/login

Ensuite, le script /etc/init.d/rcS est exécuté, ce dernier exécute tous les scripts présents dans /etc/rc.d/ dont le nom commence par un S, en leur passant le mot « boot » comme premier argument.

root@nb6:~# ls /etc/rc.d/
K50dropbear   S01devices    S11config     S50cron       S50syslog-ng  S80nbd        S97watchdog
K99umount     S10boot       S39usb        S50dropbear   S50telnet     S95done       S99sysctl

Les scripts qui commencent par K sont exécutés à l'arrêt de la box, ceux qui commencent par S au démarrage. Le nombre présent après cette lettre permet de les exécuter dans l'ordre.

À ce stade-là, c'est trop tôt pour commencer notre capture car l'interface réseau qui nous intéresse n'existe pas encore. La prochaine étape est l'exécution du script /etc/init.d/networks. Ce dernier attend le lancement du démon nbd (démon propriétaire qui permet notamment aux différents binaires et scripts présents dans la Neufbox de communiquer via un socket UNIX, stocke la configuration en mémoire, et s'occupe de diverses tâches), puis exécute une partie des scripts présents dans /etc/init.d/. Voici son contenu avec le firmware 3.3.4 :

root@nb6:~# cat /etc/init.d/networks
#!/bin/sh /etc/rc.common

boot() {
    networks='eco firewall nat miniupnpd phy switch xtm adsl topology qos hotplug data ppp-adsl dhcpc lan route ipv6'

    if test -x /usr/sbin/nbd; then
        while [ ! -e /var/state/nbd ]; do sleep 1; done
    else
        while [ ! -e /var/state/done ]; do sleep 1; done
    fi

    for i in $networks; do
        [ -x /etc/init.d/$i ] && /etc/init.d/$i boot 2>&1
    done

    touch /var/state/networks
}

Sur le modèle des autres scripts lancés, on va en créer un très simple qui va s'appeler tcpdump (sans extension) et contenir ceci :

#!/bin/sh /etc/rc.common

boot() {
    tcpdump -w /overlay/macapture.pcap -i nas_8_35 -c 5000 &
}

N'oubliez pas de le rendre exécutable (chmod +x tcpdump). Ensuite il va falloir le transférer sur la box : scp -P 1288 tcpdump ob6@neufbox:/overlay/etc/init.d/.

Le script qui va créer l'interface réseau qui nous intéresse s'appelle topology (il se base sur le fichier /etc/default/topology.xml pour savoir quelles interfaces doivent être créées). Il faudra donc mettre ce qui suit dans /overlay/etc/init.d/networks, afin d'ajouter notre script à la liste après topology :

#!/bin/sh /etc/rc.common

boot() {
    networks='eco firewall nat miniupnpd phy switch xtm adsl topology tcpdump qos hotplug data ppp-adsl dhcpc lan route ipv6'

    if test -x /usr/sbin/nbd; then
        while [ ! -e /var/state/nbd ]; do sleep 1; done
    else
        while [ ! -e /var/state/done ]; do sleep 1; done
    fi

    for i in $networks; do
        [ -x /etc/init.d/$i ] && /etc/init.d/$i boot 2>&1
    done

    touch /var/state/networks
}

Ensuite, rendez-le exécutable, transférez-le sur la box avec scp comme vous l'avez fait avec l'autre script, puis redémarrez la box.

tcpdump se lancera au démarrage, et il suffira de faire killall tcpdump pour l'arrêter ! N'oubliez pas de supprimer /overlay/etc/init.d/networks par la suite pour qu'une capture ne se fasse pas à chaque nouveau démarrage.
« Modifié: 11 janvier 2017 à 13:48:51 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #8 le: 03 janvier 2014 à 04:24:15 »
Si vous n'avez pas une box ouverte

Je n'ai testé aucune des possibilités ci-dessous, pas de garantie que ça fonctionne, donc je vous conseille de vous renseigner sur un forum spécialisé avant de tenter quoi que ce soit si vous avez des doutes. Je vous dis juste ce que je sais sur le sujet ;)

Si vous êtes en FTTH : c'est le cas le plus simple... Il devrait suffire de mettre un switch administrable (SPAN) entre l'ONT ou le media converter et la box, s'ils communiquent en ethernet (cela a été fait par exemple avec la Neufbox 5, ou encore avec la Livebox − dans ce dernier cas, j'aurais bien aimé avoir une capture réseau pour en savoir un peu plus, si quelqu'un est capable de refaire la manipulation ça m'intéresse !).

Si vous n'avez pas d'ONT ou de media converter, mais que vous avez une Freebox v6 qui fonctionne avec un SFP, vous devriez probablement pouvoir y brancher un SFP qui permet de recevoir du RJ45 plutôt que de la fibre, puis brancher le SFP qui reçoit de la fibre sur votre switch si ce dernier a un port SFP (ou alors y brancher un convertisseur optique quelconque).

Si vous êtes en FTTLA ou en HFC : je n'y connais pas grand chose, j'ai lu ici qu'il faut une carte TV DVB-C mais je ne sais pas s'il faut beaucoup d'autre matériel.

Si vous êtes en ADSL : c'est plus compliqué. Soit un équipement spécialisé et très cher, soit un montage avec un petit DSLAM (ça reste assez cher mais beaucoup moins) branché à par exemple une Neufbox ouverte bidouillée qui renvoie les données dans la prise téléphonique, mais j'ignore si c'est faisable.
« Modifié: 23 août 2014 à 17:26:08 par Marin »

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 757
  • île-de-France
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #9 le: 03 janvier 2014 à 04:24:26 »
Licence


Cet article est publié sous licence CC BY-SA 4.0.


Ce qui signifie que vous pouvez partager, modifier, réutiliser ce texte sans problème, à partir du moment où vous citez son auteur avec un lien vers la page web d'origine, vous indiquez qu'il est sous cette licence, et vous partagez le travail dérivé sous la même licence ;)



Voilà, c'est la fin de cet article. J'espère qu'il vous a plu, et qu'il vous sera utile (notamment pour améliorer le bypass de la Neufbox) ! :)

Pour toute question, n'hésitez pas à poster sur ce topic. Vous pouvez également m'envoyer un message privé si nécessaire.
« Modifié: 26 octobre 2015 à 18:05:21 par Marin »

VincentAlex

  • Client SFR adsl
  • *
  • Messages: 127
  • Massy (91)
    • openbox4.org
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #10 le: 03 janvier 2014 à 09:28:39 »
Excellent travail Marin !

Electrocut

  • Client Bbox adsl
  • *
  • Messages: 399
  • Pont-Péan (35)
Captures réseau du démarrage et fonctionnement de la Neufbox 6
« Réponse #11 le: 03 janvier 2014 à 10:46:15 »
Excellent article, aussi bien pour la mise en place de l'environnement de capture, que pour les exemples fournis et leur interprétation  8)

A épingler :)

 

Mobile View