
Uno script Python per raccogliere dati delle campagne da Gophish e generare un report.
Questo script accetta uno o più ID delle campagne Gophish come parametro e poi raccoglie i risultati della campagna per presentare le statistiche, eseguire il parsing dello user-agent e le ricerche di geolocalizzazione per gli indirizzi IP. Goreport genera elenchi di indirizzi IP, sistemi operativi, tipi e versioni di browser e località con i conteggi del numero di volte in cui ciascuno è stato osservato durante la campagna.
Una nota sulle statistiche: Goreport riporterà il numero totale di eventi e il numero di destinatari email che hanno partecipato a ciascun evento. In altre parole, Goreport mostrerà quante volte Gophish ha registrato un evento "Clicked Link" e quanti destinatari hanno cliccato su un link. Sono numeri molto diversi. Una campagna inviata a 10 persone potrebbe avere 9 eventi "Clicked Link" quando solo 3 destinatari hanno cliccato su un link. Sapere che i destinatari hanno cliccato su un link o inviato dati più di una volta è un'informazione preziosa, ma assicurati di tenere i numeri separati.
Questo script richiede un server Gophish, una campagna attiva o completata e la chiave API per la tua applicazione Gophish. Ottieni questa chiave facendo clic sulla scheda Impostazioni. La chiave API si trova nella prima pagina. Ogni account utente Gophish ha la propria chiave API che funge da metodo di autenticazione per quell'utente verso l'API di Gophish. Se utilizzi più account con Gophish, assicurati di prendere la chiave API dell'utente corretto.
Sono richieste anche queste librerie Python:
Devi fare alcune cose per iniziare:
pip install -r requirements.txt.Questo esempio presuppone che Gophish sia su un altro server e che venga utilizzato HTTPS. Per accedere all'endpoint API, dovrai utilizzare il port forwarding SSH con la porta 3333 (o qualsiasi altra porta locale che desideri utilizzare):
[Gophish]
gp_host: https://127.0.0.1:3333
api_key: <YOUR_API_KEY>
[ipinfo.io]
ipinfo_token: <IPINFO_API_KEY>
[Google]
geolocate_key: <GEOLOCATE_API_KEY>
python3 Goreport.py --id 26 --format excel
Questo recupererà i risultati della campagna 26 da https://localhost:3333/api/campaigns/26/?api_key=<Your_API_Key> e restituirà i risultati in un file xlsx.
È possibile fornire più ID contemporaneamente per più report. Gli ID possono essere forniti utilizzando un elenco separato da virgole, un intervallo o entrambi.
Esempio: python3 Goreport.py --id 26,29-33,54 --format csv
Se utilizzi più account utente o server Gophish, avrai più chiavi API. Per facilitare il passaggio da una chiave all'altra, l'opzione --config di Goreport ti consente di sovrascrivere il file di configurazione predefinito, gophish.config, con un file di configurazione da te nominato. Se questo argomento viene fornito con un file di configurazione valido e leggibile, Goreport lo utilizzerà al posto di gophish.config per configurare le connessioni API.
Potresti utilizzare questa opzione se, ad esempio, hai tre server di phishing che eseguono Gophish. Potresti impostare tre file di configurazione, ciascuno con una chiave API Gophish diversa, e poi usarli secondo necessità.
Esempio: python3 Goreport.py --id 26,29-33,54 --format csv --config phish_server_2.config
Se hai eseguito più campagne utilizzando le stesse impostazioni per diversi gruppi di destinatari, potresti voler eseguire Goreport su queste campagne tutte insieme e poi combinare i risultati in un unico report. Questo può essere ottenuto aggiungendo il flag --combine di Goreport.
Esempio: python3 Goreport.py --id 26,29-33,54 --format excel --combine
Questo comando raccoglierebbe i risultati per le campagne 26, 29, 30, 31, 32, 33 e 54. Normalmente, Goreport produrrebbe sette file xlsx, ma l'aggiunta di --combine dice a Goreport di combinare i risultati e produrre un solo report come se fossero tutti un'unica grande campagna.
Goreport può produrre un foglio di calcolo Excel (xlsx) o un documento Word (docx). È disponibile anche un'opzione di report "rapido". Basta selezionare il formato preferito utilizzando l'argomento della riga di comando --format, come mostrato sopra nella sezione Esempio di utilizzo. Non c'è molto da dire sul formato csv.
Il documento Word è costruito a partire da un modello, template.docx. Inserisci il tuo file modello, denominato template.docx, nella directory di Goreport insieme allo script principale. Il tuo modello dovrebbe includere uno stile di tabella che desideri utilizzare e stili di intestazione per Heading 1 e Heading 1. Assegna allo stile di tabella preferito il nome "Goreport" e imposta gli stili Heading 1 e 2.
Sentiti libero di creare uno stile personalizzato o usarne uno esistente. L'unica cosa che conta è che esista un file template.docx e che abbia uno stile di tabella "Goreport".
Per rinominare uno stile, fai clic con il pulsante destro del mouse sullo stile, seleziona Modifica stile tabella e imposta un nuovo nome.
L'opzione Excel produce una cartella di lavoro Excel ben formattata con più fogli di lavoro per le diverse raccolte di risultati e statistiche. Questa è una buona opzione se desideri ordinare o filtrare facilmente le tabelle dei risultati.
Infine, c'è un'opzione "rapida". Questa non genera un documento di report. Invece di un report, restituisce le informazioni di base sulla campagna al terminale. È utile per controllare rapidamente l'avanzamento della campagna o per fare riferimento ai risultati dopo il completamento della campagna.
Se desideri impostare lo stato di una campagna su "Complete" quando esegui il report, Goreport può aiutarti a farlo automaticamente con il flag --complete. Se fornisci questo flag, Goreport utilizzerà l'API per contrassegnare ogni ID campagna come "Complete" per terminare la campagna e aggiornare lo stato in Gophish.
Gophish esegue le proprie ricerche di geolocalizzazione con gli indirizzi IP e restituisce latitudine e longitudine. Funziona abbastanza bene, ma potrebbe fallire e restituire coordinate di 0,0 o potrebbe restituire informazioni obsolete.
Goreport ha due opzioni che possono essere utilizzate per migliorare i risultati di localizzazione. La prima, e consigliata, è l'API di ipinfo.io. L'accesso all'API è gratuito purché si effettuino meno di 1.000 query per periodo di 24 ore. Non dovrebbe essere troppo difficile per una campagna di phishing.
Se una chiave API di ipinfo.io viene aggiunta al file di configurazione, Goreport utilizzerà automaticamente ipinfo.io per raccogliere informazioni di geolocalizzazione aggiornate per ciascun indirizzo IP univoco.