Ghidra: uno dei migliori debugger freeware

Nelle mani di un analista InfoSec, Ghidra semplifica il processo di Reverse Engineering e consente agli utenti di personalizzare ed estendere le analisi per soddisfare le esigenze individuali o del cliente, migliorando contemporaneamente i flussi di lavoro. Ghidra è accessibile e fondamentale anche per chi si avvicina al mondo del Reverse Engineering, in particolare grazie al decompilatore incluso che può aiutare a comprendere più chiaramente le relazioni tra i linguaggi ad alto livello e i codici disassemblati mentre si esplora l’intricato mondo dell’analisi binaria. Ghidra è una complessa suite di strumenti di Reverse Engineering Open Source in continua evoluzione, tant’è che la community di utenti Ghidra continua a migliorare ed estendere le sue capacità.

link1
link2

Centinaia di testimonianze positive del suo utilizzo, direttamente dalla pagina Twitter dell’NSA (!!!)

Analisi di funzioni esterne con DLest

DLest è un’applicazione freeware utilizzabile per individuare le funzioni esportate nei file PE (Portable Executable), in particolare in file DLL. Con DLest è facile enumerare le funzioni utilizzando una varietà di metodi, tra cui il trascinamento della selezione, l’apertura di una cartella o la scansione ricorsiva di un folder sfruttando i filtri delle espressioni regolari, ad esempio per includere solo i PE con specifici nomi di funzioni di esportazione.

Oltre alla possibilità di analizzare file PE archiviati su disco, DLest consente anche l’analisi dei moduli caricati in memoria nonché la manipolazione in tempo reale delle funzioni esportate, rendendolo uno strumento prezioso per attività di Reverse engineering o durante le fasi di Incident Response. Puoi persino eseguire il dump di una versione ricostruita di qualsiasi modulo per future analisi o riutilizzi di vario tipo.

Essendo un tool multithreading, garantisce un’elaborazione tempestiva anche in presenza di un gran numero di file PE. Che tu sia un programmatore che sta cercando di individuare e/o manipolare le funzioni esportate, piuttosto che un malware analyst che necessita di uno strumento affidabile per le attività di ogni giorno, DLest può costituire una preziosa risorsa FOSS da inserire nella tua cassetta degli attrezzi.

Tra le caratteristiche che trovo degne di nota:

  • supporta file eseguibili sia per ambienti x86-32 (PE) che x86-64 (PE+)
  • caricamento dei file tramite Drag and Drop (supporta l’UAC)
  • caricamento dalla finestra di dialogo aperta
  • caricamento di file dall’intera cartella
  • possibilità di cercare file PE attraverso controlli avanzati (scansione in profondità, ricorsiva e filtraggio delle funzioni di esportazione tramite regex)
  • scansiona e analizza i moduli mappati in memoria dal processo in esecuzione
  • possibilità di effettuare una ricerca contestuale integrata tramite Google

DLest consente di utilizzare la finestra di dialogo predefinita di Microsoft Windows per selezionare uno o più file PE (Portable Executable) da analizzare: apparirà una finestra di dialogo standard che ti permetterà di navigare nel computer target, e selezionare i file PE che desideri caricare.

Dopo che avrai selezionato i file di tuo interesse, verranno sottoposti a un processo di filtraggio per garantire che siano file PE validi, ossia di un’architettura compatibile con la versione DLest che hai installato. Questo processo garantisce che in DLest vengano caricati solo file compatibili. Utilizzando la modalità file aperto, puoi facilmente caricare e analizzare i singoli file PE secondo le tue necessità, sia per scopi di sviluppo che di analisi di malware: che tu abbia bisogno di esaminare un singolo file piuttosto che un corposo elenco, la modalità file aperto in DLest ti consente di farlo comodamente.

La modalità “open folder” scansiona rapidamente una singola directory consentendo di identificare tutti i file Portable Executable (PE) validi al suo interno, in particolare file DLL, utilizzando lo stesso filtraggio della modalità “open file”.

