Remote Desktop vanuit het perspectief van de aanvaller

1. Inleiding

Bedrijven die geen systemen voor externe toegang hadden opgezet, hebben deze enkele maanden geleden in allerijl uitgerold. Niet alle beheerders waren voorbereid op deze 'hitte', wat resulteerde in beveiligingsfouten: onjuiste configuratie van diensten of zelfs het installeren van verouderde versies van software met eerder ontdekte kwetsbaarheden. Sommigen hebben al de gevolgen van deze fouten ondervonden, anderen hadden meer geluk, maar het is zeker dat iedereen lessen moet trekken. De loyaliteit aan thuiswerken is aanzienlijk toegenomen, en steeds meer bedrijven beschouwen remote werken als een aanvaardbare langetermijnoplossing.

Er zijn veel opties voor het waarborgen van externe toegang: verschillende VPN's, RDS en VNC, TeamViewer en anderen. Beheerders hebben veel keuze, afhankelijk van de specifieke opbouw van het bedrijfsnetwerk en de apparaten daarin. VPN-oplossingen blijven het populairst, maar veel kleine bedrijven kiezen RDS (Remote Desktop Services) omdat die eenvoudiger en sneller zijn in implementatie.

In dit artikel zullen we dieper ingaan op de beveiliging van RDS. We geven een kort overzicht van bekende kwetsbaarheden en bekijken enkele scenario's voor het starten van een aanval op netwerkinfrastructuur gebaseerd op Active Directory. We hopen dat ons artikel iemand helpt om lessen te trekken en de beveiliging te verbeteren.

2. Recente kwetsbaarheden in RDS/RDP

Elke software bevat fouten en kwetsbaarheden die door aanvallers worden uitgebuit, en RDS vormt hierop geen uitzondering. Recentelijk heeft Microsoft vaak melding gemaakt van nieuwe kwetsbaarheden, en we hebben besloten om hier een kort overzicht van te geven:

Deze kwetsbaarheid brengt gebruikers die verbinding maken met een gecompromitteerde server in gevaar. Een aanvaller kan de controle krijgen over het apparaat van de gebruiker of zich in het systeem vestigen om permanente externe toegang te verkrijgen.

Deze groep kwetsbaarheden stelt een niet-autorisatie aanvaller in staat om willekeurige code op een server met RDS op afstand uit te voeren via een speciaal gevormd verzoek. Ze kunnen ook worden gebruikt om wormen te creëren — malware die zelfstandig naburige netwerkapparaten infecteert. Deze kwetsbaarheden kunnen dus het hele netwerk van een bedrijf in gevaar brengen en alleen tijdige updates kunnen bescherming bieden.

Software voor remote toegang heeft zowel de aandacht van onderzoekers als kwaadwillenden getrokken, dus misschien horen we binnenkort over nieuwe soortgelijke kwetsbaarheden.

Het goede nieuws is dat niet voor alle kwetsbaarheden publieke exploits beschikbaar zijn. Het slechte nieuws is dat het voor een kwaadwillende met expertise niet moeilijk zal zijn om een exploit voor een kwetsbaarheid te schrijven op basis van een beschrijving, of door technieken zoals Patch Diffing te gebruiken (hierover hebben onze collega’s geschreven in artikel). Daarom raden we aan om software regelmatig bij te werken en op de hoogte te blijven van nieuwe meldingen van ontdekte kwetsbaarheden.

3. Aanvallen

We gaan verder met het tweede deel van het artikel waarin we laten zien hoe aanvallen op netwerkinfrastructuur die is gebaseerd op Active Directory beginnen.

De beschreven methoden zijn van toepassing op het volgende model van aanvaller: een kwaadwillende die beschikt over een gebruikersaccount en toegang heeft tot de Remote Desktop Gateway — een terminalserver (deze is vaak toegankelijk vanuit een externe netwerken). Door deze methoden toe te passen, kan de aanvaller de aanval op de infrastructuur voortzetten en zijn aanwezigheid in het netwerk consolideren.

De netwerkinfrastructuur kan in elk specifiek geval verschillen, maar de beschreven technieken zijn vrij universeel.

Voorbeelden van ontsnapping uit een beperkte omgeving en het verhogen van privileges

Bij toegang tot de Remote Desktop Gateway zal de aanvaller waarschijnlijk worden geconfronteerd met een beperkte omgeving. Bij het verbinden met de terminalserver wordt er een applicatie gestart: een venster voor verbinding via het Remote Desktop-protocol voor interne bronnen, een verkenner, office pakketten of enige andere software.

Het doel van de aanvaller zal zijn om toegang te krijgen tot de uitvoering van commando's, dat wil zeggen om cmd of PowerShell te starten. Hierbij kunnen verschillende klassieke ontsnappingstechnieken voor Windows van pas komen. Laten we ze verder bekijken.

Optie 1. De aanvaller heeft toegang tot het Remote Desktop-verbinding venster binnen de Remote Desktop Gateway:

Remote Desktop vanuit het perspectief van de aanvaller

Het menu 'Toon opties' wordt geopend. Er verschijnen opties om met de configuratiebestanden van de verbinding te manipuleren:

Remote Desktop vanuit het perspectief van de aanvaller

Vanuit dit venster is het mogelijk om ongehinderd toegang te krijgen tot de Verkenner door op een van de knoppen 'Openen' of 'Opslaan' te drukken:

Remote Desktop vanuit het perspectief van de aanvaller

De Verkenner wordt geopend. De 'adresbalk' biedt de mogelijkheid om goedgekeurde uitvoerbare bestanden te starten, evenals het opsommen van de bestandssystemen. Dit kan nuttig zijn voor de aanvaller in gevallen waarin de systeemschijven verborgen zijn en directe toegang tot hen onmogelijk is:

Remote Desktop vanuit het perspectief van de aanvaller

→ Demo-video

Een dergelijk scenario kan bijvoorbeeld worden gereproduceerd door Excel uit het Microsoft Office-pakket als externe software te gebruiken.

→ Demo-video

Bovendien moet men de macro's niet vergeten die in dit kantoorprogramma worden gebruikt. Onze collega's hebben de beveiligingsproblemen van macro's in dit artikel.

Optie 2. Met dezelfde invoer als in de vorige variant start de aanvaller meerdere verbindingen naar de externe desktop onder dezelfde account. Bij het opnieuw verbinden zal de eerste worden gesloten, en op het scherm verschijnt een venster met een foutmelding. De helpknop in dit venster roept Internet Explorer op de server op, waarna de aanvaller naar de Verkenner kan gaan.

→ Demo-video

Optie 3. Bij ingestelde beperkingen voor het uitvoeren van uitvoerbare bestanden kan de aanvaller in een situatie komen waarin groepsbeleid de uitvoering van cmd.exe door de beheerder verbiedt.

Er is een manier om dit te omzeilen door een bat-bestand op de externe desktop uit te voeren met een inhoud zoals cmd.exe /K . De fout bij het uitvoeren van cmd en een succesvol voorbeeld van de uitvoering van het bat-bestand zijn hieronder afgebeeld.

Remote Desktop vanuit het perspectief van de aanvaller

Optie 4. Het verbieden van de uitvoering van applicaties met zwarte lijsten op basis van de namen van uitvoerbare bestanden is geen panacee, deze kunnen worden omzeild.

Laten we het volgende scenario overwegen: we hebben de toegang tot de opdrachtprompt verboden, Internet Explorer en PowerShell geblokkeerd via groepsbeleid. De aanvaller probeert hulp op te roepen — geen reactie. Probeert PowerShell te starten via het contextmenu van het modaal venster dat is opgewekt met ingedrukte Shift-toets — melding over het verbod op uitvoering door de beheerder. Probeert PowerShell te starten via de adresbalk — weer geen reactie. Hoe omzeilen we deze beperking?

Het is voldoende om powershell.exe uit de map C:WindowsSystem32WindowsPowerShellv1.0 naar de gebruikersmap te kopiëren, de naam te wijzigen naar iets anders dan powershell.exe, en dan kan het worden uitgevoerd.

Standaard wordt er bij het verbinden met de externe desktop toegang verleend tot de lokale schijven van de cliënt, van waaruit de aanvaller powershell.exe kan kopiëren en na hernoemen kan uitvoeren.

→ Demo-video

We have listed only a few methods to bypass restrictions; many scenarios can be imagined, but they all share the same outcome in Windows Explorer. There are numerous applications that use standard Windows tools for file operations, and by placing them in a restricted environment, similar techniques can be applied.

4. Recommendations and Conclusion

As we can see, even in a restricted environment, there is room for attack development. However, it is possible to complicate the attacker's life. We provide general recommendations that will be useful in both the scenarios we discussed and in other cases.

  • Limit program execution with black/white lists using group policies.
    In most cases, there is still a possibility of code execution. We recommend reviewing the project LOLBAS, to understand undocumented ways to manipulate files and execute code in the system.
    We recommend combining both types of restrictions: for example, allow the execution of executable files signed by Microsoft, but restrict the execution of cmd.exe.
  • Disable the settings tabs in Internet Explorer (this can be done locally in the registry).
  • Disable the call to the built-in Windows help via regedit.
  • Disable the ability to mount local drives for remote connections, unless this restriction is critical for users.
  • Restrict access to the local drives of the remote machine, allowing access only to user folders.

We hope you found this at least interesting, and at most — that this article helps make your company's remote work safer.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster