Iniziare con le basi

16 / 100

TERMINI E CONCETTI INTRODUTTIVI

Per loro stessa natura, gli hacker sono curiosi.Desiderano toccare e giocare con le cose, a volte, anche, romperle. Questo capitolo è progettato per darti alcune abilità fondamentali per elevarti e ricorrendo a Kali.

In questo capitolo, non entreremo in nessun concetto in grande dettaglio: Tratteremo abbastanza per farti capire ed esplorare il sistema operativo degli hacker: Linux.

TERMINI E CONCETTI INTRODUTTIVI

Prima di iniziare il nostro viaggio nel meraviglioso mondo di Linux Basics for Hackers,desidero introdurre alcuni termini che dovrebbero chiarire alcuni concetti discussi più avanti in questo
capitolo.

SCRIPT
Il termine script, in informatica, designa un tipo particolare di programma, scritto in una particolare classe di linguaggi di programmazione, detti linguaggi di scripting.

Una classe specifica di tali programmi sono i cosiddetti shell script, ossia script concepiti per essere eseguiti all’interno di una shell di un sistema operativo

La distinzione tra un programma normale ed uno script non è netta, ma generalmente negli script si possono individuare le seguenti caratteristiche:

Complessità relativamente bassa;
-Utilizzo di un linguaggio interpretato;
Integrazione in un processo di configurazione automatica del sistema (ad esempio ad ogni avvio, o ad ogni login di un dato utente), in una pagina web (tipicamente utilizzando il linguaggio JavaScript), o comunque per svolgere mansioni accessorie e molto specifiche;
-Certa linearità (uno script può anche accettare input dall’utente, ma solitamente input diversi non modificano sostanzialmente la struttura del -diagramma a blocchi che descrive il comportamento dello script);
Mancanza di una propria interfaccia grafica;
Richiamo di altri programmi per svolgere operazioni più sofisticate.

COMANDO

In informatica, un comando è una istruzione fornita al processore in un linguaggio ad esso comprensibile

ISTRUZIONE

Il processore opera le sue elaborazioni in termini di lettura/scrittura sui dispositivi hardware come la memoria, i registri e altri dispositivi ausiliari di elaborazione, come le unità di calcolo in virgola mobile. Ogni operazione che compie una modifica in questo senso, come ad esempio l’assegnazione o la lettura del valore di una variabile o la sua modifica, è un’istruzione. Un sottoinsieme autoconsistente di istruzioni adiacenti la cui esecuzione complessiva equivale all’esecuzione di una singola macroistruzione complessa viene denominato blocco di istruzioni.

CODE DI ISTRUZIONI

In informatica le code di istruzioni sono dei sistemi che aumentano le prestazioni della CPU o processore riducendo i tempi di estrazione delle istruzioni dalla memoria.

Normalmente, le code di istruzioni sono interposte tra memoria e processore. Quest’ultimo, può effettuare delle operazioni di inserimento, di estrazione e di svuotamento della coda a seconda delle circostanze (in genere lo svuotamento avviene in occasione di un branch).

Ovviamente è importante sottolineare che l’inserimento di un dato all’interno della coda è effettuabile a patto che questa non sia piena e, di conseguenza anche l’estrazione può essere effettuata a patto che la coda non sia vuota.

ISTANZA:

Istanza – Una determinata esecuzione di un processo, solitamente caratterizzata da una propria configurazione. In pratica, si tratta di una specifica installazione o implementazione di un programma di sistema (task o tool). Ad esempio: istanze di backup (esecuzione diversa nel tempo di uno stesso piano di backup).

VARIABILE:

Una variabile, in informatica, è un contenitore di dati situato in una porzione di memoria (una o più locazioni di memoria) destinata a contenere valori, suscettibili di modifica nel corso dell’esecuzione di un programma. Una variabile è caratterizzata da un nome (inteso solitamente come una sequenza di caratteri e cifre).

COSTANTE

Una costante è un dato non modificabile situato in una porzione di memoria (una o più locazioni di memoria) destinata a contenere un valore, che non può essere appunto modificato nel corso dell’esecuzione di un programma.

Una costante può essere caratterizzata da un nome (inteso solitamente come una sequenza di caratteri e cifre). Nei linguaggi tipizzati, ciascuna variabile è caratterizzata da un tipo di dato, che specifica come deve essere considerato il dato rappresentato, e possibilmente restringe i valori accettabili. Ad esempio, una variabile destinata a contenere il numero progressivo di un mese di una data, potrà assumere solo i valori interi da 1 a 12. L’insieme delle variabili esistenti a tempo di esecuzione è contenuto all’interno dell’ambiente.

APPLICAZIONE:

