Se dovessi sia cifrare che comprimere i dati durante la trasmissione, quale operazione faresti per prima, e perché?
La compressione mira a usare i pattern nei dati per ridurne la dimensione.
La cifratura mira a randomizzare i dati così che non siano interpretabili senza una chiave segreta.
Se cifri prima e poi comprimi, la compressione sarà inutile. La compressione non funziona su dati casuali.
Se comprimi prima e poi cifri, un attaccante può trovare pattern nella lunghezza del messaggio (Rapporto di Compressione) per apprendere qualcosa sui dati e potenzialmente vanificare la cifratura (come CRIME)
Quali sono i vari modi per gestire gli attacchi di forza bruta?
Blocco degli account/timeout
Rate limiting delle API
Restrizioni IP
Fail2ban
...ecc.
Cos'è il Cross-Site Request Forgery? E come difendersi?
Quando un attaccante induce il browser della vittima a effettuare richieste con le credenziali della vittima
Esempio: se un tag immagine (``) punta a un URL con un'azione associata, es. https://foo.com/logout
Le difese includono, ma non si limitano a:
controllare l'header Origin e l'header Referer
verificare i token CSRF o i nonce
Cos'è il Cross-Site Scripting? Quali sono i diversi tipi di XSS? Come difendersi da XSS?
L'XSS si verifica quando gli attaccanti inducono i browser delle vittime a eseguire del codice (di solito JavaScript) all'interno del loro browser
Tradizionalmente, i tipi sono stati categorizzati in attacchi XSS Stored e Reflected.
Lo XSS Stored è del codice che un attaccante è riuscito a rendere persistente in un database e che viene recuperato e presentato alle vittime (es. forum)
Lo XSS Reflected è di solito sotto forma di un URL creato ad arte che include il codice malevolo. Quando l'utente fa clic sul link, il codice viene eseguito nel suo browser
Recentemente ci sono state discussioni sull'XSS basato su DOM, che si verifica quando gli attaccanti possono controllare gli elementi del DOM, ottenendo così XSS senza inviare alcuna richiesta al server
Le categorie di XSS tendono a sovrapporsi, quindi è molto meglio descrivere l'XSS in termini come Server Stored XSS, Server Reflected XSS, Client Stored XSS (es. DOM-based XSS memorizzato), o Client Reflected XSS (es. DOM-based XSS riflesso)
Le difese includono:
Codifica dell'output (più importante)
Validazione dell'input (meno importante)
In che modo HTTP gestisce lo stato?
HTTP è stateless
Lo stato è memorizzato nei cookie
Architetto
Hai progettato misure di sicurezza che si estendono su domini informativi sovrapposti?
Puoi farmi alcuni esempi di requisiti di architettura di sicurezza?
Quali sfide di sicurezza particolari presenta l'architettura orientata ai servizi (SOA)?
Hai architettato una soluzione di sicurezza che coinvolgeva componenti SaaS? Quali sfide hai affrontato?
Hai lavorato a un progetto in cui gli stakeholder hanno scelto di accettare rischi di sicurezza identificati che ti preoccupavano? Come hai gestito la situazione?
Come gestisci le richieste di diversi stakeholder con requisiti contrastanti?
Come garantisci che gli architetti di soluzioni sviluppino soluzioni sicure?
Come garantisci che una soluzione continui a essere resiliente di fronte a minacce in evoluzione?
Quale pensi sia la tecnologia più importante in questo momento? Come la metteremo in sicurezza?
Blue Team
Dato un log del traffico HTTP tra una macchina della tua rete e un sito web di terze parti (es. Google), come apparirebbero le porte di origine e di destinazione?
La porta di origine potrebbe essere un numero superiore alla porta 1024 (detta anche porta effimera)
La porta di destinazione potrebbe essere la 80 (HTTP) o la 443 (HTTPS)
Crittografia
Qual è la differenza tra codifica, cifratura e hashing?
La codifica garantisce l'integrità del messaggio. Può essere facilmente reversibile. Esempio: base64
La cifratura garantisce la riservatezza del messaggio. Reversibile solo usando le appropriate chiavi di decifratura. Esempio: AES256
L'hashing è una funzione unidirezionale. Non può essere invertita. L'output ha una lunghezza fissa e di solito è più piccolo dell'input.
TLS usa cifratura simmetrica o asimmetrica?
Entrambe.
Lo scambio iniziale avviene usando la cifratura asimmetrica, ma la cifratura dei dati in grandi volumi è fatta usando quella simmetrica. Vedi la domanda successiva per ulteriori informazioni.
Descrivi il processo di configurazione di una sessione TLS quando qualcuno visita un sito web sicuro.
Il client invia un messaggio hello che elenca informazioni crittografiche, come la versione SSL/TLS e l'ordine di preferenza delle suite di cifratura del client. Il messaggio contiene anche una stringa di byte casuale che viene usata nei calcoli successivi. Il client può includere anche metodi di compressione dei dati nel messaggio hello.
Il server risponde con un messaggio hello che contiene la suite di cifratura scelta dal server, il certificato digitale del server e un'altra stringa di byte casuale. Se il server richiede l'autenticazione del client tramite certificato, invierà anche una client certificate request al client.
Il client verifica il certificato digitale del server.
Il client invia una stringa di byte casuale cifrata con la chiave pubblica del server per permettere a client e server di calcolare la chiave segreta usata per la successiva cifratura tra client e server.
Forensics
Generale
I progetti open source sono più o meno sicuri dei progetti proprietari?
Entrambi i modelli hanno pro e contro.
Ci sono esempi di progetti insicuri usciti da entrambi gli schieramenti.
Il modello open source incoraggia "molti occhi" su un progetto, ma questo non si traduce necessariamente in prodotti più sicuri
Ciò che conta non è open source vs proprietario, ma il controllo qualità del progetto.
Chi consideri un punto di riferimento nel campo della Sicurezza Informatica? Perché?
Da dove prendi le notizie sulla sicurezza?
Risposta agli Incidenti
Reti
Red Team
Gestione delle Vulnerabilità
Quale classificazione di vulnerabilità viene sfruttata maggiormente?
Con quale frequenza dovresti eseguire le scansioni?
Qual è la differenza tra una scansione esterna e una interna?
Qual è la differenza tra una scansione autenticata e una non autenticata?
Come potrebbe una scansione rilevare l'impronta (fingerprint) di un sistema operativo?
Cos'è un punteggio CVSS?
Come dovresti suddividere le scansioni?
Come consiglieresti alle diverse organizzazioni su cosa dovrebbero applicare le patch per prime?
Cos'è una vulnerabilità?
Hai familiarità con alcuni dei metodi standard del settore per tracciare le vulnerabilità?
Cos'è CVE e perché è importante la standardizzazione che fornisce?
Dove andresti per trovare ulteriori informazioni su una vulnerabilità?
Qual è la differenza tra un exploit e una vulnerabilità?
Se c'è una minaccia, ma nessuna vulnerabilità, diresti che c'è comunque un rischio? E se c'è una vulnerabilità, ma nessuna minaccia?
Puoi elencare alcune vulnerabilità di cui hai sentito parlare di recente?
Hai familiarità con alcuni degli strumenti usati per scansionare le vulnerabilità? Se no, puoi nominarne alcuni?
Puoi elencare alcuni strumenti usati per applicare patch alle vulnerabilità in un'azienda?
Cos'è SCCM?
Hai familiarità con alcuni degli strumenti open source comunemente usati per sfruttare le vulnerabilità?
Puoi elencare alcuni software noti per avere costantemente vulnerabilità?
Con quale frequenza vengono rilasciate le patch Microsoft (non di emergenza?
Se il server ha richiesto un certificato client, il client invia una stringa di byte casuale cifrata con la chiave privata del client insieme al certificato digitale del client o un "no digital certificate alert". Questo alert è solo un avviso, ma alcune implementazioni faranno fallire l'handshake se l'autenticazione del client è obbligatoria.
Il server verifica il certificato digitale del client.
Il client invia un messaggio finished cifrato con la chiave segreta calcolata
Il server invia un messaggio finished cifrato con la chiave segreta calcolata
Per la durata della sessione TLS, il server e il client possono ora scambiare messaggi cifrati simmetricamente con la chiave segreta condivisa
La Forward Secrecy è un sistema che usa chiavi di sessione effimere per eseguire l'effettiva cifratura dei dati TLS, così che anche se la chiave privata del server venisse compromessa, un attaccante non potrebbe usarla per decifrare dati catturati che erano stati inviati a quel server in passato.