Condividi tramite


[Archivio newsletter ^] [< Volume 6, Numero 2] [Volume 7, Annuncio >speciale ]

Newsletter Systems Internals Volume 7, Numero 1

http://www.sysinternals.com
Copyright (C) 2005 Mark Russinovich


5 gennaio 2005 - In questo numero:

  1. EDITORIALE

    • Protezione esecuzione dati
  2. WINDOWS INTERNALS, QUARTA EDIZIONE

  3. NOVITÀ DI SYSINTERNALS

    • Statistiche di novembre
    • Articoli di Sysinternals Magazine
    • Feed RSS Sysinternals
    • Mark è un MVP Microsoft
    • Autoruns v6.01
    • Process Explorer v8.61
    • Sigcheck v1.0
    • Bginfo v4.07
    • Regjump v1.0
    • Hex2dec v1.0
    • Tcpvcon v2.34
    • Aggiornamenti di PsTools
    • Sysinternals in Microsoft
  4. INFORMAZIONI SUI MECCANISMI INTERNI

    • Esplorazione di Internet
    • Uso di LiveKd per risolvere i problemi dei sistemi malfunzionanti
    • Creekside?
    • Utilità di correzione del Registro di sistema ChkReg
    • Diagnostica memoria Windows
    • Ricerca di interfacce non documentate
  5. FORMAZIONE INTERNALS

    • Windows Connections a San Francisco
    • Corsi pratici di Windows Internals/Sysinternals di Mark Russinovich & David Solomon

La newsletter Sysinternals è sponsorizzata da Winternals Software, presente sul Web all'indirizzo http://www.winternals.com. Winternals Software è il principale sviluppatore e provider di strumenti avanzati di sistemi per Windows NT/2000/XP/2003.

Winternals è lieta di annunciare l'imminente rilascio di Administrator's Pak 5.0 con un aggiornamento completo che include ERD Commander 2005.

Le nuove funzionalità di ERD Commander 2005 sono:

  • Analizzatore di arresti anomali: consente di diagnosticare in modo semplice e rapido il driver responsabile di un arresto anomalo di Windows, anche se il sistema non si avvia
  • DiskWipe: consente di cancellare in modo sicuro il contenuto di dischi rigidi o volumi; Autoruns: controlla quali applicazioni si avviano all'installazione di Windows e all'accesso dell'utente - utili per diagnosticare i problemi delle risorse di sistema e individuare potenziale malware
  • Web browser FireFox: consente di scaricare aggiornamenti rapidi e aggiornamenti dei driver e di cercare assistenza nella Microsoft Knowledge Base, tutto sul sistema che si sta tentando di ripristinare
  • Disinstallazione guidata aggiornamenti rapidi: consente di rimuovere aggiornamenti rapidi e Service Pack in un sistema non avviabile
  • Ripristino file di sistema: controlla l'integrità dei file di sistema di Windows

Queste funzionalità, numerosi miglioramenti e ottimizzazioni dell'usabilità di ERD Commander 2005 e un nuovo client di ripristino remoto più facile da creare e usare, basato su Windows PE, sono tutti inclusi nel nuovo Administrator's Pak 5.0, disponibile a fine gennaio 2005. Per iscriversi per una valutazione di Administrator's Pak 5.0 dopo il rilascio, visitare http://www.winternals.com/ap5preview/.

EDITORIALE

Ciao a tutti.

Vi do il benvenuto nella newsletter di Sysinternals. La newsletter conta attualmente 40.000 abbonati.

La crescente ondata di malware, tra cui spyware e virus, è fonte di preoccupazione per tutti in merito alla sicurezza. Tra le buone misure di sicurezza vi sono l'aggiornamento delle patch del sistema operativo e delle applicazioni, l'installazione e la configurazione di firewall, antivirus e strumenti per la rimozione di spyware e il ricorso al buon senso quando si scaricano dati da Internet o si aprono allegati di posta elettronica. Nonostante le misure adottate, tuttavia, il malware può sempre trovare il modo di eludere le difese e infettare un computer. La falla più comune nelle difese di un sistema è la vulnerabilità del sovraccarico del buffer, ed è per questo che è importante avere familiarità con la funzionalità Protezione esecuzione dati (DEP) di Windows XP Service Pack 2.

Un sovraccarico del buffer è un errore di programmazione che i programmi dannosi possono sfruttare per assumere il controllo del thread che esegue l'errore di codifica. I sovraccarichi del buffer sono in genere basati su stack, il che significa che un utente malintenzionato fornisce al programma più dati di quelli che possono essere contenuti in un buffer archiviato nello stack. I dati vengono creati in modo tale che quando la funzione con il sovraccarico tenta di restituire risultati alla funzione da cui è stata richiamata, li restituisce invece in una posizione nei dati.

Purtroppo, gli errori di sovraccarico del buffer possono affliggere anche il software meglio testato e verificato. Ogni mese vengono annunciati numerosi sovraccarichi del buffer per Windows e il relativo software a componenti (Linux e le sue applicazioni non sono immuni, con un numero di sovraccarichi del buffer pari a quello di Windows). Un tema comune per la maggior parte degli exploit di sovraccarico del buffer è che comportano l'esecuzione di codice inserito in aree di memoria che dovrebbero contenere solo dati.

