venerdì 29 marzo 2019

MS Exchange: Visualizzare i permessi di una cartella presente sulla mailbox tramite EMS

Chi gestisce un'infrastruttura di posta elettronica può trovarsi spesso nella situazione di dover verificare permessi assegnati ad una particolare cartella presente in una mailbox. In ambiente MS Exchange Server tale operazione può essere eseguita con l'ausilio del cmdlet Get-MailboxFolderPermission tramite EMS (Exchange Management Shell).

Get-MailboxFolderPermission  [-Identity] <MailboxFolderIdParameter> [-DomainController <Fqdn>]   [-User <MailboxFolderUserIdParameter>]    [-GroupMailbox]   [<CommonParameters>]


Parametri

-DomainController
Il parametro consente di specificare il Domain Controller a cui far riferimento per reperire dati dall'Active Directory. Il dominio va specificato nel formato FQDN (Fully Qualified Domain Name) ad es. dc02.contoso.com

-GroupMailbox
Il parametro è utilizzato per includere nei risultati i gruppi di Office 365.

-Identity
Tale parametro specifica la mailbox e la cartella su cui si intendono verificare le abilitazioni. La sintassi è del tipo  <Mailbox>:\<Folder>. Per <Mailbox> può essere specificato un qualsiasi valore che identifica la mailbox in maniera univoca come:
GUID
Distinguished name (DN)
Dominio\Account
Nome dell'entità utente
LegacyExchangeDN
SamAccountName
Indirizzo SMTP
Alias 

-User
Il parametro User filtra i risultati visualizzando solo le abilitazioni dell'utente indicato. Anche in questo caso è possibile utilizzare qualsiasi valore che permetta l'identificazione univoca dell'utente/gruppo come:
Nome
Display name
Alias
Distinguished name (DN)
Canonical DN
Indirizzo email
GUID




Esempi


Esempio 1
Get-MailboxFolderPermission  -identity GLUBRANO
Per visualizzare i permessi sulla root della mailbox.


Esempio 2
Get-MailboxFolderPermission  -identity GLUBRANO:\Calendario
o per maggiori dettagli
Get-MailboxFolderPermission  -identity GLUBRANO:\Calendario |FL
Visualizza i permessi sulla cartella Calendario della casella dell'utente GLUBRANO
Get-MailboxFolderPermission
FIG 1 - Get-MailboxFolderPermission

Esempio 3
Get-MailboxFolderPermission  -identity GLUBRANO:\Calendario -User DDUCK
Visualizza i permessi che l'utente DDUCK dispone sulla cartella Calendario presente nella mailbox dell'utente GLUBRANO.




mercoledì 27 marzo 2019

PowerShell: Disabilitare il risparmio energetico sulle schede di rete

Quando il PC entra in modalità sospensione/ibernazione, Windows disabilita tutte le periferiche non necessarie per risparmiare energia comprese le schede di rete. Tale comportamento può causare malfunzionamenti quando si riprende la sessione di lavoro: ad es. la scheda di rete potrebbe non riattivarsi.
Una soluzione a questo tipo di problemi consiste nell'impedire al sistema operativo di spegnere le schede di rete per risparmiare energia. 


Disabilitare il risparmio energetico sulla scheda di rete tramite GUI

  • Premere la combinazione di tasti WIN+R per aprire la finestra di dialogo Esegui e digitare devmgmt.msc seguito da invio per avviare Gestione dispositivi;

    Gestione dispositivi
    FIG 1 - Gestione dispositivi
  • Espandere la sezione Schede di rete ed eseguire un doppio click sulla scheda di rete su cui si intende disabilitare il risparmio energetico;
  • Nella finestra delle Proprietà, selezionare la scheda Risparmio energia quindi rimuovere la spunta alla voce Consenti al computer di spegnere il dispositivo per risparmiare energia e confermare cliccando sul pulsante OK.
    Proprietà scheda di rete
    FIG 2 - Proprietà scheda di rete



