Transformer un tableau avec plusieurs colonnes dates en évènements

Salut à tous, aujourd’hui je voulais m’arrêter sur un cas d’utilisation « à la con 🙂 » de Splunk et plus exactement comment transformer un tableau avec plusieurs colonnes dates en évènements. Niveau contexte, on m’a demandé de suivre les status d’offenses (incident) d’un QRadar dans un Splunk (oui, je sais, ça à l’air con dit comme ça, juste… enfin bref cherchez pas…). Mais comme ce serait trop simple d’avoir des évènements « carrés » qui vous indique ouverture, fermeture, activité, etc. je n’avais à ma disposition que l’option des calls API Rest. Et comme on a beaucoup d’offenses, je ne peux pas non plus faire un fulldump et construire un lookup avec toutes mes offenses. Du coup dernière option jouable faire des exports réguliers des offenses ouvertes ou fermées. En gros, j’exporte mes données avec ces quelques lignes de PowerShell qui interrogent l’API QRadar au début de chaque heure :

function ConvertTo-UnixDateMs ($PSDate) {
        $epoch = [timezone]::CurrentTimeZone.ToLocalTime([datetime]'1/1/1970')
        return (New-TimeSpan -Start $epoch -End $PSDate).TotalSeconds * 1000
}

$start = ConvertTo-UnixDateMs -PSDate ([DateTime]::Today.AddHours($now.Hour - 1))
$end = $start + (2 * 3600 * 1000)

((Invoke-RestMethod ("$urlQradarapi"+"/siem/offenses%3Ffilter%3Dclose_time%20%3E%20"+"$start"+"%20and%20close_time%20%3C%20"+"$end"+"%20or%20start_time%20%3E%20"+"$start"+"%20and%20start_time%20%3C%20"+"$end") -Method GET -Headers @{Version=$apiversion;Accept='application/json';SEC=$apikey}) ConvertTo-Json -Depth 100  | Out-File ("$outoffensesfile") -Encoding utf8)

Et le … Lire la suite

Calculer la distance entre 2 points GPS avec Splunk

Splunk Logo

Salut à tous, ça fait une paye que je vous ai pas fait un peu de Splunk, non ? et récemment au taf j’ai trouvé 5 min pour réimplémenter une requête rigolote pour calculer la distance entre 2 points GPS avec Splunk.

Pour vous faire la genèse du truc, on supervise beaucoup nos connexions VPN depuis le confinement du printemps bizarrement :-). D’ailleurs dans mon article MISC de septembre, je vous ai mis une requête pour surveiller les doubles connexions simultanées d’un(des) utilisateur(s) , qui est également super pratique pour limiter les abus autour des connexions à distances dans un cadre de surcharge de vos passerelles.

Les logs VPN font vraiment parti des logs intéressants car ils ramènent l’analyse au « monde réel ». En effet, les VPNs sont souvent utilisés dans des situations de nomadisme ou de télétravail et combiné avec les informations de géolocalisation : ça fait des chocopics !

Du coup, je vous donne la requête « as-it » :

index=$vpn "Session started" OR "Session ended" | sort 0 user, _time  
| streamstats window=1 current=f values(_time) as last_time values(src_ip) as last_src_ip by user 
| where last_src_ip != src_ip AND _time - last_time < 8*60*60 
| 
Lire la suite