Możliwa duplikat:
Czy komputer może zostać zainfekowany złośliwym oprogramowaniem za pośrednictwem przeglądarki internetowej?
Powszechnie wiadomo, że wirus można dostać tylko odwiedzając stronę internetową. Ale jak to możliwe?
Czy te wirusy atakują użytkowników Windows, Mac i Linux, czy też użytkownicy Mac / Linux są odporni?
Rozumiem, że oczywiście mogę dostać wirusa, pobierając i uruchamiając plik .exe w systemie Windows, ale jak mogę uzyskać wirusa, wchodząc na stronę internetową?
Czy wirusy są zaprogramowane w JavaScript? (Ma to sens, ponieważ jest to język programowania, który działa lokalnie.) Jeśli tak, jakie funkcje JavaScript są powszechnie używane?
Odpowiedzi:
Przykłady w parens. Występuje błąd w przeglądarce (IE), interprecie javascript lub we wtyczce (np. Flash lub Java). Ten błąd prowadzi do wykonania kodu - ta część może być bardzo skomplikowana, ale często wiąże się z błędem po użyciu i manipulowaniem stosem .
Potem mam uruchomiony kod powłoki. Kod powłoki musi uciekać przed wszelkimi zabezpieczeniami, jakie posiada przeglądarka - w przypadku błędu V8 / Chrome musisz uciec piaskownicy Chrome i pokonać DEP i ASLR. W przypadku IE musisz pokonać DEP i ASLR, a następnie wyjść z trybu niskiej integralności. W przypadku Javy nie musisz nic robić - wszyscy jesteście złoci. (Właśnie dlatego pojawiło się mnóstwo błędów java.)
Więc teraz, gdy na twoim komputerze działa dowolny kod, ponieważ ty (nie pracujesz jako administrator, prawda?), Mogę pobrać plik z Internetu i uruchomić go, upuszczając złośliwe oprogramowanie na twoim komputerze.
W szczególności - nie. JavaScript to wektor ataku, którego ludzie użyją do znalezienia błędu w przeglądarce. Mogą również używać Flash, Java lub Silverlight jako wektora ataku. W przypadku javascript piszą javascript, aby wywołać błąd przeglądarki, a następnie wirus jest ostatecznie usuwany z Internetu.
źródło
Niestety i przewrotnie, może to nastąpić na wiele sposobów.
Masz absolutną rację, że „urządzenie czytające”, takie jak przeglądarka, może aktywnie manipulować własnym systemem (i wyrządzić szkodę). Czytanie książki nie wyczerpuje twojego konta bankowego, a otwarcie gazety nie zaszkodzi twoim dzieciom, więc dlaczego otwarcie strony internetowej może robić to wszystko i wiele więcej?
Problem pojawia się, gdy istnieje możliwość, że obce dane z Internetu, które zawsze musimy zakładać, że zostały stworzone z największą złośliwością, w jakiś sposób zdołają zostać wykonane przez twój system.
Jeśli po prostu usiądziesz w wierszu poleceń i wpiszesz
wget http://evil.com/hitme.php
, klient HTTP wget po prostu napisze zrzut binarny żądania na twój dysk i nic złego się nie wydarzyło (może poza zapełnieniem dysku). Ale jeśli wpisz adres w przeglądarce, przeglądarka może robić, co chce - formatowanie dysku twardego, wyślij swoje dane karty kredytowej z dala itp To do ciebie, aby zaufać przeglądarkę, aby nie zrobić. Większość przeglądarek rzeczywiście stara się nie robić tych złych rzeczy, ale my, użytkownicyowiec, zażądaliśmy, aby przeglądarki mogły wykonywać coraz więcej „sprytnych sztuczek” i wykazywać automatyczne zachowanie na podstawie instrukcji z Internetu. Nasze wymagania doprowadziły do stworzenia technologii wykonywania kodu po stronie klienta, takich jak JavaScript i Flash, które pobierają arbitralny, obcy, niezaufany, złośliwy kod i wykonują go, a wszystko to dla naszej przyjemności.Ludzie, którzy wymyślili te technologie, nie zostali natychmiast zlinczowani, ponieważ a) sprawili, że króliki tańczyły na naszych ekranach, oraz b) twierdzili, że wprowadzili wystarczające kontrole bezpieczeństwa w projekcie, aby zapobiec manipulowaniu dowolnym złośliwym kodem system lokalny (np. nie zezwalający na odczyt / zapis dysków lokalnych, odczyt / zapis schowka, odczyt / zapis pól formularza na innych kartach).
Niestety, podejście do projektowania „najpierw zezwalaj na wszystko, a następnie w sposób patchowy zakrywaj kilka złych punktów, o których możemy myśleć” jest zasadniczo wadliwe, a teraz mamy do czynienia z niekończącym się strumieniem nowych sposobów, w jakie nasze funkcje po stronie klienta mogą być wykorzystywanym do naruszania bezpieczeństwa naszych systemów.
Jedynym umiarkowanie bezpiecznym wyjściem jest wyłączenie JavaScript i wtyczek w przeglądarce. Bezpiecznie jak w 1995 roku.
źródło
Problem, który naprawdę został pominięty w tych odpowiedziach, że naprawdę chcę wrócić do domu, jest następujący: powodem, dla którego możesz dostać wirusa ze strony internetowej, jest to, że niektóre programy, które używasz, zawierają błąd - lukę w zabezpieczeniach .
Na każdym etapie tworzenia oprogramowania twórcy Flasha; twojej przeglądarki; z twojego systemu operacyjnego próbujesz upewnić się, że losowy, złośliwy kod z Internetu nie może po prostu znaleźć sposobu na wykonanie się. Niestety robienie tego jest trudne . Naprawdę trudne .
Tak jak wszyscy ludzie, twórcy tego oprogramowania są zobowiązani do popełnienia błędów: parser HTML przypadkowo nadpisuje jeden bajt na stosie, gdy kończysz HTML
</p
. Przypadkowo użylisigned int
zamiastunsigned int
. Kompilator JIT javascript przypadkowo próbuje wyrejestrować indeks tablicy na wskaźnik zerowy. Wszystkie te luki plus miliony pojawiają się cały czas w oprogramowaniu, z powodu braku wiedzy na temat bezpieczeństwa, niedopatrzenia, a nawet zwykłego błędu. Oprogramowanie to jest po prostu sposób zbyt skomplikowane, aby złapać je wszystkie.Z tego powodu systemy operacyjne mają wbudowane mechanizmy zapobiegające uszkodzeniom systemu, nawet w przypadku znalezienia podatności. Twój system operacyjny prawdopodobnie ma funkcję DEP i ASLR . Programy mogą mieć różne zabezpieczenia dodawane przez kompilator. Przeglądarki działają na niższych przywilejach. Programy są uruchamiane przez automatyczne analizy i testy, które mogą wykryć wiele z tych luk.
Chodzi mi o to, że nikt nie pozwala, aby tak się stało - ale niemożliwe jest zaprojektowanie całkowicie bezpiecznego oprogramowania, podobnie jak niemożliwe jest zaprojektowanie całkowicie bezpiecznego sejfu. Ktoś, kto ma wystarczająco dużo czasu, wiedzy, pieniędzy i zachęty, zawsze znajdzie sposób, aby go otworzyć. Problem z tym sejfem polega na tym, że gdy hackerzy otworzą jego kopię, mogą z łatwością otworzyć inne kopie na całym świecie bez wychodzenia z pokoju.
źródło
Twoje konkretne pytania
Twoja przeglądarka cały czas wykonuje kod (jest zrobiony z kodu). Podczas pobierania stron internetowych kod ten pobiera i wyświetla dowolne dane (piksele, znaki itp.).
Kod to także dane (na poziomie procesora).
Ponieważ kod jest danymi, jeśli Twoja przeglądarka próbuje wykonać dane (bez względu na rozszerzenie pliku lub format), może faktycznie zostać uruchomiony (jeśli zostanie spreparowany poprawnie).
Zwykle twoja przeglądarka nie jest tak głupia, aby próbować uruchamiać pobrane losowe dane. Może się to jednak zdarzyć.
Jednym ze sposobów jest utworzenie danych w taki sposób, aby po odczytaniu „przeciekły” i nadpisały dane tworzące program wykonywalny przeglądarki. Wymaga to od przeglądarki błędu (najczęściej w tym przypadku, który pozwala na przekroczenie bufora ).
Twoja przeglądarka uruchamia także programy na stronach internetowych. JavaScript, jak wspomniałeś, jest jednym z takich typów kodu. Ale są dziesiątki. ActiveX, Flash, dodatki, skrypty typu Monkey Monkey itp. To kod uruchamiany podczas odwiedzania stron internetowych. Ten kod może zawierać błędy powodujące naruszenia bezpieczeństwa.
Żadna platforma, z której korzystamy, nie jest całkowicie odporna na błędy, ponieważ wszystkie używają procesorów, które traktują dane jako kod. Właśnie tak działa nasza istniejąca architektura komputerowa.
Powodem tego mitu jest to, że Mac i Linux mają znacznie niższe wskaźniki adopcji w porównaniu z komputerami z systemem Windows (na poziomie komputera stacjonarnego). Dlatego oprogramowanie komputerowe na tych komputerach nie jest tak powszechnym celem twórców wirusów.
Wirusy nie występują za pomocą magii ani ewolucji postaw zdarzeniowych (tak jak robią to wirusy biologiczne). Jest to oprogramowanie napisane przez osoby lub zespoły programistów. I chcą dotrzeć do największego udziału w rynku, tak jak robią to zwykli dostawcy oprogramowania.
Co do tego, czy jeden wirus może atakować wiele platform; Wszystkie przeglądarki używają innego kodu, więc będą miały różne błędy (nawet ta sama przeglądarka na różnych platformach). Ale istnieją pewne biblioteki kodów, które są współużytkowane na różnych platformach. Jeśli taka biblioteka zawiera błąd, możliwe jest, że exploit może istnieć na wielu platformach.
Jednak w zależności od rodzaju przeprowadzonego ataku wirus napisany dla komputerów Mac innych niż Intel może nie działać na komputerach Mac z procesorami Intel i odwrotnie, ponieważ mają one różne procesory. W przypadku różnych procesorów dane reprezentujące kod mają inny format.
Gdy mówisz o maszynie wirtualnej lub języku skryptowym, ataki mogą być niezależne od platformy. To prowadzi nas do następnego pytania ...
Niektóre wirusy są. Informacje, które podałem powyżej (o exploitach polegających na przepełnieniu bufora) byłyby zwykle używane jako atak poza Javascriptem, ale równie dobrze mogłyby się odnosić do wirusa stworzonego do ataku na exploita w interpreterie Javascript.
Javascript będzie również miał swój własny zestaw exploitów, na poziomie operacyjnym, który jest wyższy niż przepełnienie bufora. Istnieje wiele sposobów atakowania dowolnego oprogramowania. Im większe jest oprogramowanie (wiersze kodu), tym więcej odmian danych wejściowych użytkownika (w tym przypadku rodzajów kodu) może otrzymać i tym więcej błędów może zawierać.
Ponadto, im bardziej narażone jest działające oprogramowanie (np. Oprogramowanie działające na serwerze), tym bardziej narażone jest na atak.
Ogólnie jest to nazywane powierzchnią ataku
Wykorzystuje ogólnie
Microsoft ma mnemonikę typowych typów exploitów i wszystkie mają swoje własne interesujące właściwości oraz różne poziomy oprogramowania, które mogą atakować - STRIDE , co oznacza:
Niektóre z nich są częściej używane w ataku opartym na JavaScript niż inne, inne na serwerach, inne na plikach danych (takich jak obrazy).
Ale bezpieczeństwo to duże i ewoluujące pole. Jest naprawdę zbyt wiele informacji, aby w pełni odpowiedzieć na wszystkie pytania.
źródło
Termin nazywa się „Drive by Download”
Oto dobry przykład tego, jak to się dzieje, gdy nie robisz nic poza odwiedzaniem strony internetowej.
źródło
Sztuczka polega na tym, że twórcy wirusów / eksperci ds. Bezpieczeństwa znajdują luki w przeglądarkach. Krótko mówiąc, znajdują dziurę w bezpieczeństwie przeglądarki i są w stanie wykorzystać tę dziurę do zrobienia czegoś w twoim systemie. Zdarzają się przypadki, że Adobe Flash ma dziury i przy użyciu określonego kodu można go wykorzystać. Istnieją również ciągi javascript, które mogą wyzwalać te luki bezpieczeństwa.
Niemniej jednak, jeśli aktualizujesz swoją przeglądarkę, jest bardzo mało prawdopodobne, że zarazisz się witryną (zainfekowanie plików i uruchomienie ich to inna historia!)
źródło
Wirusy, takie jak te, które infekują cię, odwiedzając stronę internetową, wykorzystują wadę systemu odwiedzającego. Na przykład przeglądarka lub wtyczka może mieć wadę w programowaniu, dzięki czemu obraz może (przypadkowo, z perspektywy twórcy przeglądarki) uruchomić dowolne polecenie na komputerze odwiedzającym.
W związku z tym podobno każdy system operacyjny jest potencjalną ofiarą, ale twórcy wirusów zwykle określają swoje ataki w oparciu o korzyści skali - im więcej użytkowników, tym lepiej. Właśnie dlatego Windows i Internet Explorer są częściej atakowane.
Wirus może być celem dowolnej części przeglądarki lub wtyczki. Wspomniany powyżej obraz, który spowodował wirusa był prawdziwym przykładem. Flash jest powszechnym celem. Mechanizm JavaScript w przeglądarkach też jest. Istnieje wiele różnych rzeczy, które mogą pójść nie tak.
Najlepiej jest uruchomić wysokiej jakości skaner antywirusowy. Użyłem NOD32 firmy Eset . Nie klikaj też na coś, jeśli jest to zbyt piękne, aby mogło być prawdziwe. Używaj NoScript w Firefox i AdBlock .
źródło
Jeśli witryna narusza bezpieczeństwo przeglądarki, może zepsuć wszystko, co należy do ciebie na komputerze. Jeśli jednak może zwiększyć swoje uprawnienia i uzyskać dostęp administracyjny, może w ogóle zepsuć wszystko w systemie.
Od dawna utrzymuje się, że trudniej jest uzyskać uprawnienia administracyjne na komputerze z systemem Unix (np. Linux, Mac lub BSD) niż na Windowsie. Jednak niedawna (od Windows Vista) modernizacja funkcji bezpieczeństwa przez Microsoft mogła sprawić, że Windows będzie znacznie bezpieczniejszy niż wcześniej - a przynajmniej tak im się wydaje.
źródło