Disabilitare il risparmio energetico sulle schede di rete tramite PowerShell


Nello script PowerShell andremo a verificare le proprietà delle schede di rete presenti nel registro di sistema al seguente percorso
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
All'interno delle sottochiavi del registro andremo a verificare la proprietà *ifType per individuare le schede di rete Wi-Fi (con *ifType=6) e le schede di rete Ethernet (con *ifType=71). Per tali schede il risparmio energetico verrà disattivato valorizzando la proprietà PnPCapabilities a 18 in esadecimale (24 in decimale).
Lo script, oltre a visualizzare l'output a video, genera un file di log DisablePowerSavingNIC.log che è possibile consultare successivamente anche dopo aver chiuso la finestra di PowerShell.
Script DisablePowerSavingNIC.ps1
FIG 3 - Script DisablePowerSavingNIC.ps1
Lo script può essere scaricato dal seguente link
DOWNLOAD

Terminata l'esecuzione, l'output sarà simile a quello mostrato in FIG 4 ed è necessario procedere al riavvio del sistema affinché le modifiche siano applicate.
Output script PowerShell DisablePowerSavingNIC.ps1
FIG 4 - Output script PowerShell DisablePowerSavingNIC.ps1




domenica 24 marzo 2019

MS Office 365 for Business: Riparare Office da riga di comando tramite OfficeClickToRun

Per riparare l'installazione di MS Office 365 è possibile procedere tramite Programmi e funzionalità (appwiz.cpl) di Windows oppure tramite riga di comando utilizzando OfficeClickToRun.


Ripristino Office 365
FIG 1 - Ripristino Office 365

Il percorso di OfficeClickToRun.exe può variare in base alla versione di Office 365/Windows utilizzata e il comando da lanciare per procedere ad una riparazione rapida sarà simile al seguente:
"%ProgramFiles%\Common Files\Microsoft Shared\ClickToRun\OfficeClickToRun.exe" scenario=Repair platform=x86 culture=it-it forceappshutdown=True RepairType=QuickRepair DisplayLevel=False

Ovviamente i parametri da passare a OfficeClickToRun vanno personalizzati in base alle proprie esigenze e configurazione. Di seguito un dettaglio sui parametri utilizzabili e i possibili valori:

Parametro Valori Note
scenario Repair Indica che si intende procedere alla riparazione di Office.
Parametro Necessario
platform x86
x64
Specifica la versione di Office che si intende riparare.
x86 per la versione a 32 bit
x64 per la versione a 64 bit
Parametro Necessario
culture ll-cc Specifica la lingua della versione di Office installata. Se sono installate più lingue basta specificarne solo una.
Per la versione inglese di Office il valore sarà en-us per quella in italiano il valore da indicare è it-it.
Parametro Necessario
forceappshutdown True
False
Se impostato su True verranno chiuse tutte le applicazioni Office prima che venga avviata la riparazione. Se le applicazioni Office sono aperte e il parametro non è specificato o settato su False, allora la riparazione fallirà.
Parametro Opzionale
RepairType QuickRepair
FullRepair
Permette di specificare se si intende procedere con un Ripristino Rapido (QuickRepair) o con il Ripristino online (FullRepair).
Con il Ripristino online tutte le applicazioni Office saranno reinstallate e verranno sovrascritte tutte le impostazioni fatte nel file configuration.xml.
Parametro Opzionale
DisplayLevel True
False
Se impostato su True verranno visualizzate le finestre relative al ripristino. Impostando tale parametro su False il ripristino avverrà in maniera silente .
Parametro Opzionale





lunedì 18 marzo 2019

PowerShell: Montare\Smontare un'immagine ISO

