Visualizzazione post con etichetta terminale. Mostra tutti i post
Visualizzazione post con etichetta terminale. Mostra tutti i post

giovedì 16 febbraio 2023

Linux: Mostrare i colori base supportati nella finestra terminale

Per visualizzare i colori di base del testo del terminale è possibile utilizzare il comando
printf "\e[%dm%d dark\e[0m \e[%d;1m%d bold\e[0m\n" {30..37}{,,,}

Utile nel caso si voglia visualizzare i colori di base prima di andarli a modificare nelle preferenze.
Colori di base Terminale
FIG 1 - Colori di base Terminale





sabato 24 dicembre 2022

Linux: Monitorare la velocità di clock dei core del processore

Per monitorare costantemente la velocità di clock dei core del processore basta lanciare, da una finestra Terminale, il comando
watch -n0.2 grep -e MHz -e processor /proc/cpuinfo
Clock dei core della CPU
FIG 1 - Clock dei core della CPU





giovedì 19 novembre 2020

Linux: Divertirsi con la shell bash (2)

Per poter funzionare, il comando mostrato in questo articolo deve essere eseguito in un emulatore di terminale che permette la visualizzazione dei colori a 24bit, inoltre deve essere installato bc.

In Kali Linux è possibile procedere come indicato di seguito:
  • Avviare la finestra terminale;
  • Procedere all'installazione di bc eseguendo il comando 
    sudo apt-get install bc

    Kali Linux - Installazione bc
    FIG 1 - Kali Linux, Installazione bc

  • Eseguire il seguente comando per visualizzare un piacevole effetto di colori all'interno della finestra terminale 
    p=3.14;for i in $( seq 0 0.04 100 );do r=$( printf "128+127*s($i)\n" |bc -l |cut -d. -f1) g=$( printf "128+127*s($i+$p*(1/3))\n" |bc -l |cut -d. -f1 ) b=$( printf "128+127*s($i+$p*(2/3))\n" |bc -l |cut -d. -f1 ); printf "\e[48;2;$r;$g;${b}m\n"; sleep 0.015; done

    Kali Linux - Effetto colori
    FIG 2 - Kali Linux, Effetto colori





martedì 17 settembre 2019

Kali Linux: Introduzione a HPing3

HPing3 è un assemblatore/analizzatore di pacchetti TCP/IP a riga di comando. Oltre a supportare i protocolli TCP, UDP, ICMP e RAW-IP dispone di molte altre caratteristiche come la modalità traceroute e la possibilità di inviare file attraverso un canale "nascosto". Si tratta di un tool molto versatile che consente un controllo accurato su ogni flag del pacchetto.

Viene utilizzato per diversi scopi e contesti tra cui:
- Scansione avanzata porte:
- Test di firewall;
- Test di rete con l'utilizzo di diversi protocolli;
- Path MTU discovery
- Traceroute avanzato;
- Individuazione sistema operativo remoto (OS FingerPrinting);
- Individuazione tempo di attività di un sistema remoto;
- Controllo stack TCP/IP


HPing3 è già incluso in Kali Linux. Per visualizzare le opzioni e le modalità messe a disposizione del tool basta lanciare il seguente comando da terminale
hping3 -h 
usage: hping3 host [options]
  -h  --help      show this help
  -v  --version   show version
  -c  --count     packet count
  -i  --interval  wait (uX for X microseconds, for example -i u1000)
      --fast      alias for -i u10000 (10 packets for second)
      --faster    alias for -i u1000 (100 packets for second)
      --flood    sent packets as fast as possible. Don't show replies.
  -n  --numeric   numeric output
  -q  --quiet     quiet
  -I  --interface interface name (otherwise default routing interface)
  -V  --verbose   verbose mode
  -D  --debug     debugging info
  -z  --bind      bind ctrl+z to ttl           (default to dst port)
  -Z  --unbind    unbind ctrl+z
      --beep      beep for every matching packet received
Mode
  default mode     TCP
  -0  --rawip      RAW IP mode
  -1  --icmp       ICMP mode
  -2  --udp        UDP mode
  -8  --scan       SCAN mode.
                   Example: hping --scan 1-30,70-90 -S www.target.host
  -9  --listen     listen mode
