Bonjour à tous, aujourd’hui j’ai du réaliser un rapport d’une campagne de phishing réalisée avec Gophish. Vous me connaissez, je suis pas du genre à aimer bosser dans Excel, du coup j’ai mis les résultats directement dans Splunk. Gophish est un super outil mais il a un format de log chelou a base de CSV avec du Json dedans. Du coup, on regarder rapidement comment extraire un champs en JSON dans Splunk. Alors je ne parle pas de log en format entièrement en JSON, hein, je parle bien d’évènements de « normaux » (syslog, CSV, texte, etc) avec un champs en JSON au milieu. Par exemple, un log raw de Gophish ressemble à ça :
7,jean.dupont@geekeries.org,2020-11-03T14:36:52Z,Clicked Link,"{""payload"":{""rid"":[""fKteVMb""]},""browser"":{""address"":""12.34.56.78"",""user-agent"":""Mozilla/5.0 (Linux; U; Android 11; fr-fr; Mi MIX 2S Build/QKQ1.191828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3579.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.42.1-g""}}"
On voit bien ici que le dernier élément du CSV (colonne « details » d’un export raw de Gophish) est un bon gros JSON des familles. Du coup c’est pas idéal à extraire en field extraction classique avec le source type et transform dans Splunk puisque le Json change fortement en fonction du type d’évènement. Bref, c’est un peu relou. Par contre, en search time dans Splunk : on a la commande spath : qui permet d’extraire un champs en JSON dans Splunk directement dans le SPL, et fait donc exactement ce qu’on veut exemple :
index=gophish | spath input=details
Et qui vous rajoutera les champs payload, rid, browser, address et user-agent pour l’évènement que je vous ai donné en exemple au dessus. Cette fonctionnalité est super utile, car elle permet de gérer des formats CSV « hybride » avec des sous champs qui contiennent des formats plus complexe. Cela permet une expressivité vraiment intéressante dans un format simple comme le CSV quand vous générer vos log vous même.
Au final ça m’a permis de faire le dashboard zolie tout plein ci-dessous pour automatiser le rapport de résultats de mes campagnes avec gophish.
Voilou, comme j’ai un article bref pour aujourd’hui. Je de la conclusion pour vous rappeler l’existence des commandes xpath et xmlkv qui permettent la même chose en syntaxe xpath et avec du xml. C’est tout pour aujourd’hui pour moi, j’espère que ca vous aura donné des idées… d’ici à la prochaine Splunkez bien !