Per immagine ISO si intende una copia bit-per-bit del file system di un disco ottico. Il nome deriva da ISO 9660, il file system standard dei CD-ROM tuttavia un'immagine ISO può contenere anche il file system UDF (ISO/IEC 13346) comunemente utilizzato nei dischi DVD e Blu-Ray.
Windows 10 facilita enormemente la gestione dei file ISO senza l'utilizzo di tool esterni. Per aprire un file ISO basta fare un doppio clic sul file oppure, in alternativa, cliccarci su con il tasto destro del mouse e selezionare Monta dal menu contestuale: Windows creerà un'unità ottica virtuale assegnandole la prima lettera di unità libera e permettendo la navigazione del contenuto dell'immagine ISO tramite Esplora file.
Windows 10, Montare un'immagine ISO
FIG 1 - Windows 10, Montare un'immagine ISO
Per eliminare l'unità virtuale e smontare l'immagine basta cliccare con il tasto destro del mouse sull'unità in Esplora file e selezionare Espelli dal menu contestuale.


In PowerShell è possibile montare\smontare un'immagine ISO utilizzando i cmdlet Mount-DiskImageDismount-DiskImage.
Per montare un'immagine ISO tramite PowerShell
Mount-DiskImage -ImagePath "C:\kali-linux-2019.1a-amd64.iso"
PowerShell, Montare un'immagine ISO
FIG 2 - PowerShell, Montare un'immagine ISO

Per smontare un'immagine ISO da PowerShell
Dismount-DiskImage -ImagePath "C:\kali-linux-2019.1a-amd64.iso"
PowerShell, Smontare un'immagine ISO
FIG 3 - PowerShell, Smontare un'immagine ISO
oppure, utilizzando il device path
Dismount-DiskImage -DevicePath \\.\CDROM1





giovedì 14 marzo 2019

PowerShell: Creare un documento MS Excel contenente i risultati dei ping ad un elenco di postazioni

Potremmo trovarci nella situazione in cui ci viene richiesto di controllare se diverse postazioni siano connesse in rete. Il modo più semplice per eseguire tale controllo consiste nel verificare se le postazioni rispondono al ping. In questo articolo mostrerò come raggiungere tale obiettivo con uno script PowerShell che, dato un elenco di postazioni contenuto in un file di testo, provvede ad eseguire il ping e a memorizzare i risultati all'interno di un documento MS Excel.
Lo script può essere scaricato dal seguente link
DOWNLOAD
Script PowerShell PingHost2Excel
FIG 1 - Script PowerShell PingHost2Excel

La prima istruzione consiste nell'assegnare alla variabile $path il nome del file, comprensivo di percorso, contenente l'elenco delle workstation da verificare. Il contenuto del file sarà simile a quello mostrato in FIG 2: ogni riga contiene il nome della postazione da verificare.
Elenco Workstation da verificare
FIG 2 - Elenco Workstation da verificare

Successivamente con Test-Path verifichiamo se il file è presente, in caso contrario terminiamo lo script visualizzando il messaggio di file non trovato
$path = ".\ElencoWKS.txt"
if (Test-Path $path) 

Se il file contenente l'elenco delle workstation viene trovato procediamo alla creazione di un nuovo documento MS Excel e a posizionarci sul primo foglio di lavoro. 
$objExcel = new-object -comobject excel.application 

$objWorkbook = $objExcel.Workbooks.Add() 
$objWorksheet = $objWorkbook.Worksheets.Item(1)

Con la seguente istruzione facciamo in modo che il documento MS Excel sia visibile a video durante la compilazione.
$objExcel.Visible = $True

La prima riga del foglio di lavoro la utilizziamo come intestazione assegnando un nome a ciascuna colonna in base al contenuto che andremo successivamente ad inserire.
$objWorksheet.Cells.Item(1, 1) = "Nome Host"
$objWorksheet.Cells.Item(1, 2) = "Ping"
$objWorksheet.Cells.Item(1, 3) = "Indirizzo IP"