Sebbene il processore Intel Itanium supporti la protezione NX (No-execute) fin dal suo rilascio, è stato solo con Windows XP SP2 (e con l'imminente Windows Server 2003 SP1) che Windows ha effettivamente iniziato a usare questo supporto hardware, ad esempio contrassegnando gli stack dei thread e la memoria heap come non eseguibili. Altri processori che supportano la protezione hardware No-execute sono i processori AMD64 Opteron e Athlon 64 a 64 bit e il clone Intel denominato EM64T, ora disponibile nei processori Xeon e Pentium 4. AMD e Intel hanno recentemente introdotto processori a 32 bit con supporto No-execute: AMD Sempron e la famiglia "J" di Pentium 4, ad esempio 520J, 540J e così via.

Potrebbe sembrare ovvio che Windows dovrebbe applicare la protezione No-execute per la memoria heap di stack e applicazioni per impostazione predefinita, per evitare exploit di sovraccarico del buffer, ma esistono centinaia di migliaia di applicazioni, alcune delle quali potrebbero effettivamente basarsi sulla disattivazione di questa impostazione per funzionare correttamente. Per questo motivo Windows XP SP2, la prima versione di Windows che applica la protezione No-execute, lascia agli amministratori il controllo sui processi a cui applicare e non applicare questa protezione. In primo luogo, nell'ottica di migliorare la sicurezza in futuro, la versione a 64 bit di Windows applica sempre flag No-execute a tutti i processi a 64 bit. Se un fornitore di software vuole rilasciare un'applicazione a 64 bit, dovrà assicurarsi che non esegua codice da aree di memoria non eseguibili (può contrassegnare un'area dati come eseguibile se genera codice in tempo reale, come spesso fanno le applicazioni Java e .NET).

In secondo luogo, poiché gli exploit di sovraccarico del buffer mirano soprattutto ai componenti del sistema operativo, Windows XP e Windows Server 2003 a 32 bit proteggono le immagini del sistema operativo core per impostazione predefinita. Tuttavia, per le applicazioni a 32 bit (in esecuzione in Windows a 32 bit o Windows a 64 bit), Windows XP usa per impostazione predefinita una strategia di "consenso esplicito" (le applicazioni non sono protette per impostazione predefinita), mentre Windows Server 2003 usa per impostazione predefinita una strategia di "rifiuto esplicito" (le applicazioni sono protette per impostazione predefinita, ma è possibile escludere applicazioni specifiche). Questo approccio ha senso perché la sicurezza ha in genere una priorità più elevata nei sistemi server. È possibile modificare le impostazioni di consenso esplicito o rifiuto esplicito nella finestra di dialogo di configurazione di Protezione esecuzione dati, a cui si accede tramite il pulsante Impostazioni nella sezione Prestazioni della pagina Avanzate dell'applet Sistema del Pannello di controllo.

Come ho accennato in precedenza, ad eccezione dei processori AMD Sempron e Pentium 4 "J", relativamente nuovi, tutti i chip compatibili x86 rilasciati finora non dispongono del supporto No-execute. Tuttavia, Windows XP e Windows Server 2003 implementano una forma limitata di Protezione esecuzione dati su tali processori, denominata "DEP software". Poiché il sistema operativo ottiene il controllo di un thread quando il thread genera un errore, può assicurarsi che il gestore errori che eseguirà sia registrato in modo statico dal codice del programma. In questo modo si impedisce un exploit che reindirizzi il gestore errori di un thread per eseguire codice dannoso in un buffer dello stack con sovraccarico, che è ciò che il virus CodeRed ha fatto fare a IIS quando è stato rilasciato nel 2001.

Nonostante la relativa semplicità, Protezione esecuzione dati è una delle difese più forti offerte dal sistema operativo contro il malware che si propaga automaticamente. Purtroppo, tre fattori ne limitano la potenza: l'assenza di supporto hardware nella maggior parte dei processori attualmente distribuiti per l'impostazione No-execute, l'impostazione predefinita di consenso esplicito in Windows XP, che fa sì che solo i processi del sistema operativo core siano protetti, e la mancanza di consapevolezza. L'ambito di DEP software è limitato, pertanto l'efficacia di Protezione esecuzione dati è marginale a meno che non si esegua Windows su hardware che supporti l'impostazione No-execute. Il fatto che l'impostazione predefinita per Windows XP sia il consenso esplicito significa che, anche quando gli utenti eseguono Windows su hardware in cui è attiva la funzionalità No-execute, gli unici processi protetti da Protezione esecuzione dati sono quelli del sistema operativo. Se si verifica un sovraccarico del buffer in un firewall, un Web browser, un lettore di posta elettronica o un'altra applicazione di terze parti abilitata per la rete, il sistema è ancora vulnerabile. Infatti, alcune delle applicazioni più sfruttate dal malware, vale a dire IIS e Outlook, non sono protette con l'impostazione di consenso esplicito. Infine, poiché la maggior parte delle persone non è a conoscenza del comportamento predefinito del sistema, o addirittura di Protezione esecuzione dati, i sistemi rimarranno per lo più a rischio di problemi di sovraccarico del buffer.

È ora che Microsoft faccia pagare agli utenti il prezzo della compatibilità in cambio di una maggiore sicurezza, altrimenti gli utenti finiranno per pagare un prezzo molto più alto per mano dei virus, e a loro volta scaricheranno il conto su Microsoft. Nel frattempo, consiglio vivamente di eseguire l'aggiornamento a Windows XP SP2 (anche Windows XP 64 bit Edition e Windows Server 2003 SP1 supportano No-execute), impostare il consenso esplicito ed eseguire l'aggiornamento a un processore con supporto di No-execute (purtroppo non otterrò alcuna commissione).

Inoltrate la newsletter ai vostri amici che pensate potrebbero essere interessati a questi contenuti.

Grazie.

- Mark

WINDOWS INTERNALS, QUARTA EDIZIONE

Il libro Microsoft ufficiale sui meccanismi interni di Windows Server 2003, Windows 2000 e Windows XP, che ho scritto in collaborazione con Dave Solomon, è ora disponibile nelle librerie. Dave e io abbiamo esteso la copertura dell'edizione precedente di circa il 25%, aggiungendo nuovo materiale non solo sulle modifiche a Windows Server 2003 e XP, ma anche sugli strumenti e le tecniche di risoluzione dei problemi. Troverete suggerimenti avanzati sull'uso di Process Explorer, Filemon e Regmon, oltre a un intero nuovo capitolo sull'analisi dei dump di arresto anomalo di Windows.

Potete trovare maggiori informazioni sul contenuto del libro e ordinarlo online all'indirizzo

http://www.sysinternals.com/windowsinternals.shtml

NOVITÀ DI SYSINTERNALS

FEED RSS SYSINTERNALS

Mi è stato chiesto di aggiungere un meccanismo di notifica delle nuove pubblicazioni a Sysinternals così tante volte che ho finalmente seguito la tendenza del Web e ho aggiunto un feed RSS (per chi non avesse familiarità con i feed RSS, ecco una buona introduzione: http://rss.softwaregarden.com/aboutrss.html). Il feed mi dà anche l'opportunità di notificarvi le correzioni di bug minori e gli aggiornamenti che non giustificano una presentazione completa in prima pagina. In base al numero di accessi giornalieri al feed, sembra già che sia il modo preferito dalle persone per conoscere gli aggiornamenti.

Potete accedere al feed RSS Sysinternals all'indirizzo:

http://www.sysinternals.com/sysinternals.xml

ARTICOLI DI SYSINTERNALS MAGAZINE

Circa sei mesi fa ho iniziato a scrivere una rubrica semestrale su Windows IT Pro Magazine (ex Windows and .NET Magazine) sugli strumenti di Sysinternals. Ogni rubrica descrive uno strumento diverso, fornendo suggerimenti sull'uso avanzato e informazioni sul suo funzionamento.

Delle tre che sono state pubblicate, elencate di seguito, le prime due sono accessibili online ai non abbonati e la terza lo sarà presto:

Autoruns: http://www.win2000mag.com/Windows/Article/ArticleID/44089/44089.html

Pslist e Pskill: http://www.winnetmag.com/Windows/Article/ArticleID/43569/43569.html

PsExec: http://www.winnetmag.com/Windows/Issues/IssueID/714/Index.html

MARK È UN MVP MICROSOFT

Il responsabile MVP (Platform SDK Microsoft Most Valuable Professional) mi ha nominato MVP per il 2005. Sono grato a lui e Microsoft per questo riconoscimento ufficiale dei contributi che ho fatto ai clienti Microsoft con Sysinternals.

STATISTICHE DI NOVEMBRE

Ho finalmente ottenuto un programma di analisi del traffico Web decente per Sysinternals e ho analizzato i file di log del mese di novembre. L'entità dei numeri ha stupito persino me. Ecco alcuni punti salienti:

  • 3,6 milioni di visualizzazioni di pagine
  • 775.000 visitatori unici
  • 1,2 milioni di download di utilità
  • 200.000 download di Process Explorer, lo strumento più scaricato

AUTORUNS V6.01

Lo strumento Autoruns si è evoluto molto negli ultimi mesi con due aggiornamenti principali del numero di versione. La versione più recente di Autoruns visualizza i percorsi di avvio automatico oltre alle cartelle di avvio e alla chiave Run standard, tra cui DLL di notifica Winlogon, barre degli strumenti di Explorer, estensioni dello spazio dei nomi, oggetti helper del browser e DLL di inizializzazione automatica. Un'altra nuova funzionalità, la voce di menu Google (presa in prestito da Process Explorer), consente di identificare immagini sconosciute aprendo un browser e avviando una ricerca del nome dell'immagine selezionata.

Un'altra nuova funzionalità, la verifica della firma delle immagini, consente di distinguere tra malware e componenti di sistema o applicazioni attendibili. Microsoft include in genere hash dei file del sistema operativo firmati con la chiave di firma privata di Microsoft. Le funzioni di crittografia di Windows decrittografano gli hash firmati con la chiave di firma pubblica di Microsoft e Autoruns convalida le immagini nel sistema confrontandone gli hash con le versioni decrittografate, anteponendo "(Verificato)" al nome della società dell'immagine quando trova una corrispondenza. Se un'immagine è stata manomessa, danneggiata, sostituita o ha un hash firmato da un autore non considerato attendibile dal sistema, Autoruns segnala il nome della società dell'immagine come "(Non verificato)".

Gli amministratori di sistemi potrebbero voler controllare le immagini ad avvio automatico in account diversi da quello con cui sono connessi, quindi Autoruns include ora un menu Utente che consente di selezionare ogni account il cui profilo è archiviato nel computer.

Infine, è ora disponibile una funzione equivalente della riga di comando dell'interfaccia utente grafica di Autoruns, denominata Autorunsc, che elenca le informazioni sulle esecuzioni automatiche nella console. La capacità di Autorunsc di formattare l'output come CSV, quando usata in combinazione con l'utilità PsExec di Sysinternals, semplifica la generazione di inventari delle immagini ad avvio automatico configurate per i computer di tutta la rete.

È possibile scaricare Autoruns all'indirizzo
http://www.sysinternals.com/ntw2k/freeware/autoruns.shtml

PROCESS EXPLORER V8.61

Ancora una volta Process Explorer, uno strumento che sostituisce Gestione attività come utilità di gestione avanzata dei processi, è stato lo strumento su cui mi sono concentrato di più, e questo per via dei numerosi feedback che ricevo in proposito. Dall'ultima newsletter Process Explorer è passato dalla versione 8.4 alla 8.6. Una serie di nuove funzionalità contraddistingue queste due versioni, tra cui una voce di menu Google che avvia una ricerca di informazioni su un processo selezionato, una scheda Stringhe nella finestra di dialogo delle proprietà del processo che elenca le stringhe ASCII e Unicode presenti in un file di immagine del processo, una voce di menu Stringhe che elenca le stringhe in un file di immagine DLL selezionato e il nome del processo che utilizza più CPU nella descrizione comando che viene visualizzata quando si passa il mouse sull'icona di Process Explorer nell'area di notifica.

Molte persone hanno richiesto funzionalità non più disponibili dopo il passaggio da Gestione attività, ad esempio la scheda Applicazioni di Gestione attività. La scheda Applicazioni mostra un elenco di finestre di primo livello sul desktop interattivo, insieme allo stato del thread proprietario di ogni finestra: "In esecuzione" se il thread è attualmente in attesa di ricevere un messaggio di Windows o ha elaborato un messaggio di Windows negli ultimi cinque secondi, e "Non risponde" in caso contrario (ironicamente, questo significa che "In esecuzione" indica che il thread è in attesa e "Non risponde" che non è in esecuzione). Ora è possibile ottenere queste stesse informazioni con Process Explorer aggiungendo le colonne "Titolo finestra" e "Stato finestra" alla visualizzazione processo.

Process Explorer dispone da tempo di funzionalità destinate ai processi .NET, tra cui l'evidenziazione dei processi .NET e una scheda Prestazioni .NET nella finestra di dialogo delle proprietà dei processi .NET. Un processo .NET è un processo che è stato caricato e registrato con il runtime .NET. Se un processo viene registrato qualche istante dopo l'avvio, Process Explorer potrebbe non identificarlo come processo .NET, ma la versione più recente controlla nuovamente lo stato .NET dei processi e l'appartenenza all'oggetto processo quando si aggiorna manualmente la visualizzazione, selezionando il pulsante Aggiorna sulla barra degli strumenti, premendo F5 o selezionando la voce di menu Aggiorna.

Per le situazioni in cui non si sa con certezza quale processo è proprietario di una finestra, è possibile usare il nuovo pulsante di ricerca finestre sulla barra degli strumenti per identificarlo. Basta trascinare il pulsante della barra degli strumenti, che ha l'aspetto di un bersaglio, fuori dalla barra degli strumenti e sopra la finestra in questione e Process Explorer selezionerà il processo proprietario nella visualizzazione processi.

Un'aggiunta che sarà immediatamente evidente è il mini-grafico della CPU visualizzato accanto alla barra degli strumenti. Questo grafico mostra la cronologia dell'utilizzo della CPU del sistema e, come la versione estesa che si ottiene facendo clic su di esso per aprire la finestra di dialogo Informazioni di sistema di Process Explorer, presenta una descrizione comando che include il timestamp e il processo che utilizza più CPU per il punto del grafico su cui si sposta il mouse. È possibile spostare il grafico in qualsiasi punto dell'area della barra degli strumenti, anche su una riga, in modo che si estenda per tutta la larghezza della finestra di Process Explorer.

Due funzionalità correlate alla sicurezza sono la verifica della firma dell'immagine e lo stato di Protezione esecuzione dati. Quando si abilita l'opzione di firma dell'immagine, Process Explorer verifica se un'immagine del processo è stata firmata digitalmente da un firmatario attendibile e, come Autoruns, antepone "Verificato" o "Non verificato" al nome della società nella finestra di dialogo delle proprietà del processo. L'opzione è disabilitata per impostazione predefinita perché il controllo della firma dell'immagine può richiedere diversi secondi, in quanto il controllo accede ai siti Web per verificare la validità dei certificati di firma.

Protezione esecuzione dati, descritto nell'introduzione di questa newsletter, è una funzionalità che è consigliabile abilitare in Windows XP SP2 per la protezione avanzata dagli exploit di sovraccarico del buffer. È possibile controllare lo stato di Protezione esecuzione dati di un processo aggiungendo la colonna "Stato DEP" alla visualizzazione processo o controllando il campo "Stato DEP" nella pagina Immagine della finestra di dialogo delle proprietà del processo.

Infine, Process Explorer elenca ora i driver caricati nel sistema nella visualizzazione DLL del processo di sistema, ovvero il processo associato ai thread di lavoro del kernel e dei driver di dispositivo. Per ogni driver sono disponibili le stesse informazioni delle DLL elencate per altri processi, tra cui la versione, il nome della società, il percorso completo e l'indirizzo di caricamento nello spazio indirizzi di sistema.

È possibile scaricare Process Explorer all'indirizzo
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

SIGCHECK V1.0

Molti degli strumenti Sysinternals stanno adottando funzionalità che consentono agli utenti di identificare il malware, e Sigcheck è un'utilità della riga di comando incentrata quasi esclusivamente su questo obiettivo. Usa la stessa funzionalità di verifica della firma delle immagini inclusa in Autoruns e in Process Explorer per indicare se un file è stato o meno firmato digitalmente da un autore attendibile. Inoltre, segnala le informazioni sulla versione del file dell'immagine o delle immagini specificate, inclusi il nome del prodotto, la descrizione, il nome della società e la versione. Queste informazioni sono simili a quelle segnalate dallo strumento Filever disponibile in Windows XP e Windows Server 2003, ma Sigcheck segnala anche il timestamp di quando il file è stato originariamente "collegato" o creato per le immagini non firmate e il timestamp della firma dell'immagine per quelli firmati. Infine, la maggior parte degli hash firmati viene firmata con chiavi che sono state a loro volta firmate, una sequenza che costituisce la cosiddetta catena di firma del certificato. Sigcheck supporta un'opzione della riga di comando che indica di visualizzare la catena di firma con informazioni su ognuno dei firmatari della catena.

Uno dei possibili usi di Sigcheck correlati alla sicurezza consiste nell'analizzare eventuali immagini EXE, DLL o SYS non firmate in una delle directory nella radice dell'installazione di Windows (in genere \Windows). È possibile identificare facilmente le immagini EXE non firmate eseguendo Sigcheck con questa riga di comando, ad esempio:

sigcheck -s -u c:\windows\*.exe

Tutte le immagini Microsoft devono avere firme valide, ma il comando riportato sopra rivela tristemente che molte non le hanno, generando file che possono essere potenzialmente sfruttati per nascondere malware.

È possibile scaricare Sigcheck all'indirizzo
http://www.sysinternals.com/ntw2k/source/misc.shtml

BGINFO V4.07

Questo aggiornamento secondario di Bginfo, uno strumento che visualizza le informazioni configurate sul desktop del computer su cui viene eseguito per facilitarne la visualizzazione, offre un supporto migliore per le bitmap che deve estendere per adattarle alle dimensioni specificate dall'utente, miglioramenti nel rilevamento della CPU, supporto per MySQL e una migliore compatibilità con la visualizzazione su più monitor.

È possibile scaricare Bginfo all'indirizzo
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

REGJUMP V1.0

Regjump è utile per chi vuole creare tasti di scelta rapida di Explorer per chiavi del Registro di sistema specifiche o immettere semplicemente il percorso di una chiave in modo che Regedit si apra nella posizione di destinazione. Regjump è un'utilità della riga di comando che usa la stessa tecnologia di passaggio a un percorso specifico del Registro di sistema che è stata introdotta in Regmon. Basta assegnare a Regjump un percorso del Registro di sistema come argomento della riga di comando per aprire Regedit e passare automaticamente alla chiave o al valore specificato.

È possibile scaricare Regjump all'indirizzo
http://www.sysinternals.com/ntw2k/source/misc.shtml

HEX2DEC V1.0

Lavorando con debugger e disassembly, mi trovo spesso a dover convertire i numeri esadecimali in decimali e viceversa. Alla fine mi sono stancato di aprire la Calcolatrice, inserire un numero e poi cambiare la base per vedere la conversione, così ho scritto una piccola utilità di conversione da riga di comando. Hex2dec converte in entrambe le direzioni e identifica opportunamente l'input come esadecimale se ha un prefisso "0x" o "x" o se include le lettere "a"-"f" (senza distinzione tra maiuscole e minuscole).

È possibile scaricare Hex2dec all'indirizzo
http://www.sysinternals.com/ntw2k/source/misc.shtml

TCPVCON V2.34

Netstat è un'utilità della riga di comando integrata in Windows NT e versioni successive che mostra gli endpoint TCP e UDP attualmente attivi nel sistema. La versione introdotta da Microsoft con Windows XP include un'informazione utile: l'identificatore processo (PID) del processo che ha aperto ogni endpoint. Tuttavia, per determinare il nome del processo o qualsiasi altra informazione su di esso, è necessario aprire uno strumento di elencazione dei processi e trovare il processo associato a quel PID.

TCPView è un'applicazione GUI Sysinternals che mostra le stesse informazioni sugli endpoint attivi, ma in modo molto più pratico di Netstat, perché include il nome del processo, passa rapidamente tra nomi DNS e indirizzi IP non elaborati ed evidenzia con colori gli endpoint nuovi e quelli eliminati. Il download di TCPView include ora TCPVCon, una versione per console di TCPView, per coloro che vogliono usare le interfacce della riga di comando. A differenza di Netstat, TCPVCon visualizza il percorso completo del processo associato a ogni endpoint e include un'opzione che esegue il dump dell'output in formato CSV.

È possibile scaricare Tcpvcon all'indirizzo
http://www.sysinternals.com/ntw2k/source/tcpview.shtml

AGGIORNAMENTI DI PSTOOLS

PsKill e PsLoglist sono i due strumenti della suite PsTools a cui sono stati apportati miglioramenti negli ultimi mesi. PsKill, un'utilità della riga di comando che termina i processi nel sistema locale o in un sistema remoto, supporta ora un'opzione -t che consente di terminare un intero albero di processi. Diverse persone hanno chiesto questa opzione per semplificare la pulizia degli alberi di script batch con tempi di esecuzione eccessivamente lunghi.

PsLoglist è uno strumento della riga di comando che esegue il dump dei log eventi nei sistemi locali o remoti. Gli aggiornamenti recenti hanno aggiunto 5 opzioni al suo già lungo elenco di qualificatori della riga di comando. I nuovi argomenti consentono di escludere dall'output tipi di evento o origini eventi specifici o di eseguire il dump solo degli eventi degli ultimi minuti o ore. Ora supporta anche una modalità di monitoraggio dei log eventi in cui il monitoraggio viene eseguito fino a quando non viene terminato, visualizzando i record dei log eventi man mano che vengono generati.

È possibile scaricare PsTools, che comprende PsKill e PsLoglist, all'indirizzo
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

SYSINTERNALS SU WWW.MICROSOFT.COM

Ecco la versione più recente dei riferimenti di Sysinternals negli articoli della Microsoft Knowledge Base (KB) rilasciati dopo l'ultima newsletter. Questo porta a 63 il numero totale di riferimenti della Knowledge Base pubblica a Sysinternals.

  • CORREZIONE: Lettore multimediale Windows serie 9 per Windows accede di frequente al Registro di sistema e può influire sulle prestazioni http://support.microsoft.com/?kbid=886423

  • Panoramica dell'aggiornamento della sicurezza di GDI+ 1.0 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/gdiplus10security.asp

  • Modifica del Registro di sistema http://support.microsoft.com/default.aspx?scid=kb;it-it;835818

  • Messaggio di errore "Non sono presenti informazioni da visualizzare in questa vista" quando si prova ad accedere a una vista progetto http://support.microsoft.com/default.aspx?scid=kb;it-it;810596

INFORMAZIONI SUI MECCANISMI INTERNI

ESPLORAZIONE DI INTERNET

Circa un anno fa ho annunciato di essere passato da Internet Explorer a Mozilla perché Internet Explorer non aveva funzionalità considerate obbligatorie per un browser Internet decente, come il blocco dei popup, l'esplorazione a schede, la compilazione automatica dei moduli e il filtro degli annunci pubblicitari. Non molto tempo dopo qualcuno mi ha indicato Avant Browser, un piccolo download che usa Internet Explorer (non è il suo browser) per offrire tutto questo e altro ancora. L'interfaccia utente pesante di Mozilla e la mancanza di compatibilità con alcuni siti che frequento mi hanno facilitato la decisione di cambiare. Sebbene la nuova versione di FireFox sia migliore sotto entrambi i punti di vista, ci sono ancora alcuni siti incompatibili (come Windows Update, ad esempio), quindi non sono stato costretto a cambiare di nuovo.

La lentezza di Microsoft nel migliorare Internet Explorer, anche alla luce dei modesti miglioramenti in Windows XP SP2, dovrebbe indurla ad acquistare Avant Browser e a integrarlo nella prossima versione di Internet Explorer.

È possibile scaricare Avant Browser all'indirizzo http://www.avantbrowser.com

USO DI LIVEKD PER RISOLVERE I PROBLEMI DEI SISTEMI MALFUNZIONANTI

LiveKd è un'utilità che ho scritto per la terza edizione di Inside Windows 2000 (oggi è uno strumento freeware in Sysinternals). Consente di usare Windbg o Kd del pacchetto Microsoft di strumenti di debug per Windows per eseguire i comandi di debug normalmente usati per analizzare i dump di arresto anomalo e i sistemi bloccati in un sistema online e attivo. Microsoft ha introdotto una funzionalità simile, denominata "debug del kernel locale", per gli strumenti di debug eseguiti in Windows XP e versioni successive. LiveKd consente di eseguire diverse operazioni che non è invece possibile eseguire con il debug del kernel locale. Ad esempio, non è possibile esaminare gli stack di thread in modalità kernel con il debug del kernel locale, mentre il comando per elencare i moduli kernel, lm k, elenca solo il kernel del sistema operativo e non gli altri driver di caricamento quando viene eseguito nel debug del kernel locale. Entrambi i comandi funzionano all'interno di LiveKd.

Un altro comando che non funziona nel debug del kernel locale, ma che funziona in LiveKd, è .dump. Ho scoperto da un tecnico del Servizio Supporto Tecnico Clienti Microsoft che il comando .dump può essere utile per la risoluzione dei problemi di un sistema malfunzionante. Un computer che presenta problemi, ma che fornisce servizi quali Web o database, potrebbe non essere un candidato per il riavvio o per il debug tradizionale, in cui il sistema viene messo in pausa durante l'indagine. L'esecuzione di LiveKd e di .dump produce un file di dump di arresto anomalo formattato costituito dal contenuto della memoria fisica del sistema. È possibile trasferire il file di dump in un altro computer e analizzare lo stato del sistema operativo e delle applicazioni di servizio caricando il file di dump in WinDbg o Kd, evitando così un'interruzione delle operazioni mentre si esamina la causa di un problema.

È possibile scaricare LiveKd all'indirizzo
http://www.sysinternals.com/ntw2k/freeware/livekd.shtml

CREEKSIDE?

Recentemente stavo analizzando l'inizializzazione della versione per Windows XP Service Pack 2 di Winlogon, il processo di sistema responsabile della presentazione dell'interfaccia utente di accesso, quando mi sono imbattuto in un codice nel disassembly in cui Winlogon verifica la presenza di una DLL denominata ediskeer.dll nella directory \Windows\System32, verifica che sia firmata digitalmente da un firmatario attendibile, se esiste, e quindi la carica e chiama una funzione senza nome esportata dalla DLL. Anche il codice Winlogon che viene eseguito quando si accede al sistema chiama la DLL, se è stata caricata durante l'inizializzazione.

Ho cercato la DLL nel mio sistema ma non l'ho trovata, e non è presente neanche nel CD del Service Pack 2. Quindi qual è la DLL? Usando i simboli di debug forniti da Microsoft per il sistema operativo, ho visto che Winlogon configura una variabile denominata "Creekside" se ediskeer.dll è presente e firmata e ho capito che "ediskeer" è composto dalle ultime 8 lettere di "creekside" in ordine inverso. Non so ancora con certezza a cosa si riferisca Creekside, ma sospetto fortemente che la DLL sia una di quelle fornite solo con Windows XP Starter Edition, la versione a basso costo di Windows XP che Microsoft ha recentemente introdotto per i paesi in via di sviluppo. Starter Edition si basa sullo stesso core del sistema operativo di Windows XP Professional e Home Edition, ma impone limiti al numero di applicazioni che un utente può eseguire contemporaneamente. Se ho visto giusto, Winlogon carica la DLL per applicare questo limite, attivandola ogni volta che un nuovo utente esegue l'accesso.

UTILITÀ DI CORREZIONE DEL REGISTRO DI SISTEMA CHKREG

Nel corso degli anni Bryce e io abbiamo ricevuto numerose richieste per uno strumento del Registro di sistema analogo a Chkdsk, l'utilità di verifica della coerenza del file system. Non ne abbiamo mai scritto uno perché ci pareva che i destinatari fossero troppo pochi per giustificare lo sforzo. Circa un anno fa Microsoft ha rilasciato il poco noto Chkreg, un equivalente di Chkdsk per il Registro di sistema che corregge molti tipi di danneggiamento del Registro di sistema.

Purtroppo Chkreg è supportato solo in Windows 2000 (può funzionare anche sui Registri di sistema di Windows NT 4 e Windows XP) ed è implementato come un'applicazione "nativa" che usa l'API nativa anziché l'API Windows, pertanto non viene eseguito in Windows. Quando si scarica questa utilità, è necessario installarla in un set di sei dischi floppy di avvio dell'installazione di Windows, un lavoro noioso e dispendioso in termini di tempo. Abbiamo contattato gli sviluppatori di Chkreg invitandoli a rilasciare pubblicamente la versione di Windows che sappiamo essere usata internamente dal Servizio Supporto Tecnico Clienti Microsoft, ma non sappiamo se e quando la rilasceranno.

È possibile scaricare Chkreg all'indirizzo
http://www.microsoft.com/downloads/details.aspx?FamilyID=56D3C201-2C68-4DE8-9229-CA494362419C& displaylang=en

DIAGNOSTICA MEMORIA WINDOWS

Una delle esperienze più frustranti per un utente di Windows è l'arresto anomalo del sistema. Nella maggior parte dei casi la colpa è di un driver di dispositivo di terze parti difettoso, a cui si può porre rimedio disabilitando il driver o aggiornando la versione con una correzione. Circa il 10% degli arresti anomali segnalati al servizio Microsoft Online Crash Analysis è causato da problemi hardware, che nella maggior parte dei casi sono relativi ai dischi e alla memoria.

Se si verifica un arresto anomalo del sistema che il servizio Online Crash Analysis non è in grado di diagnosticare o si sospetta un problema di memoria, è consigliabile dedicare qualche minuto a Diagnostica memoria Windows, uno strumento di controllo della memoria rilasciato di recente da Microsoft. Il programma di installazione di questo strumento richiede un disco floppy o un CD in cui salvare l'applicazione. Quando si avvia un computer dal disco floppy o dal CD creato, Diagnostica memoria Windows viene avviato ed esegue un test approfondito della memoria del computer, segnalando lo stato di avanzamento e gli eventuali problemi sullo schermo. In caso di errori di memoria, Diagnostica memoria Windows può risparmiare la frustrazione infinita degli arresti anomali di Windows.

È possibile scaricare la diagnostica della memoria di Windows all'indirizzo http://www.microsoft.com/downloads/details.aspx?FamilyID=56D3C201-2C68-4DE8-9229-CA494362419C& displaylang=en

RICERCA DI INTERFACCE NON DOCUMENTATE

La funzionalità di stato di Protezione esecuzione dati descritta nella sezione della newsletter relativa ai miglioramenti di Process Explorer si basa su una funzione non documentata. Ho pensato che molti di voi sarebbero stati interessati a sapere come ho scoperto la funzione e il suo uso appropriato senza avere accesso al codice sorgente di Windows (Dave Solomon, il mio coautore per Windows Internals, ha accesso, ma io no).

Il primo passaggio del mio processo di analisi è stato quello di ipotizzare che una query sullo stato di Protezione esecuzione dati per un processo fosse indirizzata tramite l'API NtQueryInformationProcess. Molte funzioni API di Windows che recuperano informazioni su un processo usano l'interfaccia NtQueryInformationProcess per ottenere le informazioni. Questa funzione, prototipata nel file Ntddk.h di Windows Driver Development Kit (DDK), è accessibile in modalità utente attraverso l'interfaccia di chiamata di sistema "API nativa":

NTSYSAPI
NTSTATUS
NTAPI
NtQueryInformationProcess(
    IN HANDLE ProcessHandle,
    IN PROCESSINFOCLASS ProcessInformationClass,
    OUT PVOID ProcessInformation,
    IN ULONG ProcessInformationLength,
    OUT PULONG ReturnLength OPTIONAL
);

I primi due argomenti sono un handle per un processo e una "classe di informazioni sul processo". Anche l'enumerazione PROCESSINFOCLASS, le cui prime definizioni sono riportate di seguito, è inclusa in NTDDK.H:

typedef enum _PROCESSINFOCLASS {
    ProcessBasicInformation,
    ProcessQuotaLimits,
    ProcessIoCounters,
    ProcessVmCounters,
    ProcessTimes,
//...

Poiché Protezione esecuzione dati è stato introdotto in Windows XP SP2, non mi aspettavo che la classe di informazioni per le query DEP fosse presente nelle versioni Windows XP o Windows Server 2003 di Ntddk.h, e un rapido controllo ne ha confermato l'assenza. Ho quindi dovuto esaminare il disassembly del file Ntoskrnl.exe di SP 2, l'immagine in cui è implementato NtQueryInformationProcess, per verificare se fosse possibile determinare empiricamente la classe di informazioni per le query DEP.

Un disassembler accetta un'immagine eseguibile ed elenca le istruzioni del linguaggio di assembly che ne costituiscono il codice. Le istruzioni del linguaggio di assembly vengono mappate direttamente alle istruzioni eseguite da un processore. Il disassembler che uso è IDA Pro, disponibile su http://www.datarescue.com, poiché comprende i file di informazioni di debug di Microsoft e integra le informazioni nell'output del linguaggio di assembly. Nel disassembly ho scoperto la contorta sequenza di istruzioni all'inizio di NtQueryInformationProcess che accetta il parametro della classe di informazioni del processo ed esegue codice specifico per ogni classe. Poiché sapevo che la classe di informazioni era nuova, ho potuto saltare l'esecuzione delle classi per le quali ho visto le definizioni nell'enumerazione PROCESSINFOCLASS di Ntddk. Questo ha ristretto le mie indagini alle 3 o 4 nuove classi introdotte dal rilascio di Windows XP.

Una delle classi, quella che corrisponde a un valore ProcessInformationClass di 0x22, mi ha portato attraverso un percorso di codice in una funzione denominata MmGetExecuteOptions, il cui inizio è mostrato di seguito:

PAGE:0054D7CC ; __stdcall MmGetExecuteOptions(x)
PAGE:0054D7CC _MmGetExecuteOptions@4 proc near ; CODE XREF:
NtQueryInformationPro0063ess(x,x,x,x,x)+251C p
PAGE:0054D7CC
PAGE:0054D7CC arg_4 = dword ptr 8
PAGE:0054D7CC
PAGE:0054D7CC mov edi, edi
PAGE:0054D7CE push ebp
PAGE:0054D7CF mov ebp, esp
PAGE:0054D7D1 mov eax, large fs:124h
PAGE:0054D7D7 mov eax, [eax+44h]
PAGE:0054D7DA mov cl, [eax+6Bh]
PAGE:0054D7DD mov eax, [ebp+arg_4]
PAGE:0054D7E0 and dword ptr [eax], 0
PAGE:0054D7E3 xor edx, edx
PAGE:0054D7E5 inc edx
PAGE:0054D7E6 test dl, cl
PAGE:0054D7E8 jz short loc_54D7EC
PAGE:0054D7EA mov [eax], edx
PAGE:0054D7EC
PAGE:0054D7EC loc_54D7EC: ; CODE XREF:
MmGetExecuteOptions(x)+1C j
PAGE:0054D7EC test cl, 2
PAGE:0054D7EF jz short loc_54D7F4
PAGE:0054D7F1 or dword ptr [eax], 2
PAGE:0054D7F4
PAGE:0054D7F4 loc_54D7F4: ; CODE XREF:
MmGetExecuteOptions(x)+23 j
PAGE:0054D7F4 test cl, 4
PAGE:0054D7F7 jz short loc_54D7FC
PAGE:0054D7F9 or dword ptr [eax], 4
PAGE:0054D7FC

IDA Pro mi ha mostrato sulla prima riga dell'output riportato sopra che la funzione accetta un argomento, che ho sospettato essere un puntatore a una variabile che riceve le impostazioni di Protezione esecuzione dati. Ho passato abbastanza tempo a esaminare i disassembly del kernel di Windows per riconoscere la sequenza di istruzioni mov eax, large fs:124h; mov eax,[eax+44h] come una lettura della struttura di dati del thread _KTHREAD corrente nella struttura PCR (Processor Control Region) seguita da un riferimento del campo KPROCESS in corrispondenza dell'offset 0x44 nella struttura _KTHREAD. Le istruzioni successive leggono i singoli bit del byte in corrispondenza dell'offset 0x6B nella struttura _KPROCESS.

Non sapendo su due piedi cosa c'è in corrispondenza dell'offset 0x6B in una struttura _KPROCESS, ho avviato Windbg in modalità di debug del kernel locale ed eseguito il comando dt _kprocess, che ha restituito questo risultato:

+0x06b Flags : _KEXECUTE_OPTIONS

Looking at that structure with another dt command showed the bit definitions:

+0x000 ExecuteDisable : Pos 0, 1 Bit
+0x000 ExecuteEnable : Pos 1, 1 Bit
+0x000 DisableThunkEmulation : Pos 2, 1 Bit
+0x000 Permanent : Pos 3, 1 Bit
+0x000 ExecuteDispatchEnable : Pos 4, 1 Bit
+0x000 ImageDispatchEnable : Pos 5, 1 Bit
+0x000 Spare : Pos 6, 2 Bits

Sicuramente questi bit si riferiscono a Protezione esecuzione dati e sembra che MmGetExecuteOptions li copi da quella struttura ai bit corrispondenti nella posizione di memoria passata come argomento di ProcessInformation a NtQueryInformationProcess. Ho quindi stabilito di poter eseguire una query sullo stato DEP di un processo chiamando NtQueryInformationProcess con un valore di ProcessInformationClass pari a 0x22, l'indirizzo di un DWORD (integer a 4 byte) e una lunghezza pari a 4. Sembra che MmGetExecuteOptions restituisca i flag solo per il processo corrente e ignori il parametro ProcessHandle (Process Explorer esegue una query sullo stato DEP di altri processi facendo in modo che il driver helper passi ad essi tramite l'API KeAttachProcess).

Ho finito, tranne che per un paio di sottili differenze sulla versione a 64 bit di Windows, dato che ho messo a disposizione una versione a 64 bit di Process Explorer. In Windows a 64 bit, MmGetExecuteOptions richiede che ProcessHandle sia -1 e restituisce un errore STATUS_INVALID_PARAMETER se il processo corrente è un processo a 64 bit, poiché Protezione esecuzione dati è sempre attivo per i processi a 64 bit. Ho usato Windbg per disassemblare la versione a 64 bit di Ntoskrnl.exe, ma da allora ho ottenuto la versione di IDA Pro che supporta il disassembly delle immagini AMD64.

FORMAZIONE INTERNALS

WINDOWS CONNECTIONS A SAN FRANCISCO

Terrò due sessioni alla conferenza Windows Connections, gestita da Windows IT Pro Magazine, che si terrà dal 17 al 20 aprile a San Francisco. Una è una sessione generale dal titolo "Understanding and Fighting Malware: Viruses, Spyware, and Rootkits", in cui spiego come il malware sfrutta le vulnerabilità per propagarsi e ignorare le misure di sicurezza, come si nasconde usando tecniche sofisticate denominate "rootkit" e come rilevarlo e rimuoverlo dal sistema.

Nell'altra sessione, dal titolo "Troubleshooting Windows Memory Problems", mostrerò come rispondere alle vecchie domande "qual è il significato dei valori che vedo in Gestione attività", "cosa sta usando la mia memoria" e "quanto deve essere grande il file di paging".

È possibile scaricare l'opuscolo della conferenza e registrarsi all'indirizzo
http://www.devconnections.com/shows/win/default.asp?s=60#

CORSO PRATICO SU WINDOWS INTERNALS/SYSINTERNALS DI MARK RUSSINOVICH

Trascorrete 5 giorni con Mark Russinovich e David Solomon, autori del nuovo libro Windows Internals, quarta edizione, apprendendo tecniche avanzate di risoluzione dei problemi e approfondendo i meccanismi interni del kernel del sistema operativo Windows NT/2000/XP/2003. Se siete professionisti IT che distribuiscono e supportano server e workstation Windows, dovete essere in grado di scavare sotto la superficie quando si verificano problemi. La conoscenza dei meccanismi interni del sistema operativo Windows e la capacità di usare strumenti avanzati per la risoluzione dei problemi aiutano ad affrontare questi problemi e a comprendere meglio le prestazioni del sistema. La conoscenza dei meccanismi interni può aiutare i programmatori a sfruttare meglio la piattaforma Windows, oltre a fornire tecniche di debug avanzate. Inoltre, poiché il corso è stato sviluppato con accesso completo al codice sorgente del kernel di Windows E ai suoi sviluppatori, potrete essere sicuri di conoscere i fatti reali.

Le prossime date sono:

  • 6-10 GIUGNO, ORLANDO, FLORIDA
  • 11-15 LUGLIO, MONACO, GERMANIA
  • 19-23 SETTEMBRE, SAN FRANCISCO, CALIFORNIA
  • 5-9 DICEMBRE, AUSTIN, TEXAS

NOTA: trattandosi di un corso pratico, ogni partecipante dovrà portare il proprio portatile (le istruzioni di configurazione verranno inviate preventivamente).

Potrete acquisire una conoscenza approfondita dell'architettura del kernel di Windows NT/2000/XP/2003, inclusi i meccanismi interni dei processi, la pianificazione dei thread, la gestione della memoria, l'I/O, i servizi, la sicurezza, il Registro di sistema e il processo di avvio. Inoltre, illustreremo tecniche avanzate per la risoluzione dei problemi, ad esempio la disinfezione del malware, l'analisi dei dump di arresto anomalo del sistema (schermata blu) e il superamento dei problemi di avvio. Verranno inoltre illustrati suggerimenti avanzati sull'uso degli strumenti chiave di www.sysinternals.com (ad esempio Filemon, Regmon e Esplora processi) per risolvere una serie di problemi di sistema e applicazioni, ad esempio computer lenti, rilevamento di virus, conflitti di DLL, problemi di autorizzazione e problemi del Registro di sistema. Questi strumenti vengono usati quotidianamente dal supporto tecnico Microsoft e sono stati applicati in modo efficace per risolvere una vasta gamma di problemi di desktop e server. Di conseguenza, acquisire familiarità con il funzionamento e l'applicazione di questi strumenti aiuterà a gestire diversi problemi in Windows. Verranno forniti esempi del mondo reale che mostrano l'applicazione efficace di questi strumenti per risolvere i problemi reali.

Per registrarvi, visitate l'indirizzo http://www.sysinternals.com/troubleshoot.shtml


Grazie per aver letto la newsletter di Sysinternals.

Pubblicata da ottoh mercoledì 5 febbraio 2005 alle 16:36

[Archivio newsletter ^] [< Volume 6, Numero 2] [Volume 7, Annuncio >speciale ]