Navigatie overslaan.
Start

Hijacking Executables

Dankzij een posting op het Internet Storm Center heb ik weer iets leuks bijgeleerd: Executable hijacking.
(http://isc.sans.org/diary.html?storyid=4039)

Natuurlijk weer iets dat de deur wagenwijd openzet naar misbruiken in Microsoft Windows.

Stel dat ik in Linux het "ls"-commando uitvoer. Wat wordt er dan precies uitgevoerd?
Dat hangt natuurlijk van het path af.

Het path wordt in volgorde doorlopen, en de eerste directory met een uitvoerbaar bestand met de naam "ls", wordt gebruikt om "ls" uit te voeren.
Omdat de gebruiker controle heeft over het path, moet je in scripts natuurlijk steeds het volledige path ("/bin/ls") gebruiken, en niet gewoon "ls".

In Windows is het, zoals gewoonlijk, weer wat minder voor de hand liggend.
Er zijn interne commando's en externe. Enkel externe commando's staan op de harde schijf.
Als het om een extern commando gaat, dan wordt ook het path gevolgd, met die uitzondering dat er eerst in de huidige directory gekeken wordt. Dit is een serieus security risico.
Ook hier moet je natuurlijk altijd het volledige path gebruiken in scripts, alhoewel dat niet altijd eenvoudig is met al die spaties in de default directorynamen ("Program Files", "My Documents", etc...).

Waarom is de huidige directory eerst bekijken een security risico?
Wel, vroeger, toen ik nog meer kattekwaad dan nu uithaalde zette ik op een diskette soms een executable met de naam "dit.exe". Deze executable gaf geen output, behalve de melding "Command not found".
Ik vroeg dan aan klasgenoten, leerkrachten, whatever of ik eens mocht kijken wat op die diskette stond, want ik had toevallig mijn computer al afgesloten.
Natuurlijk was er niemand die dit weigerde.
"Toevallig" maakte ik dan een typefout, zodat ik de eerste keer "dit" intiktke i.p.v. "dir"...
Wat die executable juist deed, is voor jullie natuurlijk een raadsel...
Om dit security risico te vermijden, moet je in Linux steeds het volledige path opgeven als je iets wil uitvoeren in de huidige directory. Meestal wordt het relatieve path gebruikt.
Ook moet je, in tegenstelling tot Windows, de volledige bestandsnaam (dus met extentie) gebruiken: "./dit.exe"

Anyway, terug naar het onderwerp.
Als je in scripts het volledige path gebruikt EN je zorgt ervoor dat de gebruikers die bestanden op schijf niet kunnen vervangen door andere, ben je safe, niet?
Neen?

Niet in Windows: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"

Definiëer het programma dat gekozen wordt door de gebruiker links, en definiëer via een "debugger" het programma dat daadwerkelijk uitgevoerd gaat worden aan de rechterzijde.
Voila.

Je kan irritante dingen doen, bijvoorbeeld Internet Explorer laten opstarten als de gebruiker Firefox kiest.
Je kan ook leuke dingen doen, blijvoorbeeld een administrator command prompt laten opstarten als je screensaver actief wordt...
En wat wil je laten opstarten i.p.v. je anti virus software?

(Deze screenshot komt van isc.sans.org)

 

Jaja, security... Of het gebrek eraan...