Evènement : Sthack édition 2022
Challenge : Vidéosurveillance
Auteur: ErwanB
Le challenge commence avec un PCAP qu'il faut analyser pour ensuite se connecter sur un serveur puis pivoter et enfin récupérer le mot de passe.
# Description
Vous êtes un cyber détective.
On vous propose un contrat dont la rémunération de 10 BTC dépasse largement ce que l'on vous propose habituellement.
Pourtant votre commanditaire vous demande de récupérer le flux vidéo d'une caméra de vidéosurveillance !
Vous n'en revenez pas.
Quel genre de vidéo peut bien valoir un tel prix ?!
Votre équipier à déjà pris la main sur un switch et vous donne la capture wireshark d'un trafic reseau qu'il a pu intercepter.
Il dit qu'avec ça vous devriez pouvoir entrer...
## But du jeu
Vous disposez d'une capture wireshark, final.pcapng qui constituera votre point d'entrée sur un réseau compose de plusieurs machines.
Vous devez analyser le pcap pour touver le réseau, compromettre deux machines au sein de ce réseau et recuper un flux video.
Le flag se trouve dans le flux video.
Bonne chance !
# Write-Up Du challenge
Dans un premier temps, on ouvre le fichier PCAP et on essaye de trouver des requêtes utiles.
Très peu sont faites via TCP et aucune d'entre elles ne sont exploitable.

Il nous reste donc à parcourir les paquets UDP. On remarque une grande quantité de traffic via le protocole RTP.

Le protocole RTP, ou Real-Time Transport Protocol, est un protocole de communication permettant le transport de données soumises à des contraintes de temps réel, tels que des flux média audio ou vidéo (https://fr.wikipedia.org/wiki/Real-time_Transport_Protocol).
On aimerait donc extraire ce flux afin de l'analyser en profondeur plus tard.
Grace à la documentation de Wireshark, on apprend qu'il y a un onglet pour analyser directement les trames RTP : https://www.wireshark.org/docs/wsug_html_chunked/_rtp.html
Pour ce faire, il suffit d'aller dans l'onglet **Téléphonie**, **RTP**, **Flux RTP**.
On peut voir que l'on retrouve bien notre flux :

On peut donc par la suite le jouer.

On entend donc : `"Salut, j'ai vu dans les logs du pfsence que tu n'arrives pas à te connecter en SSH, le numéro de port est bon, je te redonne le mot de passe, c'est: sofitel2011"`.
On en déduit donc qu'il faut se connecter en SSH à sur une des adresses IP présente dans le PCAP.
Grace à l'onglet **Statistique**, **Endpoints** de Wireshark, on arrive à lister les adresses IPv4 capturées par Wireshark.

En faissant un scan NMAP sur les adresses IP publiques et notamment sur **212.47.234.75**, on découvre des ports ouverts :
```
Open 212.47.234.75:22
Open 212.47.234.75:80
Open 212.47.234.75:32712
```
La connexion en SSH sur le port 22 avec le mot de passe **sofitel2011** ne fonctionne pas.
Le port 32712 n'étant pas commun, on essaye donc une conexion SSH dessus avec l'user "root" et BINGO ça marche!

Malheureusement, il n'y a pas de flag sur cette machine.
On va essayer de donc scanner le LAN, notament en analysant la table ARP.
```
root@jump_host:~# arp -a
? (172.16.0.1) at 02:42:61:c8:cb:9f [ether] on eth0
? (172.16.0.5) at <incomplete> on eth0
? (172.16.0.7) at <incomplete> on eth0
sthack-videosurveillance_rebond2_1.frontend (172.16.0.142) at 02:42:ac:10:00:8e [ether] on eth0
```
La machine **sthack-videosurveillance_rebond2_1** semble être la prochaine machine à compromettre.
On essaye de s'y connecter en SSH avec les identifiants précédement utilisés et BINGOO2, on est connecté !
```
root@jump_host:~# ssh root@172.16.0.142
root@172.16.0.142's password:
Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 5.4.0-96-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Sat May 21 02:27:17 2022 from 172.16.0.10
root@video_server:~# id
uid=0(root) gid=0(root) groups=0(root)
root@video_server:~# hostname
video_server
```
La machine s'appelle **video_server**, on en déduit donc qu'il faut probablement extraire un flux vidéo.
Pour ce faire, on va dans un premier temps lister les processus actifs:

Une ligne saute tout de suite aux yeux: `wget http://camera:8080/ -`.
On va donc récuperer le flux de la caméra :
```curl http://camera:8080/ -o outpt```
Finalement, il ne nous reste plus qu'à récupérer le flux vidéo et l'ouvrir.
Pour cela, on va utiliser l'utilitaire mplayer (c'est un lecteur multimédia libre et open source) et avec la commande `mplayer output`, on récupère la vidéo du flag.