IP
  -a  --spoof      spoof source address
  --rand-dest      random destionation address mode. see the man.
  --rand-source    random source address mode. see the man.
  -t  --ttl        ttl (default 64)
  -N  --id         id (default random)
  -W  --winid      use win* id byte ordering
  -r  --rel        relativize id field          (to estimate host traffic)
  -f  --frag       split packets in more frag.  (may pass weak acl)
  -x  --morefrag   set more fragments flag
  -y  --dontfrag   set don't fragment flag
  -g  --fragoff    set the fragment offset
  -m  --mtu        set virtual mtu, implies --frag if packet size > mtu
  -o  --tos        type of service (default 0x00), try --tos help
  -G  --rroute     includes RECORD_ROUTE option and display the route buffer
  --lsrr           loose source routing and record route
  --ssrr           strict source routing and record route
  -H  --ipproto    set the IP protocol field, only in RAW IP mode
ICMP
  -C  --icmptype   icmp type (default echo request)
  -K  --icmpcode   icmp code (default 0)
      --force-icmp send all icmp types (default send only supported types)
      --icmp-gw    set gateway address for ICMP redirect (default 0.0.0.0)
      --icmp-ts    Alias for --icmp --icmptype 13 (ICMP timestamp)
      --icmp-addr  Alias for --icmp --icmptype 17 (ICMP address subnet mask)
      --icmp-help  display help for others icmp options
UDP/TCP
  -s  --baseport   base source port             (default random)
  -p  --destport   [+][+] destination port(default 0) ctrl+z inc/dec
  -k  --keep       keep still source port
  -w  --win        winsize (default 64)
  -O  --tcpoff     set fake tcp data offset     (instead of tcphdrlen / 4)
  -Q  --seqnum     shows only tcp sequence number
  -b  --badcksum   (try to) send packets with a bad IP checksum
                   many systems will fix the IP checksum sending the packet
                   so you'll get bad UDP/TCP checksum instead.
  -M  --setseq     set TCP sequence number
  -L  --setack     set TCP ack
  -F  --fin        set FIN flag
  -S  --syn        set SYN flag
  -R  --rst        set RST flag
  -P  --push       set PUSH flag
  -A  --ack        set ACK flag
  -U  --urg        set URG flag
  -X  --xmas       set X unused flag (0x40)
  -Y  --ymas       set Y unused flag (0x80)
  --tcpexitcode    use last tcp->th_flags as exit code
  --tcp-mss        enable the TCP MSS option with the given value
  --tcp-timestamp  enable the TCP timestamp option to guess the HZ/uptime
Common
  -d  --data       data size                    (default is 0)
  -E  --file       data from file
  -e  --sign       add 'signature'
  -j  --dump       dump packets in hex
  -J  --print      dump printable characters
  -B  --safe       enable 'safe' protocol
  -u  --end        tell you when --file reached EOF and prevent rewind
  -T  --traceroute traceroute mode              (implies --bind and --ttl 1)
  --tr-stop        Exit when receive the first not ICMP in traceroute mode
  --tr-keep-ttl    Keep the source TTL fixed, useful to monitor just one hop
  --tr-no-rtt     Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
  --apd-send       Send the packet described with APD (see docs/APD.txt)




Per visualizzare il manuale eseguire il comando
man hping3

Il protocollo di rete TCP (Transmission Control Protocol) fa parte del livello di trasporto e si occupa del controllo della trasmissione tra mittente e destinatario rendendola affidabile. La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host è chiamata three-way handshake. Il nome deriva dalla necessità di scambiare tre messaggi tra il mittente e il destinatario al fine di stabilire una connessione affidabile.
  • Nel primo messaggio il client (mittente) invia un pacchetto TCP con flag SYN al server (destinatario) sulla porta dove si ritiene quest'ultimo in ascolto;
  • Se sulla porta in questione il server è realmente in ascolto, risponderà con un pacchetto con i flag SYN e ACK attivi (SYN/ACK);
  • Il client confermerà l'avvenuta connessione inviando al server un pacchetto con il flag ACK attivo.

