Sicurezza con il PortKnocking

portknockingMi e’ capitato spesso di dover configurare firewall per proteggere i Server di mia competenza e molte volte capita l’esigenza di dover tenere aperto un accesso dall’esterno, per poter operare in qualunque momento o per qualunque motivo. Ovviamente questo ci potrebbe esporre facilmente alla possibilita’ di venire attaccati; che cosa fare in questi casi ??? Beh! le possibili soluzioni sono davvero tante, tante quanto la fantasia di chi le studia; in questo articolo quindi descrivero’ semplicemente un mio modo personale di arginare tale possibile pericolo.

* Il primo suggerimento e’ quello di spostare il servizio SSH dalla porta 22 ad una di vostra preferenza, stando ben attenti a non usare possibili porte utilizzabili da altri servizi web.

* Il secondo suggerimento e’ quello di creare un servizio di Honeypot (tipo honeyd a bassa interazione, oppure come honeynet ad alta interazione) , da tenere in ascolto sulla porta standard (la 22) dell’SSH, cosi’ che i male intenzionati trovino la porta attiva e nel tentativo di attaccarvi perdano tempo e si ritrovino successivamente all’interno di servizi fasulli.

* Il terzo suggerimento e’ quello di utilizzare la tecnica del port-knocking per poter gestire a proprio piacimento ogni accesso in SSH attivando e disattivando tramite una sequenza di caratteri che solo voi conoscete e che potrete cambiare a piacimento.

PORTKNOCKING

Iniziamo col dire che cosa e’ questa tecnica: le tecniche di Port knocking permettono di aumentare considerevolmente la sicurezza di un server che deve garantire alcuni servizi non permanenti attraverso IP pubblici. Se s’inviano dei pacchetti a delle porte prestabilite sulle quali il demone è in ascolto e nel caso la sequenza sia corretta, questi attiverà un comando che potrà eseguire delle regole di iptables che apriranno le porte necessarie alla connessione. Il vantaggio è notevole in quanto il server potrebbe rimanere sempre in stealth mode e aprire le porte per un determinato servizio solo in caso di necessità.

Innanzitutto per poter utilizzare il portknocking e’ necessario che il firewall sia attivo e funzionante, ora posiamo installare il pacchetto software

sudo apt-get install knockd

Configurazione knockd

  1. Per fare in modo che il demone parta all’avvio del computer modificare con un editor di testo a piacimento, e con i privilegi di amministrazione il file /etc/default/knockd in questo modo:

    START_KNOCKD=1

     

  2. Sempre nel medesimo file /etc/default/knockd modificare con un editor di testo a piacimento, e con i privilegi di amministrazione indicando su quale interfaccia il demone dovrà rimanere in ascolto:

    KNOCKD_OPTS="-i eth0"

     

Configurazione knockd.conf per l’apertura di una sola porta

Modificare con un editor di testo a piacimento, e con i privilegi di amministrazione il file /etc/knockd.conf impostandolo come segue:

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 7000,8000,9000
        # Questa è la sequenza delle porte sulle quali knockd rimarrà in ascolto. Di default il protocollo è TCP.
        # Quali e quante porte usare è discrezionale.

        # sequence   = 7000:udp,8000:tcp,9000:udp
        # Esempio con sequenza con porte miste udp/tcp

        seq_timeout = 30
        #Tempo di attesa massimo per completare la sequenza.

        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        # Quando la sequenza verrà accettata verrà inserita una regola che aprirà la porta SSH standard.

        tcpflags    = syn
        # Ulteriore filtro, sul tipo di flag del pacchetto inviato alla sequenza di porte.
        
[closeSSH]
        sequence    = 9000,8000,7000
        # Questa è un'altra sequenza di porte sulle quali knockd rimarrà in ascolto.

        seq_timeout = 30

        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        # Quando la sequenza verrà accettata verrà inserita una regola che cancellerà quella creata in precedenza.

        tcpflags    = syn
        # Ulteriore filtro, sul tipo di flag del pacchetto inviato alla sequenza di porte.

