Auteur Sujet: Routeur en mode pont pour capturer le trafic Orange.  (Lu 2136 fois)

0 Membres et 1 Invité sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« le: 06 août 2024 à 18:19:59 »
Introduction

Une capture réseau affiche que mes paquets envoient des valeurs erronées dans certaines options. J'aurais voulu récupérer le code hexadécimal contenu dans certaines options en analysant
le trafic envoyé par la Livebox sur le réseau Orange. En effet, je n'ai pas la même Livebox que dans le tutoriel OpenWrt.

TLDR; (Too Long Didn't Read!!)

Piste à explorer

C'est facile de charger une image alternative de micrologiciel grâce à une carte mémoire. Mais je suis novice et j'appréhende sur la mise en œuvre. Le mieux serait de pouvoir confirmer sur la
façon de faire.

J'envisageais de rediriger le trafic au niveau de la couche liaison (Ethernet) via nftables. Selon le wiki, on peut dupliquer les trames non modifiées vers une autre interface au crochet ingress
d'une table de la famille netdev. Je suppose que deux ports du commutateur seront connectés respectivement à ma station et à la Livebox. Les trames dupliquées seront envoyées sur
l'interface correspondant au port du commutateur branché à ma station. Et mon module optique inséré dans la cage SFP de mon routeur fera la liaison optique vers le réseau Orange.



Description de mon problème

Je n'ai aucune expérience et je ne sais pas si cela est réalisable... Il faudrait que je puisse recevoir les trames dupliquées sur ma station sans pour autant produire des brèches de sécurité. Le principe
est encore flou dans mon esprit. L'idée serait de faire abstraction de ma station et d'envoyer les trames à travers un pont reliant l'interface du réseau Orange à celle de la Livebox.

Comment empêcher que des paquets soient redirigés vers le routeur en mode pont ? Pour éviter que le trafic externe soit détourné en vue d'attaquer mon routeur. Est-il nécessaire de dupliquer les trames
ou faut-il les capturer via un processus tcpdump, localement sur le routeur ? Comment gérer les trames dupliquées ?
« Modifié: 12 août 2024 à 09:13:35 par basilix »

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #1 le: 06 août 2024 à 21:44:12 »
Les paquets du réseau local transitent par un pont dans le boîtier Internet. Cela peut paraître évident. Les stations situées sur le même réseau
peuvent communiquer sans routage grâce au commutateur intégré dans le boîtier Internet. Un commutateur Ethernet est un synonyme de pont.
Néanmoins, ce pont est transparent pour l'utilisateur. On dit de se connecter à l'adresse IP du routeur et non pas à l'adresse IP de l'interface du
pont. Puis d'expliquer que n'importe quel port du commutateur peut recevoir une trame dont l'adresse Ethernet de destination est celle de la carte
réseau reliée au commutateur elle-même associée à l'adresse IP de la passerelle définie dans les paramètres réseaux des stations.

Je précise car cela convoie l'impression que les paquets passent directement par le crochet prerouting et non indirectement par les crochets
prerouting bridge, input bridge et prerouting. N'hésitez surtout pas à me dire si je me trompe !

hd

  • Abonné Orange Fibre
  • *
  • Messages: 30
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #2 le: 06 août 2024 à 22:26:01 »
Je précise car cela convoie l'impression que les paquets passent directement par le crochet prerouting et non indirectement par les crochets
prerouting bridge, input bridge et prerouting. N'hésitez surtout pas à me dire si je me trompe !

peut être toquer un coup à la porte des forums openwrt pour demander aux experts dans le meilleur anglais ;)

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #3 le: 07 août 2024 à 05:45:34 »
Bonne idée !

Je vais lire le fil de discussion à propos de mon commutateur GS108Tv3. Cela ne fait que 97 posts à lire.

[09:00] Je vais l'installer sur mon commutateur pour voir. Mais OpenWrt va probablement retirer le support Realtek dans la prochaine version.
« Modifié: 07 août 2024 à 09:03:52 par basilix »

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #4 le: 07 août 2024 à 11:26:10 »
Voici la configuration OpenWrt par défaut (v23.05.4) d'un commutateur Netgear GS108Tv3.

root@OpenWrt:~# uci export network
package network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd32:2ebf:11a8::/48'

config device 'switch'
        option name 'switch'
        option type 'bridge'
        option macaddr '39:e4:84:7a:d0:60'

config bridge-vlan 'lan_vlan'
        option device 'switch'
        option vlan '1'
        option ports 'lan1 lan2 lan3 lan4 lan5 lan6 lan7 lan8'

config device
        option name 'switch.1'
        option macaddr '39:e4:84:7a:d0:60'

config interface 'lan'
        option device 'switch.1'
        option proto 'static'
        option ipaddr '192.168.1.4'
        option netmask '255.255.255.0'
        option ip6assign '60'

root@OpenWrt:~# uci export dhcp
uci: Entry not found

root@OpenWrt:~# uci export firewall
package firewall

config defaults
        option syn_flood '1'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