Nella variabile $wks andiamo a caricare l'elenco delle postazioni da analizzare. La variabile $row viene inizializzata a 2 (nella prima riga del foglio di lavoro abbiamo inserito l'intestazione) e verrà utilizzata per spostarci alla riga successiva man mano che verranno analizzate/inserite le workstation in elenco.
$wks= gc $path
$row=2

La parte più importante dello script è rappresentata dal ciclo foreach-object: per ogni postazione presente in elenco provvede ad inserire, all'interno del file MS Excel, il nome della postazione, l'esito del ping (OK se andato a buon fine o KO nel caso in cui non si riceve risposta) e l'eventuale indirizzo IP della postazione.
$wks| foreach-object{
 $ping=$null
 $workstation = $_
 $ping = Test-Connection $workstation -Count 1 -ea silentlycontinue
 $objWorksheet.Cells.Item($row,1) = $workstation
 
 if($ping){
  $objWorksheet.Cells.Item($row,2) = "OK"
  $objWorksheet.Cells.Item($row,3) = $ping.IPV4Address.IPAddressToString   
 }
 else {
  $objWorksheet.Cells.Item($row,2) = "KO"
  $objWorksheet.Cells.Item($row,3) = "-"
 }
  
 $row++
}


Foglio MS Excel con i risultati della verifica
FIG 3 - Foglio MS Excel con i risultati della verifica




martedì 12 marzo 2019

PowerShell: Installazione/Disinstallazione di OpenSSH Client/Server in Windows 10

OpenSSH (Open Secure Shell) è un'insieme di strumenti utilizzato per connessioni da remoto cifrate tramite il protocollo SSH. Tutto il traffico viene cifrato consentendo una comunicazione sicura e immune da intercettazioni, dirottamenti e altri tipi di attacchi.

Microsoft ha integrato, come funzionalità facoltative, OpenSSH Client e OpenSSH Server all'interno del proprio sistema operativo. Le due funzionalità possono essere installate separatamente in Windows Server 2019 e Windows 10 1809 sia tramite interfaccia grafica (GUI) sia tramite PowerShell.


Installazione di OpenSSH Client/Server tramite GUI

  • Avviare l'app Impostazioni (WIN+I) quindi cliccare su App;
    Windows 10, Impostazioni
    FIG 1 - Windows 10, Impostazioni
  • Nella sezione App e funzionalità cliccare sul link Gestisci funzionalità facoltative;
    Windows 10, App e funzionalità
    FIG 2 - Windows 10, App e funzionalità
  • Cliccare su Aggiungi una funzionalità;
    Windows 10, Aggiungi una funzionalità
    FIG 3 - Windows 10, Aggiungi una funzionalità
  • Selezionare la funzionalità che si intende installare e cliccare sul pulsante Installa per procedere con l'installazione.
    Windows 10, Installa una nuova funzionalità
    FIG 4 - Windows 10, Installa una nuova funzionalità



Disinstallazione di OpenSSH Client/Server tramite GUI

I passaggi sono analoghi a quanto visto per l'installazione.
  • Avviare l'app Impostazioni (WIN+I) quindi cliccare su App;
  • Nella sezione App e funzionalità cliccare sul link Gestisci funzionalità facoltative;
  • Dall'elenco delle funzionalità installate selezionare quella che si intende disinstallare e cliccare sul pulsante Disinstalla per procedere con la rimozione.

    Windows 10, Disinstallazione funzionalità aggiuntive
    FIG 5 - Windows 10, Disinstallazione funzionalità aggiuntive



Installazione di OpenSSH Client/Server tramite PowerShell

  • Per accertarsi che le funzionalità OpenSSH siano disponibili per l'installazione utilizzare il comando
    Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
    PowerShell, Get-WindowsCapability
    FIG 6 - PowerShell, Get-WindowsCapability
  • Per installare il Client OpenSSH eseguire
    Add-WindowsCapability -Online -Name OpenSSH.Client*
  • Per installare il Server OpenSSH eseguire
    Add-WindowsCapability -Online -Name OpenSSH.Server*
    PowerShell, Add-WindowsCapability per installare nuove funzionalità
    FIG 7 - PowerShell, Add-WindowsCapability per installare nuove funzionalità