La variabile «%IP%» passa alla regola di iptables l’indirizzo che ha effettuato la richiesta di connessione, in questo caso verrà permessa l’apertura della porta SSH discriminando solo l’IP validato.

Configurazione per l’apertura di una sola porta, per soli esperti

Un’altra possibilità per usare il demone knockd, e’ utilizzabile solo se il firewall sul server è configurato per accettare le connessioni “established” e “related” alla porta che si vuole aprire (es ssh, 22) è di chiudersi subito dietro la porta appena aperta, per evitare che, restando “aperta”, qualche malintenzionato tenti un brute-force al servizio, lanciando uno script anzichè impostando delle regole sul firewall.

Per questo scopo il file /etc/knockd.conf può ad esempio essere modificato, con un editor di testo a piacimento, e con i privilegi di amministrazione, come segue :

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 7000,8000,9000
        seq_timeout = 30
        start_command     = /etc/init.d/ssh start
        tcpflags    = syn

        cmd_timeout = 5
        stop_command     = /etc/init.d/ssh stop
        # Dopo cmd_timeout secondi, viene eseguito il comando stop_command

Ricordiamo ancora che è indispensabile che il firewall sul server accetti le connessioni “related” ed “established” altrimenti la sezione “stop_command”, appena sarà eseguita, vi chiuderà la connessione SSH senza quindi avere possibilità di connettervi al server!

tuttiperlinux@server:~# iptables -nL | grep ":22"

ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp spt:22 dpts:513:65535 state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp spts:1024:65535 dpt:22 flags:0x17/0x02 state RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0    0.0.0.0/0           udp dpt:22 state ESTABLISHE

Configurazione knockd.conf per l’apertura di più porte

Nell’esempio sopra esposto si è visto come aprire una sola porta. Se l’esigenza fosse però quella di aprirne di più procedere creando più sessioni «[openServizio]» e «[closeServizio]». Questo sistema risulta però scomodo per ovvi motivi, per ottenere lo stesso risultato è consigliato usare degli script.

Modificare con un editor di testo a piacimento, e con i privilegi di amministrazione il file /etc/knockd.conf impostandolo come segue:

[options]
        logfile = /var/log/knockd.log

[open]
        sequence    = 7000,8000,9000
        seq_timeout = 30
        tcpflags    = syn
        command     = sh /etc/open_ports %IP%


[close]
        sequence    = 9000,8000,7000
        seq_timeout = 30
        tcpflags    = syn
        command     = sh /etc/close_ports %IP%

In questo caso invece di eseguire direttamente iptables si richiamano due script passando il parametro «%IP%» alla variabile speciale «$1».

Esempio di script open_ports

Modificare con un editor di testo a piacimento, e con i privilegi di amministrazione il file /etc/open_ports impostandolo come segue:

iptables -A INPUT -s $1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 631 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 5125 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 5126 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 8888 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 10000 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 81 -j ACCEPT

Esempio di script close_ports

Modificare con un editor di testo a piacimento,  e con i privilegi di amministrazione il file /etc/close_ports impostandolo come segue:

iptables -D INPUT -s $1 -p tcp --dport 22 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 21 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 631 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 5125 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 5126 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 8888 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 10000 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 81 -j ACCEPT

Esempio di una connessione

Per effettuare la connessione digitare il seguente comando all’interno di una finestra di terminale:

./knock -v <ip_host> port1 port2 port3 port...

Ora non resta altro che fare pratica e pratica ma sono sicuro che il portknocking vi dara’ tanta soddisfazione.

Leggete anche l’articolo sulla sicurezza inerente Metasploit Framework.

Metasploit Framework

metasploit_logoTestiamo la nostra Sicurezza

Oggi giorno sempre piu’ servizi sono online e tra questi troviamo anche cose importanti come la gestione del conto bancario oppure il nostro profilo INPS ecc….; tutto cio’ e’ molto comodo ma e’ anche piu’ facile che una falla sui sistemi che usiamo possa rendere facile a persone poco raccomandabili di intercettare qualche nostro dato “sensibile” per poi servirsene a piacimento.

