Auteur Sujet: Reverse Engineering : Nouveau système de génération de l'option 90 DHCP  (Lu 229322 fois)

0 Membres et 1 Invité sur ce sujet

sloopbun

  • Abonné Orange Fibre
  • *
  • Messages: 16
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #756 le: 25 décembre 2023 à 14:01:09 »
Merci hj67, mon problème était précisément de savoir comment spécifier le duid brut dans pfsense, car il n'accepte pas un duid brut complet en entrée. Je ne sais pas si c'est un bug, ou si c'est comme ça que c'est censé être. Quoi qu'il en soit, j'ai contourné le problème en créant le fichier dhcp6c_duid correct dans opnsense et en le copiant, et je peux voir que dhcp6c reconnaît maintenant le duid correct.

Cependant, je n'ai toujours pas de succès avec ipv6.

Dans le syslog, je vois ces erreurs liées à dhcp6c et j'ai donc enquêté davantage, mais je n'arrive pas à comprendre ce qui cause cette erreur de syntaxe. Une idée ?

Merci pour tout conseil sur ce sujet avec pfsense !

Dec/25/2023 13:31:00: /var/etc/dhcp6c.conf 3: syntax error
Dec/25/2023 13:31:00: /var/etc/dhcp6c.conf 3: fatal parse failure: exiting (1 errors)


