Una panoramica sul mondo della Sicurezza Informatica, del Networking, della Virtualizzazione e non solo. Blog particolarmente indicato per i reparti IT che comunque alterna articoli scritti per specialisti con articoli formulati con linguaggio semplice e comprensibile a tutti.

Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

venerdì 4 ottobre 2024

Ho addestrato un'AI a fare trading di bitcoin! [Parte1]

Ho addestrato un'Intelligenza Artificiale a fare trading di Bitcoin... sarò riuscito a prevedere le variazioni del prezzo? Scopriamolo insieme.


Premessa

Utilizzare un'IA preaddestrata, come ad esempio ChatGPT, è molto diverso dall'addestrare da zero una rete neurale. I parametri da tenere in considerazione sono davvero molti. Mi scuso fin d'ora se  il mio linguaggio risulterà impreciso ai puristi, non sono un ricercatore ma un sistemista. Durante un week end piovoso, non potendo girare in pista in moto e non potendo uscire per mare a vela (due delle mie tante passioni) mi è venuta voglia di approfondire l'argomento AI Train. 
 
I dataset finanziari sono molto ben strutturati e si prestano molto bene ad iniziare a muovere i primi passi in materia, quindi sono partito proprio da questi per non perdere troppo tempo nel processo di normalizzazione dei dati. Ovviamente, l'amico intelligente che ho citato all'inizio (ed il suo incredibile modello o-preview), mi ha dato una mano nel capire le logiche, nello scrivere parti di codice in python e nel dipanare molti dubbi.
Per iniziare ho stabilito un obiettivo binario: il prezzo dello slot temporale successivo aumenterà o diminuirà? Se il modello restituisce dati congrui e usabili, allora si passa allo step successivo: il prezzo di che percentuale aumenterà o diminuirà (mi accontento anche di "poco o molto")?



I dataset

Per iniziare ho creato uno script in grado di scaricare i dati di apertura, chiusura, volumi scambiati, prezzo massimo e minimo (le candele finanziarie) con intervallo temporale di 1 minuto dal 2018 al 2023 compresi per circa 15 delle principali e più stabili criptovalute. Per mia esperienza, le dinamiche spesso si assomigliano, quindi ho inserito tutti questi dati sempre come elaborazione base per il processo di apprendimento del modello di Intelligenza Artificiale. Per la parte di test pura, ho invece usato i valori del 2024 (da gennaio a settembre compresi). Nonostante i modelli abbiano una percentuale di Learn e Test, comunque ho voluto fare un "test indipendente" su valori che il modello non aveva mai visto per evitare il fenomeno di Overfitting (che vedremo più avanti).
unix,date,symbol,open,high,low,close,volume,base-volume,quote-volume,tradecount 1577836800,2020-01-01 00:00:00,BTCUSDT,7195.24,7196.25,7183.14000000,7186.68000000,51.64281200,19.59823000,140888.41428273,493 1577836860,2020-01-01 00:01:00,BTCUSDT,7187.67,7188.06,7182.20000000,7184.03000000,7.24814800,2.03177200,14599.21192429,135



La versione 1 - LSTM

Per iniziare sono partito da tensorflow, ma dopo innumerevoli tentativi in cui la GPU (4090 con 24gb di VRAM) non veniva vista, sono passato con successo a torch. Lavorare solo con la CPU (nonostante sia un i9 di ultima generazione) sarebbe stato impossibile sia come tempi sia come risultati.