Certamente molti di noi si affidano al fatto che confidiamo nell’alto livello di sicurezza dei gestori di questi servizi, ma pochi pensano che in ogni conversazione, compresa quella tra computer in un luogo pubblico come Internet, deve avere entrambi i soggetti SICURI , quindi come fare per essere certi il piu’ possibile (dato che sicuro e’ morto) che noi per primi siamo esenti da bug ???? Un buon metodo e’ tenersi sempre aggiornati sui bug piu’ noti e pericolosi e poi testare la propria macchina. Il metodo migliore per farlo e’ quello di usare un Framework come Metasploit.

I metodi per usare Metasploit sono tanti e disparati , dall’usare un Live-CD, installarlo su di una Pen-Drive, creare una VM apposita ecc…
Stessa cosa si puo’ dire per i metodi d’installazione del Framework in questione quindi vi descrivero’ quello che preferisco e che trovo piu’ funzionale.

INSTALLAZIONE

mkdir git
cd git
git clone https://github.com/mcfakepants/metasploit-framework.git

…..a questo punto potete verificare cosa e’ stato scaricato nella DIR entrandoci e lanciando un ls -L
il risultato dovrebbe essere una lista come questa

git/metasploit-framework$ ls -L
config           external      modules     msfencode    msfrpcd    scripts
CONTRIBUTING.md  Gemfile       msfbinscan  msfmachscan  msfupdate  spec
COPYING          Gemfile.lock  msfcli      msfpayload   msfvenom   test
data             HACKING       msfconsole  msfpescan    plugins    tools
db               lib           msfd        msfrop       Rakefile
documentation    LICENSE       msfelfscan  msfrpc       README.md

a questo punto prima di lanciare la console di Metasploit per l’installazione conviene assicurarci di avere tutti i pacchetti per gli script in Ruby installati, per completare questa operazione possiamo lanciare il seguente comando :

gem install bundler

ora non ci rimane che lanciare l’installazione del Framework in questione tramite

sudo ./msfconsole -L

se dovessimo riscontrare un errore come questo: Could not find rake-10.0.4 in any of the sources potremo risolvere fermando l’installazione in corso con un Ctrl+C , ed eseguire, dalla stessa posizione in cui ci troviamo, il comando bundle install che installaera’ tutte le “GEMME” mancanti; rilanciamo pure l’installazione come prima con : # sudo ./msfconsole -L

Ci vorra’ qualche minuto per ultimare questa fase in quanto i pacchetti da scaricare sono diversi; al termine dell’installazione ci ritroveremo catapultati all’interno della console amministrativa di Metasploit, con una schermata di questo tipo

< metasploit >
 ------------
       \   ,__,
        \  (oo)____
           (__)    )\
              ||--|| *

=[ metasploit v4.9.0-dev [core:4.9 api:1.0] ]
+ -- --=[ 1288 exploits - 705 auxiliary - 203 post ]
+ -- --=[ 334 payloads - 35 encoders - 8 nops      ]

msf >

Ora tutto quello che ci rimane da fare e’ testare quelle criticita’ che ci sembrano piu’ rischiose e capire cosi’ se il nostro PC ne e’ affetto.

Una di quelle da verificare, per fare il nostro primo test, e’ quella relativa ad un bug nel parsing dei font presenti nei file SWF (i file Flash) di Adobe, grazie al quale un malintenzionato potrebbe essere in grado di eseguire codice malevolo sulla macchina della vittima fino ad arrivare ad ottenere il controllo di una shell remota, senza necessita’ di inserire una password. Questo bug e’ molto problematico in quanto colpisce tutti i sistemi operativi e tutti i PC che abbiamo installata una versione di Flash precedente alla 11.3

Per verificare se il vostro PC e’ affetto tornate nella console di metasploit ed eseguite il test lanciando la seguente stringa :

msf  > use exploit/windows/browser/adobe_flash_otf_font

Eseguendo questo exploit , metasploit costruira’ in pratica un falso webserver sulla vostra macchina locale, ed un finto client che va a leggere  una pagina HTML contenente un file SWF (che si trova nella cartella metasploit-framework/data/exploits/CVE-2012-1535), in modo da eseguire il test automaticamente.

