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

Envoyer un CSV en HTTP en PowerShell

Salut à tous, aujourd’hui j’ai eu un besoin d’envoyer un CSV en HTTP en PowerShell. J’ai fait ça pour automatiser un envoi de fichier de résultat de script entre 2 serveurs. Ma grosse contrainte était que je pouvais pas faire du mode ‘Push’ (cf. transfert SCP sans mot de passe) comme je partais d’une zone de sécurité moindre que celle de destination. Et comme, le fichier source venait d’un Windows, je ne voulais pas mettre en place un serveur Web IIS sur le serveur pour un pauvre fichier CSV à transférer 2 fois par jour…

Du coup, j’ai bricolé quelques lignes à la fin de mon script PowerShell pour exposer le fichier en HTTP et permettre au serveur destination de venir les « Puller » pour respecter le sens d’établissement du flux.

Et sans transition le script pour envoyer un CSV en HTTP en PowerShell :

Function New-SimpleHTTPListener {
  Param (         
    [Parameter()] [Int] $Port = 7443
  )
  Begin{
    $listener = New-Object System.Net.HttpListener
    $prefix = "http://localhost:$Port/"
    $listener.Prefixes.Add($prefix)
  }

  Process{

    try{
      $listener.Start()
      Write-Host "Listening on $Port ..."
      $pathwd = Get-Location
      while ($listener.IsListening) {
        $context = $listener.GetContext()

        if ($context.Request.HttpMethod -eq 'GET' -and $context.Request.RawUrl -eq '/quit')
        {
            $listener.Close()
            break;
        }    

        $HTTPresponse = $context.Response
        $HTTPresponse.StatusCode = "200"
        $HTTPResponse.Headers.Add("Content-Type","text/csv") 

        $RequestUrl = $context.Request.Url.OriginalString
        $data = [System.Text.UTF8Encoding]::UTF8.GetBytes([System.IO.File]::ReadAllText("$pathwd"  + '\' + ($RequestUrl.Split('/')[-1])))

        $HTTPresponse.ContentLength64 = $data.Length

        $output = $HTTPresponse.OutputStream

        $output.Write($data,0,$data.Length)

        $output.Close() 
      }
    }catch{
       Write-Warning "Error with Server : $_" 
    }Finally{
      Write-Warning "terminating Server : $_" 
      $listener.Stop()
    }
  }

  End{
    
  }
}

New-SimpleHTTPListener

Alors clairement, c’est du bon gros « quick and dirty … Lire la suite

Boot over vinyl

Bonjour à tous, alors je suis un peu en panne d’inspiration aujourd’hui alors je vais vous relayer une geekeries de haut vol sur du Boot over vinyl postée fin 2020 et qui m’a bien fait marrer. Binni Shah (suivez le compte, hein) qui s’est amusée à stocker un OS freedos sur… Vynil et booté depuis le disque.

C’est sortie ce tweet du 22/11 dernier, petit lien vers ce post de son petit side project pour faire un Boot over vinyl de FreeDos.

Bref, je vous recommande la lecture on apprend 2-3 trucs rigolo, notamment dans le fil tweeter avec une estimation du stockage possible sur un vynil : « A 12″ record @ 33 RPM holds about 40 minutes of music with at least CD quality. That would be 2400 seconds @ 16 bits x 44000 samples per second x 2 channelswhich would be around 420 Mb« . Ça laisse de la place pour quelques idées à la con, non?

Voilà, voilà… because we can ?

Bonne lecture ! Et si certains d’entre vous POC un Boot over vinyl, faite moi signe ! Geekez bien… Lire la suite

DFIR ORC, SEP et PowerShell – MISC Hors Série n°23 !

DFIR ORC, SEP et PowerShell

Bonjour à tous, l’article de cette semaine est dans votre MISC mag Hors série (n°23) de vendredi dernier et porte sur la mise en œuvre de DFIR-ORC pour le Live Forensics au travers d’un Framework PowerShell et de l’antivirus SEP, via sa fonction de contrôle d’intégrité (qui permet d’exécuter du code). Bref, c’est de la bonne lecture comme d’habitude !

Comme d’habitude aussi je vous divulgâche le chapeau :

Antivirus, PowerShell et ORC pour le Live-Forensics

Dans un parc informatique de plusieurs dizaines de milliers de postes, détecter, chercher et récupérer des artefacts à distance est un travail difficile. Les outils de live-forensics et EDR sont les solutions généralement retenues pour ces usages, néanmoins leur mise en œuvre peut s’avérer complexe sur des systèmes d’information modernes et des zones géographiques étendues. Cet article aborde les capacités de déploiement d’outils de live-forensics au travers des antivirus pour permettre la mise en œuvre des outils de référence, comme DFIR-ORC, lorsque c’est nécessaire.

Et pour rendre à mes co-auteurs ce qui leur appartient, je vous rappel que cette article a été rédiger en collaboration avec @neticien1 et @jukebox_re dont je vous invite à suivre les gazouillis. Et pour info, le système à base … Lire la suite