I mainframe sono un componente critico dell'infrastruttura IT in molti settori, in quanto potenziano l'elaborazione di transazioni ad alto volume con alta affidabilità e numerosi meccanismi di sicurezza. Banche, compagnie aeree, hotel e compagnie assicurative si affidano ai mainframe per gestire le transazioni associate a trasferimenti bancari, acquisti con carta di credito, creazione di prenotazioni ed elaborazione di richieste assicurative.
Come in qualsiasi sistema informatico, le configurazioni errate del mainframe sono possibili nonostante le caratteristiche di sicurezza avanzate. Data l'importanza delle informazioni gestite da queste macchine, è indispensabile che la sicurezza dei mainframe sia valutata regolarmente e con attenzione dai penetration tester. Ogni mainframe è appositamente progettato per adattarsi a un particolare caso d'uso, quindi un penetration tester può impiegare del tempo per comprendere l'ambiente che sta valutando. Dopo la fase iniziale di esplorazione, il tester cercherà le vulnerabilità e le configurazioni errate nel software e nelle applicazioni in esecuzione sul mainframe.
Esistono diversi strumenti di test di penetrazione disponibili per i mainframe, ma si tratta di script autonomi, non facenti parte di uno strumento multifunzionale. Un tester deve dedicare tempo a determinare quali script siano appropriati da eseguire e dove trovare quelli che funzioneranno meglio nel suo ambiente. Per colmare questa lacuna, Elizabeth Christensen ed io, entrambe stagiste per IBM X-Force Red, abbiamo sviluppato m-RAY, uno scanner automatico di vulnerabilità per mainframe IBM con il sistema operativo z/OS. Il suo scopo è quello di aiutare i penetration tester nelle fasi iniziali del loro coinvolgimento con l'identificazione delle configurazioni errate e delle vulnerabilità più comuni. Utilizzando questo strumento, i tester riducono le ore trascorse a eseguire manualmente i comandi e completare le fasi di esplorazione, aumentando così il tempo che possono dedicare a seguire potenziali percorsi di attacco o punti cruciali e a individuare i problemi prima che possa farlo in avversario.
m-RAY è stato progettato come un framework facilmente estensibile che controlla la presenza di vulnerabilità nelle configurazioni di vari servizi e semplifica il processo di esecuzione degli script in un ambiente z/OS. Grazie alla natura personalizzata dei mainframe, i tester possono configurare quali caratteristiche desiderano utilizzare per adattarsi al meglio all'ambiente in cui lavorano.
L'elenco degli errori di configurazione da verificare è stato compilato dalla Security Technical Implementation Guide z/OS RACF (STIG). Le guide STIG sono requisiti di configurazione utilizzati dal Dipartimento della Difesa per proteggere i propri sistemi e si basano sulle raccomandazioni del NIST. Indipendentemente dal fatto che un'azienda sia tenuta o meno a rispettare questi requisiti, le STIG forniscono una fonte di best practice di settore per vari prodotti software e costituiscono la base di questo strumento di sicurezza. Il team ha identificato le 25 configurazioni errate principali che avrebbero fornito il maggior valore a un tester e di cui sarebbe stato più importante che i clienti fossero a conoscenza, quindi le ha implementate come controlli di vulnerabilità.
Ad esempio, m-RAY verifica se i livelli di permesso degli utenti sono allineati negli ambienti Unix e TSO, se SSH è configurato per utilizzare algoritmi crittografici sicuri e se gli account inattivi vengono automaticamente revocati. Attualmente, m-RAY fornisce informazioni sulle configurazioni errate dei mainframe nell'ambiente Unix System Services e in RACF, il software di sicurezza che gestisce il controllo degli accessi degli utenti su z/OS. Alcuni forniscono una risposta definitiva sulla presenza di una certa configurazione errata sul sistema, mentre altri forniscono informazioni di sistema come un elenco di account utente che possono accedere a una determinata risorsa. Un penetration tester può quindi collaborare con il cliente per determinare se l'accesso è adeguatamente limitato.
Oltre a verificare le configurazioni del sistema, un altro obiettivo di m-RAY è quello di aggregare le funzioni degli strumenti mainframe esistenti. Questi strumenti di enumerazione sono spesso scritti in REXX, un linguaggio di scripting per mainframe. Per utilizzare uno di questi script durante un penetration test, il tester deve trovare lo strumento open source, scaricarlo sul proprio computer, caricarlo da lì sul mainframe, eseguirlo e interpretare i risultati. Per semplificare questa procedura, m-RAY include i due script REXX open source più popolari e automatizza il caricamento e l'esecuzione dello script, oltre a pulire l'ambiente dopo di ciò. I tester possono anche aggiungere i propri script REXX personalizzati allo strumento.
In generale, utilizzando m-RAY, un penetration tester può automatizzare molti dei controlli di vulnerabilità che altrimenti dovrebbe eseguire manualmente e può ridurre il tempo impiegato per ottenere una panoramica iniziale del sistema.
Esistono diversi modi per interagire con un mainframe moderno. Il metodo tradizionale è TSO, che consente agli utenti di connettersi a una sessione interattiva e di impartire comandi. Questo di solito comporta l'uso di un emulatore di terminale specializzato che opera sul protocollo IBM 3270. La maggior parte dei mainframe moderni esegue anche SSH, un protocollo di connettività remota che può funzionare su tutte le piattaforme. Ciò fornisce un modo per inviare comandi TSO e UNIX e automatizzare le azioni come parte di uno script. m-RAY opera su una connessione SSH al mainframe per utilizzare al meglio le funzionalità aggiuntive che SSH offre ed evitare dipendenze specifiche per piattaforma.
SSH sul mainframe utilizza Unix System Services, una caratteristica di z/OS che permette di eseguire programmi scritti per sistemi Unix. Utilizzando questo protocollo, m-RAY imposta una connessione al mainframe ed esegue comandi per raccogliere informazioni per eseguire controlli sulle configurazioni errate. SCP viene utilizzato per copiare in modo sicuro gli script REXX sul mainframe. L'autenticazione può essere effettuata tramite una password o una coppia di chiavi per adattarsi a diverse configurazioni di sistema.
L'applicazione principale fornisce un'interfaccia utente a riga di comando, configura le connessioni e inizia a controllare se ci sono vulnerabilità. Il penetration tester inserisce l'indirizzo IP del mainframe, seleziona i tipi di configurazione errata da verificare e inserisce una serie di credenziali di basso livello. Successivamente, viene avviata una connessione tra m-RAY e il mainframe che garantisce la possibilità di inviare comandi e ricevere risultati dal sistema.
I controlli delle vulnerabilità sono suddivisi in tre categorie: controlli di Unix System Services, controlli tramite TSO ed esplorazione generale. Dopo aver selezionato una di queste categories, un tester ha la possibilità di eseguire tutti i controlli o configurare quali desidera eseguire. Dopo aver raccolto i risultati di una scansione, m-RAY produce un rapporto con i risultati e alcune informazioni di sistema che possono fornire indicazioni al penetration tester durante il suo coinvolgimento. L'esecuzione di uno script REXX funziona in modo simile. Dopo aver selezionato l'opzione degli script, il tester può selezionare quelli che desidera eseguire.
La parte più importante del design di questa applicazione è la sua modularità. Con l'evoluzione nel tempo delle best practice di sicurezza, sarà necessario aggiungere controlli per le nuove configurazioni errate e modificare quelle esistenti. I nuovi controlli e script possono essere aggiunti modificando un modello incluso e richiedono solo la conoscenza dei comandi da eseguire per raccogliere le informazioni pertinenti. Se un penetration tester volesse aggiungere un nuovo controllo che comportasse l'esecuzione di un comando TSO, non dovrebbe sapere come impostare una connessione al mainframe, ma dovrebbe solo conoscere il comando TSO e, opzionalmente, qual è il risultato desiderato del comando. L'aggiunta di un nuovo controllo dovrebbe richiedere meno di 10 minuti. È anche possibile aggiungere nuovi protocolli di connessione. m-RAY utilizzava SSH poiché era il più adatto alla funzionalità attuale, ma l'aggiunta di un altro protocollo di connessione è anche semplificata grazie alle classi di connessione che implementano un'interfaccia standard.
m-RAY è uno strumento open source che può essere trovato qui.
La speranza di questo progetto è che continui ad essere ampliato con nuove configurazioni errate e controlli delle vulnerabilità oltre ai 25 attualmente implementati. La selezione attuale è stata curata per fornire il massimo valore sia ai penetration tester che ai clienti di cui valutano i sistemi. Questo, unito alla funzionalità degli strumenti open source esistenti, dà vita allo strumento di test di penetrazione dei mainframe più completo disponibile.