MSMQ-Privilege-Escalation-Vulnerability

Neoficiálny “Patch Tuesday” – MSMQ Privilege Escalation Vulnerability Hotfix

Zhrnutie

Táto bezpečnostná záplata rieši verejne známu zraniteľnosť vo Windows Message Queuing Service (MSMQ) objavenú spoločnosťou KoreLogic [1]. V predvolenom nastavení súčasť Message Queuing nie je nainštalovaná a zraniteľný je iba operačný systém Windows XP. Keďže Microsoft pre Windows XP prestal vydávať bezpečnostné záplaty [2] a exploit je dostupný v Metasploite [3], rozhodli sme sa vydať hotfix, ktorý ochráni používateľov, ktorí nestihli zmigrovať z Windows XP a používajú túto službu. Patch bol úspešne otestovaný na Windows XP SP3 a neobsahuje žiadny škodlivý kód.

UPDATE: Pôvodná verzia záplaty nebola kompatibilná s prepínačom /3GB v boot.ini. Aktuálna verzia je kompatibilná aj s /3GB prepínačom. Ďakujeme Patrikovi Horníkovi zo spravodajského technologického servera DSL.sk za upozornenie.

Microsoft túto zraniteľnosť neplánuje zaplátať (z KoreLogic advisory):

msmq

Ako aplikovať záplatu

1. Spustite Windows XP v núdzovom režime [4]
2. Spustite python skript (záplatu) [5]

Záplata

#!/usr/bin/python
#
# MSMQ Privilege Escalation Vulnerability Hotfix - CVE-2014-4971
# 12th August 2014 - Alino from Citadelo - alino@citadelo.com
# 
# Disclaimer: Use this security patch at your own risk.
 
import os
import sys
import ctypes
import shutil
import hashlib
import platform
 
original = "7849c06480eeb96c0d06689e5db80ddcacc5dd077ce6dfa25ccb7bdf3378c962"
patched = "b014b913a1f913fad4d15cce9b27ff2b54f6f015c768b622c2baf049ca5f5b2e"
old_patch = "f481a1c6ea8508854ee8b4051d423679d58abb66586d904c7240b200fb109432"
 
driver = os.environ['WINDIR'] + "\\System32\\drivers\\mqac.sys"
driver_bck = os.environ['WINDIR'] + "\\System32\\drivers\\mqac.bck"
 
print "\n[*] MSMQ Privilege Escalation Vulnerability Hotfix - CVE-2014-4971"
print "[*] 12th August 2014 - Alino from Citadelo - alino@citadelo.com"
 
if platform.release() != "XP":
    sys.exit("\n[-] ERROR: This patch is for Windows XP!")
 
if ctypes.windll.user32.GetSystemMetrics(67) == 0:
    sys.exit("\n[-] ERROR: Must be run in Safe mode!")
 
if ctypes.windll.shell32.IsUserAnAdmin() != 1:
    sys.exit("\n[-] ERROR: You must have Administrator rights!")
 
if not os.path.exists(driver):
    sys.exit("\n[-] ERROR: Driver mqac.sys not found!")
 
hasher = hashlib.sha256()
with open(driver, "rb") as file:
    buffer = file.read()
    hasher.update(buffer)
 
if hasher.hexdigest() == patched:
    sys.exit("\n[-] ERROR: Already patched!")
 
if hasher.hexdigest() != original:
    if hasher.hexdigest() != old_patch:
        sys.exit("\n[-] ERROR: Wrong driver version! This patch is for version 5.1.0.1110")
 
shutil.copyfile(driver, driver_bck)
print "\n[*] Backup file mqac.bck created"
 
buffer = buffer[:0x138] + "\x0A\xE1\x01" + buffer[0x13B:] # PE CHECKSUM
buffer = buffer[:0x1EFA] + "\xE9\xDD\x18\x01\x00" + buffer[0x1EFF:] # JMP mqac!_alldiv+0x6
buffer = buffer[:0x1F32] + "\xEB\xC6" + buffer[0x1F34:] # JMP mqac!AC2QM+0x20
buffer = buffer[:0x137DC] + "\xE8\x00\x00\x00\x00\x5B\x8B\x5B\x73\x8B\x1B\x3B\xF3\xBB\x00\x00\x00\x00\x0F\x83\xE2\xE7\xFE\xFF\xE9\x3B\xE7\xFE\xFF" + buffer[0x137F9:] # CALL mqac!_alldiv+0xb; POP EBX; MOV EBX,DWORD PTR [EBX+73h]; MOV EBX,DWORD PTR [EBX]; CMP ESI,EBX; MOV EBX,0; JNB mqac!AC2QM+0xfc; JMP mqac!AC2QM+0x5a
 
f = open(driver , "wb")
f.write(buffer)
f.close()
 
print "[*] Driver sucessfully patched!"

Metasploit modul zlyhá počas exploitácie na zaplátanom systéme:

msmq

Upozornenie

Použitie záplaty je na vlastné riziko.

Zostávajte zabezpečení,
Alino

Referencie:

  1. https://www.korelogic.com/Resources/Advisories/KL-001-2014-003.txt

  2. http://windows.microsoft.com/en-us/windows/end-support-help

  3. http://www.rapid7.com/db/modules/exploit/windows/local/mqac_write

  4. http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/boot_failsafe.mspx

O autorovi

Citadelo
Citadelo je dom plný etických hackerov na vašej strane. Pomáhame otestovať ich informačnú bezpečnosť. Podrobte svoje IT prostredie výzve a odhaľte, do akej miery sú vaše citlivé dáta chránené.
Zobraziť viac od autora

Podobné blogy

Bezpečnosť na internete - Viete sa správať v online priestore bezpečne?

blog |
Priemerný človek strávi na internete každý deň 3 hodiny a 20 minút. Okrem užitočných informácií a zábavy ale na nás čaká v online svete aj veľké množstvo hrozieb.
Zobraziť

Citadelo na novom a ešte bezpečnejšom webe

Blog | | Michaela Gallee
Naša požiadavka na bezpečný web sa môže niekomu zdať prehnaná, nie sme predsa svetová banka. To však nič nemení na tom, že našou víziou je bezpečný internet a preto naša priorita bola kladená na bezpečnosť.
Zobraziť

Čo sú cookies, na čo slúžia a máme sa ich báť?

Blog | | Tomáš Melicher
Ešte stále neviete čo sú cookies? Prečo ich vidíte takmer na každej stránke, a prečo s nimi musíte súhlasiť, aj keď nechcete? Prečítajte si článok o tom, na čo slúžia cookies vo webových prehliadačoch aj o tom, ako súvisia s internetovou bezpečnosťou.
Zobraziť

Ako si objednať pentest- kompletný návod

Blog | | Martin Hanic
Hoci ľuďom z IT bezpečnostnej branže môže táto otázka pripadať rovnako triviálna ako "Ako si objednať nabíjačku na telefón", pre mnohých však spísanie objednávky na pentest predstavuje podobnú úlohu ako navrhnutie jadrovej elektrárne.
Zobraziť