Terminata l'installazione sarà possibile utilizzare dal prompt dei comandi o da PowerShell i seguenti comandi SSH:
ssh.exe
scp.exe
sftp.exe
ssh-add.exe
ssh-agent.exe
ssh-keygen.exe
ssh-keyscan.exe

Gli eseguibili sopra riportarti si trovano all'interno della cartella
C:\Windows\System32\OpenSSH\ 
mentre i file di SSH relativi ai nomi host noti, alle chiavi generate ecc. si trovano nel seguente percorso
%USERPROFILE%\.ssh\ 





Disinstallazione OpenSSH Client/Server tramite PowerShell

La disinstallazione di OpenSSH Client/Server può essere eseguita tramite il cmdlet Remove-WindowsCapability 
  • Per disinstallare il client OpenSSH da PowerShell eseguire
    Remove-WindowsCapability -Online -Name OpenSSH.Client*
  • Per disinstallare il server OpenSSH  eseguire
    Remove-WindowsCapability -Online -Name OpenSSH.Server*




Configurazione iniziale di OpenSSH Server

Per eseguire la configurazione iniziale di OpenSSH Server, lanciare una sessione PowerShell come amministratore ed eseguire i seguenti comandi
  • Avviare il servizio sshd con il comando
    Start-Service sshd
  • Impostare l'avvio Automatico del servizio eseguendo
    Set-Service -Name sshd -StartupType 'Automatic'
  • Durante l'installazione di OpenSSH Server viene creata e abilitata una regola sul firewall (OpenSSH-Server-In-TCP) per consentire le connessioni in SSH in ingresso. Verificare la presenza della regola sul firewall con il comando
    Get-NetFirewallRule -Name *ssh*
PowerShell, Configurazione iniziale di OpenSSH Server
FIG 8 - PowerShell, Configurazione iniziale di OpenSSH Server



Connessione al server SSH

Sulle postazioni dove è installato il client OpenSSH è possibile connettersi al server eseguendo il comando
ssh username@servername

Al primo accesso al server verrà mostrato un messaggio come quello in FIG 9.
PowerShell, Connessione al server OpenSSH
FIG 9 - PowerShell, Connessione al server OpenSSH

Rispondendo yes si prosegue con la connessione e verrà richiesto l'inserimento della password di accesso.

A connessione avvenuta il server verrà aggiunto all'elenco locale degli host noti e  verrà mostrato un prompt del tipo
domain\username@SERVERNAME C:\Users\username>





lunedì 11 marzo 2019

PowerShell: Creazione di un documento Excel contenente l'elenco dei processi in esecuzione

Lo script PowerShell presentato in quest'articolo consente di creare un documento MS Excel in cui vengono elencati i processi in esecuzione sulla postazione con relative informazioni su Nome del processo, ID, tempo di CPU ed eventuale percorso del file eseguibile. Un prerequisito per l'esecuzione di tale script è che sulla postazione sia installato MS Excel.
Se eseguendo lo script si riceve errore relativo a restrizioni impostate sulla postazione, eseguire il comando
set-executionpolicy unrestricted

Analizziamo lo script nel dettaglio.
Nella variabile $path andiamo ad inserire il nome, comprensivo di percorso, da assegnare al documento MS Excel una volta creato.
$path = "c:\ElencoProcessi.xlsx"
Con le successive tre istruzioni viene avviato MS Excel, creata una nuova cartella di lavoro e all'interno di quest'ultima ci si posiziona sul foglio di lavoro che andrà a contenere le informazioni sui processi.
$objExcel = new-object -comobject excel.application 
$objWorkbook = $objExcel.Workbooks.Add() 
$objWorksheet = $objWorkbook.Worksheets.Item(1)