TCP, Three-way Handshake
FIG 1 - TCP, Three-way Handshake

Tramite hping3 è possibile simulare il three-way handshake utilizzando un comando come il seguente 
hping3 -S -p 80 -c 1 server
-S indica l'invio di un pacchetto SYN.
-p Consente di specificare la porta di destinazione del pacchetto. In questo caso è stata specificata la porta 80 generalmente utilizzata nei server web.
-c Permette di specificare quanti pacchetti inviare. Nel comando sopra indicato viene inviato un solo pacchetto.
server Al suo posto va indicato l'indirizzo IP del server o il suo nome.
HPing3, Avvio three-way handshake tramite pacchetto SYN
FIG 2 - HPing3, Avvio three-way handshake tramite pacchetto SYN

Dalla risposta del server (FIG 2) possiamo recuperare informazioni utili:
  • flag=SA indica che i flag TCP sono attivi e il server ci ha risposto con SYN/ACK (la seconda fase della procedura three-way handshake).
  • TTL=64 Il campo TTL (Time To Live), della dimensione di un byte, fa parte del header IP ed è un meccanismo che determina il tempo di vita di un pacchetto. Quando un pacchetto viene inviato, tale campo viene valorizzato con un valore compreso tra 1 e 255. Ad ogni salto (router che il pacchetto attraversa) il valore TTL viene decrementato di una unità. Quanto il valore TTL diventa 0, il pacchetto viene cancellato e al mittente viene inviato un pacchetto ICMP di avviso del tipo Time Exceeded. Generalmente gli apparati di rete assegnano a TTL il valore 255, i sistemi GNU/Linux (e anche molti altri sistemi *nix) assegnano il valore 64 mentre i sistemi Windows valorizzano tale campo a 128.

Il tool HPing3 è molto versatile e di seguito vengono mostrati alcuni degli utilizzi più comuni.


Trasferire file tramite HPing3

Per trasferire un file tramite HPing3 è necessario che sia il mittente che il destinatario dispongano del tool installato.
Sulla postazione del destinatario è necessario indicare a HPing3 di rimanere in ascolto. Tale operazione si esegue lanciando il seguente comando da terminale
hping3 --listen 192.168.1.11 -I eth0 --sign IDMSG1
--listen indica che la postazione è in ascolto. L'IP da passare al parametro è quello della postazione locale che deve rimanere in ascolto (destinatario).
--sign permette di specificare una firma per il messaggio. 

Sulla postazione del mittente è possibile inviare il file tramite il comando
hping3 192.168.1.11 --icmp --sign IDMSG1 -d 100 -c 1 --file file.txt
L'indirizzo IP passato a HPing3 è quello del destinatario.
La firma passata a --sign deve essere uguale a quella definita sulla postazione del destinatario.
L'opzione -d indica la dimensione dei dati.
All'opzione --file va passato il nome del file da inviare.



Test ICMP

Il seguente comando esegue un normale ping verso la destinazione specificata
hping3 -1 google.com
HPing3, invio pacchetto ICMP (ping)
FIG 3 - HPing3, invio pacchetto ICMP (ping)



Traceroute tramite ICMP

HPing3 consente di eseguire un traceroute verso un target specifico utilizzando pacchetti ICMP e incrementando ogni volta di 1 il valore TTL. L'output del comando è simile a quello fornito da utility come tracert (in ambiente Windows) o traceroute (in ambiente Linux). L'opzione -V imposta un output dettagliato.
hping3 --traceroute -V -1 google.com

Il traceroute può essere eseguito anche verso una specifica porta.
hping3 --traceroute -V -S -p 80  google.com





Verifica porta tramite l'invio di un pacchetto Syn

Il comando è analogo a quello visto all'inizio di tale articolo
hping3 -V -S -p 80 server
Possiamo anche indicare, tramite l'opzione -s, la porta locale da cui far eseguire la scansione
hping3 -V -S -p 80 -s 4060 server



Chiudere la comunicazione tramite un pacchetto FIN

