Archive for the ‘Windows’ Category
Windows Developer Preview, installazione da HDD USB e l’importanza del codice opensource.
venerdì, settembre 16th, 2011
E’ ormai “notizia consumata” il fatto che Microsoft in occasione della “Build Windows” Conference in quel di Anaheim, California, martedi sera abbia annunciato e reso disponibile la prima build pubblica di Windows 8 (per gli amici Windows Developer Preview).
Inutile ribadire il good mood che si è generato sul web intorno alla prossima release di Windows grazie anche all’ottima strategia di comunicazione che Microsoft sta adottando da qualche mese a questa parte basata anche su lavoro di Steven Sinofksy (che in questi giorni si è “trasformato” nel nuovo Steve Jobs
) e del suo mega team.
Era ormai un mese che seguivo gli sviluppi del nuovo OS grazie soprattutto al blog del Windows engineering team (http://blogs.msdn.com/b/b8/), ma nella spettacolare presentazione di martedi ho visto praticamente “materializzarsi” tutte le novità che erano state annunciate ed abbondantemente discusse nei commenti dei posts.
L’annuncio della disponibilità di una beta \ preview pubblica se lo aspettavano un po tutti, ergo mentre seguivo la keynotes del day 1 in streaming preparavo la partizione estesa sul hdd del mio laptop per poter “accogliere” il nuovo Windows. A fine keynotes avevo il download manager che puntava a http://msdn.microsoft.com/en-us/windows/apps/br229516.
Nella notte di mercoledi la blogosfera si è letteralmente riempita di guide, howto e posts tutti relativi all’installazione di WDP usando varie tecniche (VM su VPC, VM su VirtualBox, installazione nativa, etc). Personalmente, avendo “preparato” appositamente il mio laptop, a fine download, ero pronto per una bella installazione nativa che mi facesse godere a pieno del nuovo OS, ma l’ostacolo era dietro l’angolo: le dimensioni del img ISO WindowsDeveloperPreview-64bit-English-Developer (quella con I developer tool inclusi)di ben 4.8 GB.
E qui vengo all’oggetto di questo post: per usare quella ISO in un’installazione nativa c’è la necessità di avere o una pendrive da 8GB o un DVD9, ma a me mancavano entrambi e non potevo aspettare di procurarmeli … dovevo provare WDP, i nuovi tools di sviluppo (VS 2011 Express e Blend 5), la nuova API per le app metro style, subito
.
L’alternativa possibile per chi come me è sprovvisto di un pendrive “larga” e non si ritrova un DVD9 sottomano e quella di usare un HDD USB.
Nel mio caso l’HDD aveva i suoi 500GB tutti spalmati su un’unica partizione, per cui ho dovuto usare la live di gparted (gparted è un software che fa da partition manager e che gira su GNU/Linux http://gparted.sourceforge.net/) per poter “tirare fuori” dalla partizione principale una secondaria da 10 GB da usare come supporto per l’installazione di WDP.
Lo step successivo è stato quello di caricare il contenuto della ISO nella nuova partizione (necessariamente NTFS perchè ci sono file nel setup di WDP con peso sup. a 4GB) e renderla bootabile in modo da poter sfruttare il boot da device USB supportato dai BIOS moderni.
Mi era già capitato di installare Win7 da pendrive USB ed in quel caso avevo usato l’ottimo e super user friendly tool di Microsoft “Windows 7 USB/DVD download tool” (sempre per gli amici WUDT) (link) per cui ho deciso di riutilizzarlo.
Quindi .. Step 1: selezione della ISO,
Step 2: media type USB Device
STEP 3: … ecco il secondo problema: il software non supportava HDD USB ma solo drive removibili (pen drive USB).
Leggendo la documentazione dal sito ufficiale, pare che questa sia stata una scelta by design. Essendo, come dicevo super user friendly
, i suoi sviluppatori hanno deciso di evitare che qualche utente distratto potesse formattarsi l’HD sbagliando la selezione da quella dropdownlist.
Poi, però, mi sono ricordato di aver letto che di questo tool erano disponibili i sorgenti su codeplex. Una ricerca da codeplex.com .. ed istantaneamente “pesco” la pagina ufficiale:
Leggendo la documentazione “dev oriented” ho scoperto che in realtà I sorgenti di WUDT sono già inclusi nell’installer standard scacaricabile da MS Store, ed infatti in :
%userprofile%\AppData\Local\Apps\Windows 7 USB DVD Download Tool
ci ho trovato un bel wudtsource.zip pronto per essere “esplorato”.
La modifica è stata più che banale.
Aperta la solution in VS 9, ho subito notato quel “DriveService”:
… si tratta della classe astratta da cui poi ereditano DvdDriveService e UsbDriveService. Ovviamente, la mia modifica era da fare su quest ultimo.
Aperto il file UsbDriveService.cs, il “blocco by design” si nota subito :
/// <summary> /// Initializes the list of drives to work with. /// </summary> /// <returns>The result of the initialization.</returns> public override DriveStatus Initialize() { return this.Initialize(DriveType.Removable); }
ed il conseguente codice di inizializzazione:
/// <summary> /// Initializes the list of drives to work with. /// </summary> /// <param name="type">The type of drives to get.</param> /// <returns>The result of the initialization.</returns> protected DriveStatus Initialize(DriveType type) { this.drives = new List<DriveInfo>(); var result = DriveStatus.Ready; DriveInfo[] devices = DriveInfo.GetDrives(); foreach (var drive in devices) { if (drive.DriveType == type) { this.drives.Add(drive); } } if (this.Drives.Count <= 0) { result = DriveStatus.NoDevices; } return result; }
Le possibilità, quindi, sono due:
1) modificare l’enumerable nel metodo in ovverride, scegliendo in base alle proprie esigenze, tra:
// Summary: // Defines constants for drive types, including CDRom, Fixed, Network, NoRootDirectory, // Ram, Removable, and Unknown. [Serializable] [ComVisible(true)] public enum DriveType { // Summary: // The type of drive is unknown. Unknown = 0, // // Summary: // The drive does not have a root directory. NoRootDirectory = 1, // // Summary: // The drive is a removable storage device, such as a floppy disk drive or a // USB flash drive. Removable = 2, // // Summary: // The drive is a fixed disk. Fixed = 3, // // Summary: // The drive is a network drive. Network = 4, // // Summary: // The drive is an optical disc device, such as a CD or DVD-ROM. CDRom = 5, // // Summary: // The drive is a RAM disk. Ram = 6, }
2) eliminare il controllo dal metodo init protected:
foreach (var drive in devices) { //if (drive.DriveType == type) //{ this.drives.Add(drive); //} }
L’effetto della 2° scelta è facilmente intuibile:
.. ho avuto quindi la possibilità di scegliere la mia partizione su HDD USB preparata ad-hoc per accogliere la ISO di installazione di WDP.
Il resto è procedura standard.
Ne approfitto, per chi volesse provare WDP usando un VHD, l’ottimo post di Scott Hanselman:
Microsoft, WDP, Windows, Windows 8
.NET Framework, Microsoft, Windows | No Comments »
Opera "Content-Length" Processing Buffer Overflow Vulnerability – Advisories
lunedì, marzo 8th, 2010
A quanto pare la nuova versione del browser norvegese (10.50, ma in generale 10.X) sarebbe affetta da una vulnerabilità, scoperta da Marcin Ressel, che permetterebbe ad un sito “untrusted” di eseguire del codice malevolo grazie ad un exploit causato dalla non corretta gestione della response HTTP a particolari request assemblate ad hoc e contenenti header “Content-Length” a 64bit.
Opera Software, in queste ultime ore, ha cercato di mitigare il problema (http://www.theregister.co.uk/2010/03/05/opera_vulnerability/) rispondendo che da una analisi effettuata risulterebbe difficilissimo o praticamente impossibile eseguire del codice jittato dinamicamente in memoria grazie alla funzionalità DEP dei sistemi operativi Windows.
Il problema però è che DEP non è abilitato di default su WinXP e Vista; inoltre molti utenti decidono di disabilitarlo perchè in alcuni scenari l’overhead di DEP non è certo trascurabile.
Il mio consiglio è comunque di tenere sempre abilitati UAC e DEP, sfruttando dove è necessario la possibilità di escludere un singolo o un gruppo di eseguibili dal monitoraggio.
Opera "Content-Length" Processing Buffer Overflow Vulnerability – Advisories – Community
Browsers, Buffer Overflow, Exploit, Hacking, Opera, Secunia, Security, Vulnerabilità
Browsers, Security, Windows | No Comments »
Mouse wheel e Visual Basic 6
giovedì, agosto 21st, 2008
Nell’azienda dove lavoro attualmente, ogni tanto mi capita di dover manutenere codice legacy sviluppato in Visual Basic 6. Ovviamente erano anni che non aprivo un progetto VB6 e quindi avevo dimenticato di come fosse ostico utilizzare un IDE rilasciato nell’estate del 1998
(gli IDE moderni mi hanno viziato). Già farlo andare su Vista Business del mio laptop aziendale è stata una battaglia, ma poi una volta lanciato il caro vecchio VB6 mi ha subito ricordato che ai suoi tempi i mouse erano senza wheel facendomi riaffiorare veramente "brutti ricordi"
Fortunatamente con la KB 837910 Microsoft qualche anno fa realizzò un addin per attivare la funzionalità di scrolling rendendo quindi la lettura di codice vb6 (già deprimente di per sé) un attimino più agevole.
Il link per il download del pacchetto VB6MouseWheel.EXE
La KB ufficiale con le istruzioni per l’installazione
Legacy, Tech Gadgets, Windows | No Comments »
Windows Live standalone installer
venerdì, luglio 11th, 2008
Molti avranno notato che Microsoft rilasciando la suite di software Windows Live (Messenger, Mail, Live Writer etc.) ha anche deciso di non fornire più i setup per effettuare installazioni standalone. Attualmente l’unico file distribuito sul sito ufficiale di BigM è "Windows Live Installer.exe" che permette agli utenti di scegliere quali software della suite installare per poi effettuare internamente il download di un apposito pacchetto riconvertito poi in locale in un setup MSI compliant.
Capisco che la suite è composta da software che è nato per l’utilizzo online, ma probabilmente a Redmond non hanno ancora compreso che non tutti gli utenti, soprattutto quelli che vivono in paesi tecnologiamente "arretrati", non dispongono ancora di connessioni broadband e che quindi non a tutti va di stare li 30 minuti in dialup a scaricarsi 17 Mbyte di dati per ogni setup.
Fortunatamente il setup di Windows Live, una volta scaricato il pacchetto, salva i file MSI opportunamente convertiti da WLSetupSvc.exe nella cartella C:\Program Files\Common Files\WindowsLiveInstaller\MsiSources, senza cancellarli al termine della procedura, permettendo quindi di replicare facilmente l’installazione su macchine non fornite di connettività.
Il formato dei setup MSI è Install_{GUID}.msi. Basta andare nelle proprietà di ogni singolo MSI e leggere la parte di metadati (nello specifico il subject) per capire a quale software Windows Live si fa riferimento. Ad esempio il GUID 9176251A-4CC1-4DDB-B343-B487195EB397 fa riferimento a Live Writer, ottimo software da utilizzare per interfacciarsi al proprio blog engine e postare in maniera veloce senza passare per le varie web application. Ovviamente è possibile rinominare i file MSI senza dover imparare i GUID a memoria
Ho scritto questo post perchè ho notato che sul web, a causa di questa problematica, iniziano a proliferare dei setup da fonti che sicuramente possono essere considerate "untrusted" che banalmente potrebbero infilare in un file MSI qualsiasi cosa provocando gravi danni alle macchine di utenti ignari e alle prime armi. Considerando il target di un prodotto come Messenger diffusissimo tra i giovani, ribadisco il fatto che, secondo me, Microsoft dovrebbe ritornare sui suoi passi fornendo i link per il download dei singoli pacchetti dal proprio sito ufficiale.
Microsoft, Windows | No Comments »
Firefox e il server web integrato in Visual Studio
martedì, ottobre 23rd, 2007
Utilizzando il suddetto browser con il webserver integrato in Visual Studio 2005 / 2008 è possibile notare la sostanziale lentezza nel caricamento delle pagine richiamate su localhost.
Il problema è dovuto alla risoluzione del nome host e dal sistema che firefox utilizza per gestire l’IPV6.
E’ possibile, quindi, riprodurre questo comportamento su macchine con Windows XP SP2 e stack IPV6 installato ed ovviamente su Windows Vista dove il supporto IPV6 è nativo.
Il problema è di facile risoluzione : basta disabilitare il supporto IPV6 relativamente a Firefox quando lo si utilizza per testing su localhost.
Dalla barra degli indirizzi digitare about:config per accedere alla lista parametri di configurazione del browser; individuare la chiave network.dns.disableIPv6 per cambiare il relativo valore a true.
Fonte : Fixing Firefox Slowness with localhost on Vista.
Tools, Windows | No Comments »
Windows 7 (alias Vienna, alias Blackcomb) …. qualche screenshot
martedì, ottobre 9th, 2007
Qualche giorno fa Ben Fathi, Vice Presidente Corporate della divisione Windows Core Operating System, ha annunciato che la prossima release major di Windows potrebbe essere rilasciata entro la fine del 2009. Tecnicamente ancora non si conosce nessuna specifica, ma stando alle parole di Bill Gates il nuovo sistema operativo sarà maggiormente "user-centric", permettendo agli utenti di avere sempre le informazioni personali a portata di mano qualunque sia il pc dalla quale si è connessi.
Ecco qualche screenshot trovato in giro per il web :
Nel frattempo rimaniamo tutti in attesa di SP1 per Windows Vista.
Windows Installer Errori 2738 e 2739
domenica, luglio 8th, 2007
Windows Installer permette tramite le Window Script custom actions di lanciare script JScript o VBScript durante un setup. In generale, l’utilizzo di questa tecnica dovrebbe essere evitato proprio perchè le custom actions sono difficili da debuggare e la maggior parte delle volte vengono bloccate dagli engines dei software antivirus e antispyware.
Ultimamente, tentando di installare Apple Safari su Windows Vista, sono incappato nell’errore 2738 del servizio Windows Installer; altre volte, con altri setup Windows Installer, nel 2739.
Ecco il significato di questi errori :
- 2738, Could not access VBScript run time for custom action;
- 2739, Could not access JScript run time for custom action;
Praticamente, per una questione di sicurezza, Windows Installer non fa il loading dei due engines script, non permettendo quindi l’esecuzione di codice JScript e VBScript.
La soluzione sta nell’usare regsvr32, dal prompt dei comandi aperto con privilegi di amministratore, per registrare le due dll dei rispettivi runtime.
Su Window Vista 32 bit le dll da registrare sono :
- \Windows\system32\vbscript.dll
- \Windows\system32\jscript.dll
mentre sulle versioni a 64 bit :
- \Windows\syswow64\vbscript.dll
- \Windows\syswow64\jscript.dll
Security, Windows, Windows Vista | 13 Comments »
Un "Safari" da Windows?!
martedì, giugno 12th, 2007
Qualche settimana fa avevo dato delle indicazioni relative a dei servizi online che permettevano di testare la visualizzazione di pagine web su browser Safari da macchine Windows.
Finalmente ora un pezzo di Leopard è stato dato in prestito a Windows, tutto diventa più semplice
.
Ecco Safari 3 Beta per Microsoft Windows.
Buon download, http://www.apple.com/safari/download/.
Windows, Windows Vista | No Comments »
IE7, Windows Injection e Popup address bar spooofing : possiamo considerarle realmente delle vulnerabilità?
giovedì, novembre 2nd, 2006
In quest ultima settimana Secunia, società che si occupa di sicurezza, ha pubblicato sul portale secunia.com due advisories relativi a Internet Explorer 7.
Il primo (Internet Explorer 7 Popup Address Bar Spoofing Weakness) descrive di un problema che permetterebbe di mostrare finestre di popup con la URL riportata nella barra indirizzi di IE7 non corrispondente a quella reale (utilizzabile soprattuto per attacchi di phishing).
Ecco il codice per il testing della “vulnerabilità” implementato da Secunia :
<script language=”JavaScript“>
function StartTest()
{
var padding = ”;
for ( i=0 ; i<108 ; i++)
{
padding += unescape(“%A0“);
}
newWindow = window.open(““, “Win“, “width=500,height=325,scrollbars=yes“);
newWindow.moveTo( (screen.width-325) , 0 );
newWindow.document.location = “/result_22542/?” + unescape(“%A0“) + unescape(“%A0“) + “http://www.microsoft.com/“+padding;
document.location = “http://www.microsoft.com/windows/ie/default.mspx“;
}
</script>
Come possiamo notare, non fa altro che settare la proprietà location dell’oggetto document, della popup appena aperta, con una stringa creata appositamente per lasciare la URL da aprire intatta, ma mostrarne un altra nella barra degli indirizzi.
Come è possibile tutto ciò? Beh con un procedimento che risulta a mio avviso macchinoso e carente proprio ai fini dell’attacco (qualsiasi utente medio si accorgerebbe dell’artefatto).
Allora,
newWindow.document.location = “/result_22542/?” + unescape(“%A0“) + unescape(“%A0“) + “http://www.microsoft.com/” + padding;
nello specifico “/result_22542/” sarà la url aperta nella finestra popup, mentre la barra degli indirizzi di IE7 visualizzerà “http://www.microsoft.com/“.
In che modo viene creata la stringa malevola da settare nella location ?
Dato che la popup è larga 325px, IE7 creerà la barra degli indirizzi della stessa larghezza. Il codice non fa altro che aggiungere tutta una serie di spazi con la funzione unescape(“%A0“) (A0 è il codice Hex dello sapzio nella tabella ISO 8859-1 (Latin-1) ) e creare padding formato da spazi per far in modo che la URL originale vada a finire nella parte non visualizzata della barra degli indirizzi).
La stringa nel dettaglio :
- “/result_22542/ -> URL Originale
- “?” -> Il carattere per far passare tutto il resto eccedente come QueryString
- unescape(“%A0“) + unescape(“%A0“) -> Due spazi
- “http://www.microsoft.com/” -> URL Fake
- padding -> variabile stringa che contiene 128 spazi (il numero esatto per creare il padding virtuale per una barra indirizzi larga 325px)
Insomma una tecnica sicuramente ingegnosa, ma altrettetanto sicuramente inefficace (e menomale), visto che :
1) basta un clic in qualsiasi punto della popup per far tornare a visualizzare la stringa document.location dal primo carattere, mostrando quindi l’intera URL.
2) Cliccando sulla barra degli indirizzi ci si accorge subito della presenza degli spazi anteposti alla URL fake.
Quindi, possiamo definire questo problema una vulnerabilità di IE ?
Non credo proprio, visto che l’unica colpa, se cosi si può definire, di Microsoft è quella di aver incluso nella popup la barra degli indirizzi (penso sia stato fatto proprio per permettere all’utente di capire se le pagine visualizzate in popup appartenessero allo stesso sito della finestra browser parent, quindi per una questione di sicurezza).
Il secondo (Internet Explorer 7 Window Injection Vulnerability) è relativo ad un problema di cui già se ne era discusso in precedenza con altre versioni sia di IE sia dei browser concorrenti, derivante proprio dal DOM.
In pratica, un attacker, conoscendo l’id (target name) di un oggetto window (nello specifico una popup), potrebbe redirigere il browser verso una URL diversa da quella decisa dal sito Trusted.
Ecco il codice proposto da Secunia, nel caso il browser abbia il blocco popup disattivato (ne esiste anche una versione per il blocco attivo, che fa uso dei settimeout e degli intervalli di delay per eludere il blocco stesso) :
<script language=”JavaScript” type=”text/javascript“>
// NO POP-UP Blocker
url_no = “/resultpage_no/“;
target = “popup952“;
notarget = “non_existing_name“;
options= “toolbar=no,directories=no,location=no,status=no,menubar=no,
scrollbars=auto,resizable=no,copyhistory=no,width=694,height=620“;function begin_no_popup()
{
window.name = target;
window.onunload = gotUnload;
}function gotUnload()
{
if (window.name != target)
{
return;
}window.name = notarget;
open(url_no, target, options);
}window.name = notarget;
</script>
Nell’esempio questo script viene lanciato sull’OnClick di un href che redirige al sito di usatoday.com. Una volta aperto USA Today sul menu di sinistra esiste un link che apre una nuova popup mostrando una gallery di foto. Bene, la nuova finestra viene creata, ovviamente tramite window.open, assegnandogli come Name (target name) proprio “popup952“. Di conseguenza, quando l’utente farà clic sul menu di USAToday e la pagina contenente lo script malevolo sarà ancora aperta, la URL a cui punta la popup sarà sostituita e il browser quindi rediretto verso l’indirizzo scelto dall’attacker.
Nello specifico di Secunia :
“popup952” -> Name associato alla popup da USAToday
“/resultpage_no/” -> URL scelta dall’attacker per redirigere il browser.
Che dire, anche questo non è, secondo me, da considerarsi un problema di sicurezza, visto che si tratta di una funzionalità pensata proprio per riutilizzare le finestre di popup già attive, invece di crearne delle nuove ogni volta che richiesto dall’utente, obbligandolo quindi a chiudere quelle precedenti per non ritrovarsi decine di finestre del browser aperte.
Insomma secondo me, questa volta si tratta, indubbiamente, di una colpevolizzazione di Microsoft senza giusta causa e di un allarmismo che non sussiste per l’utente abituato al web e alle sue sfacettature.
Security, Windows | No Comments »
IE7, rilasciato in versione finale.
giovedì, ottobre 19th, 2006
E’ disponibile da ieri da questa pagina, la versione finale del nuovo browser Internet Explorer

