Автор Тема: има ли библиотеки под линук с статични адреси  (Прочетена 11179 пъти)

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Ооо мойте отдавна са бели. Още от както видях за първи път джава приложение  ;D  :P

 >:D >:D >:D >:D >:D >:D - много си лош еййй...с тая java :D :D :D :D
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
//оффтопик
Стига с тая Джава, че ни е излязло лошо име, че само я нареждаме.. Трябва да привличаме хората, не да ги пъдим ;)
Активен

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
добре оставям ви тази област да се развивате колкото си искате ... няма да ви хвърлям сянка ...
Активен

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
и малко по темата ...
до колкото знам aslr-а прави следното
randomizes the base addresses of executables, dll’s, stack and heap in a process’s address space (for the Windows OS)

и прочетох в една статия следното в статия за linux aslr:
Additionally no code-page of an executable is randomized in the default case.
This
gives a much larger code-base that will be of interest for attackers.
Still though, these
pages are mapped to the lower address half and thus include many
\0 characters, which
cannot be used in most bu ffer overflow situations. Not randomizing the executable's
pages is a major
flaw that should be fixed.

Това което не хващам е за кои страници става въпрос - за тези които са в контекста на виртуалната организация на паметта (n страници, които формират сегмента с код (според мен даден сегмент се дели на страници и те се местят между хардиска и рама))?
До колкото съм разбрал базовите адреси на сегмента за стек и хийп се рандумизират, а вътре в самия сегмент няма рандумизиация.

стек край -- > ----
                     


Стек начало -- > ---  <<< Този адрес се рандъмизира, и спрямо него се ранумизират адресите в стека (относителните адреси (отмествания) в стека спре мен са еднакви)
Основният ми въпрос е за кои страници става въпрос в цитата ...

Мерси за  вниманието

« Последна редакция: Sep 28, 2010, 21:41 от jonythewalker »
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
Това е доста интересно, доколкото намерих информация из нета, става въпрос за адресите на динамичните библиотеки, които при XP са били винаги със статични адреси при зареждането им след стартиране на ОС. Когато въпросните системни библиотеки са със статични адреси е напълно възможно да бъдат заредени и изпълнен злонамерен код, както основно се имплементират вирусите. http://news.idg.bg/sigurnost/52322_otkriha_9godishna_uyazvimost_v_quicktime_na_apple това интересна статия за деклариран указател към обект чрез който се осъществява пълен контрол върху системата благодарение на хакерски техники.   
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
и малко по темата ...
до колкото знам aslr-а прави следното
randomizes the base addresses of executables, dll’s, stack and heap in a process’s address space (for the Windows OS)

Yep.

Цитат
и прочетох в една статия следното в статия за linux aslr:
Additionally no code-page of an executable is randomized in the default case.
This
gives a much larger code-base that will be of interest for attackers.
Still though, these
pages are mapped to the lower address half and thus include many
\0 characters, which
cannot be used in most bu ffer overflow situations. Not randomizing the executable's
pages is a major
flaw that should be fixed.

Това което не хващам е за кои страници става въпрос - за тези които са в контекста на виртуалната организация на паметта (n страници, които формират сегмента с код (според мен даден сегмент се дели на страници и те се местят между хардиска и рама))?
До колкото съм разбрал базовите адреси на сегмента за стек и хийп се рандумизират, а вътре в самия сегмент няма рандумизиация.

Това е интересно, щях да кажа че не е така, но от друга страна сега като тествам, компилирах няколко пъти една и съща програма, main функцията си е на все един и същи адрес. Очевидно .text сегмента си се зарежда на едно и също място, което е интересно. От друга страна, това са страници памет, за които нямаш права да пишеш вътре, така че забрави да презапишеш това което се изпълнява примерно в main(). Вероятно при дадени обстоятелства, може човек да се възползва от това, но ужасно много зависи как е написана програмата и какво прави. После, има различни build-ове на тази програма, използвайки различни флагове на компилатора, това предполагам генерира крайно различен машинен код и писането на reliable експлойт, който да се възползва от това сигурно е мъка.

Всъшност, нагледно:

Код:
debian:~/ocltest# cat /proc/self/maps
00400000-0040d000 r-xp 00000000 fe:00 72102                              /bin/cat
0060d000-0060e000 rw-p 0000d000 fe:00 72102                              /bin/cat
024bd000-024de000 rw-p 00000000 00:00 0                                  [heap]

....
debian:~/ocltest# cat /proc/self/maps
00400000-0040d000 r-xp 00000000 fe:00 72102                              /bin/cat
0060d000-0060e000 rw-p 0000d000 fe:00 72102                              /bin/cat
01e07000-01e28000 rw-p 00000000 00:00 0                                  [heap]
...

Та значи определено .text нещата не се рандомизират.

Цитат
стек край -- > ----
                     


Стек начало -- > ---  <<< Този адрес се рандъмизира, и спрямо него се ранумизират адресите в стека (относителните адреси (отмествания) в стека спре мен са еднакви)
Основният ми въпрос е за кои страници става въпрос в цитата ...

Рандомизира се предполагам края на стека, тъй като той расте наобратно :)

Съдържанието на стека, хийпа, .text, .rodata и т.н. очевидно няма как да се рандомизират - това би изисквало някакви неземни умения от страна на ядрото, ако искаш програмите да ти вървят коректно.

Между другото, рандомизацията си има някакви граници, особено при 32-битовите адресни пространства. Зъл payload с много голямa NOP последователност преди нея, може да се bruteforce-не и злия код да се изпълни в крайна сметка след н-тия опит. При 64-битови системи обаче, адресното пространство е доста по-голямо и рандомизацията си ходи в доста по-широки граници. Може да не ти стигнат години да нацелиш каквото трябва така.
« Последна редакция: Sep 29, 2010, 00:19 от gat3way »
Активен

"Knowledge is power" - France is Bacon

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
аха, значи все пак говорят за страници в контекста на така наречената "виртуална организация на паметта".  Явно виртуалните адресите на страниците (на библиотека или хеап или стек) се рандумизират по специален закон една спряло друга така че да се запазят релативните адрес и отместванията и да се получи само рандумизация на базовия адреса на стек или тн.

значи в статията се оказаха прави.
Целта е тези страници да не се оферфловат и да се инжектира в тей шел, а да се използват като ret-to-libc ,само че не е либ ц, а изпълним код на програм`Ъта.
четох че в доста ядра има библиотеки (спределени обекти), който се мапват на едни и същи адреси в процеса което също е ret-to-libc ...
доста доста интересно!
както гледаш това мойто си е чиста наука ... няма практика ... 
мерси за отделеното време :)
Активен

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
хммм

как така с cat  виждаш адресите ?
Активен

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
да не развалям хубавата тема, но ако си сложа vmware  server, мога ли да емулирам damn  vulnerable linux
Активен

jonythewalker

  • Напреднали
  • *****
  • Публикации: 63
    • Профил
хмм ... nessus нищо не откри като сканирах dvl ....
nessus-a който използвам е версия 4
Активен