Witaj! Logowanie Rejestracja

Co to jest exploit?
#1
Na pewno niejednokrotnie każdy z nas słyszał o exploitach. Może ktoś zadawać sobie pytanie - co to jest exploit oraz jakie niesie ze sobą zagrożenie dla nas - użytkowników komputera? W jaki sposób działają osławione programy? Postaram się to w sposób poglądowy szerzej opisać poniżej ideę ich działania.

Exploit jest to złośliwy kod (bądź program), który wykorzystuje błędy w oprogramowaniu w celu np. przejęcia kontroli nad komputerem, który użytkuje użytkownik a nawet przechwyceniu danych użytkownika. Poprzez lukę w oprogramowaniu powstałą podczas jego tworzenia (najczęściej jest to przepełnienie bufora na stosie) wykonywany jest spreparowany kod maszynowy, który wykonuje daną powłokę z uprawnieniami programu, w którym wykryto błędy w oprogramowaniu.

Warto o tym pamiętać, że ciągle są wykrywane błędy w oprogramowaniu i wciąż w błyskawicznym tempie powstają exploity, które je wykorzystują. Ciągle powstają nowe sposoby ochrony przed działaniem takich programów jak i metody przełamywania zabezpieczeń programów. Z tego właśnie powodów należy ciągle monitorować strony, fora internetowe oraz listy dyskusyjne w celu poszukiwania informacji o lukach w bezpieczeństwie w wykrytym oprogramowaniu. W Polsce warto śledzić informacje pojawiające się na portalu niebezpiecznik.pl. Należy też często odwiedzać stronę producenta naszego oprogramowania i zawsze pobierać najbardziej aktualne wersje oprogramowania, w których zazwyczaj wykryte błędy są zazwyczaj najszybciej naprawiane.

Każda usług sieciowa w pewien sposób komunikuje się ze światem i działa w środowisku systemu operacyjnego najczęściej na podwyższonych uprawnieniach. Wiąże się to z otwieraniem portów poniżej 1024, które są zarezerwowane dla superużytkownika (administratora, roota). Jeżeli włamywaczowi uda się zmusić taką usługę, aby coś dla niego wykonała , operacje te zostaną wykonane z uprawnieniami, z których korzystała ta aplikacja.

Aby zmienić działanie programu, cracker musi zmienić zawarty w pamięci serwera kod wykonującego się zadania. Najpopularniejszą metodą jest tzw. przepełnienie buforu (buffer overflow). Postaram się trochę opisać tą metodę na podstawie prostego przykładu. Załóżmy, że usługa działająca wymaga zalogowania się, czyli podania ciągu tekstowego będącego nazwą użytkownika i drugiego z hasłem. Jeżeli programista przewidział przykładowo maksymalną długość nazwy użytkownika na 25 znaków, to jeśli prześlemy do programu dłuższą nawę, a on nie będzie sprawdzał długości odebranej zmiennej, tylko od razu zapisywał ją w pamięci, wystąpi zjawisko przepełnienia buforu. Dane powyżej 25 znaku (rozmiaru pamięcią zarezerwowanej na zapisanie tej zmiennej) zaczną nadpisywać wykonywany właśnie w pamięci serwera kod programu. Jeśli teraz znaki powyżej 25 będą tworzyły odpowiednią strukturę, mogą powodować taką zmianę programu, aby wykonał dla nas jakąś pracę. Na przykład dodał w systemie użytkownika z pełnymi uprawnieniami administratora. Innym przykładem działania exploita jest umożliwienie uruchamiania aplikacji powłoki systemowej (shell) działających na uprawnieniach zaatakowanego serwera usług. Stąd właśnie taki ciąg znaków nazywa się shell-code. Jest to dość uproszczony przykład, jednakże warto zrozumieć istotę działania takich właśnie exploitów.

Drugą częstą metodą jest używanie niebezpiecznych łańcuchów formatujących (format string). Jeżeli programista korzysta z funkcji z rodziny printf(), możemy wykorzystać używane przez te funkcje formatowanie do swoich celów. Przykładowo jeżeli w miejsce loginu podamy ciąg zawierający znaki formatujące funkcji, np. %x oraz odpowiedni kod, to możemy zmusić program do wykonania potrzebnego nam działania.

Powyższy opis jest podstawą działania exploitów. Mogą one jednak korzystać z zupełnie innych słabości oprogramowania, specyficznych dla konkretnego rozwiązania. Zatem w jaki sposób zabezpieczyć się przed exploitami? Teoretycznie wystarczy używać dobrze napisanego oprogramowania. Jak jednak wiemy, prawdopodobieństwo popełnienia pomyłki przez programistę rośnie wraz z ilością wierszy kodu, więc nigdy nie ma pewności, że w używanym przez nas oprogramowaniu nie znajdują się błędy. Najważniejszą metodą jest ciągłe śledzenie informacji o wykrytych dziurach w oprogramowaniu i instalowanie na bieżąco poprawek.
 
Reply
#2
Widzę że chcesz dzielić się wiedzą na temat zagrożeń z innymi użytkownikami forum jednak jest to naprawdę wiedza ogólnie dostępna w intrenecie Uśmiech
Witam i pozdrawiam, do zobaczenia na uczelni i nie tylko.
 
Reply
#3
Właśnie powiedziałbym, że nie. Ciężko w internecie znaleźć coś więcej na temat exploitów niż tylko kilka zdań, które np. można wyczytać w Wikipedii.
 
Reply
#4
Ja kiedyś miałam exploita. Pamiętam, gdy skanowałam komputer a tu nagle program antywirusowy wskazał mi, że program z którego korzystam jest exploitem i kazał mi go usunąć, więc go usunęłam Uśmiech
 
Reply
  


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jaki jest koszt wymiany gniazda zasilania w laptopie?
Ktoś orientuje się w cenach usług serwisowych? Muszę wymienić gniazdo zasilania w laptopie Samsunga, gdyż raz się ładuje laptop a raz nie. Ktoś z Was mógłby podać mi orientacyjne koszty tej usługi abym mógł się nastawić na pewne koszty. Samemu tego na pewno się nie podejmę, więc w grę wchodzi jedynie usługa serwisu. No i zależy mi też na gwarancji na to gniazdo a jak zrobię to samemu to takowej nie będzie i w dodatku mogę coś jeszcze spartolić.
marcin.piwek 6 95,651 18-05-2016, 2:31
Ostatni post: miniek15m



Browsing: 1 gości