# UltraVNC

UltraVNC (auch Ultr@VNC, Uvnc) ist eine VNC-Software für Windows und dient zur Fernwartung von Computern. Neben allen VNC-Funktionen implementiert Ultravnc zudem erheblich effizientere Komprimierungsalgorithmen sowie sehr systemnahe und damit leistungsfähige Techniken zum Abfangen des Serverbildschirms (Grabbing). UltraVNC nutzt spezielle Windows-Dienste und bietet daher – abgesehen von einem Java-Viewer – auch nur Client/Server-Software für Windows-Betriebssysteme an.
UltraVNC ist in der Programmiersprache C++ programmiert. Das plattformunabhängige UltraVNC-Javaclient-Applet ist in Java programmiert. UltraVNC läuft auf allen Windows-Versionen von Windows 95 bis Windows 11 und wird unter der GPL entwickelt.

## Hintergründe

Mithilfe eines UltraVNC-Viewers (Client) ist man in der Lage, auf einen UltraVNC-Server (über TCP/IP) zuzugreifen und Eingaben und Veränderungen auf diesem Remoterechner durchzuführen, um im Gegenzug von diesem die Bildschirmausgaben zu empfangen. Auf diese Weise gewinnt der Betrachter, der das Viewer-Programm benutzt, den Eindruck, direkt vor dem entfernten Rechner ("remote") zu sitzen.

## Funktionsumfang des Programmpakets

Prinzipiell kann der UltraVNC-Viewer auch mit anderen VNC-Servern Kontakt aufnehmen sowie der UltraVNC-Server auch von anderen VNC-Viewern kontaktiert werden. Dabei stehen dann allerdings nur die grundlegenden Funktionen (Steuerung von Maus und Tastatur sowie Empfang des Bildschirminhalts) zur Verfügung und nicht der volle Funktionsumfang des Programmes, und zwar im Detail:
* Dateiübertragungsfunktion – Es können Dateien über einen eigenen Dateimanager in der Zweifenstertechnik ausgetauscht werden. Dabei kann der Benutzer individuell entscheiden, ob Dateien auf den entfernten PC hin kopiert werden sollen oder eine Datei vom entfernten Rechner geholt werden soll. Wenn das Verschlüsselungs-Plug-in installiert ist, wird auch die Dateiübertragung damit verschlüsselt.
* Textbasierte Chatfunktion – ideal für die Kommunikation der beteiligten Nutzer über eine bestehende VNC-Verbindung.
* RFB-Protokollunterstützung – Ab der Version 1.0.9.x unterstützt UltraVNC das Remote-Framebuffer-Protokoll in der Version 3.8, das von vielen VNC-Derivaten unterstützt wird.
* Verschiedene Authentifizierungsverfahren – Für den Zugriff auf den Server ist ein Passwort notwendig. Dieses ist nur in den ersten acht Stellen DES verschlüsselt. Zusätzlich gibt es noch die Möglichkeit, das MS-Logon-I-Verfahren für NT-Domänen zu verwenden. Darüber hinaus ist auch das MS-Logon-II-Verfahren für die Anbindung an einen Verzeichnisdienst, wie z. B. der Microsoft Active Directory, möglich. Durch die Möglichkeit der Authentifizierung über MS Logon I und II kann die jeweilige Benutzerverwaltung mit ihren entsprechenden Gruppen und Benutzerrechten verwendet werden.
* Verschlüsselung der Verbindung mit individuellem Key – Mit Hilfe der modularen Integration der kostenfreien DSM-Plugins lässt sich eine sichere RC4- bzw. AES-Verschlüsselung zwischen UltraVNC-Server und -Viewer bis zu einer Schlüssellänge von 128-Bit in UltraVNC generieren. Das RC4-DSM-Plugin wird während der Installation von UltraVNC mit installiert. Das RC4-DSM-Plugin ermöglicht z. B. die Erstellung einer individuellen rc4.key-Datei, die beim UltraVNC-Server wie auch UltraVNC-Viewer vorhanden sein muss, damit die Verschlüsselung ermöglicht wird. Seit der UltraVNC-Version 1.0.9.5 und neuer wird das neue DSM-Verschlüsselungsplugin von Adam Walling mit installiert. Dieses kann bei Verwendung von UltraVNC eine asymmetrische Verschlüsselung von bis zu RSA 3072-Bit verwenden und für die symmetrische Verschlüsselung auf AES 256-Bit aufbauen. Andere symmetrische Verschlüsselungen sind ebenfalls konfigurierbar. Ist das SecureVNC-DSM-Plugin in den administrativen Einstellungen über den UltraVNC Server aktiviert, wird auch ohne weitere Konfiguration auf Basis eines durch das VNC-Standardpasswort generierten Hashwertes eine 2048-Bit-RSA- und 256-Bit-AES-Verschlüsselung aufgebaut.
* Unterstützung für mehrere Clients – Die UltraVNC-Serversignale können von einer fast beliebigen Anzahl von "Viewern" aufgegriffen und angezeigt werden. Diese Funktion ist ideal für Schulungen und Präsentationen über das Netzwerk. Damit können Schüler oder Betrachter der Präsentation die Darstellung des Lehrers oder Präsentierenden verfolgen.
* Stufenlose Skalierung – Der Serverbildschirm kann durch die Angabe der entsprechenden Option auf die passende Bildschirmauflösung des Viewers übertragen werden. Die Angabe der Skalierung erfolgt in Prozentwerten. Die Skalierungseinstellung kann auch beim anfragenden UltraVNC-Viewer in den Optionen angegeben werden.
* Bildschirmselektierung – Seit UltraVNC 1.0.9.5 und neuer kann bei PCs mit mehreren Monitoren im UltraVNC-Viewer festgelegt werden, auf welchem Monitor die Anzeige bzw. Ausgabe des Remotezugriffs erfolgen soll.
* Grafische Toolbar – Mit Hilfe der grafischen Toolbar kann eine Vielzahl von Routinetätigkeiten während einer Verbindung abgerufen oder initiiert werden.
* TAB-Viewer-Funktionalität – Der TAB-Viewer, auch als DirectX-Viewer bezeichnet, war Bestandteil der regulären Installationsroutine. Er benötigt wesentlich mehr Ressourcen als der reguläre UltraVNC-Viewer. Dafür ermöglicht der TAB-Viewer die Überwachung mehrerer UltraVNC-Server mit nur einem Programm gleichzeitig. Für jede Verbindungssitzung zu einem entfernten PC wird nur ein Register im TAB-Viewer geöffnet. Der TAB-Viewer kann so eingestellt werden, dass er für jede bestehende Verbindung beim Beenden des TAB-Viewers eine *.vnc-Konfigurationsdatei in einem temporären Unterverzeichnis des TAB-Viewers abspeichert und beim Neustart des TAB-Viewers diese Konfigurationsdateien automatisch aufruft, abarbeitet und die entsprechenden Verbindungen auch ohne Neuangabe der individuellen Optionen und jeweiligen Passwörter wieder aufbaut. Dieses Modul wird zurzeit nicht weiterentwickelt.
* Serverbildschirm kann gesperrt werden – In den Optionen kann eingetragen werden ob der Benutzer, der vor dem UltraVNC-Server sitzt, Eingaben mit der Maus und der Tastatur machen darf. In der Toolbar ist diese Funktion mit einem Icon versehen und kann sehr einfach aktiviert oder deaktiviert werden. Mit Hilfe dieser Funktion will man die Aufmerksamkeit des Benutzers, der vor dem UltraVNC-Server sitzt, erhöhen.
* JavaViewer mit Dateiübertragungsfunktion – Befindet sich auf dem Clientbrowser zwar nicht ein VNC-Viewer, aber ein Browser mit aktueller JRE installiert, so kann ein vom UltraVNC-Server zur Verfügung gestelltes Applet als Client genutzt werden, welches jedoch nur die grundlegenden Clientfunktionen zur Verfügung stellt.
* Einbindung als Dienst im System – UltraVNC kann bei der Installation auf allen Windows-NT-Betriebssystemen als Systemdienst installiert werden. Damit ist via UltraVNC auch der Zugriff auf ein abgemeldetes Windowssystem möglich. Auf diese Weise kann auch sichergestellt werden, dass Benutzer ohne Administratorrecht den Remote-Zugriff nicht deaktivieren können.
* Mirror-Treiber – Der UltraVNC-Mirror-Treiber wird auf dem entfernten Rechner ("remote") als Videotreiber installiert, sodass er für die Windows-Installation eine Grafikkarte simuliert. Dadurch können die Bildschirminhalte bereits auf Kernel-Space-Ebene abgegriffen werden, was die CPU-Belastung des UltraVNC-Servers erheblich reduziert.
* SingleClick-Version – Auf Basis von UltraVNC ist es möglich, einen verkleinerten und optimierten UltraVNC-Server so zu konfigurieren, dass bei seiner Ausführung dieser versucht, einen im Listen-Mode befindlichen Viewer auch über das Internet oder im LAN zu erreichen. Es handelt sich dabei um eine einzelne ausführbare Datei, die vorzüglich dafür verwendet wird, Kunden bei Softwareproblemen eine einfache Möglichkeit zu bieten, sich mit einem Kundendienst in Verbindung zu setzen.
* Einzelne, ausgewählte Desktopfenster können übertragen werden – Um die notwendige Übertragungsbandbreite zu reduzieren und die Aufmerksamkeit des Betrachters auf das Wesentliche zu erhöhen, besteht die Möglichkeit, nur einzelne Desktopfenster und nicht den ganzen Bildschirm zu übertragen. Diese Option kann per Mausklick in der Toolbar bzw. im Servermodul eingetragen und aktiviert werden.
* INI-Konfigurationsdatei – In der Version 1.0.3 und höher ist eine Konfiguration des UltraVNC-Servers nicht mehr über die Windows-Registrierung notwendig. Diese Aufgabe übernimmt eine spezielle ultravnc.ini-Datei, die sich im selben Verzeichnis befinden muss, in der sich auch der Server befindet. Das Installationsprogramm enthält ein eigenständiges Programm, um eine optimale Konfigurationsdatei mit allen möglichen Optionen zu erstellen. Dieses Programm wird als uvnc_settings bezeichnet. Bei Veränderungen der ultravnc.ini-Datei, die über die administrativen Einstellungen des UltraVNC-Servers als auch über das uvnc_settings-Tool geschehen kann, muss der Nutzer über die entsprechenden Benutzerrechte verfügen.
* Portable Anwendung – Beide Programmkomponenten, UltraVNC-Viewer wie -Server, können auch ohne Installation verwendet werden. Sie sind damit auch für den Start vom USB-Stick geeignet.

## Kritik

Schwachstelle von UltraVNC ist die Speicherung des Zugangspasswortes, das nur mit DES verschlüsselt wird. Mit dieser in den 1970ern von IBM entwickelten Verschlüsselung werden nur die ersten acht Zeichen mit maximal 56-Bit verschlüsselt. Jedes weitere Zeichen eines Passwortes wird unverschlüsselt kodiert. Die Passwortverschlüsselung und die damit verbundene Sicherheit kann nicht direkt verbessert werden, da sie eine Altlast vom Design des Remote-Framebuffer-Protokolls ist, d. h. in dessen Spezifikation so definiert ist. Durch die Verwendung der DSM-Verschlüsselungserweiterung von Adam Walling kann dieses Manko beseitigt werden.