domenica 14 ottobre 2012

Iomega StorCenter IX2-200: installazione del software

Lo Iomega StorCenter IX2-200 che ho in mano (firmware 3.2.6.21659), funziona grazie ad una distribuzione Linux Debian 5.0 per ARMv5, repository armel e come gestore dei pacchetti utilizza ipkg (questo sistema di distribuzione dei pacchetti si chiama optware e principalmente viene utilizzato da router/nas per ambienti soho).

Potete trovare ulteriori informazioni tecniche al seguente link:
http://iomega.nas-central.org/wiki/Category:Ix2-200

D'ora in poi considereremo di operare solamente tramite l'accesso SSH abilitato in precedenza ed è IMPORTANTE considerare che qualunque modifica fatta sulla root, e non contenuta in /opt, è altamente probabile che venga persa allo spegnimento od al riavvio del dispositivo; inoltre eseguendo un df possiamo notare che il root filesystem è molto piccolo, mentre c'è molto spazio libero in /mnt/system, e /opt è un link simbolico alla directory /mnt/system/opt.

Per mantenere eventuali configurazioni software, normalmente in salvate in /etc, vedremo più avanti come fare... e se avete notato non è neanche presente la home dell'utente root.

Per poter installare il software è necessario configurare i repository IPKG da utilizzare... nel nostro caso sono mantenuti da www.nslu2-linux.org; è quindi necessario creare il file di configurazione relativo (unstable è il più aggiornato, ma vi è anche il repository stable, cross o native dipende dalla piattaforma sulla quale è stato compilato):

cat <<EOF > /etc/ipkg.conf
src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
src native http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable
EOF


A questo punto possiamo tranquillamente operare con i comandi ipkg (o meglio, ipkg-opt come vedremo più avanti):

ipkg update # Aggiornamento della lista del software disponibile
ipkg list | more # Visualizzare il software disponibile
ipkg install <nome_pacchetto> # Installazione del software
ipkg list_installed # Per verificare i pacchetti installati
ipkg upgrade # Per aggiornare i pacchetti installati
ipkg remove <nome_pacchetto> # Rimozione del software


Come detto in precedenza, tutto il software sarà da installare in /opt ed affinchè questo non crei problemi è necessario installare il pacchetto ipkg-opt che si occuperà espressamente di questa operazione, quindi il primo software da installare sarà ipkg-opt:

ipkg install ipkg-opt

A questo punto però dobbiamo aggiungere al path ed alle librerie il contenuto della cartella /opt con i nuovi pacchetti installati nel sistema:

export PATH=/opt/bin:/opt/sbin:$PATH
echo "/opt/lib/" >> /etc/ld.so.conf
ldconfig -v
mv /opt/etc/ipkg.conf /opt/etc/ipkg.conf.old
ln -s /etc/ipkg.conf /opt/etc/ipkg.conf


Per semplificarsi la vita è possibile creare uno script che esegue in automatico le operazioni...

vi /opt/bin/ipkg-opt.sh

#!/bin/bash