In una connessione TCP un pacchetto con flag FIN attivo viene utilizzato per avviare la routine di chiusura della connessione. Tramite il seguente comando e l'opzione -F è possibile inviare tale pacchetto ad un destinatario. Se non viene ricevuta alcuna risposta la porta è aperta. Nel caso di Firewall generalmente si riceve un pacchetto con i flag RST+ACK che indica la porta chiusa.
hping3 -c 1 -V -p 80 -s 4060 -F server


Xmas Scan

Con Xmas Scan viene impostato il numero di sequenza TCP a 0 e vengono attivati i flag URGPSH FIN all'interno del pacchetto. Se la porta TCP del destinatario è chiusa viene inviato un pacchetto TCP RST in risposta. Se la porta è aperta, il destinatario scarta il pacchetto TCP Xmas e non invia alcuna risposta.
hping3 -c 1 -V -p 80 -s 4060 -M 0 -UPF server



ACK Scan

Questo tipo di scansione può essere utilizzata per verificare la raggiungibilità di un dispositivo in rete quando il ping è bloccato. Nel caso la porta sia aperta si dovrebbe ricevere in risposta un pacchetto RST.
hping3 -c 1 -V -p 80 -s 4060 -A server


Null Scan

Con questo tipo di scansione viene impostato il numero sequenziale a 0 e nessun flag è attivo all'interno del pacchetto. Il pacchetto inviato prende il nome di TCP NULL. Se la porta TCP del destinatario è chiusa si riceve in risposta il pacchetto TCP RST. Se la porta è aperta il pacchetto TCP NULL viene scartato e non viene inviata alcuna risposta.
hping3 -c 1 -V -p 80 -s 4060 -Y server



Smurf Attack

Si tratta di un tipo di attacco DoS (denial-of-service). Il sistema destinatario viene inondato di messaggi ping inviati tramite uno spoofed broadcast.
hping3 -1 --flood -a IP_VITTIMA INDIRIZZO_BROADCAST


DOS Land Attack

Anche in questo caso siamo di fronte ad un attacco di tipo DoS. Si invia un numero elevato di pacchetti di una certa dimensione nel minor tempo possibile e con il flag SYN attivo.
hping3 -V -c 1000000 -d 120 -S -w 64 -p 445 -s 445 --flood --rand-source IP_VITTIMA
--flood: invia i pacchetti il più velocemente possibile e senza attendere una risposta.
--rand-source: permette di inviare pacchetti che sembrano provenire da IP diversi. Generalmente utilizzata per mettere in difficoltà i firewall.
-V  Verbose.
-c --count: numero di pacchetti da inviare.
-d --data: dimensione dei dati.
-S --syn: imposta il flag SYN attivo.
-w --win: winsize (default 64).
-p --destport: porta di destinazione.
-s --baseport: porta da cui viene inviato il pacchetto (default random).





domenica 24 giugno 2018

Linux: Nascondere l'output di un comando all'interno della Shell

Per nascondere l'output di un comando all'interno della Shell è possibile redirezionarlo verso /dev/null. Nei sistemi operativi Unix-like /dev/null (null device, ovvero dispositivo nullo) non è altro che un file virtuale, non presente su memoria di massa, che scarta, non memorizzando, tutti i dati che gli vengono inviati. Proprio per tale caratteristica /dev/null viene soprannominato bit bucket (cestino per bit).



La sintassi è molto semplice e fa uso dell'operatore > per la redirezione dell'output:
comando > /dev/null
Il comando sopra indicato permette di ignorare il flusso standard output (stdout) inviandolo a /dev/null.

Per nascondere l'output del comando compreso gli errori si utilizza
comando &> /dev/null
In questo modo viene ignorato sia il flusso stdout (standard output) che quello stderr (standard error).

Linux, redirezione dell'output
FIG 1 - Linux, redirezione dell'output




martedì 19 giugno 2018

Kali Linux: Installare PowerShell su Kali Linux

