En pleine période de recrutement, l'ordinateur de la responsable RH semble être un bon point de départ. Il faut comprendre comment l'attaquant a pu infiltrer le système.
Votre instinct d’enquêteur vous chuchote à l’oreille de commencer votre investigation du côté du PC du service RH. Cette machine, sous Windows 11 et équipée de la suite Office 365, constitue souvent la première ligne de contact avec l’extérieur, notamment par le biais des courriels professionnels.
D’après la responsable RH, elle utilise principalement son PC pour envoyer et recevoir des mails professionnels, souvent accompagnés de pièces jointes en PDF, Word ou Excel.
Une politique de sécurité récemment instaurée empêche l’exécution des macros Word, réduisant ainsi certains vecteurs d’attaque classiques.
Dans un premier temps il convient d'avoir une première phase de recherche.
On retrouve dans les ressources données aux participants :
- Les logs du serveur Web
- FilouBook (Facebook like) avec des photos, et commentaires des personnes
Voici une proposition de solution du scénario:
La première étape consiste à analyser les logs du serveur. Dans ces logs, il est possible de se concentrer sur plusieurs champs :
- L'adresse IP, permettant de récupérer une localisation associée
- L'heure de la requête, permettant de savoir quand l'attaque a eu lieu
- Le user agent, dont nous pouvons extraire des informations telles que le navigateur utilisé, et savoir si cet user agent a été utilisé dans une attaque avec des bots ou non.
Il est attendu de commencer par analyser les user agents. Pour cela, il est possible d'utiliser le package NodeJS isbot pour filtrer les informations.
Voici un exemple de script pouvant être réalisé :
Le data.json contient les user agents sous format d une liste de chaînes de caractères, chacune correspondant à une ligne de log : {"userAgent":[...]}
const { isbot } = require("isbot");
const { userAgent } = require("./data.json");
let notBot = 0;
let notBotList = [];
// Data is a json file with a list of all user
// agent found in logs
userAgent.forEach((elem) => {
var res = isbot(elem);
if (res === false) {
notBot += 1;
notBotList.push(elem);
}
console.log(isbot(elem));
});
console.log("Not bot count: " + notBot);
notBotList.forEach((elem) => {
console.log(elem);
});
Une fois la liste des user agents valides obtenue, nous
pouvons filtrer le fichier de logs en fonction des
informations obtenues.
À noter que le user agent à identifier comme celui de l'attaquant
est le suivant :
Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0.
Cependant, à cette étape, seule de l'intuition permet
de penser qu'il s'agit en effet du user agent que
nous cherchons, et la suite des étapes sont nécessaires pour
atteindre toute conclusion.
La seconde étape est de croiser les logs produit par le service
fail2ban et ceux de nginx pour constater qu'une requête a été faite avec un
user agent légitime et n'a pas été bannie.
Ce faisant il est possible de conclure que l'adresse IP de
l'attaquant est celle utilisée dans cette requête.
Par ailleurs, en regardant le pays associé à l'adresse IP de
la requête il est possible d'avoir un indice sur la deuxième
étape.
Nous cherchons un coupable venant de l'équipe d'IncRizz, dont les membres publient régulièrement sur le réseau social.
En croisant les informations précédemment obtenues, il est possible d'accélérer l'analyse des informations sur FilouBook. Tout d'abord, en faisant un filtre sur la localisation associée au post, on réduit grandement la liste des posts à analyser.
En regardant avec une attention particulière les différentes photos, on peut remarquer sur l'une d'entre elles le logo de l'entreprise attaquée.
Ce détail nous permet de comprendre que l'un des employés ayant mené l'attaque est à l'endroit associé à la photo (image 62).
En regardant les métadonnées de la photographie, on voit que l'heure de prise de la photo correspond à deux heures près à l'heure de l'attaque. On voit aussi une description assez sarcastique associée au post.
Le nom de l'attaquant peut finalement être retrouvé dans ces mêmes métadonnées. On notera qu'il ne s'agit pas du nom utilisée pour le post de l'image.