[2.7.2-RELEASE][root@pfSense.home]/root: dhcp6c -Df -c /var/etc/dhcp6c.conf -p /var/run/dhcp6c.pid re0.832
Dec/25/2023 13:31:00: extracted an existing DUID from /var/db/dhcp6c_duid: 00:03:00:01:XX:XX:XX:XX:XX:XX
Dec/25/2023 13:31:00: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Dec/25/2023 13:31:00: failed initialize control message authentication
Dec/25/2023 13:31:00: skip opening control port
Dec/25/2023 13:31:00: <3>[interface] (9)
Dec/25/2023 13:31:00: <5>[re0.832] (7)
Dec/25/2023 13:31:00: <3>begin of closure [{] (1)
Dec/25/2023 13:31:00: <3>[send] (4)
Dec/25/2023 13:31:00: <3>[ia-pd] (5)
Dec/25/2023 13:31:00: <3>[0] (1)
Dec/25/2023 13:31:00: <3>end of sentence [;] (1)
Dec/25/2023 13:31:00: <3>[send] (4)
Dec/25/2023 13:31:00: <3>[raw-option] (10)
Dec/25/2023 13:31:00: /var/etc/dhcp6c.conf 3: syntax error
Dec/25/2023 13:31:00: /var/etc/dhcp6c.conf 3: fatal parse failure: exiting (1 errors)
Dec/25/2023 13:31:00: failed to parse configuration file

Ici, ma valeur hexagonale pour l'option raw 11 est identique à mon option dhcp 90 qui fonctionne bien.
Pour le DUID et le dhcp-client-identifier [61], j'utilise l'adresse MAC de mon interface pfsense sfp, et non celle de la livebox. Je suppose que c'est correct, car cela fonctionne pour l'ipv4, mais corrigez-moi si c'est faux.

[2.7.2-RELEASE][root@pfSense.home]/root: cat /var/etc/dhcp6c.conf
interface re0.832 {
send ia-pd 0;
send raw-option 15 00:2b:46:53:56:44:53:4c:5f:6c:69:76:65:62:6f:78:2e:49:6e:74:65:72:6e:65:74:2e:73:6f:66:74:61:74:68:6f:6d:65:2e:4c:69:76:65:62:6f:78:36;
send raw-option 16 00:00:04:0e:00:05:73:61:67:65:6d;
send raw-option 6 00:0b:00:11:00:17:00:18;
send raw-option 11 XX:XX:XX;
script "/var/etc/dhcp6c_wan_dhcp6withoutra_script.sh";
};
id-assoc pd 0 { };

[2.7.2-RELEASE][root@pfSense.home]/root: dhcp6c -Df re0.832
Dec/25/2023 13:31:43: extracted an existing DUID from /var/db/dhcp6c_duid: 00:03:00:01:XX:XX:XX:XX:XX:XX
Dec/25/2023 13:31:43: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Dec/25/2023 13:31:43: failed initialize control message authentication
Dec/25/2023 13:31:43: skip opening control port
Dec/25/2023 13:31:43: cfparse: fopen(/usr/local/etc/dhcp6c.conf): No such file or directory
Dec/25/2023 13:31:43: reset a timer on re0.832, state=INIT, timeo=0, retrans=891
Dec/25/2023 13:31:44: Sending Solicit
Dec/25/2023 13:31:44: a new XID (30ba54) is generated
Dec/25/2023 13:31:44: set client ID (len 10)
Dec/25/2023 13:31:44: set elapsed time (len 2)
Dec/25/2023 13:31:44: send solicit to ff02::1:2%re0.832
Dec/25/2023 13:31:44: reset a timer on re0.832, state=SOLICIT, timeo=0, retrans=1091
Dec/25/2023 13:31:44: receive advertise from fe80::ba0:bab%re0.832 on re0.832
Dec/25/2023 13:31:44: get DHCP option server ID, len 10
Dec/25/2023 13:31:44:   DUID: 00:03:00:01:a0:f3:e4:59:7a:30
Dec/25/2023 13:31:44: get DHCP option client ID, len 10
Dec/25/2023 13:31:44:   DUID: 00:03:00:01:XX:XX:XX:XX:XX:XX
Dec/25/2023 13:31:44: get DHCP option status code, len 2
Dec/25/2023 13:31:44:   status code: unspec failure
Dec/25/2023 13:31:44: server ID: 00:03:00:01:a0:f3:e4:59:7a:30, pref=-1
Dec/25/2023 13:31:44: reset timer for re0.832 to 0.991258
Dec/25/2023 13:31:45: picked a server (ID: 00:03:00:01:a0:f3:e4:59:7a:30)
Dec/25/2023 13:31:45: Sending Request
Dec/25/2023 13:31:45: a new XID (de349f) is generated
Dec/25/2023 13:31:45: set client ID (len 10)
Dec/25/2023 13:31:45: set server ID (len 10)
Dec/25/2023 13:31:45: set elapsed time (len 2)
Dec/25/2023 13:31:45: send request to ff02::1:2%re0.832
Dec/25/2023 13:31:45: reset a timer on re0.832, state=REQUEST, timeo=0, retrans=909
Dec/25/2023 13:31:45: receive reply from fe80::ba0:bab%re0.832 on re0.832
Dec/25/2023 13:31:45: get DHCP option server ID, len 10
Dec/25/2023 13:31:45:   DUID: 00:03:00:01:a0:f3:e4:59:7a:30
Dec/25/2023 13:31:45: get DHCP option client ID, len 10
Dec/25/2023 13:31:45:   DUID: 00:03:00:01:XX:XX:XX:XX:XX:XX
Dec/25/2023 13:31:45: get DHCP option status code, len 2
Dec/25/2023 13:31:45:   status code: unspec failure
Dec/25/2023 13:31:45: dhcp6c Received REQUEST
Dec/25/2023 13:31:45: status code: unspec failure
Dec/25/2023 13:31:45: removing an event on re0.832, state=REQUEST
Dec/25/2023 13:31:45: removing server (ID: 00:03:00:01:a0:f3:e4:59:7a:30)
Dec/25/2023 13:31:45: got an expected reply, sleeping.

"00:03:00:01:<MAC>"
Ensuite, la MAC doit être cohérente avec le dhcp-client-identifier (option 61) envoyé en IPv4 et l'interface physique.

Toutes les infos sont dans le topic Orange DHCP conformité protocolaire 2023
« Modifié: 25 décembre 2023 à 14:30:49 par sloopbun »

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #757 le: 07 juin 2024 à 18:04:33 »
Bonjour !

Je me pose une question.

Est-ce que la valeur de l'option d'authentification peut apparaître en claire sans risque ?

Mon idée est de crypter l'identifiant de connexion et le mot de passe. Je les enregistre dans un fichier de données accessible seulement pour l'administrateur du routeur.
J'essaye de suivre le même principe que pour la sauvegarde d'un mot de passe dans le fichier /etc/shadow. Je pensais crypter cela avec une clé, puis décrypter à
nouveau (à la volée) dans un script afin de générer l'option d'authentification, et finir par détruire la clé immédiatement après.

Le micrologiciel de mon routeur est une image OpenWrt personnalisable (assemblée à partir des sources OpenWrt). Je comptais intégrer le script de @zoc remanié par @nivek1612.
Je me complique éventuellement la vie... mais j'essaye d'incorporer des scripts Shell pour composer automatiquement ma configuration plutôt que de le faire avec un éditeur de texte.
Ça me lasse parce que je manque d'idées. Faire quelque chose de modulable et évanescent pour devenir modulaire.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #758 le: 07 juin 2024 à 18:35:17 »
Actuellement, j'ai quelque chose comme ci-dessous.

{
        "Orange": {
                "authentication": {
                        "login": "$1$FxGwroG/$ym1YLrWgh/d92vH.gNWY40",
                        "password": "$1$DsoAsdN1$e9S6qtcA20vqW6tXzIGAu0"
                },
                "vlan": {
                        "vid": "832"
                },
                "options": {
                        "option_90": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
                }
        }
}

Ainsi, on doit pouvoir changer de FAI comme de paires de chaussette sans tourner bourrique.  :D

xavierg

  • Abonné Orange Fibre
  • *
  • Messages: 102
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #759 le: 07 juin 2024 à 19:49:25 »
Ça ne fonctionnera pas : les secrets ainsi hashés ne peuvent pas être extraits (sauf bruteforce, mais ça va faire un peu cher la requête DHCP...).

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #760 le: 07 juin 2024 à 21:00:53 »
@xavierg : Merci pour la réponse.

Mon message n'a pas été bien compris il me semble.

  • L'identifiant et le mot de passe sont au préalable cryptés avec une clé puis enregistrés dans un fichier.
  • Le fichier de stockage des paramètres FAI est incorporé dans l'arborescence du micrologiciel OpenWrt.
  • Un script va les décrypter au premier amorçage afin de générer l'option d'authentification.
  • Après génération de l'option d'authentification, la clé est détruite.
  • L'option d'authentification est toujours accessible en claire (dans les fichiers et lors d'envois par DHCP).

Je me demande si on peut retrouver l'identifiant et le mot de passe en analysant l'option d'authentification.

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 369
  • XGS-PON et G-PON
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #761 le: 07 juin 2024 à 21:33:30 »
Tu utilises une clef, pour crypter un login/password plutôt que de stocker ce login/password dans un fichier. Ce que tu fais niveau sécurité revient au même que de simplement mettre le login/password dans un fichier.
Si quelqu'un arrive a lire ton fichier, alors il arrive à utiliser la clef, si il utilise la clef alors il décrypte le login/password. Il n'y a qu'une étape en plus.


Personnellement j'utilise:
- https://akhamar.github.io/orange-bypass-debian/30_interfaces/33_configuration_wan.html#dhcp-orange-option-generator
- https://akhamar.github.io/orange-bypass-debian/30_interfaces/33_configuration_wan.html#dhcp-client-ipv4
- https://akhamar.github.io/orange-bypass-debian/30_interfaces/33_configuration_wan.html#dhcp-client-ipv6

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #762 le: 07 juin 2024 à 22:03:37 »
@Mastah : Ce n'est pas ce que j'ai voulu dire.

La clé est enregistrée dans un fichier séparé et sera détruite dès usage, sans délai. Elle ne sert qu'à lire temporairement ces informations (une seule fois, au tout premier amorçage du micrologiciel).

Seuls le mot de passe et l'identifiant de connexion sont cryptés, puis enregistrés dans un fichier ordinaire (non crypté).

xavierg

  • Abonné Orange Fibre
  • *
  • Messages: 102
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #763 le: 07 juin 2024 à 22:09:57 »
Je me demande si on peut retrouver l'identifiant et le mot de passe en analysant l'option d'authentification.

Idem : on peut retrouver :
- le nom d'utilisateur par simple extraction
- le mot de passe par bruteforce du MD5 (à grands coups de GPUs -- pas de rainbow tables vu qu'il y a un salt)

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #764 le: 08 juin 2024 à 07:26:39 »
@xavierg : J'en déduis que ce n'est pas vraiment sécurisé.

@Mastah : Je pensais qu'on pouvait crypter des fragments de données avec une clé. Il semblerait qu'une clé cryptographique serve à crypter l'intégralité d'un fichier.

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 357
  • Antibes (06) / Mercury (73)
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #765 le: 08 juin 2024 à 07:52:56 »
Ca pourrait avoir un intérêt sur un serveur qui fait aussi routeur d’accès et sur lequel de multiples utilisateurs ont un compte (mais du coup autant changer les droits d’accès au fichier, voir utiliser les ACLs si vraiment parano), mais sur un routeur franchement utilité zéro, car s’il est compromis l’attaquant aura quoi qu’il arrive accès au mécanisme de déchiffrement, soit pourra directement utiliser tcpdump pour avoir le contenu de l’option 90 en clair sur le port WAN.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 249
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #766 le: 08 juin 2024 à 10:06:03 »
@zoc : J'essaye d'ajouter plusieurs niveaux de protection comme sur un serveur.

Je vais créer un utilisateur courant recevant des droits administrateurs via sudo et désactiver le compte « root ». Suivre les bonnes pratiques.
J'ai conscience que ce genre de mesures peuvent devenir fragiles mais cela me permet de progresser par petit bout.

xavierg

  • Abonné Orange Fibre
  • *
  • Messages: 102
Reverse Engineering : Nouveau système de génération de l'option 90 DHCP
« Réponse #767 le: 08 juin 2024 à 13:38:28 »
@xavierg : J'en déduis que ce n'est pas vraiment sécurisé.

Tout à fait. Le MD5 avec salt est un enjoliveur pour dire que le mot de passe ne transite pas en clair, mais ça s'arrête là.

Plus globalement, le chiffrement n'est réellement utile que lorsque le déchiffrement est un processus interactif, c-à-d quand un humain confirme (par la saisie d'un secret) qu'il est bien possible d'accéder au secret chiffré à un instant t. Si tu automatises, par un moyen ou un autre, le déchiffrement du secret (par exemple en stockant la clé et éventuellement la passphrase de la clé), alors ta sécurité ne dépend que des permissions Unix des fichiers concernés.

Et puisqu'on parle de permissions Unix : rappelons que les permissions Unix sont LA première bonne pratique à mettre en place. Typiquement, en supposant que ton client DHCP tourne en root, le ou les fichiers contenant le mot de passe Orange et/ou l'option 90 doivent appartenir à root, sans permission aucune pour le groupe et les autres utilisateurs. Cela permet de garantir que, pour accéder à ce secret, un attaquant devra réussir à obtenir un accès root, autrement dit le contrôle de toute la machine. À ajuster si le client DHCP tourne avec un utilisateur non-privilégié (root:user, 0640).

@Mastah : Je pensais qu'on pouvait crypter des fragments de données avec une clé. Il semblerait qu'une clé cryptographique serve à crypter l'intégralité d'un fichier.

On peut, oui. On utilise une clé pour chiffrer des données. On peut stocker ces données dans un fichier, entourées ou non d'autres données, chiffrées ou non. Il n'existe pas de réelle contrainte liant chiffrement et fichiers.
Par contre, pour revenir sur tes essais, le format shadow ne chiffre pas les mots de passe, il les hash. C'est donc un format qui donne l'impression de contenir de petits bouts de données chiffrées alors qu'en fait il ne contient que des hashs de mots de passe. L'accès au contenu de ce fichier reste protégé par des permissions Unix car un accès libre à ces hashs ouvre la porte à des attaques par bruteforce.