Visualiser une révision

Qu'est-ce que captive.apple.com ?

voxdemonix : révision n°16 (03 septembre 2018 03:07:55)

Qu'est-ce que captive.apple.com
===============================

captive.apple.com (ndlr : désactive l'app _CaptivePortalLogin_ n'empêche pas l’émission de requête) est un service de _Health Check_ utilisé sur [Android](https://fr.wikipedia.org/wiki/Android) afin de connaître l'état de la connexion Wan (internet). Les smartphones/tablettes émettent de façon régulière des requêtes [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) vers http://captive.apple.com/generate_204 tandis que ce dernier répond en affichant "Success ".
Si la machine n'arrive pas à récupérer cette valeur en joignant le site, le smartphone ou la tablette affichera un petit point d'exclamation sur l'écran d'accueil. Il annoncera aussi dans les notifications que la connexion internet n'est pas disponible.

Incidence sur la vie privée
===========================

La machine balance un [User-Agent](https://fr.wikipedia.org/wiki/User-agent) complet avec le modèle de la machine, la version de Dalvik, la version d'Android et la version du Build. Bref une belle emprunte numérique facile à tracker.

Voici un exemple de se qu'on peut voir grâce à netcat ( _nc -l 127.0.0.1 8081 -v_ ). Les données sont bien entendu volontairement falsifiées par respect de la vie privée :

```
root@testmachine:/# nc -l 127.0.0.1 8081 -v
Listening on [127.0.0.1] (family 0, port 8081)
Connection from [127.0.0.1] port 8081 [tcp/tproxy] accepted (family 2, sport 53078)
GET /generate_204 HTTP/1.1
Connection: Close
User-Agent: Dalvik/2.0.0 (Linux; U; Android 6.0; modèle_censuré Build/30.0.A.0.125)
Host: captive.apple.com
Accept-Encoding: gzip
X-Forwarded-For: 192.168.42.2
```



Mettre en place une alternative [EN COURS DE REDACTION/TEST ]
===============================

Note : Si vous mettez cela en place sur le même réseau local (LAN) que vos smartphones, lorsque la connexion internet est coupée ils ne pourront plus le détecter. Placez l'alternative chez un ami, une autre connexion (ex 3/4G) ou autre si vous souhaitez ne pas perturber ce service.

#### Suivez ce tuto pour mettre en place un serveur DNS menteur : [[Tuto/HowTo] Mettre en place un serveur DNS aux noms de domaines parametrable (Rogue DNS)](https://linuxfr.org/wiki/tuto-howto-mettre-en-place-un-serveur-dns-aux-noms-de-domaines-parametrable-rogue-dns)

#### Dans les noms de domaines, renvoyez captive.apple.com vers une [adresse IP](https://fr.wikipedia.org/wiki/Adresse_ip) disponible sur votre réseau local (LAN).

#### Sur cette [adresse IP](https://fr.wikipedia.org/wiki/Adresse_ip) Lan, installez un serveur web et videz l'index.html afin de n'y placer que "Success ". Le plus simple étant d'utiliser [ncat](https://nmap.org/ncat/guide/ncat-usage.html). Pour ce faire : 

1. Téléchargez le script de lancement, rendez-le exécutable puis rangez-le où vous souhaitez. Par défaut le script écoute sur 0.0.0.0:8081, éditez-le si besoin ;)

```
wget https://gitlab.com/voxdemonix/divers-script/raw/master/captive_alternative.bash && sudo chmod +x ./captive_alternative.bash
mv ./captive_alternative.bash /opt/scripts/
```
 * [ncat](https://nmap.org/ncat/) et screen doivent être installé ( _sudo apt-get install -y screen nmap_ )


1. Éditez cron si possible avec un utilisateur disposant de peu de droit (root n'étant nécessaire que pour les ports les plus communs, situé sous les 1000 comme 80 et 443 entre autre)

```
crontab -e
```

1. Et ajoutez la ligne suivante en l'adaptant éventuellement à vos envies :

```
@reboot		( sleep 15 ; /opt/scripts/captive_alternative.bash )
*/10 * * * *	/opt/scripts/captive_alternative.bash
```

* /opt/scripts/ => le chemin ou vous avez rangé le script