In generale per avere più informazioni sull’utilizzo di qualsiasi comando basta invocare l’help dedicato:

msf > nomecomando -h

Vediamo adesso i comandi per interagire con le librerie di exploit e payload. Il primo da conoscere è show che serve per mostrare il contenuto delle librerie, ad esempio:

msf > show exploits

Con questo comando verrà stampata la lista di tutti gli exploit presenti.

Per visualizzare i payload similmente useremo:

msf > show payloads

Per cercare un elemento specifico possiamo servirci del comando search:

msf > search cve:2012 type:exploit app:client

Search utilizza keyword (type, app, platform, name, etc) per affinare la ricerca. Al solito è buona norma consultare l’help del comando per avere un’idea di tutte le sue funzionalità:

msf > search -h

Prossimamente verranno aggiunti su questo Blog altri articoli relativi ai Bug piu’ pericoli da testare grazie a Metasploit, fino ad allora buona pratica e buon divertimento.

Vedi anche precedente articolo KaliLinux

I2P (Invisible Internet Project)

I2P-Anonymous2I2P, originariamente chiamata Invisible Internet Project, è un software libero e Open Source per la realizzazione di una rete anonima. La rete offre un livello in cui le applicazioni possono scambiarsi dati, messaggi, navigare e quant’altro. Tutti i dati sono avvolti con diversi livelli di crittografia.

I2P è un livello di comunicazione anonimo peer-to-peer distribuito, progettato per eseguire qualsiasi servizio Internet tradizionale (ad esempio, Usenet, E-mail, IRC, file sharing, Web hosting e HTTP, Telnet ecc…), così come le più tradizionali applicazioni distribuite.

I2P è ancora in sviluppo beta, quindi non ancora ritenuto idoneo per gli usi che necessitano di un anonimato forte.

N.B. : ” nessuna rete può essere perfettamente anonima “.

Che cosa puoi fare con I2P

  • Email: interfaccia web integrata per la posta elettronica, plugin per la posta elettronica senza server.
  • Navigazione web: siti web anonimi, gateway verso e dallInternet pubblica.
  • Blog e forum: plugin per gestire blog e per Syndie.
  • Host di siti web: web server anonimo integrato.
  • Chat in tempo reale: messaggistica immediata e client IRC.
  • File sharing: client ED2K e Gnutella, client BitTorrent integrato.
  • Deposito file decentralizzato: plugin per il filesystem distribuito Tahoe-LAFS

Installiamolo su Ubuntu e Debian

Ubuntu:

  1. sudo apt-add-repository ppa:i2p-maintainers/i2p
  2. sudo apt-get update
  3. sudo apt-get install i2p

Debian:

  1. sudo nano /etc/apt/sources.list.d/i2p.list
  2. Debian Squeeze:
    deb http://deb.i2p2.no/ squeeze main
    deb-src http://deb.i2p2.no/ squeeze main
  3. Debian Wheezy:
    deb http://deb.i2p2.no/ stable main
    deb-src http://deb.i2p2.no/ stable main
  4. Debian Jessie e SID:
    deb http://deb.i2p2.no/ unstable main
    deb-src http://deb.i2p2.no/ unstable main
  5. Aggiungete quindi le key di autenticazione con:
    wget http://www.i2p2.de/_static/debian-repo.pub
    sudo apt-key add debian-repo.pub
  6. Installiamo
    sudo apt-get update && sudo apt-get install i2p i2p-keyring

… per avviarlo lanciamo il comando

@root # ip2router console

se non ci saranno stati problemi si aprira’ una pagina web con il seguente URL : http://127.0.0.1:7657/home

Per studiare meglio tutte le funzionalita’ potete utilizzare il link ufficiale della documentazione

Buon divertimento !

PenMode2 penetration testing