root@OpenWrt:~# nft list ruleset
table inet fw4 {
        chain input {
                type filter hook input priority filter; policy drop;
                iifname "lo" accept comment "!fw4: Accept traffic from loopback"
                ct state established,related accept comment "!fw4: Allow inbound established and related flows"
                tcp flags syn / fin,syn,rst,ack jump syn_flood comment "!fw4: Rate limit TCP syn packets"
                iifname "switch.1" jump input_lan comment "!fw4: Handle lan IPv4/IPv6 input traffic"
                jump handle_reject
        }

        chain forward {
                type filter hook forward priority filter; policy drop;
                ct state established,related accept comment "!fw4: Allow forwarded established and related flows"
                iifname "switch.1" jump forward_lan comment "!fw4: Handle lan IPv4/IPv6 forward traffic"
                jump handle_reject
        }

        chain output {
                type filter hook output priority filter; policy accept;
                oifname "lo" accept comment "!fw4: Accept traffic towards loopback"
                ct state established,related accept comment "!fw4: Allow outbound established and related flows"
                oifname "switch.1" jump output_lan comment "!fw4: Handle lan IPv4/IPv6 output traffic"
        }

        chain prerouting {
                type filter hook prerouting priority filter; policy accept;
                iifname "switch.1" jump helper_lan comment "!fw4: Handle lan IPv4/IPv6 helper assignment"
        }

        chain handle_reject {
                meta l4proto tcp reject with tcp reset comment "!fw4: Reject TCP traffic"
                reject comment "!fw4: Reject any other traffic"
        }

        chain syn_flood {
                limit rate 25/second burst 50 packets return comment "!fw4: Accept SYN packets below rate-limit"
                drop comment "!fw4: Drop excess packets"
        }

        chain input_lan {
                jump accept_from_lan
        }

        chain output_lan {
                jump accept_to_lan
        }

        chain forward_lan {
                jump accept_to_wan comment "!fw4: Accept lan to wan forwarding"
                jump accept_to_lan
        }

        chain helper_lan {
        }

        chain accept_from_lan {
                iifname "switch.1" counter packets 665 bytes 56128 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
        }

        chain accept_to_lan {
                oifname "switch.1" counter packets 176 bytes 14200 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
        }

        chain input_wan {
                meta nfproto ipv4 udp dport 68 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCP-Renew"
                icmp type echo-request counter packets 0 bytes 0 accept comment "!fw4: Allow-Ping"
                meta nfproto ipv4 meta l4proto igmp counter packets 0 bytes 0 accept comment "!fw4: Allow-IGMP"
                meta nfproto ipv6 udp dport 546 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCPv6"
                ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { mld-listener-query . no-route, mld-listener-report . no-route, mld-listener-done . no-route, mld2-listener-report . no-route } counter packets 0 bytes 0 accept comment "!fw4: Allow-MLD"
                icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply, nd-router-solicit, nd-router-advert } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
                icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, parameter-problem . admin-prohibited, nd-neighbor-solicit . no-route, nd-neighbor-advert . no-route } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
                jump reject_from_wan
        }

        chain output_wan {
                jump accept_to_wan
        }

        chain forward_wan {
                icmpv6 type { destination-unreachable, time-exceeded, echo-request, echo-reply } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
                icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"
                meta l4proto esp counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-IPSec-ESP"
                udp dport 500 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: Allow-ISAKMP"
                jump reject_to_wan
        }

        chain accept_to_wan {
        }

        chain reject_from_wan {
        }

        chain reject_to_wan {
        }

        chain dstnat {
                type nat hook prerouting priority dstnat; policy accept;
        }

        chain srcnat {
                type nat hook postrouting priority srcnat; policy accept;
        }

        chain srcnat_wan {
                meta nfproto ipv4 masquerade comment "!fw4: Masquerade IPv4 wan traffic"
        }

        chain raw_prerouting {
                type filter hook prerouting priority raw; policy accept;
        }

        chain raw_output {
                type filter hook output priority raw; policy accept;
        }

        chain mangle_prerouting {
                type filter hook prerouting priority mangle; policy accept;
        }

        chain mangle_postrouting {
                type filter hook postrouting priority mangle; policy accept;
        }

        chain mangle_input {
                type filter hook input priority mangle; policy accept;
        }

        chain mangle_output {
                type route hook output priority mangle; policy accept;
        }

        chain mangle_forward {
                type filter hook forward priority mangle; policy accept;
        }
}

Le seul truc bizarre c'est l'affichage de noms symboliques erronés pour les codes ICMPv6.

                icmpv6 type . icmpv6 code { packet-too-big . no-route, parameter-problem . no-route, parameter-problem . admin-prohibited } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Forward"

