Kilka tygodni temu gościł u mnie j00ru, co, jak można się domyślić, skończyło się kilkoma ciekawymi pomysłami. Jednym z pomysłów było wykorzystanie mechanizmu call-gate'ów w pisaniu exploitów na kernel/drivery pod Windows, a konkretniej chodzi o wykorzystanie write-what-where do przekształcenia LDT w Call-Gate, i tym sposobem podniesienie uprawnień kodu z user-land do ring 0. Efektem tychże rozważań jest "papierek" oraz kilka PoC, które można ściągnąć poniżej.
Jeszcze zanim przejdę do linków, chciałbym gorąco podziękować Unavowed'owi za masę czasu jaką poświęcił na korektę poniższego papierka oraz jego konwersję na LaTeX (papierek zaczął być tworzony w OO.org, potem został przerobiony pod Word 2007, a pod sam koniec wylądował w LaTeX'ie). Podziękowania należą się również Agnieszce 'Sorrento Aishikami' Zerce za równoległą korektę :)
GDT and LDT in Windows kernel vulnerability exploitation by Matthew "j00ru" Jurczyk and Gynvael Coldwind
PDF: call_gate_exploitation.pdf (680KB)
PoC: ldtsource.zip (13kb) (plik jest również dołączony do PDF'a)
Spis treści:
1. Abstract
2. The need of a stable exploit path
3. Windows GDT and LDT
4. Creating a Call-Gate entry in LDT
4.1. 4-byte write-what-where exploitation
4.2. 1-byte write-what-where exploitation
4.3. Custom LDT goes User Mode
5. Summary
+ References
+ Attachments
Wszelkie komentarze mile widziane, za równo u mnie, jak i na blogu j00ru! :)
Update (17 Stycznia 2010, 19:32 GMT+1): Zauważyliśmy, że jeden z exploitów PoC zawartych w paczce zawiera stary eksperymentalny kod, zamiast nowego. W związku z czym przed chwilą podmieniłem paczkę na prawidłową. Przepraszamy za zamieszanie :)
MD5 starego zbugowanego (ldt)sources.zip / pdf: 95f1b1551e34d7f28789fa17693f0c17 / 6cb745e451be165f49a66876557cb518
MD5 nowego prawidłowego (ldt)sources.zip / pdf: 63657de78b1a2a35b46fc29aa8df81cf / 6840185722dc69048e0bf5434f19d5cb
Update 2: Zainteresowanych zachęcam na rzucenia okiem na dyskusję na forum woodmann.com.
Sections
- lang: |
- RSS: |
- About me
- Tools
- → YT YouTube (EN)
- → D Discord
- → M Mastodon
- → T Twitter
- → GH GitHub
Links / Blogs
- → dragonsector.pl
- → vexillium.org
- Security/Hacking:
- Reverse Eng./Low-Level:
- Programming/Code:
Posts
- Debug Log: Internet doesn't work (it was the PSU),
- FAQ: The tragedy of low-level exploitation,
- Solving Hx8 Teaser 2 highlight videos!,
- Gynvael on SECURITYbreak podcast,
- Paged Out! #4 is out,
- I won't be able to attend CONFidence'24 after all :(,
- xz/liblzma: Bash-stage Obfuscation Explained,
- Two of my bookmarklets: image extraction and simple TTS,
- Paged Out! #3 is out,
- My howto script,
- → see all posts on main page
// copyright © Gynvael Coldwind
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
Comments:
Co dwie głowy to nie jedna. Powinniście częściej takie wspólne sesje organizować.
BTW. LaTeXa nie znamy? :) Najwyższy czas to naprawić...
Thx! Jak będziesz miał chwilę aby przeanalizować to daj znać, komentarze bardzo mile widziane ;>
Co do tego typu sesji, to się z Tobą w 100% zgadzam hehe ;>
Co do LaTeXa (wczoraj mnie poinformowano że powinienem pisać LaTecha, bo to nie X tylko Chi ;>), to masz rację. Trochę tego liznąłem na studiach (praca inż. etc), natomiast widzę że mam straszne braki jeśli o to chodzi. A jest bardzo wygodny jak się skacze między różnymi OSami (Linux / Windows), szczególnie że nawet OO.org który jest "wszędzie" nie zawsze ogarnia takie przeniesienia (różnica wersji między repo ubuntu a official website się kłania na przykład).
Dzięki za wyjaśnienie sprawy ;>
Mam nieodparte wrażenie, że skomplikowanie LaTeXa zaczyna się już w nazwie ;>
Add a comment: