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

Nuovo Raspberry Pi Zero a 11$ con Wifi e Bluetooth

Raspberry Pi Zero W

Raspberry Pi Zero W

Lo scorso mese di Febbraio, in occasione del quinto compleanno del progetto Raspberry Pi il team del progetto ha deciso di presentare al suo pubblico un nuovo membro della famiglia, il Raspberry Pi Zero W.

Come forse è intuibile dal nome, si tratta di una variante dell’originale Raspberry Pi Zero alla quale è stato aggiunto un modulo WIFI ed il Bluetooth.

Il team ha dunque creato quella che possiamo considerare a tutti gli effetti come un’evoluzione naturale del Raspberry Pi Zero, che sin dal suo lancio nel corso del 2015, ha rappresentato l’alternativa low-cost perfetta per coloro che volevano sviluppare progetti di domotica o di IoT. Tuttavia l’evoluzione del mercato ha richiesto l’inclusione di un modulo di connettività wireless che ormai rappresenta una feature essenziale per molti sviluppatori, malgrado esso incrementi leggermente i consumi energetici.

Con il Raspberry Pi Zero W è possibile sviluppare piccoli box di retrogaming che possono essere aggiornati tramite WIFI e controllati con un device Bluetooth. Nello stesso modo è possibile collegare Raspberry Pi Zero W ad un termostato per monitorare i consumi e controllare il riscaldamento da un altro edificio. Indipendentemente dalla natura del progetto a cui si sta lavorando, la connessione wireless è quindi diventata una funzionalità chiave.

Raspberry Pi Zero W utilizza il medesimo chip wireless (nello specifico il Cypress CYW43438) del Raspberry Pi 3 Model B, cosi da offrire il supporto al WIFI 802.11n e al Bluetooth 4.0. Il team ha inoltre collaborato con Kinneir Dufort e T-Zero in modo da offrire già al momento del lancio dei case originali per la nuova arrivata.

Per questo nuovo lancio e’ stata anche pianificata al meglio la distribuzione e sono stati aggiunti nuovi reseller online in modo da evitare di terminare le scorte in magazzino come successe nel 2015 per il lancio del Raspberry Pi Zero.
Il prezzo del Raspberry Pi Zero W è di 11 euro (escluse le spese di spedizione o l’acquisto di uno dei box) e in Italia è già possibile ordinarlo tramite lo store Kubii.