CLSIDs von ActiveX-Controls ermitteln
Hallo,
bei der Verwendung der Sicherheitsoption „ActiveX Steuerelemente ausführen und initialisieren“ mit der Einstellung „Vom Administrator freigegeben“ ist die Frage immer wieder da, welche CLSID hier nun freigegeben werden soll, nachdem man schon die „üblichen Verdächtigen“ á la Flash etc. bereits konfiguriert hat.
Im speziellen Fall war es die Seite von https://www.google.de , welche mit der Darstellung von Suchergebnissen “sparsam“ umgeht wenn die Sicherheitseinstellung so (oder gar deaktiviert) ist und Active Scripting aktiviert ist.
Das „Internet Explorer Compatibility Test Tool“ aus dem ACT (https://www.microsoft.com/en-us/download/details.aspx?id=7352) kann zwar bei anderen Beispielen helfen solche CLSIDs aufzudecken, wenn diese geblockt werden, in diesem Fall jedoch schweigt das Tool und hilft hier somit nicht weiter.
Wenn eine Webseite nun nur ein einziges Control laden möchte, so kann man dann die Suche nach dem fraglichen Control eingrenzen, indem man die Option „ActiveX Steuerelemente ausführen und initialisieren“ auf „Prompt“ umsetzt, was dann letztlich die folgende Meldung hervorbringt:
Ein Weg, mit dem man die CLSID dann ermitteln kann, stellt der Process Monitor dar (Download siehe https://technet.microsoft.com/de-de/sysinternals/bb896645.aspx ).
Bevor man nun den IE startet, wird der Process Monitor gestartet und das Logging auf die Registry aktiviert.
Den Filter kann man hier auch direkt auf den Prozessnamen „iexplore.exe“ setzen.
Nach der Navigation zur besagten Seite erscheint dann die Meldung “Do you want to allow software such as ActiveX Controls and plug-ins to run ?”
Ab hier kann das Logging im Process Monitor gestoppt werden.
Von unten gelesen mit der Suchrichtung “Up” sucht man dann nach CLSID
In meinem Beispiel wurde dann die folgende Zeile gefunden:
Beim Blick in die Registry handelt es sich bei diesem Control mit der CLSID {25336920-03F9-11CF-8FD0-00AA00686F13} um den Typ „HTML Document“.
Jetzt hört sich das Control „HTML Document“ ja nicht nach einem typischen ActiveX-Control an, und man sollte meinen, dass der IE ein HTML Document ohne Änderungen an den Sicherheitseinstellungen für ActiveX dann auch anzeigen könnte…
Von dem her sollte es dann doch einen Ansatz geben, welcher über das Script-Debugging im IE hier den Ansatz liefern sollte, warum das „HTML Document“ als Control geladen werden soll.
Zu diesem Zweck wird der IE wieder geschlossen und mit der leeren Seite „about:blank“ gestartet. Die Sicherheitsoption für ActiveX ist weiterhin auf „Prompt“.
Danach öffnet man die Developer Tools mit der F12-Taste, wechselt in das Tab „Script“ und klickt auf “Start Debugging” (die Schaltfläche ändert seine Bezeichnung dann auf “Stop Debugging”).
Zur besseren Lesbarkeit kann dann ab IE9 auch noch das „Format JavaScript“ aktiviert werden:
Nach der Navigation zur Seite (hier www.google.de) erscheint wieder der Prompt für das ActiveX-control.
Bevor die Option bestätigt wird, klickt man dann im Script Debugger die Pausen-Schaltfläche (Break all).
Nach der Bestätigung des Prompts mit „Ja“ oder „Nein“ springt der Debugger dann an.
Im Call-Stack bin ich dann einen Level weiter nach unten auf die Funktion „open“ gegangen und habe dann den folgenden Code gesehen:
Somit ist es die Anweisung „new window.ActiveXObject("htmlfile")“ welche hier explizit ein ActiveX-Control erstellt.
Mit einem kurzen Blick in die Registry wird dann auch der restliche Weg zur CLSID ersichtlich:
[HKEY_CLASSES_ROOT\htmlfile]
(default)="HTML Document"
[HKEY_CLASSES_ROOT\htmlfile\CLSID]
(Default)="{25336920-03F9-11cf-8FD0-00AA00686F13}"
Wenn nun also die ActiveX-Option “Vom Administrator genehmigt“ verwendet wird, so sollte damit dann auch diese CLSID entsprechend mit dem folgenden Registry-Key freigegeben werden:
[HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls]
(DWORD)"{25336920-03f9-11cf-8fd0-00aa00686f13}"=0
Viele Grüße,
Heiko