
Strumento estensibile per il triage degli host per i red team, che carica dinamicamente controlli sensibili all'OpSec per raccogliere informazioni su utenti, domini, privilegi e credenziali da endpoint Windows tramite execute-assembly.
Triage host estensibile e configurabile.
SitRep è pensato per fornire un'alternativa leggera ed estensibile per il triage degli host. I controlli vengono caricati dinamicamente a runtime da file indipendenti. Ciò consente agli operatori di modificare rapidamente i controlli esistenti o aggiungerne di nuovi secondo necessità.
I controlli sono raggruppati per categoria e possono essere contrassegnati come OpSec sicuri/non sicuri. I controlli non sicuri vengono caricati solo se viene fornito il flag /AllowUnsafe.
I risultati interessanti sono evidenziati con un "[*]"
I controlli sono suddivisi in categorie. Ciò consente di visualizzarli in gruppi appropriati. I seguenti controlli sono attualmente disponibili:
Environment
Difese
Permessi
Software
Credenziali
I seguenti controlli sono attualmente contrassegnati come non sicuri per OpSec:
Dovresti rivedere questa configurazione e aggiornare i tag OpSec secondo necessità.
Tutti i controlli sono abilitati per impostazione predefinita. Tuttavia, poiché i controlli vengono caricati dinamicamente, è possibile disabilitarli.
Disabilitazione di un controllo
CheckBase include una proprietà booleana 'Enabled', che per impostazione predefinita è true. Può essere impostata nella classe derivata aggiungendo un costruttore. L'esempio seguente disabilita il controllo CurrentUser (CurrentUser.cs):
public CurrentUser()
{
base.Enabled = false;
}
Esclusione dei controlli dalla build
Poiché i controlli vengono caricati dinamicamente, è possibile escludere un controllo dalla build senza altre modifiche. Il modo più semplice è fare clic con il pulsante destro del mouse sulla classe del controllo in Visual Studio e selezionare "Escludi dal progetto". Il controllo può essere riaggiunto selezionando "Includi nel progetto" dallo stesso menu contestuale.
Questo approccio ha il vantaggio di rimuovere il codice dall'artefatto compilato.
Esegui tutti i controlli
SitRep.exe /AllowUnsafe
Esegui solo controlli sicuri per OpSec (predefinito)
SitRep.exe
SitRep è progettato per essere eseguito tramite execute-assembly (o equivalente)

I controlli ereditano da CheckBase e implementano l'interfaccia ICheck. Questo impone i pattern necessari per il caricamento dinamico dei controlli. Altri metodi e classi possono essere aggiunti secondo necessità.
L'interfaccia ICheck espone le seguenti proprietà e metodi:
Le classi derivate devono sovrascrivere il metodo 'ToString()' definito in CheckBase. Questo metodo viene chiamato quando si visualizza l'output di ogni controllo.
L'accesso ai metodi nativi è fornito tramite classi nella cartella 'NativeMethods'. Ogni classe è nominata in base alla DLL con cui interagisce.
I controlli sono responsabili di fornire la propria gestione degli errori. I controlli attuali racchiudono l'intero metodo 'check' in un blocco try-catch, l'uso di questo pattern è incoraggiato.
Di seguito è mostrato un esempio di controllo vuoto
using SitRep.Interfaces;
using System;
namespace SitRep.Checks.Software
{
class ExampleCheck : CheckBase, ICheck
{
public bool IsOpsecSafe => true;
public int DisplayOrder => 1;
public Enums.Enums.CheckType CheckType => Enums.Enums.CheckType.Credential;
public void Check()
{
try
{
throw new NotImplementedException();
}
catch
{
Message = "Check failed [*]";
}
}
public override string ToString()
{
throw new NotImplementedException();
}
}
}
I PR sono benvenuti. Assicurati che i controlli siano autonomi (cioè non dipendenti dall'output di altri controlli). Per quanto possibile, i controlli dovrebbero essere autocontenuti, con tutto il codice monouso presente all'interno della classe del controllo.
Hai mai provato a simulare un endpoint Windows unito a un dominio? Ecco perché.
SitRep utilizza codice da Seatbelt, SharpUp e post casuali di StackOverflow. I crediti sono stati aggiunti dove appropriato.