Domanda Su cosa si regge un Server?

Dark Dante

Utente Iron
27 Novembre 2021
8
2
5
14
Introduco il post dicendo che tratterà una domanda molto stupida, ma, forse, non banale. Probabilmente farò confusione nell’esporre la domanda, essendo un semplice principiante, quindi aspetterò eventuale correzioni o contestazioni volte a chiarire la domanda stessa, se sarete gentili da farne. Oggigiorno, soprattutto se si sia esperti, ma anche nel caso in cui si sia “solo” appassionati al settore della sicurezza informatica, si sentono sempre più notizie inerenti a varie falle che sono state scoperte e sono state vettori di attacco per diversissimi ed infiniti “tipi di server”. Mi è capitato di leggere della notissima vulnerabilità log4j, grazie alla quale ottenere un RCE, ad esempio su un server di Minecraft, oppure ho letto di più vulnerabilità relative a dei bot, in particolare di Discord, finendo per assurgere anch’essi al ruolo di vettori di attacco, di code injection, per i server di suddetta piattaforma. Per portare un altro esempio, si potrebbe usare un BOF, se si è particolarmente skillati, per trovare una falla in un server particolarmente vulnerabile. Allora mi chiedo, con non poca confusione, sulla base di questi esempi, che fanno capire quanto i tipi di attacchi siano diversi tra di loro, cos’è un Server? Come sono progettate, in generale, queste infrastrutture informatiche? Se la passione di un “hacker” è quella di “rompere” un codice sorgente per scoprire debolezze da rinvigorire, se il modus operandi di un attaccante è quello di ottenere informazioni, come analizzare ad un “basso livello” come siano fatte queste infrastrutture? Sono anch’esse “semplici”, anzi, complessi insiemi di righe di codici tra cui si nasconde l’ennesima falla? E se così fosse, dove approfondire per avere esempi reali di quale elementi informatici si servano tali infrastrutture per reggersi? Ad esempio, inoltre, cosa distingue un server particolarmente vulnerabile, da uno più robusto?
 
  • Mi piace
Reazioni: DjCanigia

DjCanigia

