Exploit dla modułu jądra Linux 2.6.x

Status
Zamknięty.

dybbob

Użytkownik
Dołączył
Maj 21, 2009
Posty
3
Mamy podatny moduł jądra (akademicki). Występuje w nim prosty buffer overflow.
Można wstrzyknąć adres kodu powłoki. Wywołanie kończy się oopsem - bad eip address.

Jak exploitować błędy tego typu w kernel mode? Proste przekazanie adresu kodu
powłoki w przestrzeni adresowej zwykłego procesu działającego w user mode
kończy się niepowodzeniem.

Gdzie możemy wstrzyknąć kod, aby moduł jądra poprawnie go wykonał?
Będę wdzięczny za jakiekolwiek konkretne linki, poc'e, info.
Odsyłacze do google możecie darować
<


-
thx, dyb
 

dybbob

Użytkownik
Dołączył
Maj 21, 2009
Posty
3
sinis, przekazuję poprawny adres do kodu powłoki. Może wyjaśnię dokładniej.

1. Działa podatny moduł, który exploitujemy.
2. Działa aplikacja user space, która alokuje sobie shellcode w pamięci i czeka.

Przekazuję adres do kodu powłoki (2) do modułu (1) wykorzystując BO.
Dostaję oopsa - bad eip address (np. bffff123). Adres jest błędny z punktu widzenia kernela.

Pkt 2. wykonuję w taki sposób, bo nie znam innej możliwości przekazania kodu do przestrzeni
adresowej jądra, aby wykonać shellcode. I tego właśnie dotyczy pytanie. O ile się domyślam,
jądro nie ma dostępu do segmentów procesów user mode... tak to wygląda z mojego
punktu widzenia. Ograniczonego do wiedzy nie-kernelowej i typowych przypadków
aplikacyjnych. Stąd pytanie - JAK to się robi w trybie jądra.

Biblioteki współdzielone / środowisko - jaka będzie różnica dla jądra / modułu? Teoretycznie
jądro ma dostęp do wszystkiego (wg. mojego wyobrażenia). "Widzi" więc i adres kodu powłoki
alokowanego przez zew. program w user-space.

Ktoś w temacie?
 
Status
Zamknięty.
Do góry Bottom