Le distribuzioni Linux consentono di specificare più repository per l'installazione dei pacchetti. Tra i numerosi repository disponibili online c'è anche uno messo a disposizione da Microsoft che include PowerShell. Il repository di Microsoft è pensato per gli utenti Debian ma si adatta perfettamente anche a Kali Linux.

In questo articolo verrà mostrato, passo passo, come installare PowerShell in Kali Linux.

La prima operazione da effettuare consiste nel preparare il terreno installando/aggiornando le dipendenze. Dalla finestra terminale di Kali Linux eseguire il comando
apt update && apt -y install curl gnupg apt-transport-https
Aggiornamento delle dipendenze del pacchetto PowerShel
FIG 1 - Aggiornamento delle dipendenze del pacchetto PowerShell
Il passo successivo consiste nell'aggiungere la chiave GPG del repository in modo che APT rilevi la firma dei pacchetti. Sempre dalla finestra terminale eseguire
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
Aggiungere la chiave GPG del repository Microsoft
FIG 2 - Aggiungere la chiave GPG del repository Microsoft

A questo punto il repository Microsoft va aggiunto all'elenco delle risorse in /etc/apt/sources.list.d/ con il comando
echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/powershell.list 
Aggiungere il repository Microsoft all'elenco delle risorse
FIG 3 - Aggiungere il repository Microsoft all'elenco delle risorse
Aggiornare l'elenco dei pacchetti con il comando
apt update
Aggiornare l'elenco dei pacchetti
FIG 4 - Aggiornare l'elenco dei pacchetti
Installare il pacchetto libcurl3 
apt -y install libcurl3
Installazione pacchetto libcurl3
FIG 5 - Installazione pacchetto libcurl3
Procedere all'installazione del pacchetto PowerShell eseguendo
apt -y install powershell
Installazione pacchetto PowerShell
FIG 6 - Installazione pacchetto PowerShell
Al termine dell'installazione del pacchetto, avviare PowerShell con
pwsh
Nel caso in cui appaia il messaggio "FailFast: The terminfo database is invalid.", come mostrato in FIG 7, è probabile che la variabile d'ambiente TERM sia settata su xterm-256color.


Avvio PowerShell tramite pwsh
FIG 7 - Avvio PowerShell tramite pwsh
Per verificare il valore della variabile d'ambiente TERM digitare, da terminale, il seguente comando
printenv TERM
Visualizzazione valore variabile d'ambiente TERM
FIG 8 - Visualizzazione valore variabile d'ambiente TERM
In questo caso PowerShell può essere avviato da terminale digitando ed eseguendo
TERM=xterm pwsh
FIG 9 - Avvio PowerShell tramite TERM=xterm pwsh
Da PowerShell eseguire
Update-Help
per aggiornare tutti i file di help scaricandoli da Microsoft.
Aggiornamento dei file di Help di PowerShell
FIG 10 - Aggiornamento dei file di Help di PowerShell
L'installazione di PowerShell in Kali Linux è completa. Possiamo testare il funzionamento eseguendo un cmdlet PowerShell.
 Esecuzione cmdlet PowerShell
FIG 11 - Esecuzione cmdlet PowerShell





lunedì 27 marzo 2017

macOS Sierra: Disabilitare/Abilitare Gatekeeper

Gatekeeper è una funzione di sicurezza introdotta a partire da Mac OS X Leopard, e successivamente ampliata con l'integrazione di nuove funzionalità, che ha lo scopo di proteggere il sistema dall'installazione/esecuzione di app potenzialmente dannose:  vengono autorizzate solo le app scaricate dall'App Store e da sviluppatori riconosciuti.
Per disabilitare tale funzionalità e permettere l'installazione di app di terze parti è possibile procedere da Terminale.
FIG 1 - Gatekeeper


Disabilitare Gatekeeper

Da terminale eseguire il comando
sudo spctl --master-disable
Verrà richiesto di inserire la password di amministratore.


Abilitare Gatekeeper

Da terminale eseguire
sudo spctl --master-enable
e inserire la password di amministratore.


Verificare lo stato di Gatekeeper

Per verificare se Gatekeeper è abilitato o disabilitato, utilizzare il seguente comando da terminale
spctl --status