A Prova di Hacker Challenge

image0

Sponsor: SpazioDati.

Nel mondo del business, quando si vuole fare affari con qualcuno, è importante capire se l’interlocutore con cui si sta trattando sia affidabile o meno. Per esempio, se la potenziale azienda partner dichiara di poterci fornire prodotti per centinaia di milioni di euro ma risulta avere pochissimi dipendenti e scarso fatturato, potrebbe venirci qualche dubbio sull’effettiva capacità di realizzare quanto promesso.

Per permettere di farsi rapidamente un’idea riguardo un’azienda, SpazioDati ha realizzato Atoka.io , un motore di ricerca di aziende italiane, che mostra in quale settore di mercato opera un’impresa, il fatturato, il numero di dipendenti, la presenza sul web, e altri fattori. SpazioDati raccoglie queste informazioni sfruttando numerose fonti dati, fra cui dati ufficiali dalla Camera di Commercio, OpenData, dati estratti dalle news e dai siti web.

Tra i fattori analizzati vi sono i siti aziendali, sempre più importanti nell’era di Internet. Purtroppo, spesso sono mantenuti senza la dovuta attenzione e quindi vulnerabili agli attacchi di hacker malintenzionati, che possono portare a sostituzione di pagine del sito con pubblicità indesiderata, rivelazione dei dati privati dei clienti, fuoriuscita di segreti industriali, e in generale gravi danni d’immagine all’azienda.

Per migliorare la determinazione dell’affidabilità di un impresa, SpazioDati vuole quindi assegnare un punteggio ai siti aziendali sviluppando un indice (score) che misuri quanto sono vulnerabili. Dovrà anche essere realizzata una visualizzazione semplice da comprendere anche a personale non-tecnico, come dirigenti e figure nel ramo commerciale.

Per raccogliere dati, SpazioDati ha eseguito Wappalyzer su milioni di siti web, estraendo le tecnologie utilizzate e le loro versioni. Vi chiediamo di incrociare i dati estratti dai siti web con le vulnerabilità esposte in cataloghi specializzati (ad esempio da itsecdb oval), e sviluppare uno score riassuntivo basato sulle versioni dei software (es: il software è vulnerabile o poco aggiornato) e sul contenuto testuale del sito.

a. Analisi

  • Analizzare il mercato potenziale e la distribuzione delle tecnologie impiegate (non guardare solo il dataset fornito ! Cercate anche statistiche altrove ). Su quali tecnologie conviene concentrarsi? Quanto spesso vengono usate?

  • Trovare dataset di vulnerabilità adatti allo scopo, ponendo particolare attenzione alla licenza dei dati (sono usabili commercialmente? Bisogna pagarli?). Sono aggiornati frequentemente? Ci sono versioni a pagamento più ricche di informazioni / aggiornate ?

  • studio delle possibilità business (a chi si può vendere il servizio che andrete a creare? Come si può presentare in modo efficace?)

b. Integrazione

Incrociare i dati web di spaziodati con il / i dataset di vulnerabilità trovati, producendo un’unica tabella csv (o json).

c. Sviluppo di un indice

Determinare un indice (score) che tenga in considerazione le vulnerabilità riscontrate assegnando un peso a ciascuna. IMPORTANTE: nel report tecnico deve essere chiaramente riportata e motivata la formula usata per determinare l’indice: presentare un software anche apparentemente funzionante non è sufficiente. Implementare il calcolo dell’indice e aggiungere una o più colonne per lo score (ed eventualmente sue componenti) ai dati integrati

d. Visualizzazione

Dato un sito, visualizzare il singolo score e presentare un riassunto

Quale può essere la visualizzazione più efficace che trasmette la maggior quantità di informazione senza confondere con tecnicismi da hacker? Tenete presente che i potenziali utilizzatori di tali grafici saranno personale non tecnico, come dirigenti e figure nel ramo commerciale.

Dataset

dataset oval

Dataset vulnerabilità, scaricabile da itsecdb.com/oval

Non ne forniamo dettagli, dovrete capire voi cosa (e in che formato) prendere la sito, capirne la licenza d’uso, se li possiamo usare, se è il caso di valutare alternative, etc.

rilevamento.jsonl

File fornito da SpazioDati contenente le tecnologie rilevate per ogni sito web.

Scarica file

Formato: JSONL , cioè una sequenza di JSON. Ogni riga è un json con un sito per riga. Per sapere come leggerli in Python, guardare guida Formati dati

Righe: 3000

Dimensione: 44 Mb

Campi:

  • domain

  • text

  • technologies: dizionario che contiene, per ogni categoria possibile, la lista di technologies estratte.

Esempio:

{
    "domain": "danzainfascia.it",
    "text": "Primary  AGENDA",
    "technologies": {
        "font-scripts": [
            {
                "name": "Font Awesome",
                "categories": [
                    "font-scripts"
                ],
                "confidence": 100
            }
        ],
        "web-servers": [
            {
                "name": "Apache",
                "categories": [
                    "web-servers"
                ],
                "confidence": 100
            }
        ],
        "javascript-frameworks": [
            {
                "name": "jQuery",
                "categories": [
                    "javascript-frameworks"
                ],
                "confidence": 100
            }
        ],
        "programming-languages": [
            {
                "name": "PHP",
                "version": "5.6.40",
                "categories": [
                    "programming-languages"
                ],
                "confidence": 100
            }
        ],
        "blogs": [
            {
                "name": "WordPress",
                "version": "5.2.2",
                "categories": [
                    "cms",
                    "blogs"
                ],
                "confidence": 100
            }
        ],
        "cms": [
            {
                "name": "WordPress",
                "version": "5.2.2",
                "categories": [
                    "cms",
                    "blogs"
                ],
                "confidence": 100
            }
        ]
    }
}
[ ]: