DESCRIPTION | Conoscere come i propri sistemi appaiono in rete | Live Discussion - Skill: 2- JUNIOR |
Una delle prime operazioni da compiere all'inizio di un security assessment volto a verificare la vulnerabilità dei propri sistemi su Internet (tralasciando momentaneamente ogni considerazione sulle problematiche di sicurezza in senso lato, che comprendono aspetti non solo informatici ma anche logistici e umani) è uno scanning completo delle porte e delle informazioni che da Internet si possono rilevare. |
||||
Sapere come i propri sistemi si presentano in rete è infatti il primo fondamentale passo per procedere alla loro protezione dalla maggior parte delle possibili minacce esterne. Per farlo ci si può mettere nei panni di un potenziale intrusore, che dei nostri sistemi non sa ancora nulla e che, in prima battuta, li può raggiungere solo via Internet. Le informazioni e le operazioni che si possono fare sono: - Network scanning di tutti gli indirizzi IP pubblici che ci sono assegnati da un IP arbitrario su Internet. Va fatto un controllo su tutti gli indirizzi, possibilmente non limitandosi ad un ping scan (potremmo avere un firewall perimetrale che ci filtra i pacchetti ICMP) ma provando tutti gli indirizzi delle nostre network pubbliche su tutte le porte TCP e UDP (l'operazione può essere particolarmente lunga, se si ha fretta limitarsi ad uno scan delle prime 1024 porte di ogni host). Per questo tipo di operazioni un software come Nmap è l'ideale, ma esistono valide alternative come Strobe o NetCat. - DNS info gathering tramite query DNS sul proprio e su altri server DNS, cercare di ottenere il maggior numero di informazioni sulle macchine dei nostri domini, provare a fare un trasferimento di zona da un server remoto (non dovremmo renderlo possibile) e verificare se le informazioni esposte possono essere di natura delicata (nomi delle macchine troppo indicativi delle loro funzioni, dettagli aggiuntivi sugli host ecc). Per diagnosticare problematiche e raccogliere informazioni sul DNS possono essere usati programmi come nslookup o dig. - Whois query e ricerca di info in rete per vedere quanto di noi si trova in rete. Partire da una query whois per uno dei nostri domini o blocchi di indirizzi, poi provare a cercare il proprio nome, così come appare nei campi whois, su Google e altri motori. Provare a cercare altre parole chiave che in qualche modo possono essere riconducibili agli amministratori dei propri sistemi, alla propria società o a qualsiasi altro aspetto in qualche modo riconducibile a noi. Valutare se le informazioni trovate possono fornire spunti interessanti o notizie utili per chi ci vuole attaccare, prendere eventualmente provvedimenti (discorso vago, che richiede più ampia trattazione, in particolare per tutto quello che riguarda possibili attività di social engineering e come il proprio personale è educato al riguardo). Verificare inoltre se le password che si utilizzano sono in qualche modo riconducibili alle informazioni che ci riguardano che trapelano in rete (interessi personali, abitudini, nomi di parenti, indirizzi ecc). - Vulnerability scanning di tutta la nostra rete. E' un controllo più approfondito di un semplice port scanning, in quanto per ogni porta aperta si eseguono verifiche sulle versioni dei software che le gestiscono e sulle loro eventuali vulnerabilità. Tipicamente un software che esegue simili controlli (nel mondo opensource Nessus è il più comune e Satan/Saint sono piuttosto noti, anche se ormai obsoleti) esegue una serie di test sulla base di un vulnerability database in costante aggiornamento, per cui è opportuno eseguire un controllo sulla base di check aggiornati. Queste operazioni possono fornirci i primi punti da cui partire per eventualmente provvedere a "tappare" i buchi più evidenti e più facilmente utilizzabili. A questo, inutile dirlo, dovrebbe seguire una analisi più approfondita e a vari livelli sulla sicurezza generale dei nostri sistemi e sui flussi di dati che li interessano. E' inoltre buona norma rieseguire dei simili controllo ogni qualche mese, per verificare lo stato della situazione. |
DESCRIPTION | Information gathering in rete | Live Discussion - Skill: 2- JUNIOR |
Su Internet è possibile trovare varie ed inaspettate informazioni su persone, società e server, alcune delle quali possono fornire spunti utili ad un potenziale intrusore per definire le sue strategie di attacco e, soprattutto, per portare avanti sottili azioni di social engineering. | ||||
WHOIS QUERY Ogni dominio registrato in rete deve essere associato ad una persona o società identificabili, che ne siano i proprietari e responsabili. Questo nome e altre informazioni anagrafiche di base (fondamentalmente i recapiti su Internet e sul mondo reale) vengono registrate su dei database whois che sono liberamente consultabili su appropriati server. Esistono molti server whois in rete, spesso rispondono per i dati relativi ad un singolo Top Level Domain (TLD, come .it, .fr ecc) in alcuni casi (domini transnazionali come .com, .net .org ecc.) rispondono per più TLD. Una query whois, da informazioni piuttosto articolate quali il nome della persone e della società che ha registrato il domini, il relativo indirizzo e numero di telefono (a meno che il registrante non abbia fornito dati falsi), i server DNS autoritari per il domini (quelli dove vengono configurati gli indirizzi IP dei server di quel dominio), la data di registrazione. Oltre a informazioni relative ad un dominio, tramite whois è possibile ottenere dettagli su chi ha in uso un dato range di indirizzi IP pubblici. I fornitori di TLC solitamente aggiornano questi record con i dati dei loro clienti a cui hanno assegnato indirizzi IP fissi, per cui non è raro vedere i propri dati disponibili su un whois server pubblico anche se non si è fatto nulla per metterli, se non firmare un contratto per una DSL con IP fisso. Queste informazioni, seppur dovute, necessarie ed inevitabili, possono aiutare un intrusore nelle sue attività di social engineering per cui va quantomeno verificato cosa viene esposto pubblicamente e ci si dovrebbe assicurare che le informazioni e i recapiti utilizzati siano il più possibile generici. GOOGLE (e ALTRI MOTORI) Google è probabilmente il migliore motore di ricerca su Internet, i suoi spider costantemente sondano il web aggiungendo pagine e aggiornando il suo enorme database. Alcune funzioni di ricerca permettono analisi piuttosto dettagliate e a volte sorprendenti sul contenuto di un sito: non è raro trovare su Google vecchie pagine di un sito indicizzate in passato che ormai non sono più linkate sul sito attuale, ma risultano ancora presenti sullo stesso server web e quindi accessibili da Internet. Se queste pagine contengono form o parti dinamiche sfruttabili per un cracker, anche il sito apparentemente più sicuro e controllato potrebbe cadere, oltretutto a causa di funzionalità non più utilizzate. Un buon modo per vedere su Google (ma ovviamente una simile ricerca andrebbe fatta anche su altre search engines) cosa del nostro sito è indicizzato è una query tipo: site:www.esempio.it e Questo ricercherà all'interno di www.esempio.it tutte le pagine che contengono la lettera "e" (quindi, presumibilmente, tutte le pagine in assoluto). Notare che si può usare "e" ma non "a", che Google esclude in quanto parola, inglese, troppo comune. Ulteriore fonte di informazioni potenzialmente utili è l'Internet Archive in cui è possibile visualizzare com'era un sito e parti di esso nel passato. NEWSGROUPS ARCHIVES Tutto quello che scriviamo su un newsgroup viene propagato su migliaia di news server sul globo ed è destinato a rimanere impresso negli archivi di Internet per molti anni, come parole scolpite nella pietra. Siti come lo stesso news.google.com permettono di eseguire ricerche in tutti i post di molti newsgroup.Un buon cracker sicuramente proverà ad utilizzare questo archivio per cercare informazioni sugli amministratori dei sistemi che vuole attacccare. Con una whois query ottiene dati quali il nome e l'indirizzo email del riferimento tecnico per il dominio sotto mira, con un po' di ricerche sugli archivi dei newsgroup e sugli stessi motori di ricerca può arrivare ad ottenere una quantità insospettabile di informazioni utili per le sue losche attività. Fra queste informazioni ci possono essere richieste di chiarimenti o informazioni eseguite dal sysadmin sotto mira, dove eventualmente ha fornito dati interessanti e sfruttabili sulla sua struttura di rete o sui programmi e servizi che vuole utilizzare. Controllando la signature usata da questo su un post pubblico il cracker può avere informazioni sul numero di telefono del sistemista, sui suoi hobby, sui suoi recapiti. Bisogna sempre ricordarsi che in termini di sicurezza informatica, chi si difende non conosce il suo avversario mentre chi attacca ha molti mezzi per raccogliere informazioni sul suo bersaglio.
|
DESCRIPTION | Installare, configurare ed utilizzare Nessus | Live Discussion - Skill: 4- ADVANCED |
Nessus è probabilmente il più completo ed evoluto strumento di vulnerability scanning disponibile nel mondo open source. Presenta una struttura modulare, con dei plug-in che possono essere aggiornati per individuare vulnerabilità recenti, ha una logica client-server, in cui il server è l'engine che esegue lo scan vero e proprio e il client è l'interfaccia (disponibile in diversi linguaggi per diversi sistemi operativi) con cui si può configurare una sessione di scan (indirizzi target, tipi di check da eseguire ecc.) da far eseguire sul server. |
||||
INSTALLAZIONE L'installazione di Nessus può essere fatta tramite sorgenti (necessari i seguenti tarball, nell'ordine: nessus-libraries-x.x.tar.gz, libnasl-x.x.tar.gz, nessus-core.x.x.tar.gz, nessus-plugins.x.x.tar.gz) o RPM/DEB. Esiste anche la comodissima, semplicissima e rischiosa possibilità di eseguire una installazione direttamente via rete con lynx -source http://install.nessus.org | sh che provvede automaticamente a scaricare e compilare il tutto.I prerequisiti di Nessus sono: disponibilità di GTK (in particolare il package gtk-devel che contiene per il programma gtk-config) per il client su Xwindows, disponibilità di NMAP per le operazioni di scanning, possibilmente presenza di OPENSSL per criptare le comunicazioni fra client e server. A termine installazione ricordarsi di aggiungere /usr/local/bin e /usr/local/sbin al proprio PATH. CREAZIONE DEGLI ACCOUNT UTENTE Per poter eseguire uno scan tramite il server nessus, il client (il front-end disponibile all'utente) deve eseguire un login sulla base di un nome utente/password precedentemente creato. Per aggiungere nuovi utenti sul server nessus si deve usare il comando nessus-adduser .Vengono richiesti: login, password, tipo di autenticazione (normale o criptata), regole sugli IP che possono essere scannati dall'utente (lasciare vuoto per non impostare alcuna regola). CONFIGURAZIONE DEL SERVER NESSUS Il file di configurazione del demone nessus è di default /usr/local/etc/nessus/nessus.conf . Non sono necessarie particolari modifiche per far funzionare un Nessus compilato con le opzioni di default, in ogni caso fra i parametri configurabili, oltre a PATH vari, ci sono alcune impostazioni sul numero di test simultanei da eseguire, sul range di porte da scannare nonchè sui settaggi utilizzati per il canale criptato fra client e server.AGGIORNAMENTO DEI PLUGIN I check eseguiti da Nessus si basano su dei plugin, scrivibili in linguaggi diversi, che vengono regolarmente aggiornati sulla base delle scoperte di nuove vulnerabilità. E' disponibile una comoda utility per aggiornare automaticamente i plugin di nessus: nessus-update-plugins -v visualizza e scarica gli ultimi aggiornamenti dei plugin di Nessus.CREAZIONE DEI CERTIFICATI SSL Prima di poter lanciare nessusd è consigliabile creare i certificati SSL necessari per criptare il traffico client-server. Eseguire: nessus-mkcert e rispondere alle domande fatte.ESECUZIONE DEL SERVER Il server di Nessus può essere finalmente lanciato con nessusd -D , il programma si binda alla porta tcp 1241 ed è pronto per accettare richieste dal client.ESECUZIONE DEL CLIENT Lanciare il programma nessus che apre un tool grafico con cui interagire con il server nessus (che può essere sulla stessa macchina o sua una macchina remota).Nella finestra che compare è innanzitutto necessario eseguire il login dalla finestra NESSUSD HOST (selezionare pure l'opzione di default su come gestire il certificato SSL). Nella finestra PLUGINS selezionare quali security check eseguire. E' possibile selezionarli tutti tranne, o anche escludere quelli potenzialmente pericolosi, in grado di mandare in crash l'host selezionato. Nella finestra PREFS si può fare un po' di tuning sulle tecniche di scanning da utilizzare, è possibile provare sistemi di evasione per non essere individuati da IDS vari o impostare brute force attacks basati su file di dizionari esterni. Su SCAN OPTIONS si imposta il range di porte e altri parametri configurabili anche nel file di configurazione generale. Nella finestra TARGET SELECTION si sceglie l'indirizzo IP o il nome dell'host da esaminare (se ne possono impostare più di uno separandoli con una virgola o si può definire una network tipo 10.0.0.0/24). Per lanciare lo scan cliccare su START THE SCAN e aspettare il report sulle vulnerabilità note (da Nessus) presenti sul target selezionato. Considerare che: - Nessus non è stato pensato come tool per wannabe cracker - Nonostante le tecniche di evasione utilizzate è probabile che un simile scan venga notato e registrato in qualche log sugli host target (l'IP registrato è quello del server, l'host su cui gira il demone Nessus) - Alcune segnalazione di warning o alert si basano o su assunzioni relativamente paranoiche o su condizioni che di fatto non esistono sul server interessato ("falsi positivi") - Studiare i report di Nessus e le descrizioni sui buchi trovati è un buon metodo per iniziale a familiarizzare con il mondo variegato dei "Security Alert", che spesso oltre a descrivere il buco trovato, indicano le soluzioni su come correggerlo. - E' bene abituarsi a lanciare regolarmente un Nessus con i plugin aggiornati sui propri server.
|
DESCRIPTION | Installare ed usare NMAP | Live Discussion - Skill: 2- JUNIOR |
Nmap è un port scanner avanzato e performante per sistemi Unix, solitamente installato di default su parecchie distribuzioni Linux. L'interfaccia presentata all'utente è di tipo testuale e richiede spesso i privilegi di root per poter utilizzare componenti critiche del Kernel (come i raw socket). Il risultato che fornirà nmap sarà una lista di porte aperte, chiuse o filtrate presenti sull'host o sulla rete indicati. Per testare se nmap è presente sul proprio Linux si può utilizzare rpm (rpm -qa | grep nmap) o comandi quali whereis o locate. Nel caso fosse necessario installarlo si può procedere tramite rpm precompilati (in genere su http://www.rpmfind.net sono reperibili tutti gli rpm del caso, ad esempio nmap-3.00-1.i386.rpm per RedHat 8.0), o direttamente compilando i sorgenti. |
||||
INSTALLAZIONE DI NMAP TRAMITE COMPILAZIONE DEI SORGENTI Per installare nmap dai sorgenti bisogna innanzitutto ottenere l'ultima release stabile di questi ultimi dal sito ufficiale. Successivamente una volta scaricati i sorgenti si procede con il classico scompattamento del tarball ( tar -zxvf namp...tar.gz ) e la compilazione e installazione con i comandi in sequenza:./configure Ricordarsi di aggiungere /usr/local/bin al proprio PATH UTILIZZO DI NMAP A dispetto della semplicità di installazione e configurazione (praticamente inesistente), nmap è un tool molto potente e ricco di opzioni per lo scanning di host o reti La sintassi di base: nmap [Tipo(i) di scan] [Opzioni] <host/rete> <host/rete> <host/rete> ... Le principali opzioni: -sT E' il sistema di scanning più semplice in quanto utilizza la chiamata di sistema connect() del proprio sistema operativo. Ha il vantaggio di poter essere utilizzata anche senza privilegi di root ma permette una facile individuazione da parte dell'host di destinazione. -sS TCP SYN SCAN E' un sistema più avanzato di scanning che permette l'invio di un SYN per simulare il tentativo di connessione TCP, nel caso l'host risponda con un ACK significa che la porta è in ascolto e pertanto è possibile inviare un RTS per chiudere il tentativo di connessione appena tentato. Il vantaggio è che in assenza di IDS specifici, questi tentativi di connessione non vengono loggati, lo svantaggio è che bisogna avere privilegi di root per poter eseguire uno scan di questo tipo. -sF -sX -sN Scanning stealth avanzato. Questi tipi di scan utilizzano sistemi alternativi e a volte deduttivi per identificare le porte aperte limitando la possibilità di essere individuati. La logica seguita da questi metodi di scan per passare inosservati sono i seguenti: Le porte chiuse devono rispondere allo scanning con un RTS, mentre le porte aperte devono ignorare lo scan. L'inconveniente è che sistemi come Microsoft, Cisco, HP/UX e altri non supportano questi standard. -sP Ping scan. Assolve alla necessità di sapere quali host sono attivi in una rete, tramite un semplice ECHO REQUEST (ping) agli host specificati. E' utile per verificare quali host sono attivi su un segmento di rete specificato, ma può dare risultati incompleti se a monte degli indirizzi di destinazione c'è un firewall che filtra i pacchetti ICMP. -sU UDP scans Questa opzione permette di controllare tramite l'invio di un pacchetto UDP di 0 byte se una porta UDP è aperta, se la risposta a questo pacchetto sarà un ICMP che dice Network Unreachable la porta è chiusa, in caso contrario si pensa che sia aperta. -O Fingerprinting Esegue un fingerprinting per riconoscere, tramite sottigliezze e differenze nello stack di rete del sistema operativo dell'host remoto, quale OS e quale versione viene utilizzata. I risultati sono spesso corretti ma non infallibili. -v Verbose mode Questa è una opzione fondamentale per poter scoprire molteplici informazioni. Se si utilizza l'opzione -vv si aumenta ulteriormente la verbosità dell'output. -o <logfilename> Inserendo questa opzione avremo la possibilità di scegliere come argomento il nome di un file in cui NMAP andrà a scriverci il risultato della scansione (Il formato del file è di tipo HUMAN READABLE) -m <logfilename> Esegue la stessa cosa dell'opzione precedente tranne che per il fatto che l'output generato è di tipo MACHINE READABLE -p <range porte> Permette di inserire un range di porte da scannare (es. -p 25 scannerà esclusivamente la porta SMTP (25)) -F Fast scan Scan veloce, permette di scansionare tutte le porte presenti nei services di NMAP (in pratica le well known ports) anzichè tutte le porte dalla 0 alla 65535.
|