W listopadzie na Code Project pewien chiński hacker opublikował "exploit omijający UAC", który, jak się okazało, z UAC nie miał dużo wspólnego - był to 0day na win32k.sys (czyli część kernela Windows odpowiedzialna za grafikę/okienka/etc). O sprawie napisano na Niebezpieczniku, zaznaczając, że błąd jest exploitowalny pod Windows 7, Vista oraz Windows XP. Umieszczenie w newsie XPka spowodowało wywiązanie się w komentarzach dyskusji (chociaż waham się przy użyciu tego słowa) w której kilku czytelników zwróciło uwagę, że błąd nie jest exploitowalny pod XP, a więc autor newsa wprowadza czytelników w błąd. Problemem pod XP okazały się, nieobecne na Vista i 7, stack cookies (a konkretniej /GS cookies), które powinny skutecznie uniemożliwić exploitacje. Postanowiliśmy z j00ru wgłębić się w temat, czego efektem jest prawie 40-stronnicowy artykuł zlinkowany poniżej.
Zanim przejdę do linków/abstractu - dygresja: wspomniany błąd jest exploitowalny na XP:
Zresztą, błąd wydaje się być również exploitowalny również na Windows 2000 (brak ciasteczek), o którym już chyba zapomnieli. Natomiast nie testowaliśmy Windowsa 2003, ale hmm, nie ma podstaw, żeby sądzić, że jest inaczej niż na XP.
Research Paper:
Exploiting the otherwise non-exploitable - Windows Kernel-mode GS Cookies subverted
by Matthew "j00ru" Jurczyk & Gynvael Coldwind (EN)
Abstract:
Abstract: This paper describes various techniques that can be used to reduce the effective entropy of GS cookies implemented in a certain group of Windows kernel-mode executable images by roughly 99%, or otherwise defeat it completely. This reduction is made possible due to the fact that GS uses a number of extremely weak entropy sources, which can be predicted by the attacker with varying (most often - very high) degree of accuracy. In addition to presenting theoretical considerations related to the problem, the paper also contains a great amount of experimental results, showing the actual success / failure rate of different cookie prediction techniques, as well as pieces of hardware-related information. Furthermore, some of the possible problem solutions are presented, together with a brief description of potential attack vectors against these enhancements. Finally, the authors show how the described material can be practically used to improve kernel exploits’ reliability - taking the CVE-2010-4398 kernel vulnerability as an interesting example.
W skrócie:
Początkowa entropia cieasteczek (w zależności od wersji Windowsa) to 16, 32 lub 48 bitów.
W najgorszym wypadku udało nam się zredukować entropię ciasteczek w driverach do około 6 bitów.
W najlepszym wypadku udało nam się zredukować entropię do około 1 bitu z prawdopodobieństwem trafienia oscylującym w granicy 50%.
Research dotyczył tylko i wyłącznie ciasteczek w driverach (tj. plikach .sys) - w głównym pliku kernla (tj. ntoskrln.exe/etc) ciasteczka są generowane inaczej i nimi się nie zajmowaliśmy.
Skupiliśmy się na atakach z perspektywy lokalnej maszyny (no remote, sorry). Założyliśmy również, że atakujący ma możliwość uzyskania podobnego środowiska do przeprowadzenia pewnych pomiarów (nie zawsze jednak koniecznych).
Timeline:
6 grudnia 2010 - Microsoft został poinformowany o wstepnych wynikach naszych badań, potwierdził odbiór.
8 grudnia 2010 - Microsoft odpowiedział, że jest świadom problemu i rozważa poprawę mechanizmu generowania ciastek w przyszłości. Nie zostaliśmy poproszeni o opóźnienie publikacji.
4 stycznia 2011 - Microsoft otrzymał pełne wyniki badań. Wymieniliśmy kilka e-maili. Nie otrzymaliśmy zastrzeżeń co do publikacji.
11 stycznia 2011 - Publikacja.
Thanks:
Chcielibyśmy podziękować następującym osobom za recenzje i cenne uwagi: Unavowed, Tavis Ormandy, Marc-Antoine Ruel, Carlos Pizano, Matt Miller and deus.
Zachęcam do komentarzy (oczywiście po przeczytaniu papierka od deski do deski ;>).
2011-01-11:
Comments:
thx! :)
byloby fajnie, gdybyscie znalezli sposob na liczenie ciasteczka korzystajac np. z javascriptu w przegladarce :)
ale czemu na re.coldwind.pl jest info o konsultacjach mimo ze juz dawno są nieaktualne ?
Czy może zostały wznowione ?
;)
@qyon
Thx, fixed.
@Salvation
Thx ;>
@MDobak
Heeh thx ;>
Ad wykresy, uznaliśmy, że przy takiej skali bardziej dobitnie widać jaki jest problem (chociaż przyznaje, że są przez to mniej czytelne).
@jurek ogórek
Thx ;>
Ad cookie via javascript - raczej bym na to nie liczył ;>
@Kele
Thx ;>
@Rand
Faktycznie, usunąłem są notkę z re.coldwind.pl ;>
Add a comment: