Come è stato violato Matasano?


10

da: http://seclists.org/fulldisclosure/2009/Jul/0388.html

Se lo capisco meglio dai post di: http://news.ycombinator.com/item?id=723798, i ragazzi di Matasano hanno lasciato sshd internet accessibile - qualsiasi soluzione proposta per questo (dal punto di vista della programmazione)?


Bene, se i log sono veri, allora è un problema di configurazione dei servizi esposti e nulla ha a che fare con la programmazione.
Blowdart,

Risposte:


34

Come è stato violato Matasano?

È impossibile rispondere dalle informazioni del post a Full Disclosure. Tuttavia è sempre interessante speculare, in quanto forniscono alcune informazioni:

# ./th3_f1n4l_s0lut10n www.matasano.com
[-] Connessione a 69.61.87.163:22 ..
[/] Alla ricerca di un utente non root valido .. adam
******** R3D4CT3D h4h4h4h4 ********

Eseguono il " th3_f1n41_s01ut10n" binario contro il server di Matasano, che si collega alla porta ssh. Trova un utente non root valido attraverso alcuni mezzi sconosciuti e il resto dell'output viene redatto.

# ./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com
[*] Listener di Connectback il 209.112.118.10:3338 ..
[!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1, OpenSSL 0.9.8g 19 ott 2007] 

Il binario viene eseguito nuovamente utilizzando il nome utente trovato, che accede e si riconnette al loro server sulla porta 3338 (spero che non sia registrato a loro nome ...).

adam_at_www: ~ $ uname -a
Linux www 2.6.20.1-1-686 # 1 SMP dom 4 mar 12:44:55 UTC 2007 i686 GNU / Linux
**** h4h4h4hh4h4h4 l3tz us3 m0r3! 0D4Y! H4H4H4H4H4H4H4 ****

Potrebbero insinuare di avere uno 0-day contro questo kernel, che è piuttosto vecchio se si considera lo stock in trade di questa società.

adam_at_www: ~ $ cd / tmp
*********** B0R1NG ***********
root_at_www: ~ # cat / etc / shadow 

Whoops: all'improvviso l'utente è ora root. Hanno un exploit di escalation di privilegi locali in / tmp che potrebbe essere il giorno 0 a cui si riferivano.

Quindi ci sono almeno due exploit in corso qui: l'exploit OpenSSH per ottenere un utente non root valido sul sistema e accedere come tale utente, quindi l'escalation dei privilegi locali.

Considerando che OpenSSH presenta alcuni problemi di sicurezza noti dalla versione 4.5:

Dalla pagina di sicurezza di OpenSSH :

  • OpenSSH precedente alla versione 5.2 è vulnerabile alla debolezza del protocollo descritta nel CPNI-957037 "Attacco di recupero del testo in chiaro contro SSH". Tuttavia, in base alle informazioni limitate disponibili sembra che questo attacco descritto sia impossibile nella maggior parte dei casi. Per ulteriori informazioni, fare riferimento all'advisory cbc.adv e alle note di rilascio di OpenSSH 5.2.
  • OpenSSH 4.9 e ~/.ssh/rcversioni successive non vengono eseguiti per le sessioni il cui comando è stato sovrascritto con una direttiva ForceCommand sshd_config (5). Questo era un comportamento documentato, ma non sicuro (descritto nelle note di rilascio di OpenSSH 4.9).
  • OpenSSH 4.7 e versioni successive non si affidano alla creazione di cookie di autenticazione X11 attendibili in caso di mancata generazione di cookie non attendibili (ad es. A causa dell'esaurimento deliberato delle risorse), come descritto nelle note di rilascio di OpenSSH 4.7.

Immagino che questo vecchio kernel Linux e un vecchio demone SSH abbiano fatto per loro. Inoltre, era in esecuzione sul loro server www, che è disponibile su Internet, il che è una cosa abbastanza sicura da fare secondo me. Le persone che hanno fatto irruzione volevano ovviamente metterli in imbarazzo.

Come prevenire questi attacchi?

Ciò avrebbe potuto essere impedito dall'amministrazione proattiva, assicurando che tutti i servizi connessi a Internet siano corretti e limitando il numero di persone che possono connettersi piuttosto che consentire alle persone di connettersi da qualsiasi luogo. Questo episodio aggrava la lezione secondo cui l'amministrazione sicura del sistema è difficile e richiede la dedizione dell'azienda per fornire tempo all'IT per mantenere le cose riparate - in realtà, non qualcosa che accade facilmente, almeno nelle aziende più piccole.

È preferibile utilizzare un approccio cintura e parentesi graffe: utilizzare l'autenticazione a chiave pubblica, la whitelist sul demone ssh, l'autenticazione a due fattori, le restrizioni IP e / o mettere tutto dietro la VPN sono possibili percorsi per bloccarlo.

Penso di sapere cosa farò al lavoro domani. :)


2
Richiede una chiave pubblica valida per poter accedere tramite OpenSSH. Non infallibile, ma aiuta. Ottimo post tra parentesi.
Andrioid,

Buon punto, aggiunto :)
Cawflands,

1
Vale la pena sottolineare che la stringa della versione di OpenSSH è lungi dall'essere una guida affidabile sul fatto che i vunerabilites siano stati patchati, a causa di varie versioni di linux che supportano le correzioni. Inoltre, nessuno dei bug qui è probabile che consenta a un utente di accedere senza altre violazioni abbastanza gravi.
Cian,

3

La gente ama creare FUD su questo, ma sembra che sapessero che l'utente Adam era già lì e conosceva anche la sua password (forse attraverso la forza bruta o altri metodi). Tuttavia, vogliono apparire belli e creare questo clamore dappertutto.

Un'altra cosa interessante da notare è che l'utente Adam non ha effettuato l'accesso a quella casella per più di un anno:

(output di lastlog)

 adam             pts/1    ool-4350ab48.dyn Sat Jul 26 20:45:18 -0400 2008

Quindi probabilmente ha conservato quella password (forse una cattiva) per un po '.

* Se avessero davvero uno strumento per scoprire i nomi degli utenti tramite SSH, avrebbero potuto usare tutti gli altri utenti per ottenere l'accesso remoto, ma hanno usato il nome utente più comune in quella casella (facilmente da indovinare).


2

Perché dovresti provare a risolverlo dal punto di vista della programmazione?

Dovresti invece risolverlo dal punto di vista dell'amministratore di smart server. Ci sono alcuni ottimi suggerimenti nei commenti dei link che hai pubblicato, come l'utilizzo di una whitelist.

Vorrei anche aggiungere che, poiché stai chiedendo qui, molto probabilmente non sei un esperto di sicurezza e qualsiasi cosa tu possa pensare di scrivere aggiungerebbe solo più buchi. Questa non è davvero una domanda di programmazione.


un suggerimento era una lista bianca?

che non è ancora un problema di programmazione, è un problema di configurazione
esplosione il


@Sneakyness Non sono un esperto di sicurezza in alcun modo - ma grazie per averlo sottolineato - questo è quello che faccio queste domande, così posso imparare - e grazie per aver tentato di impedirmi di scrivere su qualcosa che mi piacerebbe imparare - se è una domanda di programmazione o non di programmazione - Lascerò agli esperti di sicurezza di rispondere
INCLUSI

2

Proteggi il tuo software dagli attacchi di 0 giorni ... il che è impossibile.

Forse un buon approccio è quello di affermare che il tuo software non è integrabile, il che porterà whitehat a provarlo e a rivelare tutto, lasciando meno buchi. Oracle 10 aveva questa affermazione, quindi il giorno seguente sono stati trovati 9 nuovi buchi. Adesso è abbastanza sicuro.

Molto probabilmente l'hacker ha abusato della configurazione di software perfettamente funzionante


Siamo sicuri che sia stato anche un giorno zero?
Josh Brower,

2

mi viene in mente che avevano così tanti utenti con shell su quella macchina. è così che sono diventati di sicuro sicuri, tutto il resto sono aringhe rosse destinate a distrarre. uno di loro ha avuto il loro client ssh backdoor su qualche altra macchina shell molto probabilmente e poi è finito il gioco. dare a tutti gli account di shell e rendere accessibile il mondo sshd è semplicemente pigro e stupido.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.