Neoficiální Patch Tuesday MSMQ Privilege Escalation Vulnerability Hotfix

Neoficiální Patch Tuesday MSMQ Privilege Escalation Vulnerability Hotfix

Shrnutí

Shrnutí: Tato bezpečnostní záplata řeší veřejně známou slabinu Windows Message Queuing Service (MSMQ) objevenou společností KoreLogic [1]. Ve výchozím nastavení součást Message Queuing není nainstalovaná a zranitelný je pouze operační systém Windows XP. Jelikož Microsoft pro Windows XP přestal vydávat bezpečnostní záplaty [2] a exploit je dostupný v Metasploit [3], rozhodli jsme se vydat hotfix, který ochrání uživatele, kteří se nestihli přesunout z Windows XP a používají tuto službu. Patch byl úspěšně otestován na Windows XP SP3 a neobsahuje žádný škodlivý kód.

UPDATE: Původní verze záplaty nebyla kompatibilní s přepínačem /3GB v boot.ini. Aktuální verze je kompatibilní i s /3GB přepínačem. Děkujeme Patrikovi Horníkovi ze zpravodajského technologického serveru DSL.sk za upozornění.

Microsoft tuto slabinu neplánuje záplatovat (z KoreLogic advisory): msmq

Jak aplikovat záplatu

1. Spusťte Windows XP v nouzovém režimu [4]
2. Spusťte python skript (záplatu) [5]

Záplata

#!/usr/bin/python<br />
#<br />
# MSMQ Privilege Escalation Vulnerability Hotfix - CVE-2014-4971<br />
# 12th August 2014 - Alino from Citadelo - [email protected]<br />
#<br />
# Disclaimer: Use this security patch at your own risk.</p>
<p>import os<br />
import sys<br />
import ctypes<br />
import shutil<br />
import hashlib<br />
import platform</p>
<p>original = "7849c06480eeb96c0d06689e5db80ddcacc5dd077ce6dfa25ccb7bdf3378c962"<br />
patched = "b014b913a1f913fad4d15cce9b27ff2b54f6f015c768b622c2baf049ca5f5b2e"<br />
old_patch = "f481a1c6ea8508854ee8b4051d423679d58abb66586d904c7240b200fb109432"</p>
<p>driver = os.environ['WINDIR'] + "\\System32\\drivers\\mqac.sys"<br />
driver_bck = os.environ['WINDIR'] + "\\System32\\drivers\\mqac.bck"</p>
<p>print "\n[*] MSMQ Privilege Escalation Vulnerability Hotfix - CVE-2014-4971"<br />
print "[*] 12th August 2014 - Alino from Citadelo - [email protected]"</p>
<p>if platform.release() != "XP":<br />
    sys.exit("\n[-] ERROR: This patch is for Windows XP!")</p>
<p>if ctypes.windll.user32.GetSystemMetrics(67) == 0:<br />
    sys.exit("\n[-] ERROR: Must be run in Safe mode!")</p>
<p>if ctypes.windll.shell32.IsUserAnAdmin() != 1:<br />
    sys.exit("\n[-] ERROR: You must have Administrator rights!")</p>
<p>if not os.path.exists(driver):<br />
    sys.exit("\n[-] ERROR: Driver mqac.sys not found!")</p>
<p>hasher = hashlib.sha256()<br />
with open(driver, "rb") as file:<br />
    buffer = file.read()<br />
    hasher.update(buffer)</p>
<p>if hasher.hexdigest() == patched:<br />
    sys.exit("\n[-] ERROR: Already patched!")</p>
<p>if hasher.hexdigest() != original:<br />
    if hasher.hexdigest() != old_patch:<br />
        sys.exit("\n[-] ERROR: Wrong driver version! This patch is for version 5.1.0.1110")</p>
<p>shutil.copyfile(driver, driver_bck)<br />
print "\n[*] Backup file mqac.bck created"</p>
<p>buffer = buffer[:0x138] + "\x0A\xE1\x01" + buffer[0x13B:] # PE CHECKSUM<br />
buffer = buffer[:0x1EFA] + "\xE9\xDD\x18\x01\x00" + buffer[0x1EFF:] # JMP mqac!_alldiv+0x6<br />
buffer = buffer[:0x1F32] + "\xEB\xC6" + buffer[0x1F34:] # JMP mqac!AC2QM+0x20<br />
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</p>
<p>f = open(driver , "wb")<br />
f.write(buffer)<br />
f.close()</p>
<p>print "[*] Driver sucessfully patched!"<br />

Metasploit selže během exploatace na záplatovaném systému:

msmq

Upozornění

Použití záplaty je na vlastní riziko.

Zůstávejte zabezpečení,
Alino, [email protected]

reference:
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
Citadelo je dům plný etických hackerů na vaší straně. Myslíme jako útočník, avšak nezneužíváme toho. Ba naopak, naším hlavním cílem je odhalit zranitelnost bez napáchaných škod. Pro naše klienty připravujeme simulované útoky již od roku 2006. Pomáháme otestovat jejich informační bezpečnost. Podrobte své IT prostředí výzvě a odhalte, do jaké míry jsou vaše citlivá data chráněna.
Zobrazit více od autora

Podobné blogy