La modalità “scan folder” consente di eseguire la scansione completa di un albero di directory, individuando eventuali librerie DLL che offrono funzioni esportate. Questa modalità consente di eseguire la scansione ricorsiva di una cartella e delle sue sottocartelle, alla ricerca di file PE compatibili e validi che offrano funzioni esportate. Una delle caratteristiche principali di questa modalità di scansione è la sua capacità di utilizzare query avanzate di espressioni regolari (regex) per filtrare determinati file in base ai nomi delle loro funzioni esportate. Ciò può essere particolarmente utile se stai cercando funzioni specifiche o se hai bisogno di escludere determinati file dalla scansione. Oltre ai file DLL, la modalità “scan folder” include anche la possibilità di cercare qualsiasi file PE compatibile: ciò lo rende uno strumento versatile per individuare e analizzare le funzioni esportate in una varietà di diversi tipi di file PE. Che tu debba individuare rapidamente le funzioni esportate in una singola cartella piuttosto che eseguire una scansione più avanzata di una struttura di directory più ampia, puoi farlo sfruttando questa modalità di scansione.

Il caricamento dalla modalità Processo in esecuzione di DLest consente di analizzare l’intestazione PE (Portable Executable) per le funzioni esportate direttamente da moduli in memoria, piuttosto che dai file archiviati su disco. Questa funzionalità può giovare a tutti coloro a cui occorre analizzare funzioni esportate in tempo reale o che hanno necessità di lavorare con moduli caricati in memoria che non sono archiviati su disco.

Per utilizzare il caricamento dalla modalità Processo in esecuzione basta selezionare il processo desiderato dall’elenco dei PID in esecuzione sul sistema: DLest analizzerà l’intestazione PE del processo selezionato, identificando eventuali funzioni esportate al suo interno. Particolarmente utile per analizzare e manipolare le funzioni esportate in tempo reale, questa funzionalità consente di accedere direttamente ai moduli in memoria di un processo in esecuzione.

Dump Reconstructed PE Image
Tale funzionalità consente di salvare una copia di qualsiasi modulo mappato in memoria – da un processo di destinazione – in un file per ulteriori analisi o utilizzi.
Per utilizzare questa funzione è necessario selezionare il processo e il modulo desiderati da un elenco di processi attualmente in esecuzione, e i relativi moduli mappati in memoria. DLest creerà quindi una copia del modulo selezionato e lo ricostruirà in un formato che può essere letto da analizzatori PE o altri strumenti.
L’immagine PE ricostruita può essere salvata in un file sul sistema per un uso successivo: ti consentirà di esaminare il modulo in modo più dettagliato, ricostruendone il comportamento e/o riutilizzandolo per test o altri scopi.

La funzionalità di filtraggio delle esportazioni ti consente di utilizzare espressioni regolari per selezionare le sole funzioni esportate in tempo reale che ti interessano.
Per utilizzare questa funzione, inserisci semplicemente un’espressione regolare nel campo designato e fai click sul pulsante applica. DLest filtrerà l’elenco delle funzioni esportate utilizzando la regex, visualizzando solo quelle che corrispondono al modello.
Sebbene questa funzione possa essere molto comoda, vale la pena notare che potrebbe essere più lenta se applicata a un numero molto elevato di funzioni esportate. In tali casi, potrebbe esser necessario più tempo affinché DLest applichi il filtro e aggiorni la visualizzazione, tuttavia, nella maggior parte dei casi la funzione di filtraggio delle esportazioni in tempo reale è rapida ed efficiente, il che la rende uno strumento prezioso per individuare rapidamente funzioni esportate specifiche o escludere quelle indesiderate.

DLest è in grado di loggare eventuali errori o problemi che si verificano durante l’analisi dei file PE (Portable Executable), oppure quando un file di destinazione non contiene funzioni esportate. Ogni qual volta dovesse verificarsi un errore o un problema durante l’analisi di un file PE (ma anche quando un file di destinazione non dovesse contenere funzioni esportate), nella finestra di dialogo Logs verranno tracciati degli avvisi informativi: saranno presenti dettagli sul file in questione, sulla natura dell’errore, come tracce dello stack pertinente nonché altre informazioni diagnostiche.

funzionalità “Extended Libraries Informations”

È una funzionalità che mostra un elenco di file PE (Portable Executable) analizzati dal contesto della scheda corrente, insieme a una varietà di dettagli su ciascun file:

  • nome della libreria (così come appare nell’intestazione del file)
  • conteggio esportazioni: mostra il numero totale di funzioni esportate per libreria
  • la dimensione del file espressa in byte
  • hash del file: MD5, SHA1 e SHA256
  • attributi del file: ad esempio se è di sola lettura o nascosto.

Dallo stesso autore di DarkComet e SubSeven Legacy, un ottimo FOSS utilizzabile sia per effettuare analisi e approfondimenti in ambito Incident Response nonché in ambito sviluppo software / troubleshooting Windows. Nel momento in cui sto pubblicando questo articolo, puoi scaricare il codice sorgente di DLest da questo link.

Bypassare il blocco di WhatsApp

A lavoro, a casa, o all’università hanno inserito dei blocchi che ti impediscono di accedere a WhatsApp con la connessione che utilizzi? E allora tu bypassa i blocchi sfruttando un proxy server!

Da qualche giorno WhatsApp ha introdotto la possibilità di accedere ai suoi servizi attraverso server proxy. Questa nuova funzionalità permette alle persone di accedere e mantenere l’accesso a WhatsApp anche se c’è in atto un tentativo di bloccare le connessioni, o interromperle. Scegliendo di transitare attraverso un proxy, potrai sostanzialmente collegarti a WhatsApp tramite un server “ponte” esterno creato da volontari e/o organizzazioni umanitarie in tutto il mondo per consentire alle persone di comunicare liberamente (i tuoi messaggi personali continueranno a essere protetti da crittografia end-to-end… a parte i metadati (il problema sulla mancata cifratura dei metadati si manifesta comunque anche senza l’utilizzo di server proxy)).

Questa opzione è disponibile attraverso il menù delle Impostazioni per tutti gli utenti che stanno utilizzando la versione più recente di WhatsApp.

Un proxy server espone più porte a seconda dello scenario in cui lo si utilizza, tuttavia le porte di default tipicamente includono:

  • porta 80: per il traffico HTTP (meglio non utilizzare questa porta)
  • porta 443: per il traffico web cifrato attraverso il protocollo HTTPS
  • porta 5222: per il traffico di rete del protocollo XMPP/Jabber (il default per WhatsApp)

Dunque, come collegarti con un proxy? (istruzioni per i sistemi basati su Android)

  1. individua l’indirizzo IP di un proxy server (in rete trovi tanti blog, articoli e video che spiegano come fare, nonché liste di proxy server aggiornate anche a poche ore fa: basta cercare)
  2. Nella scheda Chat, seleziona la voce di menù Altre opzioni > Impostazioni
    • successivamente Spazio e dati > Proxy
    • pigia ora su Usa proxy
    • pigia quindi su Imposta proxy e inserisci l’indirizzo IP pubblico del proxy che hai individuato precedentemente
    • conferma facendo click su Salva
    • apparirà una piccola icona con un segno di spunta verde, ma solo se la connessione al proxy è riuscita!
    • diversamente, se non riesci a inviare o ricevere messaggi WhatsApp utilizzando il proxy che hai inserito, sono possibili due scenari:
      1. è possibile che quel proxy nel frattempo sia stato bloccato, oppure
      2. quel proxy non è più on-line per qualche motivo (manutenzione, piuttosto che abbia raggiunto il numero massimo di connessioni contemporanee configurate dal sysadmin per l’intervallo temporale in cui stai provando a collegarti)
      3. in entrambi gli scenari puoi selezionare e tener premuto l’indirizzo IP del proxy per eliminarlo, e successivamente inserire l’indirizzo IP di un altro proxy per riprovare la connessione

Puoi consultare i seguenti link per ulteriori informazioni:

  • link1
  • link2
  • link3 (interessante paginetta per chi non volesse affidarsi ad un proxy di qualcun altro, ma desiderasse mettere in piedi il proprio…magari piazzandolo in qualche datacenter estero poco propenso a mantenere i log delle connessioni dei propri clienti)
  • …o contattarmi se hai problemi con i proxy pur avendone provati diversi

