Extraire un champs en JSON dans Splunk pour Gophish

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.

extraire un champs en JSON dans Splunk

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 !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.