penmode2-logoHo recentemente parlato in un articolo inerente Kali Linux (ex BackTrack) di sistemi di penetration testing; oggi in questo nuovo articolo parleremo di PenMode 2. Questo prodotto e’  l’ ultima versione di un tool per la sicurezza informatica pensato appositamente per Kali Linux, (distribuzione Debian based). I suoi autori sono i membri del PH#OS Team e sono riusciti a sviluppare un ottimo ed efficiente software, che può essere usato sia a livello professionale che a livello amatoriale, ed ha come suo punto di forza proprio quello di aggregare una serie di tool essenziali per eseguire le varie operazioni di pentesting.

Il tool è suddiviso in 3 sezioni, che possiamo riassumere in:

  • Information Gathering: usato per l’acquisizione di informazioni quali, la tipologia di Server, le porte aperte, domini, email ecc
  • Web Scanner: per effettuare scansioni complete del target tramite tool appositi
  • CMS: usato per effettuare analisi e pentesting mirati per determinati CMS quali WordPress, Joomla e Typo3

C’è inoltre un’ulteriore funzionalita’ davvero niente male, si chiama Anon Surf ; si tratta di uno script che lavora direttamente sulle tabelle di  iptables per garantire che ogni comunicazione debba passare attraverso TOR cosi’ da diventare anonima. Oltre a tutto ciò sono presenti anche molti altri tool davvero interessanti e vari.
PenMode 2 è inoltre dotato di un’interfaccia grafica basata sulle librerie penmode_logoGTK in modo da adattarsi al tema grafico impostato sul sistema.

Passiamo ora all’INSTALLAZIONE

  • scarichiamo i pacchetti .deb necessari (gtkd.deb & penmode.deb)dalla seguente pagina (https://github.com/Pinperepette/Penmode2), troverete i pacchetti sia per 32 e 64 bit
  • installiamo i pacchetti con il seguente comando:
    dpkg -i gtkd.deb penmode.deb

    i pacchetti in questione possono richiedere diverse dipendenze da soddisfare e, nel qual caso l’installazione non finisse nel modo piu’ corretto converra’utilizzare il comando

    apt-get -f install
  • Per avviarlo potete andare su menù -> Auditing -> Miscellaneous -> PenMode o tramite terminale digitando penmode

Ecco inoltre un video introduttivo che potra’ essere di aiuto LINK

Kali Linux l’erede di BackTrack

kali_linuxBackTrack è una delle migliori distro (basata su Ubuntu) dedicate alla sicurezza informatica. Ci si possono trovare una serie di tool preinstallati e configurati per eseguire dell’ottimo penetration testing. Dagli stessi sviluppatori di BackTrack nasce un nuovo progetto: Kali Linux. Questa distribuzione (stavolta è basata su Debian) e’ stata resa disponibile anche su device mobili con processori ARM (ChromeBook, SS808, Odroid U2, Raspberry ecc…).

Kali Linux viene rilasciata con ambiente desktop Gnome e con la possibilità di avere, certe applicazioni preinstallate (in modalita’ minimal) per PC con processori x86 32/64 bit, oppure nella vesione con XFCE.

Per tutti coloro che preferiscono la lettura passo passo, posso suggerire questo ottimo link al “tutorial_book” ; per coloro che invece hanno poco tempo, un video introduttivo potra’ comunque essere di aiuto “video“.

Se siete interessati a testare la distro ma non volete scaricare la iso , oggi potete provare direttamente sul vostro PC una versione minimal ma funzionante di Kali Linux ; vi bastera’ scaricare il seguente script :

sudo wget http://sourceforge.net/projects/kaais/files/kaaisv3.sh

dargli i permessi necessari all’esecuzione

chmod +x kaaisv3.sh

e lanciare lo script

sudo ./kaaisv3.sh

    Kali  Applications  Automatic  Installation  Script
       Team: en0xCr3w                  Code: rawstring

 [ MAIN MENU ]
 [ Option ] [ Description ]
        1)    Text Editors
        2)    FTP/Torrent Applications
        3)    Chat Applications
        4)    Image Editors
        5)    Archive Handlers
        6)    Audio Applications
        7)    Browser/Web Plugins
        8)    Hacking Tools
        9)    Other Applications
       10)    Default Applications (Update)
       11)    Other Operations
       12)    Usefull Links
      ------------------------

...divertitevi...!