Arbitrary code execution in Greenshot
Eén simpele dubbelklik. Meer is er soms niet nodig om een aanvaller toegang te geven tot je computer. In deze blogpost laten we zien hoe eenvoudig dit kan zijn. We demonstreren hoe alledaags gebruikte software de deur opent voor een aanvaller. Hierbij laten we fictief slachtoffer Alice kwaadaardige code uitvoeren op het moment dat zij een bestand opent.
Software
In kantooromgevingen wordt vaak gebruikgemaakt van veel verschillende soorten software. Veel organisaties gebruiken bijvoorbeeld programma’s om snel en eenvoudig screenshots te maken en bewerken. Een bekende en veelgebruikte tool hiervoor is Greenshot. De tool is gratis en eenvoudig in gebruik.
Na de installatie wordt de bestandsextentie .greenshot automatisch gekoppeld aan Greenshot. Dit betekent dat een bestand met de naam test.greenshot standaard wordt geopend met Greenshot. Dit vormt een belangrijke randvoorwaarde voor een specifieke aanval. Hieronder leggen we dit in meer detail uit.
De kwetsbaarheid
De meest recente stabiele versie van Greenshot is uitgebracht in 2017. Sindsdien heeft de ontwikkelaar geen stabiele updates, patches of security updates meer uitgebracht. Hierdoor is een kwetsbaarheid die in 2023 is ontdekt nog steeds van toepassing op alle bestaande versies van Greenshot en is deze tot op heden niet verholpen.
De details van de kwetsbaarheid zijn online gepubliceerd. De werking is als volgt: als gebruiker van Greenshot kun je een gemaakt screenshot bewerken. Denk bijvoorbeeld aan het toevoegen van tekst, een pijl of rode omlijning om iets in het screenshot aan te duiden zoals in dit voorbeeld:
Het is mogelijk om tijdens het bewerken van een screenshot de aanpassingen op te slaan, zodat het bewerken op een later moment kan worden hervat. De aanpassingen worden dan opgeslagen in een bestand met de extensie .greenshot:
Het opslaan is handig want het zorgt ervoor dat je wijzigingen niet verloren gaan.
Onder water worden de aanpassingen opgeslagen in een .NET-object via serialisatie. Dit is een proces waarbij de status en inhoud van een object kan worden opgeslagen of verzonden. Deze geserialiseerde data kan later weer worden gedeserialiseerd om het oorspronkelijk object te reconstrueren.
Binnen .NET kan serialisatie worden toegepast voor diverse doeleinden zoals bijvoorbeeld voor gegevensuitwisseling tussen applicaties. In het geval van Greenshot wordt serialisatie bijvoorbeeld gebruikt voor het bewaren van de aanpassingen bij het bewerken van een afbeelding.
Bij het openen van het .greenshot bestand wordt de inhoud van het bestand gedeserialiseerd. Tijdens dit proces controleert Greenshot onvoldoende wat de inhoud van het bestand precies is. In dit geval kan een aanvaller hier misbruik van maken door kwaadaardige code in een .greenshot bestand te verwerken. Deze kwaadaardige code wordt direct na het openen van het bestand uitgevoerd.
Proof of concept
Goed verhaal tot nu toe, maar laat maar gewoon zien dan! Dat gaan we hieronder doen. Het doel is om het principe van de aanval en het bereiken van code execution aan te tonen. Fancy hacker dingen zoals het omzeilen van antivirus- of EDR-oplossingen vallen voor nu even buiten de scope van deze blogpost.
In een simpel voorbeeld simuleren we een aanvaller die het voor elkaar heeft gekregen om een kwaadaardig .greenshot bestand te delen met doelwit Alice. Op het moment dat het bestand wordt geopend zal de volgende code worden uitgevoerd:
set username > %HOMEPATH%\gehakt.txt
Deze code zal de naam van de ingelogde gebruiker wegschrijven in het bestand gehakt.txt in de home directory van de gebruiker.
Onderstaand screenshot toont een deel van de publiekelijk beschikbare exploit code waarin we bovengenoemde aanpassing hebben doorgevoerd:
Na het uitvoeren van het script is het bestand poc.greenshot aangemaakt. Deze actie vindt plaats op de computer van de aanvaller.
Vervolgens zorgt de aanvaller ervoor dat het slachtoffer het poc.greenshot bestand ontvangt, bijvoorbeeld via een phishing e-mail. Het bestand is ontvangen en opgeslagen op de computer van het slachtoffer:
Het nietsvermoedende slachtoffer opent het .greenshot bestand en ziet de afbeelding:
Ondertussen wordt de kwaadaardige code uitgevoerd en het bestand gehakt.txt aangemaakt zonder dat het slachtoffer dit merkt:
De output van het ‘set username’ commando toont aan dat de gebruiker Alice het .greenshot bestand heeft uitgevoerd:
Wat is de impact?
Eerder noemden we dat .greenshot bestanden automatisch geopend worden met Greenshot. Dit betekent dat een aanvaller code kan uitvoeren in de context van de gebruiker die het bestand opent.
In bovenstaand voorbeeld is de uitgevoerde code onschuldig. In de praktijk kan dit leiden tot ernstige beveiligingsrisico’s. Tijdens een recente opdracht kregen wij via deze methode toegang tot de computer van een gebruiker en waren we in staat om gevoelige bedrijfsinformatie te stelen. Verder gaf deze computer ons toegang tot het interne netwerk. Dit netwerk onderzochten we op andere kwetsbaarheden waardoor we via de gecompromitteerde computer uiteindelijk toegang tot de kroonjuwelen van de organisatie verkregen.
Tijdens pentests zien we regelmatig dat Greenshot op werkplekken en soms ook op servers is geïnstalleerd. Er is geen hardening toegepast waardoor het openen van .greenshot bestanden niet wordt geblokkeerd. Dit maakt het mogelijk dat kwaadaardige bestanden kunnen worden uitgevoerd.
De uiteindelijke impact is afhankelijk van meerdere factoren. Denk bijvoorbeeld aan de rechten van de ingelogde gebruiker die het bestand opent. Als dit een beheerder is, dan voert de aanvaller code uit in de context van een beheerder. Ook een gebruiker met minder rechten is al interessant omdat de aanvaller ook dan een eerste toegang tot het intern bedrijfsnetwerk kan verkrijgen. Antivirus of Endpoint Detection & Response (EDR) software kan helpen om aanvallen te detecteren en te blokkeren.
Aanbevolen acties
Allereerst is het belangrijk om standaard beveiligingsmaatregelen binnen je organisatie op orde te hebben. Dit betekent dat je onder meer:
een duidelijk overzicht hebt van aanwezige software en de bijbehorende versies
op de hoogte bent van de mogelijke kwetsbaarheden binnen deze software
de relevante kwetsbaarheden beoordeelt op het risico voor je organisatie en daarop passende maatregelen treft
uitgaand netwerkverkeer beperkt zodat de kans op ongewenste communicatie met een externe aanvaller verlaagd wordt
gebruik maakt van een Endpoint Detection & Response (EDR) oplossing voor het detecteren en ingrijpen op verdachte gebeurtenissen
Neem daarnaast de volgende stappen om een aanval op de Greenshot software te mitigeren:
de uitvoer van bestanden met de extensie .greenshot te blokkeren
het gebruik van alternatieve software te overwegen en Greenshot uit te faseren
Tot slot
Het voorbeeld dat we in deze blogpost noemen is slechts één van de vele potentiële risico’s die aanwezig kunnen zijn binnen IT-omgevingen. Het is van cruciaal belang om proactief te evalueren welke risico’s er zijn en wat diens impact op de organisatie is.
Door middel van penetratietesten en andere offensieve securitydiensten helpen wij organisaties om deze risico’s bloot te leggen vóórdat een kwaadwillende dit doet. Hierbij voeren we een opdracht altijd in lijn uit met gerichte onderzoeksvragen die betrekking hebben op reële risico’s die voor de organisatie belangrijk zijn.
Heb jij scherp waar dreigingen binnen jouw IT-omgeving kunnen ontstaan? Plan een kennismaking met ons en wij denken graag met je mee!