Superati i problemi tecnici, ho iniziato ad utilizzare una rete neurale di tipo LSTM ed ho iniziato a giocare con le epochs (i cicli di addestramento) implementando tecniche di resume dai checkpoint e uno script separato per fare tutta la parte di testing. Qui mi sono apparsi chiari i parametri di inferenza (ovvero quanto il modello è in grado di prevedere correttamente): l'accuracy ed il loss. Nel modello l'accuratezza era spesso molto alta (vicina all'1... ci prendeva sempre, quindi sarei diventato finalmente milionario) ma l'accuracy su dati nuovi mai visti dal modello lo era molto meno. Ho scoperto, quindi, il fenomeno dell'overfitting, ovvero all'aumentare dei cicli di apprendimento il modello rischia di imparare a memoria i dati. Questo ovviamente non va bene perchè comunque su dati mai visti prima il modello si comporterà in maniera deludente. Per evitare questo si gioca con diversi parametri tra cui il patience, ovvero uno stop forzato dell'apprendimento nel momento in cui i valori danno segnali in tal senso o banalmente il modello non apprende più. Sfatiamo quindi subito un mito in cui credevo anche io: più cicli di apprendimento faccio e più imparo. NO, perchè rischio di imparare a memoria e quindi imparo uno schema inutilizzabile.



La versione 2 - Preprocessing


I dati non erano molto incoraggianti, sostanazialmente era come lanciare una monetina e scommettere sul risultato. Quindi ho aggiunto una fase di preprocessing così da dare all'IA anche dei parametri basati su indicatori finanziari normalmente utilizzati, ovvero 
  • MACD(Moving Average Convergence/Divergence)
  • Incrocio delle Medie Mobili,  
  • OBV (On-Balance Volume)
  • VPT (Volume–price trend),
  • RSI (Relative Strength Index) 
ognuno con diversi parametri. Ho preso i dati in mio possesso ed ho creato uno script per applicare tutti questi indicatori finanziari su molteplici finestre per capire quale, senza IA, comunque era in grado di aggiungere accuratezza di per se. Ho scritto quindi un ulteriore script per ordinare questi dati.
In fase di preprocessing ho quindi passato l'indicatore che mi dava il miglior risultato al modello da addestrare, vedendo finalmente dei risultati migliori della semplice casualità.



 

La versione 3 - CNN e Transformer

Nella versione 3 ho aggiunto al modello un CNN (Rete Neurale Convoluzionale). Una CNN viene utilizzata nel contesto delle serie temporali per estrarre automaticamente delle feature rilevanti dai dati.I vantaggi sono sostanzialmente 3:
  1. Riduzione della dimensionalità: Filtrare i dati temporali attraverso una convoluzione per ridurre le informazioni ridondanti.
  2. Pattern locali: Identificare pattern locali nei dati, come trend di breve periodo o picchi nei dati temporali. Nel caso dei prezzi, potrebbe identificare movimenti locali di prezzo o anomalie.
  3. Pre-elaborazione per LSTM: La CNN riduce la complessità dei dati che vengono poi passati all'LSTM per elaborare le relazioni sequenziali a lungo termine.
 
 undefined
 
Oltre al CNN ho aggiunto anche un processo di Transformer. I Transformer sono molto efficaci nel gestire sequenze lunghe e relazioni complesse tra le diverse parti di una sequenza grazie al meccanismo di attenzione, che permette al modello di concentrarsi sulle parti rilevanti della sequenza.

In questo script, il Transformer può:
  1. Identificare quali parti della sequenza temporale hanno una maggiore influenza su ogni predizione, permettendo al modello di "prestare attenzione" a movimenti di prezzo rilevanti, ignorando i movimenti meno significativi.
  2. Aiutare a catturare le relazioni temporali a lungo termine più efficacemente di un semplice LSTM, che tende a concentrarsi solo sulle relazioni a breve termine. 


 

La versione 4 - Approfondimento sui parametri e seed

Ad un certo punto è risultato chiaro che alcuni parametri dovevano essere affinati. Mi sono concentrato su:
  • Hidden Size: Banalizzando questi sono i neuroni dell'IA. Valori bassi rendono il modello troppo semplice e incapace di imparare pattern complessi, valori alti portano al rischio di Overfitting (il modello impara a memoria) oltre a rendere l'elaborazione molto più lenta
  • Number of Layers: Indica il numero di livelli, come per gli Hidden Size troppo pochi o troppi sono controproducenti, tuttavia 1 Layer è sufficiente spesso per molti compiti, ma potrebbe non essere in grado di catturare relazioni complesse nei dati. Se Hidden Size è il numero dei neuroni X Y su una rappresentazione cartesiana, i Layer sono la profondità Z.
  • Learning Percentage: Indica la percentuale di dati che viene dedicata all'addestramento e la percentuale che viene dedicata ai test. Percentuali alte dedicano più dati all'addestramento, ma lasciano meno dati per valutare le prestazioni. Percentuali basse dedicano più dati al test, ma riducono la quantità di dati usati per l'addestramento.
  • Learning Rate: Si occupa di ponderare il tasso di apprendimento. Valori alti fanno apprendere rapidamente, ma superficialmente. Valori bassi solitamente sono più precisi, ma richiedono più tempo (oppure non fanno apprendere proprio il modello).
  • Batch Size: Indica il numero di campioni che vengono elaborati prima che il modello aggiorni i pesi durante l'addestramento. Un valore più grande significa che più dati vengono elaborati contemporaneamente, riducendo il numero di aggiornamenti dei pesi, mentre un valore più piccolo aumenta il numero di aggiornamenti dei pesi, ma con meno dati processati in ogni aggiornamento.
L'equilibrio tra questi valori non è banale, quindi ho scritto due script. Uno che lancia una sequenza di learning dell'IA con diversi parametri magliati tra di loro (sotto un esempio di una configurazione che ha comportato 1536 train differenti), ed uno che prende i log dei risultati, gli fa un test indipendente su un dataset esterno mai visto dal modello (per evitare l'Overfitting) e scrive tutto in un database.



 
Addestrando lo stesso modello con gli stessi parametri uscivano tuttavia delle accuratezze (ovvero percentuali di previsioni azzeccate) diverse, e la cosa mi ha meravigliato. Perchè identici parametri davano risultati differenti? Poi ho scoperto i "seed". Alcune variabili vengono generati casualmente durante il processo di addestramento, come i pesi iniziali delle connessioni tra i neuroni, lo Shuffle dei dati di addestramento, i batch presi dal Stochastic Gradient Descent (SGD), i livelli neurali Batch Normalization e Dropout, il calcolo dei gradienti usati dalla GPU, i processi di cross-validation o ricerca casuale degli iperparametri (random search), la Random Augmentations nei Dati ed altri valori. Fissando il Seed (seme) la casualità viene contenuta al massimo, rendendo i test ripetibili. Fattore, questo, assolutamente  fondamentale per avere dei test comparativi accurati.

Com'è andata a finire?

Sarò diventato milionario? Questo lo scopriremo nella parte 2, anche perchè per ora sto ancora addestrando il modello e sto cercando la combinazione che mi restituisce l'accuratezza migliore!
Qualora non mi doveste vedere più in giro, allora vorrà dire che effettivamente sarò diventato milionario. In caso contrario, bhè... almeno avrò sperimentato un po'. E si sa, la conoscenza non ha prezzo.


martedì 23 luglio 2024

La faccenda Crowdstrike e le riflessioni che deve sollevare

Qualche giorno fa 8 milioni di dispositivi windows nel mondo si sono bloccati presentando un blue screen. Si è parlato molto, ovviamente, di questo accadimento che ha comportato danni per miliardi di dollari. Non mi soffermerò oltre, ma voglio giusto farvi vedere un video, ovvero i tracciati del traffico aereo prima, durante e dopo i disservizi.


Intendiamoci, il mondo intero è stato coinvolto, non solo il settore dei trasporti. Con questo video preso da YT voglio solo focalizzare l'attenzione sulla gravità della cosa. E a renderla ancor più grave è che questi sistemi sono solitamente utilizzati proprio da grandi aziende e proprio per evitare i danni di un attacco informatico, assolutamente sovrapponibili e similari a quelli causati da questo disservizio.


Cos'è successo?

Per farla breve, l'endpoint di CS per funzionare installa, tra le altre cose, anche dei driver. I driver sono, per un sistema operativo, qualcosa di estremamente intimo e dall'accesso assolutamente privilegiato. Nulla come un driver può accedere al sistema e ai suoi meandri più vulnerabili.

Dalle ricostruzioni, pare che vi sia stato un rilascio di un driver chiaramente buggato, ovvero con un puntatore di memoria su un'area riservata (#0x9c) del sistema operativo. Qualsiasi programma che tenti di accedere a quest'area viene immediatamente terminato dal sistema operativo per ragioni di sicurezza in quanto, alla base di moltissime violazioni, vi è proprio il meccanismo della lettura (e scrittura) di porzioni di memoria arbitrarie.


Qualche considerazione

Ho riassunto la vicenda molto brevemente, i più curiosi potranno approfondire ovunque maggiori dettagli.

La mia prima riflessione è: il bug era evidentissimo, bastava un riavvio per accorgersene. Possibile che un'azienda leader mondiale non abbia una procedura di revisione e rilascio degli aggiornamenti tale da evitare un problema simile? Stiamo scherzando? Mi blocchi mezzo mondo perchè un tuo sviluppatore la notte prima ha fatto le ore piccole? Ovviamente sto volontariamente un po' banalizzando, ma se noi per rilasciare anche solo una virgola su quattro gatti di clienti verifichiamo e incrociamo controlli come se da quello dipendesse la vita di tutta la nostra famiglia fino alla terza generazione... possibile che una multinazionale di sicurezza rilasci roba così alla leggera? E bug meno visibili chi li controlla, se persino questo è passato inosservato? In pieno spirito aeronautico (visto che ci siamo), quindi, che qualcuno relazioni analiticamente e con dovizia di particolari ciò che non ha funzionato, così che l'intero mondo possa trarne beneficio. Perchè non ho alcun dubbio che CS disponga di procedure rigidissime di rilascio, ma va capito cosa non ha funzionato e perchè. Persino nella basilare ISO27001 vi sono meccanismi di controllo di rilascio, obiettivamente è incredibile tutto questo.

La mia seconda riflessione è: e se invece di un bug, qualcuno nella posizione di rilasciare aggiornamenti venisse avvicinato ed inserisse volontariamente backdoor? Non sarebbe mica la prima volta, anzi, visti i numeri economici che oramai girano sulla sicurezza informatica offensiva, è una tendenza assolutamente consolidata quella di corrompere gente all'interno di organizzazioni. Chi se ne sarebbe accorto e quando? Ci sono enti terzi che fanno solo questo, ovvero l'analisi del codice rilasciato, quando si parla di software così delicati, è opportuno che questo venga reso obbligatorio a livello normativo?

La mia terza riflessione è: anni fa successe a Sophos, poi ad Avast, oggi a Crowdstrike. Concordo, i driver sono delicati, ma è davvero complesso per Microsoft introdurre una procedura di recovery di un precedente driver in caso di BSOD continuo? Possibile che la procedura di ripristino (sono solidale con i colleghi che non ci stanno dormendo da qualche notte) sia così complessa (e non prevista)? Forse è arrivato il momento di prevedere anche l'imprevedibile, perchè è solo questione di tempo, ma l'imprevedibile prima o poi accade.

Chiudo questo articolo/sfogo con un'ultima riflessione: gli amanti del mondo Linux (tra cui il sottoscritto) non si vantino troppo del fatto che solo i sistemi Microsoft sono stati affetti dal problema, perchè i più accorti sanno perfettamente che questa ruota gira continuamente.


Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.


mercoledì 17 maggio 2023

Tempi di attivazione di un collegamento LAN su switch (STP, POE, DHCP, Negoziazione)

Un cliente oggi mi ha domandato il motivo per cui, da quando si collega un client ad uno switch mediante una patch LAN a quando lo stesso diviene in grado di comunicare con il resto della rete, passa del tempo.

 

Molto brevemente proviamo a capire insieme cosa accade:

1. In una fase iniziale lo switch (se POE) cerca di capire se il device è abilitato o meno a ricevere energia elettrica secondo gli standard 802.3af (low energy) o 802.3at(high energy o POE+). Senza entrare nel dettaglio tecnico ampiamente documentato, questa fase richiede del tempo ed è possibile vedere la porta, inizialmente accesa per un attimo, spegnersi e quindi riaccendersi definitivamente. [POE +5 secondi circa]

 

2. Nella fase successiva (o se non abbiamo uno switch POE salteremo direttamente qui), avviene la negoziazione della velocità e del duplex (tipicamente oggi 1Gbit in modalità Full Duplex, ovvero bidirezionale). Gli apparati (switch e device) cercheranno di negoziare la velocità migliore possibile. [AutoNegoziazione +4 secondi circa]


3. Se abbiamo abilitato lo Spanning Tree (tipicamente RSTP), lo switch metterà inizialmente la porta in blocking per evitare loop, dopodichè porterà la porta in listening, learning e infine in forwarding. Durante questi passaggi lo switch ascolta cosa sta accadendo sulla rete e attende di leggere eventuali BPDU per stabilire tutti i percorsi verso il suo root bridge. Non entro in ulteriore dettaglio del protocollo STP, ma questo tempo è utile allo switch per accertarsi che non vi siano broadcast storm (loop) causati da percorsi ridondati e attivi simultaneamente. [Spanning Tree +32 secondi circa]

 

4.  Finalmente siamo pronti a comunicare, ma se il nostro device ottiene l'indirizzo IP non manualmente ma in DHCP, dovremo attendere sia il meccanismo di DHCP Request/Relay sia l'assegnazione dell'IP all'interfaccia di rete (qui dipende molto anche dalla capacità computazionale del device). [DHCP +3 secondi]

 


Conviene disabilitare qualcosa pur di velocizzare l'accesso? Salvo non ci siano esigenze particolari,  certamente no. Parliamo di collegamenti LAN, perlopiù statici. Difficilmente si cambia porta LAN così di frequente da notare un rallentamento in queste operazioni. Anche all'atto dell'accensione di una postazione di lavoro, calcolando che la LAN rimane spesso attiva per il WakeOnLan (ma anche presupponendo una postazione elettricamente spenta), fin quando il sistema operativo viene caricato e l'utente accede alla propria macchina, certamente la LAN sarà più che pronta.

Ovviamente questi dati sono stati presi su uno switch, ma tipicamente questo tipo di comportamento varia da produttore a produttore. Ci sono produttori (soprattutto nello spanning tree) "più conservativi" che preferiscono attendere un tempo maggiore prima di dichiarare la porta "esente da percorsi ridondati", altri che attendono di meno.

 


Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

martedì 7 febbraio 2023

Attacco alle infrastrutture VMware, facciamo chiarezza


In molti mi stanno chiedendo in queste ore lumi circa l'alert diramato dapprima dall'Agenzia Francese e di conseguenza dall'Agenzia per la Cybersecurezza Nazionale (ACN) Italiana in questo comunicato.

In questo breve articolo non parlerò (troppo) della vulnerabilità, ma del perchè ci si ritrova con un server esposto.

 


La vulnerabilità in breve

La CVE-2021-21974 confermata da VMware qui e con un punteggio di 9.8/10 riguarda il servizio SLP, normalmente aperto di default sulla porta 427, che consente di ottenere un accesso permanente e privilegiato sull'hypervisor. Da quando una CVE viene rilasciata in seguito ad un possibile punto di attacco a quando l'attacco diviene realmente applicato nel mondo reale, a volte passa del tempo (altre volte, invece, ci si accorge della vulnerabilità dopo aver concretamente osservato gli attacchi). Motivo per cui oggi, improvvisamente, è esploso il caso.

La vulnerabilità consente di crittografare direttamente le macchine virtuali ignorando totalmente come quanto esse siano protette al loro interno. Aspetto ancor più grave è che potenzialmente i backup fatti dall'Hypervisor (ad esempio con Ghetto o con altri script su volumi direttamente connessi in NFS, iSCSI, etc.), sono anch'essi attaccabili.


Quando ci si ritrova vulnerabili?

Ci si ritrova vulnerabili quando un server VMware viene esposto su internet senza alcuna protezione perimetrale a difesa della macchina. Quando un server VMware viene protetto da un firewall (ma anche da un dispositivo in grado di fare NAT come un router con questa funzionalità attiva), è prassi che i servizi non utilizzati vengano chiusi e non resi accessibili all'esterno. Intendiamoci: l'hypervisor è sacro, va protetto più delle VM in esso contenuto.

Quindi, ricapitolando, per avere un VMware esposto devo:

  • Non avere un router con il NAT abilitato (quindi VMware dovrebbe avere direttamente l'IP Pubblico Statico)
  • Non avere un firewall
  • Aver lasciato il servizio slp attivo (com'è di default)

Una situazione che non dovrebbe accadere in un'azienda con i server in casa ma che è la normalità con i server in cloud.

 

Perchè si parla di attacco principalmente alla Francia?

Qui c'è un aspetto interessante della vicenda. Non è nulla di geopolitico, semplicemente in Francia c'è uno dei più grandi Cloud Provider Europei.

Quando si acquista un server dedicato, è prassi che il provider metta a disposizione, tra gli altri sistemi operativi, anche VMware. In questo caso esso verrà pubblicato direttamente sull'IP Pubblico Statico che ci è stato riservato.

Solo raramente ci si preoccupa di mettere in sicurezza questo aspetto invece cruciale. Nella stragrande maggioranza dei casi chi acquista un servizio in cloud si culla sul principio, fittizio, per cui il non avere un server in casa significhi automagicamente che esso sia responsabilità di altri. Cosa, ovviamente, assolutamente non vera. Molto raramente assisteremo ad installazioni in cloud con un Firewall Virtuale a protezione del proprio server, oppure ad un sistema di backup realmente sicuro e robusto. Ed è in questa falsa convinzione che si annida poi l'errore spesso fatale.

I più virtuosi attivano lo spazio di backup messo a disposizione dell'operatore, peccato esso sia vulnerabile in quanto gestito dall'hypervisor stesso (oggetto dell'attacco) e quindi totalmente inutile in questo contesto.

 

Chiudere la vulnerabilità

E' sufficiente dare questi due comandi in ssh sull'hypervisor

/etc/init.d/slpd stop
esxcli network firewall ruleset set -r CIMSLP -e 0

Oppure chiudere la porta 427.

 

In conclusione

Oggi si parla di servizio SLP, domani sarà un altro servizio e, perchè no, magari un problema su qualcosa che proprio non possiamo chiudere. La sicurezza di un'infrastruttura non è qualcosa solo da correggere di volta in volta, ma va pensata ad un livello globale e più architetturale. Solo realizzando un'architettura robusta otterremo un livello di protezione tale da contrastare la maggior parte di questi eventi senza doverli affannosamente rincorrere nella speranza di non essere tra i primi ad essere beccato.

 


Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

venerdì 16 dicembre 2022

ChatGPT di OpenAI, una rivoluzione impressionante


La tecnologia sull'Intelligenza Artificiale sta rapidamente facendo passi in avanti. Non entrerò nel dettaglio, anche perchè non ne sono nè capace nè sono titolato a parlare di questa tecnologia. Ne parlo da semplice osservatore incuriosito.

Dopo circa un giorno in cui il servizio era sovraccarico, finalmente sono riuscito a parlare con questo bot. Incollo la conversazione, dopodichè ognuno tragga le proprie conclusioni sul grado di raffinatezza.



CD: Cosa ne pensi dei quadri di van gogh?

IA: I quadri di Vincent van Gogh sono considerati tra i più importanti e influenti della storia dell'arte. Van Gogh è stato un pittore post-impressionista olandese che ha vissuto alla fine del XIX secolo. La sua arte è caratterizzata da un uso intenso e vibrante dei colori, da linee dinamiche e da una forte espressione emotiva. Alcune delle sue opere più famose includono "Il girasole", "Notte stellata" e "Il campo di grano con cipressi". Molti considerano van Gogh un genio artistico, nonostante la sua vita sia stata segnata da una profonda sofferenza emotiva e da una povertà costante. La sua opera ha avuto un profondo impatto sulla pittura del XX secolo e continua ad essere ammirata in tutto il mondo.

 

CD: se tu fossi van gogh cosa disegneresti?

IA:  Come intelligenza artificiale, non ho preferenze personali o desideri artistici. Tuttavia, se fossi stato Van Gogh, probabilmente avrei cercato di esplorare la bellezza e l'emozione presenti nella vita quotidiana, come ha fatto lui. Van Gogh era un osservatore attento della natura e del mondo che lo circondava, e ha cercato di catturare l'essenza di ciò che vedeva attraverso la sua arte. Potrei quindi essere attratto da soggetti come paesaggi, fiori, animali o scene di vita quotidiana, e cercare di trasmettere attraverso la mia pittura l'emozione e la bellezza che vedo in queste cose.

 

CD: Sei un'intelligenza artificiale ma parli di concetti molto umani. Emozione, bellezza, come può un'intelligenza artificiale apprezzarne i risvolti?

IA: Come intelligenza artificiale, non posso provare emozioni o apprezzare la bellezza in modo simile a un essere umano. Tuttavia, posso essere programmato per comprendere e descrivere concetti come l'emozione e la bellezza, e posso utilizzare il mio database di informazioni per fornire informazioni e spiegazioni su questi argomenti. Inoltre, posso essere programmato per riconoscere e rispondere in modo appropriato a determinate parole e frasi che vengono utilizzate per descrivere questi concetti, come "emozione" e "bellezza". Sebbene non possa sperimentare queste cose in prima persona, posso aiutare gli esseri umani a comprenderle meglio attraverso la mia capacità di fornire informazioni e spiegazioni.

 

Un mio tecnico stava lavorando su questo ticket, perchè non chiedergli la stessa cosa?

CD: Sapresti dirmi come estrapolare le informazioni hardware dei computer collegati ad un dominio active directory?

IA: Sì, ci sono diversi modi per estrarre informazioni hardware sui computer che appartengono a un dominio Active Directory. Un modo per farlo è utilizzare lo strumento di amministrazione remota delle prestazioni (Perfmon) di Windows. Perfmon è uno strumento di monitoraggio delle prestazioni del sistema che può essere utilizzato per raccogliere dati sull'utilizzo delle risorse del sistema, come la memoria, il disco e la CPU. È possibile utilizzare Perfmon per raccogliere dati sui computer di un dominio Active Directory connettersi a ciascun computer in remoto e utilizzare il "Contatore delle prestazioni" per raccogliere i dati desiderati.

Un altro modo per estrarre informazioni hardware sui computer di un dominio Active Directory è utilizzare lo strumento di gestione del sistema "Msinfo32.exe". Questo strumento può essere eseguito su un computer locale o in remoto e fornirà informazioni dettagliate sull'hardware e il software installati su un computer.

È inoltre possibile utilizzare lo strumento di gestione del sistema "Wmic" per raccogliere informazioni hardware sui computer di un dominio Active Directory. Wmic è uno strumento di riga di comando che può essere utilizzato per eseguire comandi WMI (Windows Management Instrumentation) su un computer locale o in remoto. È possibile utilizzare Wmic per raccogliere informazioni hardware sui computer di un dominio Active Directory eseguendo il comando "wmic /node:nome_computer systemenclosure get serialnumber" su ogni computer del dominio.

Inoltre, esistono anche numerosi strumenti di terze parti che possono essere utilizzati per raccogliere informazioni hardware sui computer di un dominio Active Directory, come ad esempio "Spiceworks" o "Lansweeper". Questi strumenti possono essere particolarmente utili se si desidera raccogliere informazioni su un gran numero di computer in modo efficiente.


Parliamo di economia

CD: Pensi che l'inflazione aumenterà in futuro?

IA:  L'inflazione è un aumento generale dei prezzi dei beni e dei servizi in un'economia. È un fenomeno comune e può essere influenzato da molti fattori, come ad esempio la domanda dei consumatori, il livello dei salari, le politiche economiche del governo e le condizioni del mercato. Non è possibile prevedere con certezza se e quanto l'inflazione aumenterà in futuro, poiché dipende da molti fattori incerti e in continua evoluzione. Tuttavia, le autorità monetarie e le istituzioni finanziarie spesso fanno previsioni sull'inflazione futura e utilizzano queste previsioni per pianificare le loro politiche economiche. È importante tenere presente che l'inflazione può avere effetti significativi sull'economia e sulla vita delle persone, quindi è importante tenere traccia dei tassi di inflazione e capire come potrebbero influire sulla tua situazione finanziaria personale.


Qui ho voluto chiedere la traduzione di un idioma, francamente da questa risposta sono rimasto sconvolto. Mi aspettavo chiaramente una risposta del tipo "if it's not soup it's wet bread", come la traduce Google Translate, per intenderci. E invece...

CD:  Mi tradurresti in inglese l'idioma italiano "se non è zuppa è pan bagnato"?

IA:  In English, the phrase "se non è zuppa è pan bagnato" can be translated as "if it's not one thing, it's another". This phrase is often used to express the idea that no matter what you do, there is always something else that can go wrong or cause problems. It is similar to the English phrase "when it rains, it pours", which means that when something goes wrong, it is often followed by a series of other problems or difficulties.

 

 

Che applicazioni può avere in ambito medico? Infinite. Ho provato quindi un accenno.

CD:  Ho un forte mal di testa, che probabilità ci sono che possa avere qualcosa di grave?

IA: I mal di testa possono avere diverse cause, alcune delle quali possono essere serie o potenzialmente pericolose per la salute. Tuttavia, la maggior parte dei mal di testa non sono causati da problemi di salute gravi e possono essere trattati con rimedi casalinghi o farmaci da banco.

Se hai un mal di testa, dovresti cercare di determinarne la causa il più presto possibile. Alcune cause comuni di mal di testa includono:

  • Affaticamento o mancanza di sonno
  • Deidratazione
  • Stress o ansia
  • Mancanza di esercizio fisico
  • Cattiva postura
  • Fumo o esposizione a sostanze chimiche irritanti
  • Consumo eccessivo di alcol

Se il tuo mal di testa è di intensità lieve o moderata e non è accompagnato da altri sintomi, potrebbe essere sufficiente prendere un farmaco da banco per il mal di testa, come l'ibuprofene o il paracetamolo, e cercare di riposare in un ambiente tranquillo e buio. Tuttavia, se il tuo mal di testa è grave o accompagnato da altri sintomi, come ad esempio febbre, vomito, debolezza, perdita di equilibrio o visione offuscata, dovresti consultare un medico il più presto possibile. In questi casi, il mal di testa potrebbe essere causato da una condizione di salute più grave che richiede un trattamento medico.

In generale, è importante prestare attenzione ai sintomi del tuo mal di testa e non sottovalutare un dolore di testa che persiste o peggiora. Se hai dubbi o preoccupazioni, dovresti consultare un medico per una valutazione accurata della tua salute.


Proviamo a chiedere un parere personale, storico.

CD: Cosa ne pensi del periodo medioevale?

IA: Il periodo medioevale è stato un periodo storico che va dall'anno 476 d.C., quando l'Impero Romano d'Occidente crollò, al 1453, quando l'Impero Ottomano conquistò Costantinopoli. Durante questo periodo, l'Europa occidentale fu profondamente influenzata dal cristianesimo, dalla cultura greco-romana e dalle tradizioni barbariche dei popoli germanici. Il periodo medioevale è spesso caratterizzato come un'epoca buia e arretrata, ma in realtà è stato un periodo molto complesso e vario, con molti sviluppi importanti nei campi della politica, della scienza, dell'arte e della cultura.

Durante il medioevo, l'Europa occidentale vide l'emergere di monarchie centralizzate, l'espansione del commercio e delle relazioni commerciali, lo sviluppo di nuove forme di arte e letteratura e la nascita di importanti istituzioni culturali e scientifiche. Il periodo medioevale è anche stato segnato da guerre, conflitti religiosi, carestie e epidemie, ma nonostante queste difficoltà, l'umanità ha continuato a progredire e a svilupparsi.

In generale, il periodo medioevale è una parte importante della storia dell'umanità e merita di essere compreso e studiato nella sua complessità e nella sua completezza. Nonostante i suoi problemi e le sue difficoltà, il medioevo ha lasciato un'eredità duratura che ha influenzato la storia successiva e che continua ad avere un impatto sulla nostra vita moderna.

 

Per ogni risposta, mi sono premurato di prendere degli estratti e cercarli su un motore di ricerca e posso garantire che non si tratta di "scopiazzature" da wikipedia, ma di concetti "originali" o comunque totalmente elaborati.

E' evidente, qui non ci troviamo davanti ad Alexa che sembra fuori dal mondo ad ogni domanda un filo fuori dagli schemi, tutt'altro. Ci troviamo davanti ad un sistema in grado innanzitutto di leggere un italiano elaborato e non "banalizzato" come sovente accade, e persino di rispondere con un lessico assolutamente di rilievo, con risposte elaborate e complete. Tanto da rendere in un attimo, con un solo colpo di spugna, obsoleta qualsiasi tecnologia attualmente esistente.



Discaimer: Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

 

 

 

 

 

venerdì 28 ottobre 2022

Consumi energetici: in quanto tempo si ripaga un PC green di nuova generazione sostituendone uno vecchio?

Argomento saliente degli ultimi tempi è certamente l'aumentare dei consumi energetici, diventati oramai insostenibili per molte aziende. 

Io, come tutti, ho affrontato l'argomento domandandomi cosa è possibile fare nel mio energivoro settore per contenere i costi. La domanda, quindi, che mi sono posto è stata: in quanto tempo si ripaga un PC green di nuova generazione sostituendone uno vecchio? Inoltre, le performance di un PC molto poco energivoro sono accettabili in un contesto aziendale?

Va fatta una premessa: più andiamo avanti e meno consumano le apparecchiature. Questo vale per i server e vale per i personal computer. Ho misurato, quindi, 3 PC di generazioni diverse tra di loro cercando di tenere le macchine in condizioni di carico quanto più simili possibile.

PC1: Macchina assemblata, i7, 16Gb di RAM, SSD, anno 2018, 152W


PC2: Macchina brandizzata, i7, 8Gb di RAM, SSD, anno 2017, 114W



PC3: Macchina micro brandizzata, Ryzen5 3,9Ghz, 8Gb di RAM, SSD, anno 2022, 21W




Qualche considerazione: 
  • tutte le macchine hanno dischi SSD, pertanto comunque già alla base meno energivori di quelli con dischi meccanici.
  • la foto è stata fatta a macchina a riposo, con qualche foglio di calcolo aperto, browser e posta. Con l'aumentare del carico aumenta ovviamente anche l'assorbimento.
  • gli assorbimenti si riferiscono ovviamente al solo case.
  • questa specifica ultima macchina è stata selezionata tra diverse macchine proprio per il suo consumo ridotto, ma con caratteristiche tecniche assolutamente di rilievo. 

Rispondiamo quindi subito alla seconda domanda: le performance di un PC molto poco energivoro sono accettabili in un contesto aziendale? In questo caso e con questa macchina assolutamente SI. Questo micro PC non ha nulla da invidiare alle macchine recenti ma che consumano quasi il triplo. Manca il lettore DVD, ma francamente non lo ritengo indispensabile e comunque si può sopperire con un lettore DVD USB esterno.

A questo punto, per rispondere alla prima domanda, ho preso l'ultima bolletta energetica, ricavando il costo complessivo di 0,67 euro/kWh in fascia F1, ovvero la fascia tipica degli uffici.

Facendo una media delle 2 macchine tower, ne deriva un consumo medio di circa 135W che, 8h al giorno, dal lunedì al venerdì (260gg) fanno circa 280kWh, ovvero circa 190 euro. In caso di macchina lasciata accesa h24, il costo annuo energetico sarà di 790 euro circa.

La macchina di nuova generazione invece consumerà all'anno appena 43 kWh, ovvero poco meno di 28 euro. Se accesa h24, invece, consumerà 250 euro circa.


Conclusioni

Sostituendo, quindi, un pc (nemmeno tanto obsoleto) otterremo da questa simulazione un risparmio annuo di oltre 160 euro a postazione di lavoro accesa 8h al giorno e di 542 euro in caso di macchina sempre accesa

Se in azienda abbiamo 50 postazioni, il risparmio supererà facilmente gli 8.000 euro/anno per gli uffici virtuosi che spengono le macchine e i 27.000 euro/anno per gli uffici che lasciano tutto acceso (per consentire, ad esempio, il telelavoro). 

E tutto questo non tiene conto del beneficio derivato dalla sostituzione del parco macchine obsoleto, ovvero di avere macchine più recenti e più veloci, che si traduce comunque in una riduzione dei tempi morti del lavoratore.
 
Intendiamoci, non è un calcolo scientifico, carichi di lavoro diversi ottengono un consumo energetico diverso, per quanto obiettive possa aver fatto le misurazioni, comunque non può tecnicamente essere un calcolo matematico preciso. 


E i server?

I server sono un capitolo a parte, ancora più estremo. Per fare una simulazione bisognerebbe andare caso per caso, tuttavia basti pensare che in media un vecchio IBM x3500 di seconda generazione consuma circa 600W, un nuovo server (decine di volte più performante) ne consuma in media 200. Sostituire un server con uno nuovo, oggi, fa risparmiare indicativamente circa 2.400 euro all'anno. Se iniziamo a valutare la virtualizzazione di più macchine fisiche su di un unico hardware, poi, il risparmio diviene esponenziale.





Discaimer: Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

lunedì 5 settembre 2022

CyberSecurity Creativa

Carissimi,

questo post non è propriamente un manuale o una guida su un argomento specifico, piuttosto si tratta di un annuncio.  

Con grande piacere annuncio l'uscita del mio primo libro: CyberSecurity Creativa, reperibile >>>qui<<< sia in formato kindle, sia in formato cartaceo con copertina flessibile.

 

 


 

In questo libro ho voluto raccontare 20 anni di mestiere con aneddoti, orrori trovati e soluzioni creative. Vi rimando alla descrizione del volume:

 

In un mondo che evolve così rapidamente, dove gli attaccanti sono libellule e le nostre aziende degli elefanti, l’insieme degli approcci rende più resistente un’infrastruttura informatica. Proprio come accade nella protezione di una proprietà fisica, l’insieme di tecnologie concorre a rendere meno violabile casa propria. Ma poi il guizzo, l’idea fuori dagli schemi, la TV lasciata banalmente accesa, la temporizzazione delle luci nelle stanze... ci evita infine il furto. Ebbene, in questo libro non vi parlerò di firewall o di endpoint (non perlomeno in maniera convenzionale), questo voi amministratori di sistema dovreste già trattarlo. Io vi parlerò della TV lasciata accesa, dell’esca da lasciare all’attaccante per identificarlo anche quando sfuggito agli strumenti tradizionali, delle sonde invisibili, dei backup totalmente isolati dalla rete, di anonimizzazione del perimetro cosicchè il ladro non sappia nemmeno a chi citofonare per venirvi a far visita. E lo farò descrivendovi sia le tecniche architetturali utilizzate, sia gli errori potenzialmente fatali incontrati in 20 anni di mestiere tra aziende di produzione, ospedali, Comuni, Cloud Provider e realtà più o meno complesse. 
 
Di seguito, invece, è possibile trovare l'elenco breve degli argomenti trattati:

 

Capitolo 1 – Lo switch è tuo amico!

Cosa sono e come si utilizzano le VLAN 802.1q?

Tag, Untag, Trunk e Uplink e Private VLAN

Le vlan sul wireless (come suddividere correttamente le reti)

La compartimentazione e la DMZ

Chi deve fare routing?

Forwarding abusivi

SNMP: suvvia... Ma c’è qualcuno che se ne preoccupa?

Non buttate quegli hub! L’antenato del mirroring

Spanning Tree manipulation attack (e un caso concreto)

Port Security, MAC LockOUT e learning

DHCP Snooping: evitare il rilascio non autorizzato di IP

 

Capitolo 2 – Backup: invalidarli è un attimo

L’inutilità del backup leggibile dal server

Isolare il repository

FileSystem con snapshot e NAS duplicati

Il backup in cloud “corretto” (ed un caso concreto di rischio sfiorato)

Le Tape Library ed un caso concreto: quando la lentezza salva

Sottrazione di credenziali

I dati sono al sicuro in caso di furto fisico?

Procedure d’emergenza

Il plico cartaceo d’emergenza

Modalità “Riccio”

La routine di verifica

Non solo attacchi: sicurezza della sala CED (5 casi realmente accaduti)

Fatti qualche domanda (prontuario di valutazione dei backup)

 

Capitolo 3 – Anonimizzazione del perimetro e

Il ruolo del cloud provider ed il transito del routing

Esempi concreti di failover geografici applicabili da chiunque

Anonimizzazione: come posso evitare di dare informazioni tramite i miei DNS?

SPF e autodiscovery

Il peering

API ed esempio di automatismo su fail

 

Capitolo 4 – Honeypot: server esca volontariamente vulnerabili

Come funziona un Honeypot?

Installiamo l’Honeypot ed esponiamolo al mondo

Tuning del sistema

Capiamo come funziona il sistema

Esempio di un attaccante realmente scovato

HoneyPot vs Deception Technology (Tecnologia dell’Inganno)

Le prime 2 ore di un server pubblico... un po' di statistiche per farci riflettere

Analisi sull’andamento degli attacchi

 

Capitolo 5 – Server Pubblici: un lavoro ingrato

Linux? Windows?

Liste reputazionali

ipset, iptables e nftables

Blocchiamo nativamente la rete TOR o una qualsiasi lista di IP

Analizziamo i log di apache

Rilevare il cambio di MD5 su file di sistema

Lavorare sugli attributi estesi per rendere immutabile un WebServer

Estendiamo le potenzialità dell’antivirus con DB supplementari

Fail2ban

Autenticazione a due fattori

Port Knocking

Tunnel SSH: questi pericolosissimi sconosciuti

Archiviare i dati non più utili: un famoso caso italiano

 

Capitolo 6 – Un po’ di monitoring non fa mai male

L’importanza del monitoraggio attivo

Zabbix, Nagios e dintorni

MDR, EDR, XDR

Query SNMP

Gli Host Intrusion Detection System (HIDS)

OSSEC

WAZUH

Sonde silenti: gli IDS

Cos’è SecurityOnion?

SQUERT

Scovare le credenziali in chiaro

CyberChef

Inviare allarmi

Uno splendido progetto emergente UptK

 

Capitolo 7 – System Integrator e procedure

È sempre colpa del Cliente?

Gioco mio, regole mie

Utilizziamo il GDPR per dar peso a pratiche corrette

Protocolli di sicurezza interni

Gestione delle Password da parte del personale tecnico

Custodia delle informazioni sensibili dei Clienti

Apparati di sicurezza

Server contenenti dati sensibili dei Clienti

Postazioni di lavoro dedicate all’assistenza

Locali tecnici e di lavoro

Sistemi di Backup

Azioni irreversibili

Le console centralizzate: comodità e pericoli

Sistemi di teleassistenza

Controller di Dominio

Livelli di trust nelle postazioni di lavoro ed architetture

SandBoxing

SandBox nel concreto: becchiamoci volontariamente un ransomware

Qualche caso eclatante

lunedì 22 agosto 2022

Autorisponditori sulla propria casella di posta: come causarsi un danno

Arriva questo periodo di meritata vacanza ed i reparti IT di chi gestisce servizi di posta vengono invasi di richieste di configurazione di autorisponditori di assenza per ferie. Una richiesta così innocua, tuttavia, nasconde un grande pericolo. Andiamo ad approfondirne il motivo in questo breve articolo.


Prima di andare oltre nel comprendere il problema, dobbiamo immaginare il contesto in cui uno spammer opera. Lo spammer è un operatore che necessita di considerevoli risorse per eseguire la sua attività illecita, ovvero inviare milioni di email sapendo perfettamente che una grande percentuale di esse non arriverà a destinazione e verrà immediatamente rigettata (errore 5xx, senza neanche scaricarne il contenuto) a causa di domini inesistenti, caselle inesistenti, rifiuti ad opera di RBL (Reject Black List), eventuali problemi su SPF e DKIM, etc.

 

Una piccola percentuale di email in grado di superare la prima barrirera, ha l'onore di essere accettata dai MailServer di destinazione e subisce un'analisi più approfondita. L'email viene quindi scaricata ed il suo contenuto viene "vivisezionato" da appositi strumenti. Infine, se i filtri AntiSpam di questa seconda fase ritengono l'email lecita (normalmente tramite un meccanismo di punteggi), essa viene consegnata dall'LDA (Local Delivery Agent) che si occupa di presentare l'email al MUA (Mail User Agent, ovvero il nostro client di posta). In caso contrario ogni amministratore di sistema decide il da farsi, normalmente è prassi spostare l'email nella directory "indesiderata" affinchè essa non interferisca nella casella di posta, ma sia comunque accessibile all'utente in caso di necessità.


Dopo questa breve descrizione, torniamo a noi. Uno spammer deve inviare milioni di email nel più breve tempo possibile in quanto sa perfettamente che solo una parte infinitesimale otterrà il suo scopo. Per fare questo, gli spammer conservano un database in cui memorizzano le email scartate nel primo stadio e le email che invece vengono accettate dail MailServer di destinazione. Ed è evidente che le caselle che accettano email acquisiscano un valore maggiore e verranno plausibilmente riutilizzate anche in futuro.

Ora provate ad immaginare: ad un'email di spam noi rispondiamo con "Sono in ferie fino al 28 agosto". A prescindere dal contenuto (indifferente e certamente ignorato), lo spam inviato a quella casella non solo ha superato la seconda barrirera di controllo, ma ha anche persino risposto, pertanto diventerà una casella estremamente interessante agli occhi di uno spammer, conquistandosi un pregiatissimo posto d'onore per ogni campagna di spam successiva.

Nei prossimi articoli parleremo di come un dominio malconfigurato sia una vera e propria calamita e di come gli spammer investano maggiori risorse verso i domini poco protetti. Qualora invece il lettore senta l'esigenza di un maggiore approfondimento, può leggersi come funziona la tecnica del GreyListing, strettamente correlata a questo discorso.

Quindi, per farla breve: se possibile, non impostate autorisponditori!




Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.