Penetretion Tester Information Gathering

Information-Gathering

Information-Gathering

Una “nuova” tipologia di specialisti si sta gia’ facendo sempre piu’ strada all’interno delle aziende e delle case dei privati, interessati ad aumentare il loro livello di sicurezza, i Penetration Tester (PT).

Ogni PT deve aver ben chiaro e seguire una serie di attivita’ per raggiungere lo scopo finale.
Le “FASI” del PT sono le seguenti :

  • Information Gathering;
  • Vulnerability Assessment;
  • Exploitation;
  • Privilege Escalation;
  • Maintaining Access;
  • Reporting;

Oggi, in questo primo articolo sul PT inizieremo a spiegare i concetti dell’ Information Gathering.

L’Information Gathering o raccolta delle informazioni permette all’attaccante di acquisire dati utili, dall’architettura della piattaforma, ai servizi offerti, ecc. L’analisi di questi dati porterà alla scelta di come condurre il passo successivo.

Analisi di un caso reale

Ci troviamo ad operare da remoto per verificare il livello di sicurezza di una grande azienda. L’analisi viene svolta, a fronte di un’ accordo con il committente (non dimenticate mai l’importanza di un contratto ben dettagliato e firmato dal committente per evitare future noie legali), da parte del PT. In base alla quantità d’ informazioni disponibili s’ identificano diversi scenari. Questa tipologia di scenario viene definita “Black Box” poiche’ non presuppone alcuna conoscenza dell’infrastruttura oggetto di analisi, tutte le informazioni dovranno quindi essere ricavate prima di iniziare i vari test.

Per diversificarci questa volta ci affideremo non alla solita Kali Linux ma ad un’altro sistema improntato al PT come BackBox Linux, una distribuzione orientata al PT. Il vantaggio derivante dall’uso di uno strumento simile è nell’avere un sistema operativo altrettanto completo di tools, flessibile ed ottimizzato per condurre vari test di sicurezza.

Information Gathering

L’attività di PT inizia come gia’ detto con la raccolta delle informazioni, partendo dall’url del sito aziendale del committente è possibile risalire all’indirizzo IP del server (informazione essenziale per iniziare la nostra analisi):

$ host www.nomesito.it
www.nomesito.it has address 150.xxx.xxx.10

oppure

$ nslookup
set q=any
nomesito.it

o ancora un semplice #whois permette di effettuare delle query al fine di ottenere informazioni riguardo la registrazione del dominio.

$ whois www.nomesito.it