Helper
Autore del Mese
20 Agosto 2012
1,081
107
222
641
Introduco il post dicendo che tratterà una domanda molto stupida, ma, forse, non banale. Probabilmente farò confusione nell’esporre la domanda, essendo un semplice principiante, quindi aspetterò eventuale correzioni o contestazioni volte a chiarire la domanda stessa, se sarete gentili da farne. Oggigiorno, soprattutto se si sia esperti, ma anche nel caso in cui si sia “solo” appassionati al settore della sicurezza informatica, si sentono sempre più notizie inerenti a varie falle che sono state scoperte e sono state vettori di attacco per diversissimi ed infiniti “tipi di server”. Mi è capitato di leggere della notissima vulnerabilità log4j, grazie alla quale ottenere un RCE, ad esempio su un server di Minecraft, oppure ho letto di più vulnerabilità relative a dei bot, in particolare di Discord, finendo per assurgere anch’essi al ruolo di vettori di attacco, di code injection, per i server di suddetta piattaforma. Per portare un altro esempio, si potrebbe usare un BOF, se si è particolarmente skillati, per trovare una falla in un server particolarmente vulnerabile. Allora mi chiedo, con non poca confusione, sulla base di questi esempi, che fanno capire quanto i tipi di attacchi siano diversi tra di loro, cos’è un Server? Come sono progettate, in generale, queste infrastrutture informatiche? Se la passione di un “hacker” è quella di “rompere” un codice sorgente per scoprire debolezze da rinvigorire, se il modus operandi di un attaccante è quello di ottenere informazioni, come analizzare ad un “basso livello” come siano fatte queste infrastrutture? Sono anch’esse “semplici”, anzi, complessi insiemi di righe di codici tra cui si nasconde l’ennesima falla? E se così fosse, dove approfondire per avere esempi reali di quale elementi informatici si servano tali infrastrutture per reggersi? Ad esempio, inoltre, cosa distingue un server particolarmente vulnerabile, da uno più robusto?
La risposta non è semplice e dipende da molti fattori in quanto un server che può essere di condivisione, streaming, Cloud oppure gaming come Minecraft, metin2 ecc.. tantissime falle provengono proprio dai file, per esempio in un server metin2 se non è abbastanza protetto si può rintracciare l'IP e i vari accessi, oppure con un sqlinject penetrare nel database.
Sicuramente per riuscire ad entrare in un server devi conoscerne il funzionamento e soprattutto conoscere i file che utilizza (prendendo l'esempio di metin2, se sai come lavorano i file server puoi cercare le falle). Stessa cosa vale per i database SQL. Se riesci a penetrare con un injection puoi rubare dati.
Quest'ultima è la modalità più in voga negli ultimi tempi, per esempio quando si sente "sono stati rubati migliaia di dati da sito x " semplicemente è stato fatto un dump del database dopo essere riusciti a penetrare.
Ogni server quindi è protetto diversamente, ma i database invece lavorano in modo molto simile per questo sono i più attaccati.

Ho cercato di spiegare nel modo più semplice e intuitivo. Ma potremmo stare qui giorni 😂
 

JunkCoder

Moderatore
5 Giugno 2020
1,217
23
1,059
508
Pensa a un server come a un normale computer, con la differenza che espone uno o più servizi, utilizzabili da chiunque su internet che ne conosca l'indirizzo.
Questi servizi seguono protocolli ben definiti: un sito web si aspetta richieste in un formato specifico e risponde html visibile dal browser, un videogame online aspetta i dati in un formato del tutto diverso per ottimizzare la velocità. L'arte di trovare vulnerabilità in questi servizi si chiama exploitation, e ci sono tante classi di vulnerabilità, alcune le abbiamo già citate come la SQL Injection, poi ci sono bug logici (il servizio mi permette di fare qualcosa che non dovrei seguendo semplicemente un percorso che il dev non ha immaginato), c'è la memory corruption e tanti altri legati alle varie tecnologie.
 

Dark Dante

Utente Iron
27 Novembre 2021
8
2
5
14
Vi ringrazio delle risposte, però per l'appunto come posso capire quali siano i file di un server, oppure, come aggiornarsi sulle "ultime" tecnologie da essi usati? Non riesco a trovare alcuna fonte in cui si discuta quali siano i "mattoni", come appunto i file, costituenti un server, che possa essere cloud o gaming o web. C'è da dire che il discorso sul WebServer è diverso però, in quanto attività di Reconnaissance sono fattibilissime e si riesce più o meno e decostruire le tecnologie web su cui uno specifico web server si fonda.
 
  • Mi piace
Reazioni: DjCanigia

JunkCoder

Moderatore
5 Giugno 2020
1,217
23
1,059
508
Ogni servizio è un mondo a parte come hai giustamente notato. I web server all'apparenza sono più semplici su cui fare reconnaissance perché seguono lo standard HTTP, quindi una volta che lo conosci puoi capire facilmente cosa faccia quel servizio, in più ci sono indicatori utili come l'header Server che spesso rivela il motore del webserver che sta dietro. Per i videogame la storia è diversa, per cose come minecraft o metin hai comunque un accesso parziale al sorgente: anche se il server ha delle modifiche custom, probabilmente alla base sarà come tutti gli altri, quindi puoi "aprire un tuo server" di quel gioco e analizzarne il codice e il comportamento per trovare una falla. Trovare una falla in un codice java ovviamente sarà un compito diverso da trovarla in un webserver php.
 

DjCanigia

Helper
Autore del Mese
20 Agosto 2012
1,081
107
222
641
Vi ringrazio delle risposte, però per l'appunto come posso capire quali siano i file di un server, oppure, come aggiornarsi sulle "ultime" tecnologie da essi usati? Non riesco a trovare alcuna fonte in cui si discuta quali siano i "mattoni", come appunto i file, costituenti un server, che possa essere cloud o gaming o web. C'è da dire che il discorso sul WebServer è diverso però, in quanto attività di Reconnaissance sono fattibilissime e si riesce più o meno e decostruire le tecnologie web su cui uno specifico web server si fonda.
Come ha già menzionato @JunkCoder per capire come funziona e trovare una falla in un server game come Minecraft scaricati i file sorgenti e aprendo il tuo server studia le falle. Più o meno gli altri server si assomigliano, almeno che il developer in questione non ha riparato e quindi protetto i buchi
 

0xbro

Super Moderatore
24 Febbraio 2017
4,222
166
3,292
1,645
@Dark Dante domanda più che lecita. Le risposte sopra sono già ottime, non ho molto da aggiungere. LiveOverflow ha però fatto da poco un bel video dove spiega in parole semplici cosa sia un server e cosa lo caratterizzi del resto. Se mastichi un po' di inglese dagli un'occhiata, puoi darti degli spunti interessanti:



Vedi: https://www.youtube.com/watch?v=VXmvM2QtuMU
 

Access Denied

Utente Emerald
17 Gennaio 2022
325
88
216
467
Fare un pentest di successo contro un server può essere una vera sfida, ma se riesci a entrare ti dico... uppaci qualche "monnezza innoqua" come "trofeo di caccia", tipo neil armstrong che pianta la bandiera degli usa sulla luna, e non toccare nient'altro, perché se fai crashare (o danneggi) un server, le conseguenze penali sono più pesanti rispetto a quando accade su un computer privato. Con questo non sto insinuando che sei malintenzionato, dico solo di fare attenzione, soprattutto documentando gli exploit che usi. Perché se li usi con disattenzione puoi provocare un DOS involontario, o causare problemi di stabilità ai servizi. Non prendere alla leggera i server, solitamente possono essere hackerati in modo stealth solo da attaccanti veterani perché un nabbo quasi sicuro che causa un crash di qualcosa, o comunque si dimentica di fare cleanup e lascia un sacco di tracce. Quindi se sei alle prime armi studiati le basi del pentest ma non fare "all'arrembaggio" o rischi di finire male.
 

Dark Dante

Utente Iron
27 Novembre 2021
8
2
5
14
0xbro grazie per l'utile risorsa, è un bel dive nel topic. Ovviamente, @czonta96, sono semplicemente quesiti teorici quelli che mi pongo, so bene che "entrare" in un server, avendolo bucato, è come ritrovarsi in una cristalliera, perciò non farei mai un pentest del genere se non su server di mia proprietà. Se mai dovessi fare un pentest di questo tipo, sarà perché avrò la skill necessaria a non far crashare i vari servizi implementati dal server che si sta testando.
 

fennek

Utente Bronze
22 Gennaio 2023
39
2
30
20
Un altro aspetto che, personalmente, trovo interessante sono i cosiddetti "bug bounties": le aziende, sapendo bene che qualsiasi servizio esposto a internet presenta delle falle, hanno dei contest pubblici che praticamente dicono "Se tu trovi un exploit, e lo condividi con noi in modo che possiamo risolverlo, allora ti paghiamo".

In questi contest sono spesso condivise informazioni su quali siano gli obiettivi, e come funziona parte dell'architettura. Esistono poi siti il cui codice viene rilasciato sotto licenze "Open source", quindi puoi leggere il codice e cercare falle direttamente li.

Le aziende grandi hanno i propri siti dedicati ai bug bounties (e.g., Google, Microsoft, Facebook). Aziende con meno risorse si appoggiano a degli intermediari (e.g., HackerOne, BugCrowd). La cosa veramente interessante: molti "report" vengono pubblicati, cosi che la community possa imparare e, in generale, le best practices vengano condivise. Quindi, se sei curioso di vedere come questi attacchi avvengano, puoi leggere i report pubblicati.

Per esempio questo report di una vulnerabilità in GitLab lo trovo ben scritto: molto tecnico, l'autore ha ricevuto $33.500 per averlo segnalato.