(grep "/opt/lib" /etc/ld.so.conf > /dev/null) || (echo "/opt/lib/" >> /etc/ld.so.conf; ldconfig -v);
#(echo $PATH | grep '/opt/bin:/opt/sbin' > /dev/null) || (PATH=${PATH}:/opt/bin:/opt/sbin;);
if [[ ! ":$PATH:" == *":
/opt/bin:/opt/sbin:"* ]]; then export PATH=${PATH}:/opt/bin:/opt/sbin; fi;
[ -L /etc/ipkg.conf ] && mv -f /etc/ipkg.conf /etc/ipkg.conf.old || rm -f /etc/ipkg.conf
[ -L /opt/etc/ipkg.conf ] && mv -f /opt/etc/ipkg.conf /opt/etc/ipkg.conf.old || rm -f /opt/etc/ipkg.conf
echo -e "src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable\nsrc native http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable" > /opt/etc/ipkg.conf
ln -s /opt/etc/ipkg.conf /etc/ipkg.conf;
ipkg-opt update;
 

A questo punto si è pronti per cominciare l'installazione dei software di proprio interesse... riporto un esempio relativo a del software che utilizzo normalmente o che considero indispensabile:

ipkg-opt install unzip bzip2 gzip
ipkg-opt install openvpn xinetd
ipkg-opt install ddclient perl-digest-sha1 perl-io-socket-ssl


Se necessario, il software di gestione dei pacchetti IPKG, si occuperà anche dell'installazione delle dipendenze software.

A presto e continuate a fare esperimenti e divertirvi!

sabato 13 ottobre 2012

Iomega StorCenter IX2-200: abilitazione SSH

Dato che sono entrato in possesso di uno Iomega StorCenter IX2-200 che ha avuto dei problemi ai dischi e quindi non era più affidabile, ho deciso di cominciare a farci sopra degli esperimenti per sfruttare le potenzialità del processore arm contenuto al suo interno e quindi comincerò una nuova serie di post riguardandi questo argomento... ed ora partiamo con le basi per potersi collegare... l'abilitazione del servizio SSH!

Per abilitare l'SSH è necessario collegarsi all'indirizzo IP dello StorCenter IX2-200, dopo aver eseguito il login, e caricare la pagina:
  • http://[IP Address of your NAS]/support.html (per la versione "normale");
  • https://[IP Address of your NAS]/diagnostics.html (per la versione "cloud edition").

A questo punto si può abilitare il protocollo SSH e la porta da utilizzare nella schermata apparsa; vi sono anche molte altre funzioni utili, tipo quella di dump della configurazione del NAS... che esulano da questo post, ma vi fanno capire che è sempre importante guardarsi intorno.

A questo punto è possibile collegarsi al NAS tramite l'utente root ed utilizzando come password una stringa "combinata": soho[password dell'utente admin]


Alla prossima puntata e buon divertimento!

giovedì 16 febbraio 2012

Gli ammortizzatori sociali

Come promesso proseguiamo con le informazioni che possono essere utili in caso di licenziamento.
Nel caso siate stati licenziati (quindi non dovete esservi dimessi, se non per giusta causa) potrete accedere all'indennità di disoccupazione (6 mesi con il 60% dell'ultima busta paga e 2 con il 50%... se avete più di 50 anni vi spettano ancora 4 mesi con il 40%... tutto questo viene considerato in base al lordo annuale diviso 12 considerando le ultime 3 buste paga) e, se la motivazione è stata oggettiva, alle liste di mobilità (la durata dell'iscrizione varia in base alla vostra età)... se vi hanno offerto di dimettervi e voi avete accettato, spero che vi abbiano dato almeno un bel po' di soldi in più rispetto a quelli che vi sarebbero spettati comunque.
Prima di tutto andate a fare un'altra coda agli uffici per l'impiego dove vi potrete iscrivere alle liste di disoccupazione ed è indispensabile fornire al Centro per l’impiego, della provincia d'appartenenza, la propria dichiarazione di "immediata disponibilità" allo svolgimento di attività lavorativa; considerate che è possibile essere chiamati per l'aggiornamento del proprio percorso formativo... nel caso non ci si presenti l'indennità potrà essere sospesa e verrete cancellati dalle liste di mobilità.
Il "tasto dolente" dei centri per l'impiego sono le code, sempre lunghissime, soprattutto i primi giorni del mese... il centro per l'impiego di cui ho usufruito io distribuiva i numeri prima dell'apertura e li ritirava dopo averne dati un tot, quindi affidandosi agli orari scritti sul sito si potevano chiedere solamente informazioni... conviene telefonare per sapere le modalità. Ultima considerazione, se non vi chiamano per i corsi è molto difficile che vi chiamino per offrirvi lavoro... chi cerca un lavoratore spesso preferisce affidarsi alle società interinali od a canali di reclutamento innovativi, tipo internet.
Al centro per l'impiego, dopo aver compilato un po' di moduli ed un curriculum molto generico, verrete iscritti nelle liste di disoccupazione e, se siete stati licenziati per motivi oggettivi, vi verrà consegnato un modulo da far compilare dal vostro datore di lavoro che vi permetterà di iscrivervi alle liste di mobilità (sì, dovrete tornare dove vi hanno detto che non eravate più necessari e dovrete anche rifarvi la coda qui, nel centro per l'impiego).
Con il foglio di iscrizione alle liste di disoccupazione ora potete andare presso un patronato, che sono gli unici enti che possono gestire le pratice tra voi e l'INPS, per fare la richiesta di indennità di disoccupazione (forse è possibile farlo anche online, ma non ho provato), recatevi sul posto con le vostre coordinate bancarie dato che vi verrà chiesto come farvi avere i soldi.
A questo punto le code sono finite, e stando comodamente seduti sulla vostra sedia di casa mentre cercate il nuovo impiego, un po' di soldi eviteranno di farvi sentire un cappio al collo dato che le spese "a regime" continuerete ad averle... sarà anche un periodo limitato, ma è sempre meglio di niente.
Ricordatevi che nel caso ricominciaste a lavorare è importantissimo comunicare la ripresa dell'attività lavorativa entro 5 giorni, soprattutto in caso di iscrizione alle liste di mobilità, se non lo faceste la pena è la cancellazione dalle liste (e vi conviene mantenerla stretta dato che vi rende molto appetibili per le società che cercano sgravi fiscali)... quindi dovrete compilare il modulo SR04/DS56bis e farlo pervenire entro 5 giorni dalla ripresa dell'attività; in questo caso, per evitare di fare code all'INPS, ho approfittato dei servizi online forniti dal portale INPS, inviando il modulo e ricevendo un numero di protocollo come ricevuta della consegna.

Alla prossima puntata!

martedì 7 febbraio 2012

Il licenziamento (ca##o!!!)

L'esperienza è una cosa che nella vita serve sempre, ma alcune volte piacerebbe fare a meno di acquisirla in determinati campi, ma non potendo sceglierli, a sto turno mi sono trovato a spasso.
Qui darò una breve descrizione di quello che è successo a me (nel gennaio del 2012) e senza approfondire gli aspetti personali, tratterò quelli tecnici, l'ordine delle operazioni da fare per ottenere l'indennità di disoccupazione ordinaria (per poterne usufruire mi pare si debba aver lavorato almeno per 2 anni) ed iscriversi alle liste di mobilità (solamente se si è stati licenziati per motivazioni oggettive).
Se state leggendo probabilmente vi trovate in questa situazione o qualcuno vi ha chiesto di informarvi... io non sono un avvocato, ma solamente una persona che ci è passata, quindi potranno essere presenti inesattezze o cose non completamente corrette (e di cui non mi sono accorto e che non hanno comportato problemi); la regola è sempre una: DOCUMENTATEVI da più fonti, anche se vi sembra di leggere le stesse cose.
Allora, partiamo da zero... vi consegnano la lettera di licenziamento, questo può essere in tronco (immediatamente esecutivo e dovrete lasciare la sede di lavoro in giornata) o con preavviso (tra tot tempo sarete a spasso).
Se il licenziamento è in tronco per giusta causa vuole dire che l'avete fatta grossa o che qualcuno l'ha sparata grossa... io per fortuna non sono tra questi.
Licenziamento con motivazione soggettiva vi dà il diritto di avere un preavviso (probabilmente ci devono essere delle lettere di ammonizione/richiamo precedenti), se non ve lo danno dovrebbe esservi versata l'indennità e varia a seconda del vostro livello e degli anni di servizio (sentite i sindacati o leggetevi il contratto nazionale a cui eravate soggetti); è comunque una motivazione comportamentale vostra che viola il contratto (spesso insubordinazione, liti e/o percosse), ma meno grave del precedente.
Licenziamento con motivazione oggettiva, ovvero la vostra società per qualche motivo deve/vuole farvi fuori... la più classica è la riorganizzazione aziendale con varie scusanti che si devono provare in caso di vertenza.
Ora proseguirò parlando della mia esperienza, quindi licenziamento oggettivo, per riorganizzazione aziendale, in una società piccola con meno di 16 dipendenti e quindi solamente con la tutela obbligatoria... la tutela reale è quella che si basa sull'articolo 18 e riguarda solamente le società con almeno 16 dipendenti.
Ora partiamo con le code, sicuramente non saranno un problema con tutto il tempo libero che vi sarete ritrovati... fatevi un giro per sindacati con la vostra lettera di licenziamento ed un libro da leggere mentre aspettate, girateli tutti (cgil, cisl e uil), sapranno dirvi se le cause sono lecite e corrette oppure se potete sperare di ottenere del denaro a titolo di risarcimento per il danno subito aprendo una vertenza (la tutela obbligatoria prevede solamente un indennizzo economico... ed il valore è compreso tra le 2,5 e le 6 mensilità). E' possibile anche che nella lettera di licenziamento non vi siano le motivazioni e/o queste siano abbastanza oscure e/o mascherate, tentando di farlo passare come valido mentre non lo è... in questo caso entro 15 giorni dalla lettera dovete inviare una raccomandata in cui chiedete i chiarimenti che vi spettano; il datore di lavoro ha 7 giorni per rispondervi pena la nullità del provvedimento.
Ora che sapete quello potreste ottenere, e magari vi ha tirato un po' su il morale sapere che qualche soldo potrebbe rientrare (sempre meglio di niente no?!? peggio può andare solamente in altri campi dato che non avendo un lavoro non può peggiorare), c'è da rimboccarsi le maniche per accedere agli ammortizzatori sociali... ma questo sarà oggetto della prossima puntata.

A presto!

mercoledì 15 dicembre 2010

Considerazioni su FastWeb e su Alice... WiFi security

Visto che in molti mi chiedono informazioni sulla protezione delle loro reti WiFi, gli consiglio di andarsi a rileggere il mio post "Le reti WiFi... configurazione e considerazioni"... qui è possibile trovare tutto quello che serve per proteggersi se vi siete comprati un router "decente".
Se invece siete clienti FastWeb o Telecom... condolianze, la prossima volta sceglierete la connessione in base ad altri canoni rispetto a quelli utilizzati fin'ora... A parte gli scherzi, quello che ho scritto prima era per sdrammatizzare un po', ma un utente tecnicamente poco valido e poco sicuro di sè che si ritrovasse con uno dei due gestori menzionati avrebbe dei problemi a proteggere la propria rete, principalmente per due fattori:
  • l'utente classico viene considerato tecnicamente incapace e quindi i settaggi sono "standard" e con tutto abilitato affinchè sia semplice l'utilizzo per chi esegue la connessione la prima volta;
  • il router viene fornito con il WiFi abilitato e funzionante con PSK di default (diversa per ogni router... ma attenzione alla parola DEFAULT);
  • spesso questi router hanno firmware brandizzati e poche sono le opzioni su cui si ha pieno controllo... tutto questo sempre per facilitare l'utente medio, oltre che quello esperto che se ne potrà approfittare.
Ora passiamo alla parte "interessante" ed al significato della frase "PSK di DEFAULT".
Siccome si considera che l'utente medio non sia tecnicamente cosciente di cosa sia un router e sia incapace di configurarlo correttamente, anche seguendo un photo/video tutorial (considerazione purtroppo corretta in molti casi visto che per molti dover configurare qualcosa è una scocciatura), da questi due fornitori di servizi è stata fatta la scelta di fornire appparecchiature già configurate e pronte a svolgere tutte le funzioni richieste ad un prodotto di fascia medio/bassa, bloccando opzioni ed impostazioni che un utente normale non comprenderebbe e non sarebbe in grado di restorare in caso di modifiche e successivi problemi di funzionamento.
Questo ha fatto sì che le case si siano riempite di router con l'accesso WiFi abilitato, con protocollo WPA (livello di sicurezza buono considerando una PSK robusta) e con delle PSK diverse da dispositivo a dispositivo.
Essendo impensabile impostare manualmente una PSK diversa per ogni apparecchiatura (e fornirla poi scritta su di un foglio, assieme al SSID, al cliente affinchè possa collegarsi), si è pensato di sviluppare un algoritmo che dal SSID e dal numero di serie dell'apparecchio (legato al MAC) fornisse una PSK univoca utilizzando numeri costanti "segreti" e contenuti nel firmware... tutto questo è stato ottimo finchè i firmware dei router non sono stati sottoposti a reverse engineering, permettendo di venire a conoscenza dei così detti "magic number" e di come questa PSK venisse calcolata.
Al tempo attuale in cui sto scrivendo il documento, non ci sono più router (FastWeb o Alice) considerabili sicuri utilizzando questo sistema, i firmware vengono puntualmente "reversati" ed i nuovi "magic number" od algoritmi di generazione delle chiavi diventano di dominio pubblico, permettendo di venire a conoscenza delle PSK con metodi più o meno semplici.
L'unico consiglio che posso dare a chi possiede questo tipo di apparecchiatura è quello di cambiare tutto il modificabile, sempre che il router sia d'accordo, ed andare ad agire sul nome del SSID, sulle impostazioni e SICURAMENTE sulla PSK.
Come conclusione vi rendo disponibili un po' di link a risorse esterne per testare se anche i vostri router, in configurazione di default, sono vulnerabili o meno agli attacchi "pubblici" ed ormai largamente conosciuti.


Alla prossima!

venerdì 8 ottobre 2010

Fast-Track, automatizzare un pen test

Visto che essendo un security engineer mi occupo di sicurezza in generale, e questa spazia dalla vulnerability analysis al testing intrusion, e dalla difesa perimetrale all'identificazione degli attacchi, inizio una nuova serie di post che si dedicheranno a queste tecniche ed all'approfondimento degli strumenti ritenuti più validi e/o semplici da utilizzare.
Ora facciamo una piccola introduzione a cos'è un pentest... è una procedura atta a verificare la sicurezza di un sistema cercando di penetrarlo; una delle sfide maggiori è automatizzare questo tipo di test per eseguirlo in maniera automatica sopra i sistemi da verificare.
L'automatizzazione è una lama a doppio taglio perchè, oltre a semplificare di molto le procedure di test, permette ai cracker ed agli script kiddies di ottenere velocemente una lista di macchine facilmente compromissibili su di una rete.
Logicamente tutto quello che vedremo o faremo è nell'ottica di studio od in seguito a richiesta, ed è possible farlo solamente dopo aver ottenuto un'autorizzazione scritta dell'interessato per potersi tutelare in caso di problemi legali... se non lavorate nel campo della sicurezza limitatevi ai computer entro le vostre mura domestiche.
Ed ora partiamo con un buon software opensource... Fast-Track, scritto in Python e che si basa su metasploit per l'esecuzione dell'attacco.
La seguente procedura è valida per macchine con distribuzioni Debian-like.
Prima di tutto è necessario scaricare ed installare ruby, base di metasploit, sqlite3, nmap, logicamente metasploit 3, che verrà prelevato tramite cvs, ed infine Fast-Track, sempre tramite cvs:
  • apt-get install ruby libruby rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libiconv-ruby rubygems
  • apt-get install sqlite3 nmap
  • svn co https://metasploit.com/svn/framework3/trunk/
  • svn co http://svn.thepentest.com/fasttrack/
  • python setup.py install
Durante l'installazione verranno richieste alcune informazioni relative al percorso di installazione di metasploit; se qualcosa non dovesse andare a buon fine sappiate che avete bisogno dei seguenti moduli python: PExpect, FreeTDS, PYMSSQL, ClientForms, Beautiful Soup, PyMills e Psyco.
A questo punto è possibile eseguire Fast-Track in maniera interattiva:
  • python fast-track.py --i
Le prime operazioni da fare sono gli aggiornamenti (opzione 1) completi (opzione 10) di Fast-Track. Da adesso in poi è possibile lanciare gli attacchi su range di indirizzi IP (opzione 2) specificati secondo la sintassi di nmap; quindi scegliendo il bind shell (opzione 1) verranno tentati attacchi utili ad exploitare una shell sulla macchina target. Nel caso non ne venissero trovati verrà mostrato un messaggio "No sessions".
Per conoscere quali plugin sono stati utilizzati si può utilizzare il comando "sessions --v" e con "sessions --i 1" si accede alla prima macchina che è possibile penetrare con la relativa vulnerabilità ritrovandosi all'interno di meterpreter.
Una volta all'interno di meterpreter è possibile utilizzare diversi comandi utili per recuperare informazioni sulla macchina target:
  • hashdump - mostra il contenuto del database SAM della macchina compromessa (che può quindi essere sottoposto ad un attacco offline utilizzando uno strumento come John the Ripper per individuare le password);
  • upload - carica un file o una directory utili ai fini di compromettere ulteriori macchine o creare backdoor (ad esempio un cracker potrebbe caricare ed eseguire processi a proprio piacimento);
  • keyscan_start , keyscan_stop , keyscan_dump - vengono utilizzati per catturare la digitazione sulla tastiera della macchina compromessa ed eventualmente venire a conoscenza di login e password utilizzati dalla vittima;
  • shell - fornisce un prompt dei comandi sulla macchina compromessa.
Un esempio di utilizzo classico della shell è relativo alla creazione di un nuovo utente con cui il cracker si assicura l'accesso alla macchina anche in successive occasioni creandosi un utente con "net user cracker password /ADD".
Logicamente il nostro obbiettivo è identificare le possibili vulnerabilità del sistema per avvisare il nostro committente di cosa deve fare per proteggersi... in questo caso, per risalire alle informazioni che ci interessano dovremo riprendere l'output del comando "sessions --v", verificare il nome della vulnerabilità segnalata da metasploit ed andare a ricercarne la causa, con un'eventuale spiegazione e la rispettiva soluzione (queste in genere sono l'installazione di una patch o la riconfigurazione/disabilitazione del servizio se non fossero disponibili patch).
Per oggi è tutto, quello che volevo dirvi l'ho detto e quello che vorrei ricordarmi l'ho scritto, quindi, come detto all'inizio, divertitevi sui vostri PC, ma non fate guai in giro dato che i problemi che ne potrebbero scaturire sono di tipo penale.

sabato 25 settembre 2010

I tool per le analisi delle reti WiFi

Visto che ho cominciato a parlare delle reti WiFi, continuiamo con la loro analisi e con gli strumenti necessari all'identificazione.
Prima di tutto una introduzione: ogni dispositivo WiFi, per poterlo usare in modalità "avanzata" con questi tool, deve supportare determinate modalità; non tutte le periferiche possono farlo e soprattutto queste funzioni possono essere state implementate in release più recenti del software o dei driver (nel kernel od a parte)... quindi prima di pensare che non siate in grado di ottenere i risultati che volete prestate attenzione ad utilizzare release di software, driver e kernel aggiornati.
Adesso una piccola considerazione... i tool più diffusi e documentati si trovano su linux; l'unico tool degno di nota, per le analisi dello spettro di frequenze sotto windows, trovo che sia NetStumbler, ma questa è un'opinione altamente personale personale... ci sono dei porting per windows dei tool linux, ma io preferisco utilizzarli sotto il loro sistema operativo nativo.
Ora passiamo ai tool che si utilizzano sotto linux; sono tool completi e che coprono la maggior parte delle necessità, logging compreso e devono essere necessariamente utilizzati dall'utente amministrativo, quindi da root. I due principali sono:
  • kismet;
  • airodump.
kismet è il software più complesso, si basa su di un'interfaccia testuale a finestre, visualizza le reti presenti, gli eventuali client connessi, la potenza del segnale, il canale utilizzato e molte altre informazioni utili oltre che eseguire la cattura del traffico; ha la possibilità di essere collegato a dispositivi GPS per localizzare le reti individuate e ci sono anche dei tool che dai log permettono di importare gli AP all'interno di google maps o google earth (kisgearth e pykismetearth).
airodump fa parte della suite di aircrack-ng ed è un tool minimale, indirizzato principalmente ad individuare le reti WiFi, il loro SSID, il mac address, il canale e se vi sono client connessi.
Entrambi gli strumenti sono ottimi per eseguire le analisi prima dell'installazione di una propria apparecchiatura WiFi per trovare i canali liberi e ridurre al minimo le possibilità di interferenze con altre apparecchiature già presenti od che verranno installate in seguito dai vostri vicini.
L'utilizzo di kismet è più complessa perchè offre molte possibilità di configurazione e personalizzazione, quindi è da configurare prima dell'utilizzo e la sua configurazione risiede all'interno del file /etc/kismet/kismet.conf... la parte più importante e sicuramente da impostare prima dell'utilizzo è il parametro ncsource che rappresenta l'interfaccia wireless da mettere in modalità promiscua.
Io ho eseguito i test con varie schede e riporto le linee necessarie per configurare la sorgente:
  • Belkin F5D7011 (Broadcom b43): ncsource=wlanX:name=broadcom
  • Intel IPW2200: ncsource=ethX:type=ipw2200
  • Zydas ZD1211: ncsource=wlanX:type=zd1211
Una volta configurato il source è necessario lanciare il comando: kismet
Invece airodump non ha alcun file di configurazione, ma tutti i parametri vengono passati dalla linea di comando; prima è necessario porre l'interfaccia in modalità di monitor e successivamente si inzia a loggare il traffico con i seguenti comandi: airmon-ng start ethX && airodump-ng ethX
Un'ultima considerazione da fare riguarda la pratica chiamata "packet injection"; questa è una tecnica molto particolare perchè permette di creare dei pacchetti secondo ke proprie esigenze ed inviarli tramite la propria scheda wireless... ricordatevi che normalmente i driver del kernel, in versione originale, non permettono questa tecnica, quindi per poterla utilizzare è spesso necessario patchare i driver od utilizzare distribuzioni che utilizzano driver già modificati (ad esempio la distribuzione backtrack).
Per la packet injection (aireplay-ng --test <ath|eth|wlan>X) ho fatto dei test con le schede WiFi che possiedo e varie versioni di BackTrack... i risultati sono qui riportati:

  • Belkin F5D7011: BT3 final con modulo bcm43xx - KO, BT4 final - OK, BT4 r1 con modulo b43 - non è supportato il cardbus, quindi non funziona
  • Intel IPW2200: BT3 final - KO, BT4 final - KO, BT4 r1 - KO
  • Zydas ZD1211:BT3 final - OK, BT4 final - OK, BT4 r1 - OK
Direi che anche oggi le informazioni essenziali da cui partire sono state fornite... in rete c'è moltissima documentazione, quindi non è sicuramente un problema trovare gli approfondimenti.

giovedì 23 settembre 2010

Le reti WiFi... configurazione e considerazioni

Piccola introduzione... le comunicazioni wireless sono rilevabili da chiunque senza che l'interessato possa accorgersene ed avvengono a determinate frequenze, queste sono stabilite dai canali (11 o 13 a seconda del posto in cui si vive). Affinchè trasmissione e ricezione siano di buona qualità non devono esserci interferenze; per ridurre al minimo le possibili interferenze è necessario trovare le frequenze libere "più libere" da utilizzare e quindi prima di procedere alla scelta del canale si deve rilevare con uno scanner la presenza di altri eventuali access point; una volta appuntati quelli presenti ed i canali utilizzati, si sceglierà il proprio in modo che sia il più possibile lontano dagli altri e cercando comunque di evitare sovrapposizioni; questo aiuta a massimizzare l'area coperta riducendo le interferenze (ricevute e prodotte per le apparecchiature già presenti).
Ora passiamo alla parte interessante e che ha a che fare con la sicurezza delle comunicazioni wireless ormai spesso presenti nelle nostre case vista la comodità di collegamento che offrono...
La configurazione di un router non deve assolutamente tralasciare la sicurezza della connettività dato che per la normativa italiana (ed anche altre) sei legalmente responsabile delle azioni compiute dal tuo indirizzo IP; inoltre non è previsto che tu sia "inconsapevole" delle azioni fatte o tecnicamente incapace di proteggere la tua linea... per la legge l'ignoranza non è una scusante.
Per mantenere il controllo della propria linea e sapere cosa succede sulla propria rete è essenziale ed obbligatorio utilizzare sistemi che impediscano a chiunque di infiltrarsi, inoltre per la propria privacy è essenziale nascondere il traffico da occhi indiscreti... tutto questo viene risolto utilizzando uno standard crittografico per la trasmissione e ricezione dei dati.
Prima di passare all'analisi vera e propria degli standard crittografici, analizziamo prima i dati necessari per collegarsi ad una rete WiFi facndo alcune considerazioni anche sugli altri parametri al fine di aumentare la sicurezza... il SSID e la Key/PSK/certificato se presente.Le prime considerazioni che possiamo fare riguardano il SSID; questo è il nome della connessione WiFi che verrà visualizzato, o deve essere impostato, da chi tenta di connettersi alla rete. E' sempre consigliabile modificare quello di default, se possibile, ed inserirne uno di fantasia... è sconsigliato inserire nomi o cognomi che vi identifichino in maniera certa; se per qualcuno siete voi l'obbiettivo, tenterà finchè non riuscirà ad ottenere quello che vuole ed anche se si è abili, non è bello fare da bersaglio.
Un secondo passo riguarda la modalità di diffusione del SSID: normale o nascosto. Siccome per collegarsi si deve conoscere il SSID della rete, impostarlo al valore nascosto può aiutarci a tenere la rete nascosta, ma questo solamente finchè non si collega qualcuno di autorizzato... nel momento in cui avviene la connessione, ovvero in fase di handshake, questo viene trasmesso e se qualcuno è in fase di sniffing può facilmente recuperarlo.
Ora passiamo alle possibili connessioni ed ai protocolli crittografici cercando di spiegarli in seguito:
  • open/not crypted;
  • WEP (64/128 e 256bit, ma non l'ho mai visto dato che è stato subito superato da WPA);
  • WPA (PSK/personal o Radius/enterprise basato su TKIP);
  • WPA2 (PSK/personal o Radius/enterprise basato su AES).
Una rete di tipo open od uncrypted offre la possibilità, a chiunque conosca il proprio SSID, di collegarsi e di non crittografare il traffico lasciandolo esposto a chiunque in ascolto... queste considerazioni fanno sì che sia la configurazione più insicura. Inoltre è da considerare il fatto che molte apparecchiature sono in grado di collegarsi senza neanche chiedere conferma all'utente (spesso dipende dalla configurazione del dispositivo) e rendendo la propria rete un "porto di mare".
I primi standard crittografici erano nati più per proteggere il traffico che la propria rete, in modo da impedire a persone non autorizzate l'accesso ai dati ed in seguito alle reti WiFi.
Il primo protocollo nato è stato il WEP; attualmente è considerato un protocollo obsoleto in quanto ha vulnerabilità note che permettono di risalire alla chiave di cifratura analizzando semplicemente il traffico che viene generato tra il client e l'access point. L'utilizzo è altamente sconsigliato, ma in alcuni casi i dispositivi obsoleti permettono solamente questo livello di crittografia... è inoltre l'unico che permette la creazione di rete WiFi diffuse da più access point collegati tra loro via radio (e non via ethernet); questa particolare configurazione si chiama W.D.S. (Wireless Distribution System) e pochi router la supportano.
L'evoluzione del WEP, per sopperire alle sue mancanze e correggerne le vulnerabilità, è stata la famiglia di protocolli WPA che al momento è la più robusta conosciuta; questa permette di crittografare il traffico, impedisce l'accesso a chi non è a conoscenza delle credenziali necessarie alla connessione e non è possibile risalire alla PSK attraverso la semplice analisi del traffico. WPA è stato un protocollo di passaggio, transitorio, e nato per sopperire alla veloce "caduta" del WEP; le debolezze del WEP sono state superate grazie all'utilizzo di un handshake in 4 fasi, l'utilizzo di funzioni di hash legate al SSID e la crittografia TKIP. In realtà il protocollo che era in studio e che avrebbe dovuto sostituire il WEP era denominato 802.11i e prevedeva l'utilizzo della cifratura AES, ma a quei tempi non era ancora pronto... quando è stato pronto è giunto sul mercato e chiamato WPA2.
A livello di protocollo WPA/WPA2 possiamo subito notare due sotto tipologie:
  • PSK/personal utilizzato a livello domestico e vulnerabile ad attacchi di tipo brute force;
  • Radius/enterprise utilizzato all'interno di ambienti in cui sono presenti server radius di appoggio con la possibilità di autenticazione tramite l'utilizzo dei certificati, quindi invulnerabile ad attacchi di tipo brute force.
Come detto, i protocolli della famiglia WPA sono attualmente i più sicuri anche se quelli di tipologia personal sono attaccabili attraverso metodi di brute forcing, ma la complessità numerica legata all'algoritmo fa supporre che attacchi di questo tipo siano computazionalmente molto pesanti e lunghi da portare a termine.
Logicamente, in queste condizioni, è necessario che la Key o PSK sia scelta adeguatamente e non dovrebbe essere composta da parole semplici e presenti all'interno di un dizionario, ma formata da stringhe contenenti lettere maiuscole, minuscole, numeri e simboli... in poche parole una buona password policy rende la vita molto complicata a chi vuole introdursi all'interno della nostra rete (come anche in tutte le altre situazioni).
Per oggi direi che è tutto... a presto!

domenica 12 settembre 2010

Duplicare un server Debian

Oggi ci occupiamo di come duplicare un server Debian running, ma prima dobbiamo definire la parola "duplicare"... per duplicare non si intende clonare completamente la macchina (quindi compresa la configurazione), ma ottenere un sistema installato da nuovo con gli stessi pacchetti che sono sulla macchina presa come master.
Ricordo che come per tutte le operazioni critiche è sempre consigliabile fare un backup dei dati vitali... anche se non dovrebbero esserci eventi imprevisti, in questo modo si è certi di non perdere dati vitali qualunque comando venga lanciato.
I passi che seguiremo sono i seguenti:
  1. installare e configurare un sistema secondo le proprie necessità;
  2. creare una lista dei pacchetti installati;
  3. installare un sistema base sulla nuova macchina;
  4. usare la lista dei pacchetti generata in precedenza per ottenerne un sistema in grado di svolgere le stesse funzioni.
A questo punto sappiamo che il punto di partenza è avere un sistema installato come quello che vogliamo creare, ed utilizzeremo quindi la lista dei pacchetti installati su questo per generare il nostro duplicato dato che con alte probabilità saranno stati aggiunti e rimossi determinati pacchetti.
Un punto importante da considerare è il tipo di distribuzione installata; da un sistema stable noi possiamo clonare/generare un sistema testing, ma da un sistema testing non possiamo generare un sistema stable, o meglio, potrebbero esserci dei problemi a causa della presenza di un maggiore numero di pacchetti nella distribuzione testing e non presenti nella stable.
Avendo un sistema di partenza dobbiamo prelevare la lista dei pacchetti presenti e per operare con i pacchetti la distribuzione Debian, o altre debian-like, si affidano all'utilizzo del comando "dpkg"; quindi per prelevare la lista dei pacchetti installati procediamo nella seguente maniera:

  • dpkg --get-selections > /tmp/installed.pkg
Questo comando restituisce la lista dei pacchetti installati e la scrive all'interno del file /tmp/installed.pkg; di questo file ne avremo bisogno in seguito.
Ora dobbiamo installare la nuova macchina, ma non mi occuperò di questo procedimento in quanto ci sono molti tutorial che spiegano come procedere... il nostro scopo è solamente quello di arrivare ad avere un sistema base installato da cui proseguire per ottenere il nostro duplicato.
Una volta installato il sistema base, procediamo all'aggiornamento dei pacchetti già installati con i comandi:
  • apt-get update && apt-get upgrade
A questo punto possiamo occuparci dell'installazione, o rimozione, secondo i pacchetti presenti sul sistema master e, supponendo che il file generato in precedenza sia di nuovo posizionato in /tmp, è necessario eseguire i seguenti comandi:
  • dpkg --set-selections < /tmp/installed.pkg && apt-get -u dselect-upgrade
La prima parte del comando esegue il preselect dei pacchetti presenti nella lista, mentre la seconda parte utilizza apt-get per aggiornare il sistema in base alla lista dei pacchetti forniti da dpkg. A questo punto c'è solamente da aspettare il download e l'installazione, o rimozione, dei pacchetti desiderati.
L'ultima operazione da eseguire per avere il nuovo sistema funzionante è la configurazione di tutti i pacchetti necessari; qui è possibile procedere in due modi:
procedere manualmente alla configurazione dei singoli pacchetti;
eseguire un diff tra i vecchi file di configurazione ed i nuovi, eseguendo sui file solamente le modifiche "appprovate";
copiare i file di configurazione dal sistema master su di questo nuovo.
Il primo sistema è quello più pulito (non vengono trasferite configurazioni obsolete), ma anche il più lungo; il secondo sistema è un buon compromesso, permettendo di agire manualmente sulle singole modifiche e/o decidere quali trasferire; mentre l'ultimo sistema potrebbe lasciare un sistema sporco, trasferendo file obsoleti o non più necessari alla configurazione di determinati pacchetti.
Ed anche per oggi direi che è tutto, buona clonazione dei sistemi!

P.S.: clonare può anche essere letto come backup del sistema... e come si suol dire: "A buon intenditore, poche parole!"

lunedì 5 luglio 2010

GIMP Scripting - HDR

Dato che ormai ho preso un po' di mano con lo scripting in GIMP sto cercando di realizzare degli effetti che mi piacciono da applicare indistintamente alle foto senza dover ripetere continuamente tutte le operazioni.
L'HDR (High Dynamic Range) è l'effetto che ho scelto; se vogliamo essere pignoli questo effetto necessiterebbe di almeno 3 immagini, scattate con tempi di esposizione diversi, in maniera da avere un'immagine sovraesposta, una normale ed una sottoesposta... unendo queste tre con particolari procedure si ottiene un HDR reale.
Siccome non sempre è possibile procurarsi facilmente 3 immagini con esposizioni diverse, un po' di tempo fa ho trovato un tutorial che spiegava come ottenere un'immagine simil HDR partendo da un singolo scatto applicandogli vari filtri per simulare la sovra/sotto esposizione ottnendo un buon risultato; trovando la procedura valida ho scriptato il processo spiegato ottenendo l'effetto voluto tramite il seguente  script-fu:

; Script to make HDR Image from one layer file
;
; The script is located in "<Image> / Script-Fu / SebaX75 / HDR..."
;
; Last changed: 29 Aprile 2010
;
; Copyright (C) 2010 SebaX75 <sebax75 AT yahoo DOT it>
;
; --------------------------------------------------------------------
; 
; Changelog:
;  Version 0.1
;    - Initial version, with manual dodge-burn 
;  Version 0.2
;    - Added dodge-burn code and automated
;
; --------------------------------------------------------------------
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 3 of the License, or
; (at your option) any later version.  
; 
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
; 
; You should have received a copy of the GNU General Public License
; along with this program; if not, you can view the GNU General Public
; License version 3 at the web site http://www.gnu.org/licenses/gpl-3.0.html
; Alternatively you can write to the Free Software Foundation, Inc., 675 Mass
; Ave, Cambridge, MA 02139, USA.
;

; This part code was got from dodge-burn.scm script-fu (http://registry.gimp.org/files/dodge-burn.scm) by Harry Phillips <script-fu@tux.com.au>
(define (my-layer-dodge-burn    myImage
   myLayer
   modeOp
   thinNum
   thickNum
 )
 ;Initiate some variables
 (let* (
  (firstTemp (car (gimp-layer-copy myLayer 1)))
  (thinTemp)
  (thickTemp)
  (merged)
  )
  ;Rename the layer
  (gimp-drawable-set-name firstTemp "First temp")
  ;Add the first layer to the image
  (gimp-image-add-layer myImage firstTemp 0)
  ;Desaturate the layer
  (gimp-desaturate firstTemp)
  ;Copy and add the dodge me layer as the thin layer
  (set! thinTemp (car (gimp-layer-copy firstTemp 1)))
  (gimp-image-add-layer myImage thinTemp 0)
  ;Blur the thin layer
  (plug-in-gauss 1 myImage thinTemp thinNum thinNum 0)
  (if (= modeOp 1)
   ;Change the mode of the thin layer to lighten
   (gimp-layer-set-mode thinTemp 10)
   ;Change the mode of the thin layer to darken
   (gimp-layer-set-mode thinTemp 9)
  )
  ;Blur the dodge me layer
  (plug-in-gauss 1 myImage firstTemp thickNum thickNum 0)
  ;Copy the dodge me layer as a new layer
  (set! thickTemp (car (gimp-layer-copy firstTemp 1)))
  ;Add the new layer to the image
  (gimp-image-add-layer myImage thickTemp 1)
  ;Merge the top layer down and keep track of the newly merged layer
  (set! merged (car (gimp-image-merge-down myImage thinTemp 0)))
  ;Change the mode of the dodge copy layer to difference mode
  (gimp-layer-set-mode merged 6)
  ;Merge the top layer down and keep track of the newly merged layer
  (set! merged (car (gimp-image-merge-down myImage merged 0)))
  (if (= modeOp 1)
   (begin
    ;Rename the layer
    (gimp-drawable-set-name merged "Dodge channel")
    ;Change the mode of the dodge copy layer to dodge mode
    (gimp-layer-set-mode merged 16)
   )
   (begin
    ;Rename the layer
    (gimp-drawable-set-name merged "Burn channel")
    ;Change the mode of the dodge copy layer to dodge mode
    (gimp-layer-set-mode merged 17)
    ;Invert layer
    (gimp-invert merged)
   )
  )
  ;Return
 )
)

(define (script-fu-SebaX75-HDR      myImage
    layer0
    thinAmount
    thickAmount
 )
;       Start an undo group so the process can be undone with one undo
 (gimp-image-undo-group-start myImage)

 ; Rimuove qualunque selezione
 (gimp-selection-none myImage)

 ; Esegue la normalizzazione del layer principale
 (plug-in-normalize 1 myImage layer0)

 ; Inizializzo le variabili da utilizzare
 (let* ( (layer1()) (layer2()) (layer3()) (layer4()) )

  ; Creo una copia del layer principale, lo aggiungo e lo rinomino
  (set! layer1 (car (gimp-layer-copy layer0 1)))
  (gimp-image-add-layer myImage layer1 0)
  (gimp-drawable-set-name layer1 "Op. 50%")

  ; Desaturo, inverto ed applico l'effetto chiaritore sfumato al nuovo layer
  (gimp-desaturate layer1)
  (gimp-invert layer1)
  (plug-in-softglow 1 myImage layer1 10 0.75 0.85)

  ; Imposto il merging del layer a "Soft light" con opacita' al 50%
  (gimp-layer-set-mode layer1 SOFTLIGHT-MODE)
  (gimp-layer-set-opacity layer1 50)

  ; Creo una copia del layer modificato, imposto l'opacita' al 75% e lo rinomino
  (set! layer2 (car (gimp-layer-copy layer1 1)))
  (gimp-image-add-layer myImage layer2 -1)
  (gimp-layer-set-opacity layer2 75)
  (gimp-drawable-set-name layer2 "Op. 75%")

  ; Creo il layer di testa, modifico l'istogramma dei colori, eseguo il merging ed imposto la trasparenza al 40% (valori consigliati 30%-50%)
  (set! layer3 (car (gimp-layer-copy layer0 1)))
  (gimp-image-add-layer myImage layer3 -1)
  (gimp-levels layer3 HISTOGRAM-VALUE 100 255 1.00 0 255)
  (gimp-layer-set-mode layer3 DARKEN-ONLY-MODE)
  (gimp-layer-set-opacity layer3 40)
  (gimp-drawable-set-name layer3 "Top Layer")

  ; Unisco tutti i layer visibili
  (set! layer4 (car (gimp-image-flatten myImage)))
  (gimp-drawable-set-name layer4 "Last Layer")

  ;Do the dodge layer first
  (my-layer-dodge-burn myImage layer4 1 thinAmount thickAmount)

  ;Do the burn layer
  (my-layer-dodge-burn myImage layer4 0 thinAmount thickAmount)

  ; Modifico la saturazione/luminanza
  (gimp-hue-saturation layer4 ALL-HUES 0 0 50)

 )

 ;Finish the undo group for the process
 (gimp-image-undo-group-end myImage)

 ; Assicuro l'aggiornamento e la nuova visualizzazione
 (gimp-displays-flush)
)

; Registrazione dello script
(script-fu-register "script-fu-SebaX75-HDR"
 _"<Image>/Script-Fu/SebaX75/HDR..."
 "Applica gli effetti per ottenere un HDR"
 "SebaX75"
 "SebaX75"
 "April 29 2010"
 "*"
 SF-IMAGE "Image"     0
 SF-DRAWABLE     "Drawable"  0
 SF-ADJUSTMENT   _"Thin amount"  '(10 0 1000 1 1 0 1)
 SF-ADJUSTMENT   _"Thick amount" '(25 0 10000 1 1 0 1)
)

Buon HDR a tutti ed alla prossima.