Programmi coordinati e strutturati in vista di uno specifico utilizzo, come la video scrittura, la gestione degli archivi, il disegno, ecc. Il lavoro eseguito con un applicativo può essere visualizzato a video, modificato, stampato e memorizzato in un file.
Il termine applicazione in informatica individua un programma installato o una serie di programmi in fase di esecuzione su un computer con lo scopo e il risultato di rendere possibile una o più funzionalità, servizi o strumenti utili e selezionabili su richiesta dall’utente tramite interfaccia utente, spesso attraverso un’elaborazione a partire da un input fornito dall’utente interagendo con esso.

È dunque il risultato a livello utente dalla combinazione di risorse software e rispettive risorse hardware di processamento per la loro esecuzione.

L’applicazione può anche essere interpretata, progettata e realizzata come un sistema composto costituito da 3 sottosistemi funzionali principali secondo la filosofia del divide et impera:

il sottosistema di interfaccia utente (o detto anche user interface o UI), scritta in un certo linguaggio di programmazione o in linguaggio di markup.
il sottosistema di logica applicativa o di elaborazione (o anche LA), scritta in un certo linguaggio di programmazione.
il sottosistema di gestione dei dati (detta anche data layer o GD), ovvero salvataggio/recupero su/da supporto di memorizzazione come ad es. disco rigido o database.

FILE BINARI – Questo termine si riferisce a file che possono essere eseguiti, simili agli eseguibili in Finestre.
I binari generalmente risiedono nella directory /usr/bin o usr/sbin e includono utility come ps, cat, ls e cd (ne parleremo tutti e quattro in questo capitolo) come così come applicazioni come lo strumento di hacking wireless aircrackng e l’intrusione al sistema di rilevamento (IDS) Snort.

CASE SENSITIVE – Diversamente da Windows, Linux fa distinzione tra maiuscole e minuscole. Ciò significa che Desktop è diverso da desktop, che è diverso da DeskTop. Ognuno di questi rappresenterebbe un nome di file o directory diverso. Molte persone provenienti da un ambiente Windows può trovare questo frustrante. Se ricevi il messaggio di errore “file o directory non trovato” e sei sicuro che il file o la directory esistano, probabilmente devi controllare il tuo caso.

DIRECTORY– È uguale a una cartella in Windows. Una directory fornisce un modo per organizzare i file, di solito in modo gerarchico.

HOME – Ogni utente ha la propria directory /home, e generalmente è qui che si trovano i file
create verrà salvato per impostazione predefinita.

KALI – Kali Linux è una distribuzione di Linux progettata specificamente per i test di penetrazione.
Ha centinaia di strumenti preinstallati, risparmiando le ore necessarie per il download
e installarli da soli. Userò l’ultima versione di Kali al momento di questo
scrivendo: Kali 2018.2, pubblicato per la prima volta nell’aprile 2018.

ROOT– Come quasi tutti i sistemi operativi, Linux ha un amministratore o un superutente account, progettato per essere utilizzato da una persona di fiducia che può fare quasi tutto sul sistema. Ciò include cose come la riconfigurazione del sistema, l’aggiunta di utenti e modifica delle password. In Linux, quell’account si chiama root. Come hacker o pentester, tu
utilizzerà spesso l’account root per darti il ??controllo del sistema. In effetti, molti
gli strumenti degli hacker richiedono l’utilizzo dell’account di root.

SCRIPT
Il termine script, in informatica, designa un tipo particolare di programma, scritto in una particolare classe di linguaggi di programmazione, detti linguaggi di scripting.

Una classe specifica di tali programmi sono i cosiddetti shell script, ossia script concepiti per essere eseguiti all’interno di una shell di un sistema operativo

La distinzione tra un programma normale ed uno script non è netta, ma generalmente negli script si possono individuare le seguenti caratteristiche:

Complessità relativamente bassa;
-Utilizzo di un linguaggio interpretato;
Integrazione in un processo di configurazione automatica del sistema (ad esempio ad ogni avvio, o ad ogni login di un dato utente), in una pagina web (tipicamente utilizzando il linguaggio JavaScript), o comunque per svolgere mansioni accessorie e molto specifiche;
-Certa linearità (uno script può anche accettare input dall’utente, ma solitamente input diversi non modificano sostanzialmente la struttura del -diagramma a blocchi che descrive il comportamento dello script);
Mancanza di una propria interfaccia grafica;
Richiamo di altri programmi per svolgere operazioni più sofisticate.

Gli script possono essere eseguiti con l’interprete bash o uno qualsiasi degli altri interpreti del linguaggio di scripting, come Python,
Perl o Rubino. Python è attualmente l’interprete più popolare tra gli hacker.

SHELL – Questo è un ambiente e un interprete per l’esecuzione di comandi in Linux. La shell più utilizzata è bash, che sta per Bourneagain
shell, ma altro popolare le shell includono la shell C e la shell Z. .

TERMINALE – Questa è un’interfaccia a riga di comando (CLI).
Con queste basi alle spalle, cercheremo di sviluppare metodicamente l’essenziale In questo primo capitolo, ti guiderò attraverso l’inizio con Kali Linux.