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.
On constate que nous avons deux fichiers:
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/).
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.
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.

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

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.

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.