root@OpenWrt:~# nft -n list chain inet fw4 input_wan
        chain input_wan {
                meta nfproto 2 udp dport 68 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCP-Renew"
                icmp type 8 counter packets 0 bytes 0 accept comment "!fw4: Allow-Ping"
                meta nfproto 2 meta l4proto 2 counter packets 0 bytes 0 accept comment "!fw4: Allow-IGMP"
                meta nfproto 10 udp dport 546 counter packets 0 bytes 0 accept comment "!fw4: Allow-DHCPv6"
                ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { 130 . 0, 131 . 0, 132 . 0, 143 . 0 } counter packets 0 bytes 0 accept comment "!fw4: Allow-MLD"
                icmpv6 type { 1, 3, 128, 129, 133, 134 } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
                icmpv6 type . icmpv6 code { 2 . 0, 4 . 0, 4 . 1, 135 . 0, 136 . 0 } limit rate 1000/second counter packets 0 bytes 0 accept comment "!fw4: Allow-ICMPv6-Input"
                jump reject_from_wan
        }

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #5 le: 07 août 2024 à 11:52:59 »
Donc cela confirme ce que je pensais.

L'interface réseau du commutateur est un pont intégré dans le micrologiciel. Même si l'affirmer revient à enforcer des portes ouvertes. Néanmoins, vu que je manque
de connaissances, je trouve que c'est un point de départ.

Le commutateur a une interface WAN non configurée, probablement pour effectuer les mises à niveau du micrologiciel. Cela équivaudrait en quelque sorte à un pare-feu désactivé pour
les stations du réseau local.

    chain accept_from_lan {
            iifname "switch.1" counter packets 665 bytes 56128 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
    }

    chain accept_to_lan {
            oifname "switch.1" counter packets 176 bytes 14200 accept comment "!fw4: accept lan IPv4/IPv6 traffic"
    }

Par contre, il n'y a aucun filtrage au niveau de la couche pont.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #6 le: 07 août 2024 à 15:00:20 »
Je crois que j'ai trouvé un schéma simplifié.

Convertir mon routeur en mode pont (cage SFP). Envoyer les trames dupliquées vers ma station (mise en mirroir). Wireshark pourra capter ces trames pour les analyser (mode promiscuité).
La grande inconnue est de savoir si la Livebox émet ses paquets sur son port RJ45 lorsque le port fibre n'est pas branché.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #7 le: 07 août 2024 à 19:04:22 »
Je sèche.

J'aurais souhaité désactiver totalement IPv4 et IPv6.

root@OpenWrt:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc mq state UP qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5893:27ff:fe5b:bcee/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether aa:29:34:93:94:2c brd ff:ff:ff:ff:ff:ff
4: wan@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
5: lan1@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
6: lan2@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
7: lan3@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
8: lan4@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
9: sfp2@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5a:93:27:5b:bc:ee brd ff:ff:ff:ff:ff:ff
10: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 34:4f:43:62:70:00 brd ff:ff:ff:ff:ff:ff
11: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 34:4f:43:62:70:00 brd ff:ff:ff:ff:ff:ff

root@OpenWrt:/# uci export network
package network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1/8'
        option ip6addr '::1/128'

config device 'switch'
        option name 'switch'
        option type 'bridge'
        list ports 'eth1'
        list ports 'sfp2'
        list ports 'wan'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

L'objectif est de configurer un pare-feu transparent. Cela ne correspond pas vraiment au type de pare-feu tel que sur le wiki OpenWrt ; je ne crois pas qu'il soit nécessaire de créer les interfaces wan et lan comme mentionné.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #8 le: 07 août 2024 à 19:12:37 »
La commande ci-dessous semble désactiver IPv6.

root@OpenWrt:/# sysctl -w net.ipv6.conf.all.disable_ipv6='1'

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #9 le: 07 août 2024 à 19:22:36 »
Par contre, le routeur n'a pas d'horloge matérielle et se met à l'heure via NTP. C'est sûrement problématique sans interface réseau avec une adresse, non ?

rooot

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 2 168
  • 🔵🔵🔵🔵⚪⚪⚪⚪🔴🔴🔴🔴
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #10 le: 07 août 2024 à 23:45:16 »
je crois que personne n'a compris ce que tu essaies de faire. Si on s'en remet au titre du topic, tu essaies de capturer le trafic de ton routeur. il y a tcpdump pour ca.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 425
Routeur en mode pont pour capturer le trafic Orange.
« Réponse #11 le: 08 août 2024 à 07:21:41 »
J'exprime mal ma pensée. Non, je veux placer un équipement réseau entre le réseau Orange et la Livebox pour analyser les flux de la Livebox.
Or, seul mon routeur peut intégrer un module SFP permettant de réaliser la jonction avec le réseau optique Orange. Donc, je charge un
micrologiciel OpenWrt adapté pour que l'appareil se comporte comme un commutateur Ethernet (non administrable) disposant d'un module SFP.
Je suis persuadé que l'on peut convertir l'appareil ayant auparavant un rôle de routeur en un commutateur en le configurant en mode pont.
Mais il ne faut pas le rendre apparent sur l'Internet pour des raisons évidentes de sécurité. Cet appareil fait intermédiaire entre les équipements
Orange et la Livebox tout en filtrant le trafic corrélé à la Livebox afin d'être dupliqué vers ma station (mise en miroir). C'est un pare-feu transparent.
L'idée est aussi d'éviter que le trafic venant de l'extérieur parvienne au mauvais endroit. Comme par exemple être redirigé vers ma station.
Je précise que la conversion du routeur en commutateur n'est fait que pour durer temporairement, de façon ponctuelle.