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
Links / Blogs
- → dragonsector.pl
- → vexillium.org
- Security/Hacking:
- Reverse Eng./Low-Level:
- Programming/Code:
Posts
- Egzamin dla Maszyny: LLMy vs Programowanie – PDF artykułu z Programisty 05/2023,
- HACK-A-SAT 4: Wywiad z Poland Can Into Space,
- Mamy to! Paged Out! #3,
- O rekompilacji i autorstwie z pociągami w tle,
- Seria szkoleń z plików binarnych (pierwsze jest darmowe),
- Wykład „Jak wygrywać CTFy” już jutro (wersja rozszerzona),
- Nasza nowa książka: Wprowadzenie do bezpieczeństwa IT,
- Live: Życie po Google, czyli co dalej,
- Rozwiązania MSHP CTF (październik 2022),
- Mega Sekurak Hacking Party 2021 i „CTF w pudełku?!”,
- → see all posts on main page
// copyright © Gynvael Coldwind
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* autor będący jednocześnie właścicielem bloga zezwala na próby (również skuteczne) przełamania zabezpieczeń bloga (na poziomie HTTP, server nie mój, zostawmy go w spokoju ;>) bez ponoszenia konsekwencji jakiegokolwiek rodzaju (nie dotyczy to ataków DoS) - czyli w skrócie, uznaje że wszystkie informacje w katalogu bloga są przeznaczone dla osób którym uda się je przeczytać, i wszystkie osoby uprawniam do zmiany ich treści/zawartości jeżeli uda się im ją zmienić) ... dodam że w pewnych miejscach umieściłem zabawne fotki z kotkami, jest ich obecnie 7, i zachęcam do ich poszukania ;> dajcie mi znać jak wszystkie znajdziecie to wrzuce jakieś gratulacje 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
/* autor będący jednocześnie właścicielem bloga zezwala na próby (również skuteczne) przełamania zabezpieczeń bloga (na poziomie HTTP, server nie mój, zostawmy go w spokoju ;>) bez ponoszenia konsekwencji jakiegokolwiek rodzaju (nie dotyczy to ataków DoS) - czyli w skrócie, uznaje że wszystkie informacje w katalogu bloga są przeznaczone dla osób którym uda się je przeczytać, i wszystkie osoby uprawniam do zmiany ich treści/zawartości jeżeli uda się im ją zmienić) ... dodam że w pewnych miejscach umieściłem zabawne fotki z kotkami, jest ich obecnie 7, i zachęcam do ich poszukania ;> dajcie mi znać jak wszystkie znajdziecie to wrzuce jakieś gratulacje 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: