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

giovedì 7 marzo 2019

Kali Linux: Utilizzare Sandsifter per il fuzzing dei processori x86

Il fuzzing è una tecnica automatica per testare i software. La tecnica consiste nel fornire dati causali, non validi o imprevisti come input di un programma per computer e analizzarne il suo comportamento al fine di individuare errori o falle di sicurezza. 
Sandsifter applica tale tecnica nella verifica dei processori x86 generando sistematicamente codice macchina attingendo dal set di istruzioni del processore e monitorando l'esecuzione di tale codice alla ricerca di istruzioni nascoste e bug hardware. Grazie a Sandsifter sono state scoperte istruzioni segrete sui processori dei principali produttori inoltre è stato possibile scoprire bug software negli assemblatori/disassemblatori, emulatori, negli hypervisor e persino bug hardware in alcuni modelli di processori x86.

In questo articolo verranno illustrati i passaggi per installare ed eseguire Sandsifter sul proprio sistema utilizzando Kali Linux. Prima di proseguire con l'installazione ed esecuzione di Sandsifter è opportuno aggiornare i pacchetti installati e la propria distribuzione di Kali Linux eseguendo da terminale il seguente comando

apt-get update && apt-get upgrade

Aggiornamento Kali Linux
FIG 1 - Aggiornamento Kali Linux



Installazione Sandsifter

Per poter installare e utilizzare Sandsifter è necessario prima installare Capstone, un Framework necessario per disassemblare. Da terminale digitare i seguenti comandi
apt-get install libcapstone3 libcapstone-dev
pip install capstone
Eseguire il download di Sandsifter con il comando
git clone https://github.com/xoreaxeaxeax/sandsifter.git
Download di sandsifter
FIG 2 - Download di sandsifter

Accedere alla cartella di sandsifter
cd sandsifter
Prima di poter compilare è necessario andare a modificare il file Makefile. Digitare il comando
leafpad Makefile
Bisogna aggiungere la stringa -no-pie in modo che il contenuto del file diventi
all: injector

injector: injector.o
 $(CC) $(CFLAGS) $< -O3 -Wall -no-pie -l:libcapstone.a -o $@ -pthread

%.o: %.c
 $(CC) $(CFLAGS) -c $< -o $@ -Wall

clean:
rm *.o injector
Sandsifter makefile
FIG 3 - Sandsifter makefile

Salvare il file quindi compilare il codice eseguendo il comando
make


Esecuzione di Sandsifter

Per eseguire una verifica di base del proprio processore lanciare il comando
./sifter.py --unk --dis --len --sync --tick -- -P1 -t
Sandsifter
FIG 4 - Sandsifter

La schermata della verifica presenta 2 sezioni: in quella superiore viene mostrata l'istruzione che Sandsifter sta verificando mentre in quella inferiore vengono riportati gli errori/bug trovati. La scansione può richiedere da poche ore a più giorni per essere portata a termine a seconda della velocità e della complessità del processore che si sta analizzando è può trovare milioni di istruzioni non documentate.

Quando la scansione è completa sarà possibile riassumere i risultati tramite il comando
./summarize.py data/log

il comando provvede anche ad assegnare una categoria e un livello di importanza al problema trovato. Le categorie principali sono 3:
  • Bug Software
  • Bug Hardware
  • Istruzioni non documentate

Premendo 'Q' si esce dall'applicazione e viene prodotto un resoconto in formato testo della scansione del sistema.
Premendo 'M' durante l'esecuzione di Sandsifter viene modificata la modalità di ricerca (brute force, randomized fuzzing e tunneled fuzzing) mentre premendo il tasto 'P' è possibile mettere in pausa (o riprendere dalla pausa) il processo di ricerca.



Flag utilizzabili in Sandsifter


--len
Cerca le differenze di lunghezza in tutte le istruzioni. Ricerca istruzioni che si comportano in maniera diversa da quanto si aspetta il disassembler o che non esistono.

--dis
Come per il flag --len ma la ricerca viene eseguita solo per le istruzioni valide.

--unk
Ricerca le istruzioni sconosciute, istruzioni che anche se non riconosciute dal disassembler vengono eseguite con successo.

--ill
E' l'opposto del flag --unk. Ricerca istruzioni che non vengono eseguite correttamente ma riconosciute dal disassembler

--tick
Scrive periodicamente l'istruzione corrente sul disco.

--save
Salva i progressi della ricerca in uscita.

--resume
Riprende la ricerca dall'ultimo stato salvato.

--sync
Scrive i risultati della ricerca sul disco man mano che vengono trovati.

--low-mem
Non memorizza i risultati in memoria.




Injector utilizzabili in Sandsifter


-b
Mode: brute force. In tale modalità la ricerca prova le istruzioni in modo incrementale, fino a una lunghezza specificata dall'utente. Generalmente è più lenta ricerca casuale.

-r
Mode: randomized fuzzing.

-t
Mode: tunneled fuzzing.

-d
Mode: externally directed fuzzing.

-R
Raw output mode.

-T
Text output mode.

-x
Scrive periodicamente i progressi su stderr.

-0
Consente dereferenza nulla.

-D
Consente prefissi duplicati.

-N
Non consente nx bit.

-s seed
Nella ricerca random, il valore del seed.

-B brute_depth
Nella modalità brute force specifica la massima profondità della ricerca.

-P max_prefix
Numero massimo di prefissi da ricercare.

-i instruction
Istruzione da cui partire per la ricerca (inclusiva).

-e instruction
Istruzione a cui terminare la ricerca.

-c core
Core su cui eseguire la ricerca.

-X blacklist
Mette in blacklist l'istruzione specificata.

-j jobs
Numero simultaneo di job eseguiti contemporaneamente.

-l range_bytes
Numero di byte di istruzione di base in ogni sottogruppo.





martedì 28 marzo 2017

Kali Linux: Recuperare le informazioni di un sito web utilizzando il Framework Katana

Per verificare l'attendibilità di un sito web può essere utile recuperare più informazioni possibili sul dominio. Informazioni come data di registrazione del dominio, intestatario, data di creazione e di scadenza, ecc. possono essere recuperate tramite lo strumento WHOIS

Online si trovano diversi servizi specializzati che offrono lo strumento WHOIS e, indicando il sito web che si intende verificare, visualizzano tutte le informazioni disponibili. In questo articolo mostrerò come recuperare tali informazioni utilizzando lo strumento Katana in Kali Linux.


Aggiornare Kali Linux

La prima operazione da effettuare è quella di aggiornare la distribuzione Kali Linux utilizzando i seguenti comandi da terminale
apt-get update
apt-get dist-upgrade


Installare Katana

Il passo successivo consiste nell'installazione del Framework Katana:
  • Avviare il terminale;
  • Digitare il comando
    git clone https://github.com/PowerScript/KatanaFramework.git

    seguito da invio e attendere il download del framework;
    Download Framework Katana
    FIG 1 - Download Framework Katana
  • Accedere alla directory KatanaFramework con il comando
    cd KatanaFramework 
  • Impostare i permessi sulla directory install con il comando
    chmod 777 install 
  • Procedere con l'installazione eseguendo
    ./install 
    Installazione Framework Katana
    FIG 2 - Installazione Framework Katana


Recuperare le informazioni di un dominio tramite Katana

  • Terminata l'installazione eseguire la console di Katana digitando
    ktf.console 

    Console Framework Katana
    FIG 3 - Console Framework Katana
  • Per visualizzare i moduli messi a disposizione dal Framework digitare
    showm
    Elenco moduli del Framework Katana
    FIG 4 - Elenco moduli del Framework Katana
  • Il modulo da utilizzare per il nostro scopo è web/whois. Avviarlo tramite il comando
    use web/whois
  • Eseguire il comando set target seguito dal sito che si intende analizzare, ad es. set target www.example.com 
  • A questo punto, per visualizzare le informazioni del sito web indicato nel passo precedente, basta digitare il comando run
    Visualizzare le informazioni del sito web utilizzando il modulo web/whois
    FIG 5 - Visualizzare le informazioni del sito web utilizzando il modulo web/whois