Microsoft “assistenza rapida”

Perché chiedere al cliente di installare un software R.A.T. (più comunemente noti come software di teleassistenza) di terze parti quando è possibile accedere da remoto a una postazione Windows 10/11 attraverso un software verosimilmente già presente nel sistema operativo? E’ il caso di Microsoft Quick Assist (o “Assistenza rapida” nella versione italiana di Microsoft Windows), interessante alternativa al più classico servizio RDP o ai vari TeamViewer, AMMI Admin, Anydesk ecc..ecc..

Uno dei vantaggi dell’utilizzo di questo software è che non abbiamo necessità di conoscere (ma soprattutto di chiederglielo!) l’indirizzo IP del pc/server utilizzato dal cliente a cui stiamo per fornire assistenza tecnica (scenario estremamente comodo quando abbiamo a che fare con utenti a digiuno di networking, o ancor peggio con veri e propri utOnti che alla parola TCP/IP vanno in tilt e si rifiutano categoricamente di collaborare sostenendo a prescindere “non lo so fare”). D’altronde, tuttavia, leggendo anche la documentazione ufficiale del servizio, si scopre che di fatto il traffico di rete per l’assistenza sistemistica transita attraverso i sistemi in Cloud di Microsoft… con tutte le implicazioni di (dubbia) Privacy del caso.

“Assistenza rapida” è un tool per la teleassistenza molto semplice da usare, ma a differenza di altri R.A.T. richiede appunto che la postazione del cliente a cui vogliamo accedere da remoto sia presidiata (quanto meno per farci comunicare il codice d’accesso iniziale). Ovviamente, in contesti bancari e/o militari (ma aggiungerei anche in tutti quei contesti in cui in ballo c’è la tutela di brevetti e/o segreti industriali) ne scoraggio l’utilizzo per ovvi motivi legati a potenziali minacce alla Privacy dei sistemi coinvolti e dei dati in transito.

Alcuni articoli di approfondimento:
– link1
– link2
– link3

IoTGoat, una palestra per il pentester IoT

Il progetto IoTGoat (gestito dalla community OWASP) aggiorna periodicamente un firmware deliberatamente vulnerabile basato su OpenWrt, utile come piattaforma di training per programmatori a digiuno di Secure Coding e professionisti InfoSec, poiché è possibile utilizzarlo come target vulnerabile ad exploit IoT, e quindi target di vulnerability assessment e studi affini. Le vulnerabilità si basano sull’OWASP IoT Top 10, nonché sugli easter egg (backdoor, password hardcoded e segreti industriali volutamente annidati nel firmware) degli ideatori del progetto. Per un elenco delle sfide di vulnerabilità, è possibile consultare l’apposita pagina wiki.

Un elenco di letture e lab utili per questo progetto:

Crittografia con SAGE

SAGE è un software Open-Source nonché freeware (FOSS) che implementa un sistema di matematica e algebra informatica, flessibile e di facile apprendimento. Un CAS (Computer Algebra System) è un software in grado di eseguire calcoli simbolici e numerici: i CAS sono utilizzati per l’insegnamento, e da qualche anno costituiscono uno strumento ideale per estendere l’esperienza d’apprendimento in un corso di Crittografia. A differenza dei concorrenti come “Mathematica”, “Maple” e “MATLAB”, per gli utenti SAGE non sono richiesti costi o accordi di licenza da sottoscrivere, pertanto lo si può installare gratuitamente su computer e reti informatiche in scuole, università e Academy, e gli studenti possono scaricare individualmente il software sui propri personal computer per un eventuale riutilizzo anche a casa.

Un altro vantaggio dell’utilizzo di SAGE, è che gli studenti apprendono un software flessibile che può essere utilizzato per studiare anche numerosi problemi crittografici, non solo matematici. A seconda del tuo sistema operativo, puoi scaricare SAGE da questa pagina.

Altri link utili: