Die von Symantec entdeckte Malware Frebniis missbraucht eine Funktion im Microsoft Microsofts Internet Information Services (IIS), um eine Backdoor auf Zielsystemen einzurichten.

The Frebniis malware discovered by Symantec abuses a feature in Microsoft’s Internet Information Services (IIS) to install a backdoor on target systems.

Das Threat Hunter Team von Symantec hat eine neue Malware namens Frebniis (Backdoor.Frebniis) entdeckt, die eine Funktion von Microsofts Internet Information Services (IIS) missbraucht, um eine Backdoor auf Zielsystemen einzurichten. Diese wurde von einem derzeit unbekannten Bedrohungsakteur gegen Ziele in Taiwan eingesetzt.

Bei der von Frebniis verwendeten Technik wird bösartiger Code in den Speicher einer DLL-Datei (iisfreb.dll) injiziert, die zu einer IIS-Funktion gehört, die zur Fehlersuche und Analyse fehlgeschlagener Webseitenanfragen dient. Auf diese Weise kann die Malware heimlich alle HTTP-Anfragen überwachen und speziell formatierte HTTP-Anfragen erkennen, die vom Angreifer gesendet werden, was die Ausführung von Remote-Code ermöglicht. Um diese Technik nutzen zu können, muss sich ein Angreifer auf andere Weise Zugang zu dem Windows-System verschaffen, auf dem der IIS-Server läuft. In diesem speziellen Fall ist unklar, wie dieser Zugriff erreicht wurde.

Ereignispufferung für fehlgeschlagene Anfragen

IIS ist ein allgemeiner Webserver, der auf Windows-Systemen läuft, um angeforderte HTML-Seiten oder Dateien bereitzustellen. Ein IIS-Webserver nimmt Anfragen von entfernten Client-Computern entgegen und gibt die entsprechende Antwort zurück. IIS verfügt über eine Funktion, die als Failed Request Event Buffering (FREB) bekannt ist und Daten und Details über Anfragen sammelt, wie z. B. die IP-Adresse und den Port des Absenders, HTTP-Header mit Cookies usw.

Eine Funktion namens Failed Request Tracing kann zur Fehlersuche bei fehlgeschlagenen IIS-Anfragen verwendet werden. Failed Request Tracing puffert die Trace-Ereignisse für eine Anfrage und speichert sie auf der Festplatte, wenn die Anfrage die vom Benutzer festgelegte Definition von „fehlgeschlagen“ erfüllt. Die Verfolgung fehlgeschlagener Anfragen kann beispielsweise verwendet werden, um herauszufinden, warum Anfragen einen bestimmten HTTP-Statuscode (401 oder 404 usw.) zurückgeben oder warum die Bearbeitung einer Anfrage zu lange dauert oder sie nicht beantwortet wird.

Stealth Code Hijacking von IIS

Frebniis stellt sicher, dass die Verfolgung fehlgeschlagener Anfragen aktiviert ist, und greift dann auf den Prozessspeicher von w3wp.exe (IIS) zu, um die Adresse zu erhalten, an der der Code für die Ereignispufferung fehlgeschlagener Anfragen (iisfreb.dll) geladen ist.  Mit dieser Code-Startadresse sucht Frebniis von dort aus nach einer Funktionszeigertabelle, um die Code-Ausführung zu entführen.

Die Autoren von Frebniis haben festgestellt, dass ein bestimmter Funktionszeiger in iisfreb.dll von iiscore.dll aufgerufen wird, sobald eine HTTP-Anfrage von einem Web-Client an IIS gestellt wird. Diese Funktion prüft normalerweise, ob der Inhalt der HTTP-Anfrage den Regeln für die Verfolgung fehlgeschlagener Anfragen entspricht.

Frebniis entführt diese Funktion, indem es seinen eigenen bösartigen Code in den IIS-Prozessspeicher einschleust und dann diesen Funktionszeiger durch die Adresse seines eigenen bösartigen Codes ersetzt. Dieser Hijack-Punkt ermöglicht es Frebniis, heimlich jede HTTP-Anfrage an den IIS-Server zu empfangen und zu untersuchen, bevor er zur ursprünglichen Funktion zurückkehrt.

Hintertür

Der von Frebniis eingeschleuste bösartige Code analysiert alle empfangenen HTTP-POST-Anfragen für /logon.aspx oder /default.aspx zusammen mit einem auf „7ux4398!“ gesetzten Parameter password. Wenn das Kennwort übereinstimmt, entschlüsselt Frebniis einen Teil des eingeschleusten Codes, bei dem es sich um ausführbaren .NET-Code handelt, der die Hauptfunktionen der Hintertür enthält, und führt ihn aus. Bei diesem Vorgang werden keine ausführbaren Dateien auf der Festplatte gespeichert, so dass die Hintertür völlig unbemerkt bleibt.

Der .NET-Code bietet Proxy-Funktionalität und Remote-Code-Ausführung, die durch einen zweiten HTTP-Parameter gesteuert wird, der eine Base64-kodierte Zeichenfolge ist.

Um den Proxy zu aktivieren, wird die verschlüsselte Zeichenfolge in Base64 decodiert und dann entschlüsselt (xor 0x08), wobei das erste Zeichen einen Proxy-Befehl darstellt, gefolgt von den erwarteten Parametern. Der Proxy wird verwendet, um Base64-kodierte Daten von anderen Computersystemen zu senden und zu empfangen. Dadurch können die Angreifer über den kompromittierten IIS-Server mit internen Ressourcen kommunizieren, die normalerweise für das Internet gesperrt sind.

Der .NET-Backdoor-Code unterstützt auch die Remote-Ausführung. Wenn ein HTTP-Aufruf an logon.aspx oder default.aspx ohne den Kennwortparameter, aber mit der Base64-Zeichenfolge empfangen wird, wird angenommen, dass die Base64-Zeichenfolge C#-Code ist, der direkt im Speicher ausgeführt wird. Die Base64-Zeichenfolge wird dekodiert und dann entschlüsselt (xor 0x08) und als XML-Dokument mit dem auszuführenden C#-Code im Knoten „/doc“ unter dem Attribut „data“ erwartet (z. B. <doc data=C# code>).  Der C#-Code wird extrahiert und ausgeführt. Dies ermöglicht es Frebniis, heimlich beliebigen Code auf dem System auszuführen.

Durch Entführung und Änderung des IIS-Webservercodes kann Frebniis den regulären Fluss der HTTP-Anforderungsbearbeitung abfangen und nach speziell formatierten HTTP-Anforderungen suchen. Diese Anfragen ermöglichen die Ausführung von Remote-Code und den Zugriff auf interne Systeme auf unauffällige Art und Weise. Es werden keine Dateien oder verdächtigen Prozesse auf dem System ausgeführt, was Frebniis zu einer einzigartigen und seltenen Art von HTTP-Backdoor macht, die in freier Wildbahn auftritt.

Symantec’s Threat Hunter Team has discovered a new malware called Frebniis (Backdoor.Frebniis) that abuses a feature of Microsoft’s Internet Information Services (IIS) to set up a backdoor on target systems. This was used by a currently unknown threat actor against targets in Taiwan.

The technique used by Frebniis involves injecting malicious code into the memory of a DLL file (iisfreb.dll) related to an IIS feature used to troubleshoot and analyze failed web page requests. This allows the malware to stealthily monitor all HTTP requests and recognize specially formatted HTTP requests sent by the attacker, allowing for remote code execution. In order to use this technique, an attacker needs to gain access to the Windows system running the IIS server by some other means. In this particular case, it is unclear how this access was achieved.

Failed Request Event Buffering

IIS is a general-purpose web server that runs on Windows systems to serve requested HTML pages or files. An IIS web server accepts requests from remote client computers and returns the appropriate response. IIS has a feature known as Failed Request Event Buffering (FREB) that collects data and details about requests, such as originating IP address and port, HTTP headers with cookies, etc.

A feature called Failed Request Tracing can be used to troubleshoot IIS failed requests. Failed Request Tracing buffers the trace events for a request and flushes them to disk if the request meets the definition of “fail” set by the user. Failed request tracing can, for example, be used to learn why requests are returning a specific HTTP status code (401 or 404, etc.), or why a request is taking too long to process, or is not responding.

Stealth Code Hijacking of IIS

Frebniis ensures Failed Request Tracing is enabled and then accesses w3wp.exe (IIS) process memory, obtaining the address of where the Failed Request Event Buffering code (iisfreb.dll) is loaded.  With this code start address, Frebniis searches from there for a function pointer table to hijack code execution.

The authors of Frebniis have determined that a particular function pointer within iisfreb.dll is called by iiscore.dll whenever any HTTP request is made to IIS from a web client. This function normally checks if the content of the HTTP request matches the Failed Request Tracing rules.

Frebniis hijacks this function by injecting its own malicious code into IIS process memory and then replacing this function pointer with the address of its own malicious code. This hijack point allows Frebniis to stealthily receive and inspect every HTTP request to the IIS server before returning to the original function.

Backdoor

The Frebniis malicious injected code parses all received HTTP POST requests for /logon.aspx or /default.aspx along with a parameter password set to ‘7ux4398!’. If the password matches, Frebniis decrypts and executes a section of the injected code, which is .NET executable code consisting of the main backdoor functionality. No executables are saved to disk in this process, keeping the backdoor completely stealthy.

The .NET code provides proxying functionality and remote code execution controlled by a provided second HTTP parameter that is a Base64 encoded string.

To enable the proxy, the encoded string is Base64 decoded and then decrypted (xor 0x08), with the first character representing a proxy command followed by expected parameters. The proxy is used to send and receive Base64 encoded data from other computer systems. This allows the attackers to communicate with internal resources that may normally be blocked from the internet via the compromised IIS server.

The .NET backdoor code also supports remote execution. If an HTTP call to logon.aspx or default.aspx is received without the password parameter, but with the Base64 string, the Base64 string is assumed to be C# code that will be executed straight in memory. The Base64 string is decoded and then decrypted (xor 0x08) and is expected to be an XML document with the C# code to be executed in the ‘/doc’ node under the ‘data’ attribute (E.g. <doc data=C# code>).  The C# code is extracted and executed. This allows Frebniis to stealthily execute arbitrary code on the system.

By hijacking and modifying IIS web server code, Frebniis is able to intercept the regular flow of HTTP request handling and look for specially formatted HTTP requests. These requests allow remote code execution and proxying to internal systems in a stealthy manner. No files or suspicious processes will be running on the system, making Frebniis a unique and relatively rare type of HTTP backdoor seen in the wild.

Von Jakob Jung

Dr. Jakob Jung ist Chefredakteur Security Storage und Channel Germany. Er ist seit mehr als 20 Jahren im IT-Journalismus tätig. Zu seinen beruflichen Stationen gehören Computer Reseller News, Heise Resale, Informationweek, Techtarget (Storage und Datacenter) sowie ChannelBiz. Darüber hinaus ist er für zahlreiche IT-Publikationen freiberuflich tätig, darunter Computerwoche, Channelpartner, IT-Business, Storage-Insider und ZDnet. Seine Themenschwerpunkte sind Channel, Storage, Security, Datacenter, ERP und CRM. Dr. Jakob Jung is Editor-in-Chief of Security Storage and Channel Germany. He has been working in IT journalism for more than 20 years. His career includes Computer Reseller News, Heise Resale, Informationweek, Techtarget (storage and data center) and ChannelBiz. He also freelances for numerous IT publications, including Computerwoche, Channelpartner, IT-Business, Storage-Insider and ZDnet. His main topics are channel, storage, security, data center, ERP and CRM. Kontakt – Contact via Mail: jakob.jung@security-storage-und-channel-germany.de

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Hinweis von Real Cookie Banner