Ovviamente questi sono soltanto alcuni esempi, di tool da riga di comando ne esistono diversi (#dig, #dnsenum …) ma non e’ possibile citarli tutti, ognuno potra’ cercarsi il preferito.

Ottenuta questa informazione ci serviremo di un’ulteriore tool Maltego, è un tool sviluppato dalla società Paterva, che offre la possibilità di raccogliere informazioni tramite la consultazione di dati pubblicamente accessibili e raggrupparle,  in formato grafico. Tramite questo strumento si è in grado di raccogliere informazioni da:

  • Siti web
  • Comunicazioni web (social network, wiki, blog, …)
  • Dati pubblici (conferenze stampa, rapporti dei governi, dati demografici, …)
  • Osservazioni dirette (dati geolocalizzati, conversazioni radio, foto satellitari, …)
  • Professionisti ed accademici (simposi, conferenze, pubblicazioni scientifiche, associazioni professionali, …)

Viene utilizzata un’architettura client/server per la raccolta dei dati e per determinare le relazioni fra di essi.

Un’ulteriore ed interessantissimo tool e’ TheHarvester

TheHarvester  è utilizzato per raccogliere info su domini, indirizzi email e documenti con metadata inerenti il target della nostra ricerca. Harvester si basa su un suo algoritmo di ricerca in grado di interrogare i maggiori motori di ricerca conosciuti, facendo sì che l’attaccante non visiti direttamente il target. Dunque il target sarà ignaro delle nostre attività.
Un piccolo esempio potrebbe essere questo qui sotto ma ricordatevi di leggere sempre gli “help” per poter conoscere tutte le opzioni che si possono utilizzare.

theharvester -d miosito.it -l 500 -b all

Ultimo tool di questo articolo, non certo per importanza o per potenza sara’ Dmitry.

Dmitry (Deepmagic Information Gathering Tool), questo tool  è un whois potentissimo che lavora esclusivamente da riga di comando , è scritto in C e ha la capacità di darci su di un determinato host , tantissime informazioni , tutte raccolte ed estratte in base alle nostre richieste , effettuate tramite l’inserimento in Shell di alcune opzioni (leggete sempre l’help).

dmitry -winsepffb -o miosito.txt www.miosito.it

…come detto questo e’ solo un esempio in cui sono state unite insieme diverse opzioni ed il risultato verra’ salvato in un file .txt.

Per tutto il resto non resta che fare tanta tanta pratica……a presto !!!

Vault 7 – il Cyber arsenale della CIA

vault7-cyber arsenale

vault 7-cyber arsenale CIA

Aprile/Maggio 2017 – Wikileaks (per quei pochi che ancora non sapessero cosa fa clicca qui) rilascia una sfilza di nuovi documenti provenienti dagli archivi dell’intelligence Americana (CIA).

Il team di Wikileaks ha quindi risvegliato nuovamente l’interesse pubblico sulle azioni “nascoste” (ormai sappiamo tutti di essere sempre spiati) dell’intelligence USA, questi nuovi documenti sono un primo estratto di un ben piu’ vasto archivio di documenti, contenente strumenti e procedure CIA, che coprono almeno 3 anni di attivita’ nel periodo 2013-2016.

Al suo interno sono riportati molte procedure/attivita’ segrete quali:

  • chiavi di accesso (backdoor) a molti sistemi informatici
  • sistemi per aggirare molti protocolli di rete ritenuti sicuri
  • moltissimi exploit per eludere antivirus (aziendali e privati)

Vault 7 (wikileaks-link) , cosi’ si chiama questa prima porzione di documenti rilasciata, che contiene oltre 7.800 pagine e 943 allegati che coprono il periodo 2013-2016. I documenti sono stati redatti, prima di essere pubblicati (quasi una novita’ x Wikileaks) , cosi da preservare eventuali dati che potrebbero mettere nei guai i contractor o gli hacker che erano o sono ancora a contratto con la CIA.

RIASSUMENDO
Quello che si apprende da Vault 7 spiega in pratica che la CIA possiede strumenti per violare smartphone Android e IOS, puo’ effettuare la decifratura delle conversazioni protette dai protocolli di tutti i sistemi di messenger (Telegram e Whatsapp inclusi), ed e’ in grado di ascoltare le conversazioni che vengono svolte, ad esempio, davanti ad una Smart-TV equipaggiata di microfono, e molto altro ancora che riguarda i device che usiamo quotidianamente e su cui riversiamo ogni tipo di dato riguardante le nostre vite personali e professionali.

Conclusioni
Oggi giorno e’ praticamente impossibile fare a meno delle innumerevoli, ottime e comode tecnologie che ci circondano e sempre piu’ ci affiancheranno nella nostra vita a 360 gradi; l’importante e’ continuare ad imparare, essere sempre curiosi di sapere come funziona una certa tecnologia, cosa puo’ fare e come possiamo essere noi a controllarla e non il contrario. Aggiornare sempre le versioni dei nostri sistemi ed ogni tanto, quando possibile rimanere un po’ anche offline, non puo’ far male a nessuno.

“don’t be evil”

GO il nuovo linguaggio web di Google

Google-GO

Google-GO new Web language

Che cosa è Go?
Go (chiamato anche GoLang) è un linguaggio di programmazione realizzato da Google. La progettazione è cominciata nel 2007. Tra gli ideatori del linguaggio ci sono anche nomi come Ken Thompson, Rob Pike, Robert Griesemer (i primi due sono stati anche tra i creatori del sistema operativo Unix). Il progetto è stato annunciato pubblicamente nel novembre 2009, e la versione 1.0 è uscita nel marzo 2012.

 

Le caratteristiche di Go
Go è un linguaggio statically-typed, significa che la verifica dei tipi di variabili è effettuata durante la compilazione (cosi come accade per C, Java, Scala e Pascal) e non durante il run-time (come accade per JavaScript, PHP, Python e Ruby).
Go soddisfa le esigenze della programmazione concorrente ed è stato progettato per ottimizzare i tempi di compilazione anche per hardware modesti. La sintassi è vicina al C eccetto per la dichiarazione dei tipi e per la mancanza di parentesi tonde nei costrutti for e if. Ha un sistema di garbage collection che si occupa autonomamente della gestione della memoria. Non include l’intercettazione di eccezioni, l’eredità dei tipi, la programmazione generica, le asserzioni e l’overloading dei metodi.

 

Go, linguaggio ideale per i webservices
Come accennato poco sopra, Go nasce come linguaggio generalista, ma negli ultimi anni di sviluppo si è affermato come linguaggio ideale per i webservices. Il motivo di questo successo si deve principalmente a tre aspetti:

  • facilità di deployment,
  • efficienza nell’uso della memoria,
  • gestione della concorrenza

Facilità di deployment
Rispetto ad altri linguaggi, Go ci permette di effettuare un server deployment estremamente semplice. Sulla macchina di produzione non è dunque necessario installare alcun webserver (Apache o Nginx), alcuna Virtual Machine (come in Java), alcun tipo di wrapper (come l’WSGI per il Python) e neppure nessuna componente del linguaggio Go.
Sara’ sufficiente copiare l’eseguibile Go e farlo girare sul server come un normale servizio.

Il file eseguibile di Go contiene gia tutto al suo interno:

  • il codice, il Go runtime,
  • il webserver,
  • eventuali libraries

Le dimensioni sono cosi’ particolarmente ridotte, in genere intorno ai 10 MB, ed i tempi di compilazione sono tra l’altro immediati, tipicamente meno di 1 secondo, ed è possibile fare cross-compilation da e per qualunque tipo di sistema operativo: Linux, Mac, Windows.

 

Efficienza nell’utilizzo della memoria
In termini di efficienza nell’utilizzo della memoria, Go è comparabile al linguaggio C, eliminando però molta della complessità tipica del C, utilizzando pattern di programmazione più solidi e intuitivi. Il garbage collector in Go è estremamente performante e, dalla versione 1.5 (oggi Maggio 2017 siamo alla versione 1.8.3) ha raggiunto una latenza molto vicina allo zero.

Comparata a quella di Java, l’impronta in memoria di Go è una frazione minuscola. Questo permette alle applicazioni scritte in Go di essere, oltre che semplici da scrivere, anche estremamente performanti, e di richiedere risorse hardware molto ridotte, ottimo ad esempio per ambienti su Docker.

 

Concurrency
Il fiore all’occhiello di Go è necessariamente l’estrema facilità con cui si possono scrivere applicazioni che utilizzano codice concorrente. Infatti, oltre ad essere sintatticamente semplici da scrivere, sono anche estremamente performanti. Nessun’ altro linguaggio di programmazione si avvicina a Go in questo aspetto.

La concorrenza in Go si può implementare in due modi: tramite i canali, che si ispirano alle teorie CSP (Communicating Sequential Processes) di C. Hoare, e tramite le goroutines, funzioni che possono essere eseguite in modo concorrente anche nell’ordine di molte migliaia.

Go inoltre offre uno strumento molto efficace per identificare eventuali data-race, ossia le situazioni in cui due
go-routine accedono alla stessa variabile in modo concorrente e almeno uno dei due accessi è in scrittura.

Altra novità molto interessante: Go è uno dei linguaggi ufficiali per la programmazione su Google App Engine – il servizio PaaS (Platform-as-a-Service) del Cloud di Big G – oltre a Python, PHP e Java. Proprio in questi giorni è stato annunciato che il supporto per Go sulla piattaforma non è più in fase beta ma risulta disponibile tra i servizi GA (Generally Available).

 

Non resta che provare ad adattarlo alle nostre esigenze !.

 

 

Navighi e ti sembra che gli annunci siano fatti ad hoc per te? Retargeting

Retargeting - instrada i tuoi acquisti

RETARGETING – instrada i tuoi acquisti

Ieri sera, durante la nuova puntata di “Fratelli di Crozza” (del 12/05/17), nella gag dell’ INC.COOL.8 , Crozza ha svelato al grande pubblico come funziona una tecnica avanzata di Marketing detta Retargeting. Vediamo di capire meglio di cosa si tratta e come funziona.

Il Remarketing, noto anche come Retargeting, è una forma di pubblicità online che si rivolge agli utenti sulla base delle loro precedenti azioni su Internet, in situazioni in cui tali azioni non si traducono in vendita o conversione.
Questa forma di marketing comportamentale e’ molto interessante per le aziende che c’investono soldi perche’ li aiuta a mantenere il loro marchio comunque visibile agli utenti anche dopo che essi hanno lasciato il sito web.

Per la maggior parte dei siti, solo il 2% del traffico web si tramuta in vendita di prodotti sin dalla prima visita, mentre il Retargeting è uno strumento progettato per aiutare le aziende a raggiungere quel 98%  degli utenti che non hanno effettuato subito una delle azioni desiderate dal sito web, quali (acquisto, contatto, iscrizione etc.).

Come funziona il Retargeting?
Il Retargeting è una tecnologia basata sui cookie, che utilizza un semplice codice  Javascript anonimo per “seguire” il pubblico su tutto il web.

Sei un’azienda ? Ecco come funziona:
devi inserire un piccolo pezzo di codice nel tuo sito web (questo codice è a volte indicato come “pixel”), che viene generato quando si attiva una campagna. Il codice, o pixel, è impercettibile per i visitatori del sito e non influisce sulle prestazioni del sito. Ogni volta che un nuovo visitatore accede al sito, il codice rilascia al browser (Internet Explorer, Firefox, Chrome, Safari, Opera etc.) un cookie anonimo.
Più tardi, quando i visitatori tracciati da questi cookies, navigano sul web, il cookie permette al tuo fornitore di retargeting (ad esempio Google AdWords) di pubblicare annunci, assicurando che questi annunci vengano mostrati solo a persone che hanno già visitato il tuo sito.

Il Retargeting è molto efficace perché concentra i tuoi investimenti pubblicitari, il ROI (Return On Investment) su persone che hanno già familiarità con il tuo marchio e di recente hanno dimostrato interesse. Ecco perché la maggior parte dei marketer che lo utilizzano vedono un ROI più elevato rispetto alle altre campagne sui canali digitali.

Chi fornisce servizi di Retargeting?
E’ possibile attivare campagne di Retargeting sulla Rete Display di Google (un gruppo di oltre un milione di siti web che collaborano con Google per pubblicare annunci pertinenti) attraverso Google AdWords.

E’ anche possibile attivare il Retargeting su Facebook, in modo tale da mostrare i tuoi annunci sul popolare social network a chi ha visitato il tuo sito. Per ora non è possibile attivarlo direttamente dalla gestione delle inserzioni di Facebook, per attivarlo è necessario passare attraverso un fornitore terzo, come AdRoll o Perfect Audience.

Come fare campagne di retargeting di successo?
Il Retargeting è un potente strumento di branding e ottimizzazione delle conversioni,
ma funziona meglio in combinazione con il marketing inbound e outbound o di generazione della domanda. Ad esempio, strategie di marketing che coinvolgono contenuti, SEO, AdWords e Social Media Marketing (come gli annunci pubblicitari su Facebook, Linkedin, etc.) sono l’ideale per acquisire traffico, ma non aiutano l’ottimizzazione della conversione. Al contrario, il retargeting può contribuire ad aumentare le conversioni, ma non può guidare la gente al tuo sito. La migliore possibilità di successo sta perciò nell’utilizzare uno o più strumenti per indirizzare il traffico al tuo sito, e il retargeting per ottenere il massimo da quel traffico.

Docker i Container ed i Microservices

Docker ed i Microservices

Docker ed i Microservices

Su questo portale abbiamo gia piu’ volte scritto e descritto la tecnologia che sta dietro al progetto Docker, sicuramente una delle nuove scoperte informatiche degli ultimi anni, a livello dell’uscita della Virtualizzazione; ma nonostante tutto, non sempre e’ facile capire in poche righe concetti nuovi non sempre semplici da comprendere, quindi eccovi un nuovo articolo, che fara’ parte di una piccola serie di episodi, in cui cercheremo di fare ulteriormente luce su cos’e’ e come funziona questo fantastico progetto.

Dagli script PHP ai microservice
Alla fine degli anni ’90 i siti erano per lo più ancora statici, con qualche script CGI , o altre soluzioni oggi considerate poco eleganti. Poi arrivarono ASP JAVA e PHP. Da li in avanti un progetto Web era prettamente fondato, ad esempio, su file PHP, CSS e immagini; in queste soluzioni tecnologiche era sufficiente copiare tutti questi file su uno spazio hosting e al più modificare qualche file di configurazione, per ricreare un nuovo ambiente web e ricominciare su di un nuovo sito.

Venti anni dopo gli scenari sono drasticamente diversi, le architetture SOA hanno preso piede, si è iniziato a parlare di microservice e tutto è diventato più complesso. Un’applicazione web, soprattutto in ambito enterprise, non è più la directory di cui parlavamo prima, ma un’ insieme di componenti autonomi, ognuno col suo ciclo di vita indipendente, rilasciati su macchine diverse e a ritmi sempre crescenti.

Una complessità così grande non può piu’ essere amministrata con il vecchio copia e incolla, diventa cosi’ necessario uno strumento affidabile che consenta di manipolare o spostare intere applicazioni limitando errori umani, checklist lunghissime da controllare e tutti i passaggi snervanti e carichi di rischi necessari per il deployment.

I container
Cosi’ come nell’industria dei trasporti nacque l’esigenza di una soluzione unica intercambiabile, vennero cosi creati i container: contenitori multiuso, realizzati in formati standard che possono essere passati con facilità da un camion a una nave, poi magari su un treno merci e così via.

Anche nel campo informatico abbiamo bisogno di qualcosa che “contenga” la nostra applicazione, che ci consenta di manovrarla con facilità senza sapere nulla, o quasi, riguardo il suo contenuto. In pratica, abbiamo bisogno anche noi del nostro container!

Docker
L’intuizione del team di Docker è stata quella di prendere il concetto di container e costruirvi attorno un’ ecosistema che ne semplificasse l’impiego. Di questo ecosistema fanno parte una serie di tool: Docker engine, Docker Toolbox, Swarm, Kitematic e tant’ altro ancora per rendere i container qualcosa di accessibile anche a chiunque, sfruttando anche il fatto che la community di sviluppatori che utilizza Docker è davvero molto vasta. Ad esempio, Docker Hub è un repository di container pubblici pronti per l’uso, mentre il codice sorgente del Docker engine è liberamente disponibile su GitHub e vanta quasi 1500 contributor.

Container VS Virtual Machine
Apparentemente i container e le virtual machine sembrano due concetti molto simili ma, sebbene queste due soluzioni abbiano delle caratteristiche in comune, si tratta di tecnologie profondamente diverse tra loro, così come diverso è anche il modo in cui dobbiamo iniziare a pensare all’architettura delle nostre applicazioni. Possiamo creare un container con la nostra applicazione monolitica all’interno, ma così non sfrutteremmo a pieno la forza dei container e quindi di Docker.

Una possibile architettura software adatta per un’infrastruttura a container è la classica architettura a microservizi. L’idea, in pratica, è quella di scomporre l’applicazione in tante piccole componenti ognuna col suo compito specifico ma capaci di scambiarsi messaggi e di cooperare tra loro, cio’ che e’ alla base dei sistemi SOA. Il deploy di tali componenti avverrà poi effettuato singolarmente, come tanti container.

Uno scenario come quello ipotizzato è assolutamente poco pratico con una macchina virtuale, in quanto ogni nuova macchina virtuale istanziata richiederebbe un bel dispendio di energia per la macchina host. I container, al contrario, sono molto leggeri, poiché effettuano una virtualizzazione completamente diversa da quella praticata dalle macchine virtuali.
Nelle macchine virtuali, lo strumento detto hypervisor si preoccupa di riservare (staticamente o dinamicamente) un certo quantitativo di risorse dal sistema operativo host da dedicare poi ad uno o più sistemi operativi, detti guest o ospiti, inoltre ogni sistema operativo guest sarà completamente isolato dal sistema operativo host. Questo meccanismo è molto dispendioso in termini di risorse, per cui l’idea di associare un micro-servizio ad una macchina virtuale è del tutto irrealizzabile.

I container, d’altro canto, apportano un contributo completamente diverso alla questione, l’isolamento è molto più blando e tutti i container in esecuzione condividono lo stesso kernel del sistema operativo sottostante, host. Scompare completamente l’overhead dell’hypervisor, e un singolo host può arrivare a ospitare centinaia di container.

Docker VS VirtualMachine

Docker VS VirtualMachine

Nel prossimo articolo rivedremo come installare Docker tramite i Docker-ToolBox, e come interagire con i container.
Alla prossima