Per non visualizzare a video la finestra di MS Excel in fase di creazione del file, nello script viene utilizzata l'istruzione
$objExcel.Visible = $False
All'interno del foglio di lavoro utilizziamo la prima riga come riga di intestazione assegnando un nome a ciascuna colonna in base al contenuto che andremo successivamente ad inserire.
$objWorksheet.Cells.Item(1, 1) = "Process"
$objWorksheet.Cells.Item(1, 2) = "ID"
$objWorksheet.Cells.Item(1, 3) = "CPU"
$objWorksheet.Cells.Item(1, 4) = "Path"
Il cuore dello script è rappresentato dalle seguenti istruzioni. 
$row=2
Get-Process | Sort-Object ProcessName | Select ID, ProcessName,CPU, Path | foreach-object{ 
 $objWorksheet.Cells.Item($row,1) = $_.processname;
 $objWorksheet.Cells.Item($row,2) = $_.id;
 $objWorksheet.Cells.Item($row,3) = $_.cpu;
 $objWorksheet.Cells.Item($row,4) = $_.path;
 $row++
}
La variabile $row viene inizializzata a 2 (nella prima riga del foglio di lavoro abbiamo inserito l'intestazione) e verrà utilizzata per spostarci alla riga successiva man mano che verranno trovati e inseriti i processi all'interno del foglio. Tramite il cmdlet Get-Process otteniamo i processi in esecuzione che vengono ordinati per nome  con Sort-Object ProcessName e inseriti all'interno del foglio di lavoro.
Al termine non resta che salvare il documento creato e chiudere MS Excel. Nel caso in cui il nome del file risulti già presente, apparirà una finestra di dialogo in cui viene richiesto all'utente se intende sovrascriverlo.
$objWorkbook.SaveAs($path)
$objWorkbook.Close()
$objExcel.Quit()
PowerShell, Script ElencoProcessi.ps1
FIG 1 - PowerShell, Script ElencoProcessi.ps1

Lo script può essere scaricato dal seguente link
DOWNLOAD
All'interno dello script è presente la funzione Use-RunAs che forza l'esecuzione con i privilegi amministrativi (PowerShell: Forzare l'esecuzione di uno script con privilegi elevati). L'utilizzo di tale funzione non è strettamente necessaria ma può essere utile se si tenta di salvare il file in path che richiedono privilegi elevati.

MS Excel, Elenco Processi
FIG 2 - MS Excel, Elenco Processi





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ì 5 marzo 2019

Tor Browser: Verificare la sicurezza tramite TorCheck

TOR (The Onion Router) è un sistema di comunicazione anonima per Internet basato sul protocollo di rete onion routing. Fu sviluppato a metà degli anni 90 per la US Naval Research Laboratory da Paul Syverson e da Micheal Reed al fine di proteggere le comunicazioni dei servizi segreti statunitensi. Nel 2004 il codice sorgente del progetto fu rilasciato con una licenza libera e nel 2006 alcuni collaboratori che lavoravano al progetto iniziale fondarono The Tor Project, un'associazione senza scopo di lucro che si occupa tuttora dello sviluppo di TOR e di altri progetti correlati.
Tra i progetti più noti del Tor Project c'è Tor Browser: un browser basato su Firefox ESR che consente una navigazione anonima collegandosi al proxy server SOCKS interno di TOR (127.0.0.1:9150). Tor Browser è disponibile sia in versione con installer sia nella versione portable per tutti i sistemi operativi e include, oltre al browser Firefox ESR, anche il plugin HTTPS Everywhere (per forzare l'utilizzo del protocollo HTTPS), il plugin NoScript (che previene l'esecuzione di codice Javascript che può minare l'anonimato), TorButton (che gestisce la sicurezza e la privacy all'interno del browser disabilitando gran parte dei contenuti attivi) e l'addon TorLauncher (che permette la gestione e la configurazione di Tor Browser).
Tor Browser
FIG 1 - Tor Browser

Tor Browser (scaricabile da https://www.torproject.org/projects/torbrowser.html.enforza l'utilizzo del protocollo HTTPS tramite HTTPS EveryWhere garantendo una connessione cifrata tra il proprio PC e il primo nodo della rete TOR. Sulla rete TOR il traffico cifrato rende estremamente difficile risalire alla sorgente, tuttavia non sempre è garantito l'anonimato nell'ultimo tratto della comunicazione quello, cioè, tra l'Exit Node e il sito destinatario presente su Internet. Tale connessione potrebbe non essere cifrata e se la comunicazione contiene dati/informazioni sul mittente è possibile risalire alla sorgente.

Proprio per questo motivo TOR Browser non va considerato come la panacea di  tutti i mali ma è necessario sempre il buon senso da parte dell'utente. Ad esempio, i file scaricati come documenti di Office o di altre applicazioni, PDF, file eseguibili, ecc. vanno aperti quando non connessi ad Internet in quanto possono contenere componenti attivi (come macro) o collegamenti a siti esterni e rilevare informazioni personali. Quando si è connessi a TOR inoltre è sconsigliabile utilizzare client torrent o altri software che possono collegarsi all'esterno fornendo informazioni sulla propria identità.



Verificare la configurazione e la sicurezza di Tor Browser tramite TorCheck

Per testare la configurazione di Tor Browser è possibile utilizzare TorCheck di Xenobite: basta accedere alla pagina https://torcheck.xenobite.eu/index.php utilizzando Tor Browser per avere, in pochi istanti, un report dettagliato come quello mostrato in FIG 2. 
TorCheck di Xenobite
FIG 2 - TorCheck di Xenobite

I campi evidenziati in verde chiaro indicano una buona protezione/configurazione mentre in rosso vengono riportati i campi potenzialmente problematici e che richiedono l'attenzione dell'utente. 
Le voci visualizzate dal report sono:
  • Your real IP
    Rappresenta l'indirizzo IP reale. Se visualizzato vuol dire che non si sta navigando in maniera anonima;
  • Your current IP
    Si tratta dell'indirizzo IP rilevato dai siti che si visita. Se Tor Browser è configurato correttamente verrà visualizzato un indirizzo diverso dall'IP reale (indirizzo dell'Exit Node);
  • Your current FQDN 
    FQDN (Fully Qualified Domain Name) è un nome di dominio non ambiguo che specifica la posizione assoluta di un nodo all'interno della gerarchia dell'albero DNS. Se il campo è valorizzato allora il nostro indirizzo IP viene ancora loggato dall'ISP tramite i DNS;
  • Your Geolocation
    Indica la posizione geografica in base all'IP rilevato;
  • TorDNSEL
    Questo campo indica se l'indirizzo IP di uscita fa parte della lista degli Exit Node;
  • Local Tor Consensus
    Indica se e quando l'indirizzo IP è stato trovato nel consenso locale di Tor;
  • Your HTTP-Referer 
    L'HTTP Referer è un campo all'interno del header HTTP che identifica l'indirizzo della pagina web di origine che richiama la risorsa richiesta. Tramite tale campo un sito web può verificare da quale pagina arriva un visitatore (ad es. da una ricerca su Google, da una mail, da un particolare sito, ecc);
  • Your HTTP-Via
    Il valore indica al server il tipo di richiesta che viene effettuata tramite il proxy di Tor;
  • Your HTTP-User-Agent
    Il campo indica l'User-Agent del browser e il sistema operativo. L'User-Agent del browser può essere modificato;
  • Your HTTP-ACCEPT
    Il campo mostra i valori accettati dal browser come la lingua, la codifica, il tipo di caratteri, cookies ecc.;
  • Your HTTP-CONNECTION
    Valore della HTTP-CONNECTION. Generalmente il valore è keep-alive;