Uno DDoS Tres

Arthur Palusci,Elsa François,François Lefez,Joey Giraudeau,Julie Durandeau,Raphaël Gonon

← Uno DDoS Tres · 1-Le déni / 2-Des branches et des feuilles / 3- Le dragon à l'envers / 4- La racine

2-Des branches et des feuilles

GIT

Après s'être remis de l'attaque DDoS, les équipes de Sparklez ont remarqué une activité anormale, cette fois du côté du serveur interne, et ont vite compris qu'une personne malveillante parvenait à rentrer dans le système.

Les administrateurs vous ont donné accès au répertoire de code de leur infrastructure. Ce dernier contient un ensemble de services mis à disposition des différents collaborateurs de l'entreprise. Ils vous apprennent que les différents services ont chacun un nom de projet associé.

Vous avez maintenant une idée de qui pourrait être derrière l'attaque, il est donc temps de se pencher sur la façon dont elle a été faite.

Pour cela, votre mission est de déterminer grâce au dépôt git fourni comment l'attaquant a obtenu un accès au système d'information de l'entreprise.

Retrouvez la méthode et le coupable derrière cette intrusion.

Cote 19 pts

Indices

Des acces VPN ne devraient plus etre présents
Le projet `Oton` peut vous intéresser
`git log --author` : Son nom me dit quelque chose...

Faire son rapport

Résolution

1 — Ouverture et compréhension du fichier.

On constate que nous avons deux fichiers:

  • Un fichier de dump mémoire.
  • Un fichier de dump de disque.

1.1 — Traitement de l'image mémoire.

Lors de l'ouverture avec volatility, on constate qu'il n'est pas possible d'analyser le fichier avec volatility 2 ni 3.

Avec un peu de recherche sur internet, il est possible de trouver le blog d'Antoine Brodin qui explique comment analyser un dump mémoire de FreeBSD avec volatility 3.

Plus bas dans son blog, il référence ces deux dépôts github, l'un avec son plugin volatility, et l'autre avec sa version de dwarf2json permettant d'exporter les symboles du noyau FreeBSD 14.

On peut donc suivre les étapes suivantes :

Cloner le dépôt volatility 3 d'Antoine Brodin :

git clone https://github.com/ant1/volatility3 -b freebsd-support

En lisant la documentation de volatility, le joueur devrait savoir qu'il doit placer le fichier ISF dans le bon répertoire (volatility3/symbols/).

1.2 — Traitement de l'image disque.

On constate que le dump de disque est un fichier .qcow2.

Il suffit donc de monter le système de fichiers avec qemu:

sudo qemu-nbd --connect=/dev/nbd0 vm2008_stripped.qcow2

En essayant de monter le système de fichiers, on constate que le système de fichier n'est pas standard et utilise zfs.
Il suffit d'activer le module du noyau et de l'importer correctement.

sudo apt install zfsutils-linux
sudo modprobe zfs
sudo zpool import
sudo zpool import -f -o readonly=on -o altroot=/mnt/vm pfSense

Notre système de fichier est monté sur /mnt/vm.

2 - Récupérer le nom de l'archive

Comme nous avons récupéré l'archive grâce au flag précédent, il est possible de calculer le checksum et donc de chercher le fichier avec celui-ci avec un find.

Condensat archive

3 - Récupérer le nom du processus

Grâce au volatility d'Antoine Brodin, il est possible de voir quel processus utilise l'archive.

Analyse de l'utilisation de l'archive

4 - Date à laquelle le paquet a été installé et mis à jour

Il faut pour cela connaître où est-ce que pfsense logs les installations / mises à jour de paquets, ou bien de faire un grep -r sur tout le disque.

Le dossier en question est /var/log/system.log.

Analyse de l'installation du paquet

5 - En déduire le type d'attaque

On en déduit que cela correspond à une attaque par chaîne d'approvisionnement, puisque le paquet était installé le 2 octobre et que l'exfiltration a été relevée après la mise à jour du paquet, soit le 10 octobre.