Archive for the ‘Hardware’ Category

Spectre und Meltdown schönes Powershell-Script welches auch den Zugriff und vor allem die Mächtigkeit von NtQuerySystemInformation verdeutlicht

10 Januar 2018

Microsoft hat für die geplagten Administratoren von Windowssystemen ein kleines Powershellscript herausgegeben. Damit werden einige Infos aus dem Prozessor, BIOS/UEFI und von Windows ermittelt und dargestellt. Damit lässt sich zum momentanen Zeitpunkt dann leicht nachvollziehen, ob ein Rechner noch Updates oder Änderungseinstellungen braucht.

Hier zunächst der Link zum Powershell-Script: https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050. Hier noch die offizielle Beschreibung dazu von MS: https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in. Gleich noch der Link zur Powershell Gallery: https://www.powershellgallery.com/packages/SpeculationControl/1.0.3.

Wenn man Updates von einem Hardwarehersteller benötigt, ist auch diese Liste noch hilfreich: https://www.heise.de/newsticker/meldung/Meltdown-und-Spectre-Die-Sicherheitshinweise-und-Updates-von-Hardware-und-Software-Herstellern-3936141.html. Hier eine Liste mit Links von MS: https://support.microsoft.com/en-us/help/4073757/protect-your-windows-devices-against-spectre-meltdown.

Aber wo ich eigentlich drauf hinaus wollte, war diese nette PInvoke-Definition im Powershell-Skript:

    $NtQSIDefinition = @‘
    [DllImport("ntdll.dll")]
    public static extern int NtQuerySystemInformation(uint systemInformationClass, IntPtr systemInformation, uint systemInformationLength, IntPtr returnLength);
‚@
   
    $ntdll = Add-Type -MemberDefinition $NtQSIDefinition -Name ’ntdll‘ -Namespace ‚Win32‘ –PassThru

Um NtQuerySystemInformation sinnvoll anwenden zu können, braucht man noch etwas drumherum:

[System.IntPtr]$systemInformationPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(4)
[System.IntPtr]$returnLengthPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(4)
[System.UInt32]$systemInformationClass = 201
[System.UInt32]$systemInformationLength = 4

Nun kann man einen Aufruf wagen:

$retval = $ntdll::NtQuerySystemInformation($systemInformationClass, $systemInformationPtr, $systemInformationLength, $returnLengthPtr)

Ist $retval vom Wert 0 ist alles gut, bei 0xc0000003 oder 0xc0000002 ist $systemInformationClass nicht vorhanden. Alle anderen Werte stellen einen Fehler dar.

Nach dem Aufruf zeigt $systemInformationPtr auf einen Speicherbereich, welche die Daten vom System enthält. Diese Daten kann man z. b. so abfragen:

[System.UInt32]$flags = [System.UInt32][System.Runtime.InteropServices.Marshal]::ReadInt32($systemInformationPtr)

$flags enthält anschließend die ersten 4Bytes.

Hat man die Informationen, die einen interessieren, dann gibt man den Speicher wieder brav frei:

if ($systemInformationPtr -ne [System.IntPtr]::Zero) {
  [System.Runtime.InteropServices.Marshal]::FreeHGlobal($systemInformationPtr)
}
 
if ($returnLengthPtr -ne [System.IntPtr]::Zero) {
  [System.Runtime.InteropServices.Marshal]::FreeHGlobal($returnLengthPtr)
}

Die Freigabe sollte auch im Fehlerfall erfolgen, weshalb man ein try catch drumherum bauen sollte.

Jetzt stellt sich die Frage, wie kommt man an die gültigen SysteminformationClass-Werte und die zurückgegebenen Strukturen? Diese findet man zum Beispiel hier: http://www.exploit-monday.com/2013/06/undocumented-ntquerysysteminformation.html. Weitere Infos gibt es hier: http://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/
sysinfo/query.htm
.

Wer mehr mit der Geschichte spielen möchte, der nimmt Get-NtSystemInformation aus dem PowershellArsenal: https://github.com/mattifestation/PowerShellArsenal.

Ach wenn ich schon am verlinken bin, hier noch wie man damit PerformanceCounter abfragen kann: http://blog.whatsupduck.net/2010/05/querying-peak-commit-bytes-with.html. Oder wie man gelockte Filehandles in Erfahrung bringen kann: https://blogs.technet.microsoft.com/heyscriptingguy/2013/12/01/weekend-scripter-determine-process-that-locks-a-file/. Der Kernel weiß eben über alles Bescheid Smiley.

Wer sich für weitere Möglichkeiten von NtQuerySystemInformation interessiert, der sollte sich noch nach ZWAPI.H umschauen…

Werbeanzeigen

Hardware direkt einer virtuellen Maschine im Hyper-V mittels Discrete Device Assignment zuordnen

3 Juni 2016

Microsoft experimentiert viel mit dem Hyper-V und baut ihn in alle Richtungen aus. So gab es ganz zu Beginn von Windows 10 Powershell Cmdlets, welche es erlaubten physische Hardware direkt einer virtuellen Maschine zuzuordnen https://charbelnemnom.com/2015/02/whats-new-in-powershell-for-hyper-v-in-windows-server-technical-preview-hyperv-powershell-vnext/. Dazu gab es die Cmdlets:

Get-Command *assigna*

Name                            Version Source
—-                            ——- ——
Add-VMAssignableDevice          2.0.0.0 Hyper-V
Add-VMHostAssignableDevice      2.0.0.0 Hyper-V
Dismount-VMHostAssignableDevice 2.0.0.0 Hyper-V
Get-VMAssignableDevice          2.0.0.0 Hyper-V
Get-VMHostAssignableDevice      2.0.0.0 Hyper-V
Mount-VMHostAssignableDevice    2.0.0.0 Hyper-V
Remove-VMAssignableDevice       2.0.0.0 Hyper-V
Remove-VMHostAssignableDevice   2.0.0.0 Hyper-V

Allerdings verschwanden diese Cmdlets wieder zum Release von Windows 10, weshalb sie bei diesem Vergleich nicht auftauchten: https://newyear2006.wordpress.com/2015/07/30/umgang-mit-verschiedenen-versionen-von-powershellmodulen-und-ermittlung-von-unterschieden/.

Per Zufall stolperte ich aber über diesen Blogeintrag https://techstronghold.com/blogs/virtualization/pass-through-wired-or-wireless-wi-fi-nic-to-vm-using-hyper-v-discrete-device-assignment-dda-in-windows-server-2016, der komische Dinge vollführte. Tatsächlich hat Microsoft obige Cmdlets mit Release von v1511 bei Windows 10 wieder eingeführt! Wobei die Dokumentation, stand heute, also ein halbes Jahr nach Erscheinen von v1511, absolut erbärmlich ist. Z. B. besteht die Dokumentation von Add-VMAssignableDevice nur aus einem Template. Keine Erklärung nix.

Nun ist das Thema an sich auch recht komplex, aber man könnte ja zumindest ein paar Links für weitergehende Informationen hinterlegen. So muss man sich alles selber ergooglen.

Im Prinzip geht es um Discrete Device Assignment, kurz DDA, auch bekannt als PCI Passthrough. Dies erlaubt einer VM den direkten Zugriff auf Hardware.

Hier findet man einen Hintergrundartikel dazu: https://blogs.technet.microsoft.com/virtualization/2015/11/19/discrete-device-assignment-description-and-background/. Obwohl die Cmdlets unter Windows 10 verfügbar sind, scheint nur unter Windows Server 2016 die Unterstützung aktiviert zu sein! Dies wird in diesem Artikel geschrieben: https://blogs.technet.microsoft.com/virtualization/2015/11/20/discrete-device-assignment-machines-and-devices/.

Selbst wenn man mit dem Server 2016 unterwegs ist, muss die Hardware DDA unterstützen, ein Script welches die Hardware daraufhin überprüft, ist hier zu finden: https://github.com/Microsoft/Virtualization-Documentation/blob/master/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1.

Wenn sich mal wieder die BIOS Einstellungen nicht speichern lassen

30 Dezember 2014

Nur für künftige Aktionen, damit ich das nächste Mal nicht unnötig Batterien verbrenne. Wenn das BIOS die Meldung:

CMOS Settings Wrong
CMOS Date/Time Not Set
Press F1 to run SETUP

erscheint, so sollte man die Motherboard-Batterie austauschen, wenn es danach aber immer noch nicht klappt, hilft ein CMOS-Reset! Scheinbar war es dem NVRAM davor nicht möglich die Daten ordentlich zu speichern, obwohl beim Verlassen des BIOS keine negative Meldung angezeigt wurde, dass die Daten nicht gespeichert werden konnten.

Mit den BIOS Einstellungen kann man viel Spaß haben: https://newyear2006.wordpress.com/2012/11/27/rechner-geht-einfach-nach-anzeige-von-starting-windows-aus/

Chirp-Geräusche bei Seagate Platten

19 Februar 2013

Da nun mittlerweile einige Seagate-Platten um mich herum die netten Chirp-Geräusche von sich geben, war es an der Zeit, sich dem Thema anzunehmen. Ein netter Artikel der alles perfekt beschreibt: http://www.elasticsky.de/2012/10/seagate-barracuda-chirp/

Rechner geht einfach nach Anzeige von “Starting Windows” aus

27 November 2012

Ein cooler Fall mit simpler Lösung. Ein Rechner hatte direkt nach dem Einschalten irgendeine BIOS-Fehlermeldung mit Richtung CPU Error stehen. Die Idee war, Prozessorlüfter macht Probleme oder einfach zu viel Dreck im Rechner. So genau lässt es sich nicht mehr nachvollziehen, weil per Telefon und beiläufig beredet.

Der Rechner wurde vom Kunden sauber gemacht und überprüft, optisch war alles in Ordnung. Allerdings ließ er sich maximal in den abgesicherten Modus unter Windows 7 starten. Ein erzwungener Normalstart von Windows war nicht möglich. Da hochwertige Hardware von Intel, Asus usw. verbaut war, lag wie so oft die Vermutung an kaputter Festplatte. Also CHKDSK per Fernwartung in einfacher Form probiert und half nichts. In verschärfter Form auch nicht, aber der Rechner lief dabei ohne Probleme den ganzen Tag und widmete sich Stunde um Stunde um die Überprüfung der Festplatte, eine Seagate Momentus XT 500GB.

Nachdem der Rechner also nicht lief, die Festplatte offensichtlich in Ordnung war, wurde versucht von einer Windows 7 Installations-CD zu booten. Doch jetzt kommts: Auch beim Start von der Installations-CD dasselbe Bild wie davor. Zuerst steht “Starting Windows” die Windows Startanimation mit den vier Kugeln, wo zum pulsierenden Fenster werden, beginnt, läuft und pulsiert. Zum gefühlten Zeitpunkt wo der Anmeldebildschirm erscheinen sollte: AUS. Der Rechner hatte sich einfach abgeschaltet.

OK, Profis werden nun einwenden, dann sag halt einfach dem System, dass es bei Systemfehlern den Bluescreen darstellen soll. Aber das hatte das System auch nicht interessiert. Es ging immer einfach aus, bzw. je nach BIOS-Einstellung in den LastState, also im Zweifel hat es, nach kurzem innehalten, wieder von vorne angefangen zu booten. Die neueste BIOS-Version war schon drauf und auch ein zurücksetzen der BIOS-Einstellungen auf Default-Werte brachte nichts.

Schock, gibt es denn sowas, ein Gerät welches nicht von der Installations-CD booten kann?

In diesem Thread http://answers.microsoft.com/en-us/windows/forum/windows_7-system/windows-7-wont-boot-past-starting-windows-screen/0e7bd971-9646-4384-96b7-0e10535662be berichteten Leute über teilweise ähnliche Probleme, da war die Rede von kaputten oder leeren BIOS-Batterien. Im aktuellen Fall eher unwahrscheinlich, denn der Rechner ist gerade mal zwei Jahre alt. OK bevor man nun alle Dinge einzeln durchprobiert, könnte man vielleicht noch ein CMOS-Reset probieren. Unglaublich, das wars!! Danach startete er, wie wenn nichts gewesen wäre.

[Update]
Leider hat es sich im Nachhinein herausgestellt, dass obige Lösung nur eine vordergründige Lösung war. Erst als zusätzlich noch das Netzteil durch ein neues Netzteil ersetzt wurde lief der Rechner vollends ohne Probleme. Davor kam es je nach Auslastung wieder zu den Reboots.

Hardware MAC Adressen und deren zugehörige Firma ermitteln

27 April 2011

Oftmals steht man vor dem Problem, zu einer bestimmten MAC-Adresse den Hersteller zuordnen zu wollen.

Neben vielen Pseudo- und Schunddatenbanken im Internet ist die Referenz die IEEE Organisation.

Hier eine Datenbank wo man die betreffenden Hersteller ausfindig machen kann: http://standards.ieee.org/develop/regauth/oui/public.html

Hier etwas zum Thema der MAC-Adressen selber: http://standards.ieee.org/develop/regauth/oui/index.html

Windows Hyper-V Server 2008 R2 Netzwerkkartentreiber installieren

2 April 2011

Wer einen Microsoft Windows Hyper-V Server 2008 R2 aufsetzen will, kann über das Problem stolpern, dass die Netzwerkkarte nicht erkannt wird, weil die passenden Treiber nicht vorliegen.

Fehlermeldung
Nach der Anmeldung erscheint die Meldung “Keine aktiven Netzwerkadapter gefunden.”. Einen ähnlichen Fall hatte ich schon mal hier beschrieben: https://newyear2006.wordpress.com/2010/08/01/windows-hyper-v-r2-server-bringt-meldung-keine-aktiven-netzwerkadapter-gefunden/
Jetzt ist aber eine Installation per Commandline gar nicht so einfach.

Benötigt wird DEVCON.EXE
Ein Utility welches hier hilft ist DEVCON.EXE, allerdings wird es in der 64Bit-Version benötigt. Wenn man sich das passende WDK heruntergeladen hat, muss man nicht wie in http://social.technet.microsoft.com/wiki/contents/articles/how-to-obtain-the-current-version-of-device-console-utility-devcon-exe.aspx beschrieben vorgehen. Statt dessen kann man mittels 7zip (http://www.7zip.org) das WDK öffnen und sucht dort nach der Datei setuptools_x64fre_cab001.cab. Öffnet man diese wiederum in 7zip, erscheint die Datei _devcon.exe_00000, diese kann man direkt extrahieren und benennt sie einfach in devcon.exe um.

Netzwerkkartentreiber installieren
Man kann nun mittels

DEVCON DP_ADD <nic.inf-Datei>

die Installation des passenden Treibers vornehmen. Nun einen Neustart durchführen. Plug&Play sorgt beim Neustart für die Installation des Treibers.

Prüfen ob der Treiber korrekt geladen wird
Mittels

DEVCON STATUS =NET

kann man nun abfragen, ob der Netzwerkartentreiber geladen wird.

Falls das Serverkonfigurationsprogramm immer noch keinen Netzwerkadapter erkennt, dann hilft noch:

NETSH INTERFACE SET INTERFACE "LAN-Verbindung X” ENABLE

wobei X durch die passende Zahl ersetzt wird. Welche Werte möglich sind, wird angezeigt wenn man

NETSH INTERFACE SHOWINTERFACE

eingibt.

Geräte öffnen und sehen was drin ist

26 März 2011

Da immer mehr technische Details bei den heutigen, schnelllebigen Geräten nicht mehr auf Verpackungen oder in Beschreibungen dargestellt wird, ist manchmal der Blick ins Innere interessant. Natürlich auch wenn es ums Reparieren von Geräten geht. Eine frühere Seite hatte ich hier verlinkt: https://newyear2006.wordpress.com/2009/06/13/wie-ffne-ich-mein-notebook-oder-netbook/

Aber eine viel bessere Seite ist: http://www.ifixit.com/. Hier wird momentan alles geöffnet und detailliert dargestellt, was irgendwie momentan im Umlauf ist.

Seite mit Infos wertvollen Infos zum Reisen mit Laptop und Handy

2 Januar 2011

Wer viel individual abseits von Hotels reist, kennt die zwei größten Probleme mit aktuellem HighTech: Wo bekomme ich Strom her? Wie bekomme ich meine Daten abgeglichen.

Eine Seite mit vielen wertvollen und vor allem aktuellen Infos: http://www.laptop-junction.com/toast/. Dabei wird oftmals sogar in die technischen Details in die Tiefe eingegangen. Perfekt!

Wie öffne ich mein Notebook oder Netbook?

13 Juni 2009

Ein tolle Seite mit ewig vielen Links zu Anleitungen wie man sein Notebook bzw. Netbook zur eigenen Reparatur oder Erweiterung öffnen kann: http://repair4laptop.org/notebook.html