
Strumenti di ricognizione per attacchi mirati in C#
Questo è un assembly .NET personalizzato che esegue una serie di attività di situational awareness. Sono disponibili diversi gruppi di funzionalità:
Non sapevo che GhostPack fosse in sviluppo quando ho scritto questo; alla fine abbiamo rilasciato i nostri strumenti più o meno nello stesso periodo. La realtà è che GhostPack ora è molto più ricco di funzionalità. Sto rimuovendo la funzione PrivescCheck perché SharpUp copre tutte le sue funzionalità e molto altro.
Il punto chiave è che tutto è implementato in .NET puro, quindi niente PowerShell.
È configurato e controllato tramite parametri da riga di comando, rendendolo adatto per l'uso con la direttiva execute-assembly di Beacon.
Questo ottiene una serie di informazioni dall'host. Attenzione: potrebbe esserci MOLTO output. Mostrerà:
Il verbo 'basic' deve essere passato sulla riga di comando, seguito dal controllo specifico richiesto. Se la parola 'all' viene passata come secondo parametro, verranno eseguiti tutti i controlli.
| Controllo | Descrizione |
|---|---|
| env | Mostra tutte le variabili d'ambiente. |
| info | Mostra l'indirizzo IP dell'host e l'identificatore della versione del sistema operativo (major/minor). |
| mru | Cerca vari elenchi "usati più di recente". Attualmente includono la cronologia della casella Esegui e l'MRU dei file e dei percorsi di Office per tutte le versioni di Word, Excel, PowerPoint, Access, Publisher e Visio. Viene anche mostrata la posizione della cartella speciale "Recenti". |
| favourites | Mostra gli URL memorizzati nella cartella dei preferiti (essenzialmente i segnalibri dell'utente). Attualmente non supporta le sottocartelle; dovrò risolvere questo problema. |
| mappeddrives | Mostra le unità di rete mappate dalla sessione dell'utente. Utile per trovare rapidamente condivisioni file centrali e home directory. Se è mappata, probabilmente contiene dati utili. |
| installedapplications | Elenca le applicazioni installate. Include sia le applicazioni installate come amministratore (sulla macchina locale) sia quelle installate dall'utente corrente. Sono elencate in diverse posizioni del registro. |
| onedrive | Mostra informazioni su OneDrive (inclusi siti/tenant sincronizzati). |
Nota che se viene usato 'all', viene automaticamente incluso un 'proxycheck http://www.google.com'. Vedi la sezione proxycheck per i dettagli.
Esegui tutti i controlli di base: beacon> execute-assembly /tmp/Reconerator.exe oppure beacon> execute-assembly /tmp/Reconerator.exe basic all
Esegui solo l'enumerazione MRU: beacon> execute-assembly /tmp/Reconerator.exe basic mru
Elenca solo le unità mappate: beacon> execute-assembly /tmp/Reconerator.exe basic mappeddrives
Abbastanza sicuro. Si interroga il registro di sistema; è improbabile che venga monitorato.
Questo permette di eseguire una query LDAP. Il modo più semplice per dimostrarlo è con un esempio.
Questo mostrerà tutti gli utenti nel dominio 'dc=stufus,dc=lan' con W2K8DC come controller di dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 0
Questo mostrerà un massimo di 5 utenti nel dominio 'dc=stufus,dc=lan' con W2K8DC come controller di dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 5
Questo mostrerà tutti i membri del gruppo Domain Admins nel dominio 'dc=stufus,dc=lan' con W2K8DC come controller di dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "(&(objectClass=group)(cn=Domain Admins))" 0
Questo mostrerà tutti i membri dei gruppi Domain Admins o Enterprise Admins nel dominio 'dc=stufus,dc=lan' con W2012DC come controller di dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2012DC/dc=stufus,dc=lan" "(&(objectClass=group)(|(cn=Enterprise Admins)(cn=Domain Admins)))" 0
Questo genererà traffico di rete verso il controller di dominio specificato. Per chiarezza, utilizza LDAP (a differenza di RPC o simili).
Esegue una query DNS utilizzando il server DNS dell'host.
Risolvi www.google.com:
beacon> execute-assembly /tmp/Reconerator.exe resolvehost www.google.com
Questo genererà una query DNS verso il controller di dominio, ma è improbabile che venga segnalato come allarme a causa dell'enorme volume di richieste DNS legittime.
Questo permette di interagire con Windows Search (ex Servizio di indicizzazione di Windows) che consente di cercare rapidamente file e cartelle interessanti (e i loro contenuti). Le e-mail sono solitamente indicizzate, ma le cartelle di rete no, quindi potrebbe non essere perfetto per cercare le home directory degli utenti se sono memorizzate in remoto. Tuttavia, è molto veloce.
L'interfaccia di Windows Search è simile a SQL; questa implementazione permette di specificare, di fatto, il contenuto della clausola 'WHERE'. È più facile da spiegare con esempi, ma se si vogliono conoscere tutti i possibili criteri, è necessario leggere MSDN.
Trova tutto ciò che è stato indicizzato e che contiene la parola 'password' da qualche parte (cioè cerca nel contenuto di file ed e-mail):
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "CONTAINS('password')"
Trova tutto ciò che è stato indicizzato e che ha la parola 'stufus' nel percorso o nel nome file:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemPathDisplay LIKE '%stufus%'"
Trova tutto ciò che è stato indicizzato e che ha la parola 'stufus' nel nome file OPPURE contiene la parola 'secret':
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemName LIKE '%stufus%' OR CONTAINS('secret')"
Non sono a conoscenza di nulla che possa considerare questa attività sospetta.