Modificare il file C:\Program Files (x86)\Xming\X0.hosts aggiungendo l’indirizzo IP della macchina linux;
Riavviare Xming;
Sulla macchina linux settare la variabile DISPLAY con export DISPLAY=$IP_MACCHINA_WIN:0.0
Lanciare sulla macchina linux il programma con interfaccia grafica.
Comandi opzionali:
in caso compaia un errore relativo alla mancanza del file Xauthority posizionarsi nella home e digitare (attenzione al punto finale): xauth generate $DISPLAY .
in caso di errore “Only console users are allowed to run the X server” modificare il file /etc/X11/Xwrapper.config controllare che ci sia la riga con allowed_users = anybody
per far comparire tutto il desktop, se si usa LXDE usare il comando lxsession
Lancio dell’ambiente grafico sulla console da una sessione ssh
Facendo le pulizie, ho ritrovato le slide di un talk fatto al Linux Day 2008 in cui parlavo di cluster di computer. Molte cose sono cambiate da quel lontano 2008, lo ripubblico qui a titolo di “ricordo”.
Nonostante svariate ricerche, in ambito Linux non ho trovato software open source in grado di fare il backup completo dell’intero sistema di una vm o macchina fisica.
Il software per backup che preferisco è backuppc, il quale si è rivelato molto versatile (anche se un po’ spartano).
Ora, su una macchina Linux mi permette di fare il backup di tutto il file system, ma come ne effettuo il restore avendo al termine del processo una macchina in grado di fare il boot senza dover fare rituali di magia nera?
Dopo qualche prova la cosa si è rivelata molto più semplice del previsto. Lascio su questa pagina un appunto, in quanto al momento del bisogno, sicuramente non avrò tempo per cercare i comandi corretti e/o fare prove.
Non è immediato come potrebbe essere Veeam, ma la cosa è comunque abbastanza veloce.
Per prima cosa, prepariamo la nostra macchina di destinazione. Facciamo il boot con una distro live a nostro piacimento.
Una volta dentro partizioniamo il disco come nella macchina di origine e montiamolo in /mnt
Ora partiamo con il restore. Nell’esempio, mi sono già scaricato da backuppc un file .tar con il contenuto di tutta la macchina. Per semplicità, preferisco fare il trasferimento di dati via ssh.
Se necessario installiamo o facciamo partire ssh sulla nostra macchina di destinazione.
Dopo di che, da un altro pc (in questo caso uno windows) lanciamo il comando per il restore del contenuto del disco:
type restore_192.168.0.17_2022-07-22.tar | ssh root@192.168.85.130 "cd /mnt; tar -xvf -"
Attendiamo il termine della copia dei dati.
Una volta finito, andiamo a visionare fstab per controllare che i nomi delle partizioni siano corretti. Se, come ormai è diventato di moda, la vostra distro ha inserito in fstab i nomi delle partizioni usando l’UUID, dovrete variare le righe incriminate immettendo l’UUID corretto o sostituendolo con i nomi classici delle partizioni, es.: /dev/sda1.
Ora viene il momento di reinstallare grub:
mount --bind /dev /mnt/dev mount --bind /dev/pts /mnt/dev/pts mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub
A questo punto riavviate la macchina e, salvo sorprese, vi ritroverete la macchina funzionante.
Quanto sopra è stato provato con BIOS tradizionali. In caso di UEFI mi riprometto di fare delle prove ed aggiornare l’articolo.
Ogni tanto capitano quei giorni… quei giorni in cui non pensavi che certe cose potessero succedere… che certe storie mitologiche sentite agli hacker camp, alle cene VUA ecc. a te non potessero capitare… ed invece tutto ad un tratto ti sembra di essere dentro uno dei racconti delle “storie della sala macchine” https://www.soft-land.org.
Succede che ho bisogno di inserire tra i parametri di configurazione di una applicazioni dei valori crittografati, per poter automatizzare il tutto ho bisogno di un programmino in grado di ricevere su standard input il testo da cifrare e dia in standard output il testo cifrato.
Le funzioni crittografiche che mi interessano sono incluse in un programma in C# e no, non ho voglia di farmele estrarre in un programma a parte, cross-compilare per linux, portarmi dietro le dipendenze di .net e quant’altro. L’algoritmo usato è AES, quindi pensavo di cavarmela con poco, usando direttamente openssl o al più, usando funzioni già presenti in altri linguaggi di scripting, ad esempio Python il cui interprete è presente di default sulle installazioni Linux. Tanto AES 256 è standard.
Appunto: pensavo.
Mi faccio inviare il sorgente delle funzioni di codifica e decodifica.
Apro il sorgente.
public static string Encrypt(string clearText, string encryptionKey)
{
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(encryptionKey,
newbyte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65,
0x64, 0x65, 0x76});
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms,
encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}
MAPPORC…ZIO!!! Che ci fa quell’array di valori esadecimali costanti passato alle funzioni crittografiche?!?
Andiamo a vedere che parametri vuole la Rfc2898DeriveBytes: password e salt. Ora, per definizione, il salt è un numero casuale, che deve cambiare di volta in volta per evitare certi tipi di attacco. Perché ha messo una costante?!? Perché?!? Perché capitano tutti a me?!?
LE BASI CAZZO, LE BASI ALMENO!!!
Un’altra “brutta persona” mi fa notare questa vignetta in tema:
Che valori ha inserito nell’array? Li decodifico: Ivan Medvedev. Mapporco pito! Chi è sto tizio? Probabilmente l’autore della funzione e chi ha fatto il programma ha ricopiato la funzione tale e quale senza porsi nessuna domanda. Penso: l’avrà beccata su qualche sito in cxxo al mondo, visitato solo da due persone, l’autore e quest’altro. Ma su quest’ultimo punto mi sbagliavo.
Ma Cristo santo, si può?
Ma se l’è letta la documentazione delle funzioni crittografiche usate per capire come vanno usate?
No. Troppa fatica.
Mentre cerco l’equivalente di Rfc2898DeriveBytes in Python, mi imbatto su stackoverflow in un’altra persona con lo stesso problema. Ma proprio lo stesso. Anche l’array con la costante è lo stesso.
Allora quel sito è stato visitato almeno da tre persone diverse.
Recupero il codice e dopo qualche porconamento con unicode, utf-8, utf-16, encoding dei sorgenti in Python ne esco.
Ma io sono una brutta persona. Non so stare fermo. Voglio vedere chi è sto Ivan Medvedev. Una rapida ricerca, e salta fuori che è una persona di tutto rispetto con un bel curriculum. Probabilmente quella funzione sarà un peccato di gioventù, o magari avrà scritto pure sul sito che il salt va cambiato, ma non lo hanno ascoltato.
Allora, ripeto, siccome sono una brutta persona e non so stare fermo cerco: Ivan Medved AES.
Nella prima pagina di risultati, tre link. La lettura delle pagine a cui rimandavano, mi ha messo in quello stato in cui non sai se pisciarti addosso dalle risate o piangere. Provi entrambe le sensazioni assieme, in un tutt’uno.
Con titolo “If you copied any of these popular StackOverflow encryption code snippets, then you coded it wrong“
Ed al secondo posto troviamo la nostra funzione.
Il terzo link rimanda ad una pagina di CVE:
Chebbello.
Ora, io sono tutto tranne che un esperto di crittografia, non ti so spiegare nei dettagli le differenze tra un algoritmo di crittografia ed un altro, mi limito alle differenze tra le varie famiglie di algoritmi.
Non sono neppure “nato imparato” come si usa dire al giorno d’oggi. Ma un minimo di conoscenza di quello che faccio me lo impongo. Non scrivo codice a caso scopiazzando di qua e di la. Quando decido di integrare un esempio trovato in giro su internet, lo verifico per bene. Non voglio avere sorprese. Mi piacerebbe che quanto faccio io fosse il minimo fatto da tutti gli sviluppatori. Ma non è così.
Infine, il libro ha qualche anno sulle spalle, l’ho letto quando ero ancora giovane ed affamato di conoscenza. Non è un testo specialistico, ma va benissimo per chi è alle prime armi con la crittografia. Spiega partendo dai più semplici i vari algoritmi elencandone i punti critici. Inoltre ha una sezione dedicata alla storia della crittografia nei secoli entusiamsante e fatta veramente molto bene.
E comunque gli autori sono bravi.
Poi ci sarebbe da raccontare sul rapporto tra colui che ha copiato il pezzo di codice e le password, ma questa è un’altra storia…
Continuano le soprese. Questo “scherzetto” della papera, sta riscontrando molto più successo del previsto, motivo per cui ho deciso di fare un sondaggio per provare a capirne qualcosa di più. Il questionario è anonimo. Fatelo fare pure a familiari ed amici. 😀
Qui trovate un breve articolo su Quackera la papera hackera, in arte la disturbatrice ufficiale del camp IHC svoltosi a Padova dal 2 al 5 agosto 2018. Sono presenti inoltre alcune curiose statistiche.
TL; DR this is the story of how and why we hacked one of the signs of the SHA2017 to show the colors of the Italian flag.
As happened in the past summers, in these days I’m attending a Hacker Camp, and this time it’s SHA2017. As every year, we are so many that we organize together in “The Italian Embassy” at the hacker camp.
Near our Embassy, the organization placed a big sign saying “SHA2017” made with wood and RGB lights blinking, but the the blinking pattern only used the green channel.
The other evening I saw an organization guy messing with a the sign controller using a PC, an openwrt box, and a big transparent plastic box placed behind the sign.
I spoke a few words with him and he told me he was having trouble with the lights configuration…
So I came back to the embassy and talked with a few friends. This is how we decided to own the light controller to show the colors of our flag, for fun!
Our idea was to tap the packets, understand the protocol and change the colors of the sign to the ones of the Italian flag.
After some time with tcpdump, we discovered that these boards use a DMX over TCP protocol. After an afternoon of trial and error, the result was a C++ program that sent the original DMX UDP packet with some bytes changed to change the light colors. Fortunately during the afternoon, our test went unnoticed.
WinVerifyTrust failed on stub executable: WinVerifyTrust failed with hrc=Unknown Status 0x8009200D on ‘\Device\HarddiskVolumeX\Program Files\Oracle\VirtualBox\VirtualBox.exe’ (rc=-22919) Please try reinstalling VirtualBox.
After working flawlessly for months, all of a sudden I cannot launch guests on VirtualBox. When I attempt to launch a VM, I receive the error:
WinVerifyTrust failed on stub executable: WinVerifyTrust failed with hrc=Unknown Status 0x8009200D on ‘\Device\HarddiskVolumeX\Program Files\Oracle\VirtualBox\VirtualBox.exe’ (rc=-22919) Please try reinstalling VirtualBox.
I’ve uninstalled and reinstalled VirtualBox (5.0.0.r101573), and also deleted and re-imported my OVA Appliance, but am still receiving this error.
Any ideas?
Edit
From this post here, seemingly Windows Security Update KB3081320 breaks VB.
I’ve confirmed that after removing KB3081320 via
wusa /uninstall /kb:3081320
and rebooting, that I can load the VM again. However I do not feel comfortable with this workaround as security is now potentially compromised.
Un giorno, un cliente, dopo aver dato un’occhiata al magazzino, mi chiama perché vuole inziare a gestirlo.
Quando sono di fronte a lui mi dice:
“Dobbiamo trovare un modo semplice per gestire il magazzino ed istruire le ragazze! Qui caricano tutto senza chiedersi nulla.”.
“L’altro giorno ho chiesto una stampa della situazione di magazzino e mi trovo tra le varie cose tre fustini di birra e non so quanti rotoli di carta da culo!!!”.
“La birra era un omaggio di un fornitore, ma per la carta igenica cosa devo fare? Devo mettere un coso in bagno che segna ogni volta che uno strappa un pezzo di carta?!?”
A distanza di alcuni anni, questo strumento potrebbe essergli d’aiuto:
Taaanto tempo fa, la configurazione dei servizi terminal su Windows era una cosa relativamente semplice. Ora, in nome di una fantomatica advanced security, hanno complicato le cose. Sicché succede, che dopo aver tirato sù il ruolo ed essere riusciti ad attivare le licenze, si prendono gli utenti, li si aggiunge al gruppo “Utenti desktop remoto” per permettergli di connettersi e si pensa che tutto funzioni.
Col cavolo!!!
Su windows 2012, stamattina, è apparso il seguente messaggio:
A dire il vero, su altri windows 2012, non ho mai avuto questo problema (anche se a memoria, questi altri non facevano da domain controller).
Ricontrollo licenze e quant’altro per verificare che sia tutto in ordine. Pare tutto a posto.
Il messaggio in italiano, non aiuta la ricerca della soluzione su internet.
Alla fine, becco un thread sui forum di M$ in cui parlano che và modificata una GPO, la “Consenti accesso tramite Servizi Desktop remoto”.
Qualche altra ricerca, e trovo dove è imboscata la GPO in questione:
Configurazione computer – Impostazioni di Windows – Impostazioni sicurezza – Criteri locali – Assegnazione diritti utente.
La modifico come da immagine sottostante per includere il gruppo “Utenti desktop remoto”.
Avrei potuto aggiungere volendo anche il gruppo “Utenti”, ma ho preferito avere un comportamento similare alle vecchie versioni di Windows.