Syswall to nowe rozwiązanie mające na celu stworzenie podobieństwa do dynamicznej zapory ogniowej do filtrowania dostępu aplikacji do wywołań systemowych. Kod projektu jest napisany w języku Rust, licencja nie jest określona.
Ten nowy rozwój wygląda jak interaktywna wersja narzędzia strace i pozwala na śledzenie każdego wywołania systemowego wykonywanego przez program. Kluczowa różnica polega na tym, że oprócz wyświetlania informacji o wywołaniach systemowych i wynikach ich wykonania.
O Syswall
Ściana systemowa obsługuje tryb interaktywny w którym monitorowany proces jest zatrzymywany przed wywołaniem systemowym a użytkownik jest proszony o kontynuowanie lub zignorowanie operacji (na przykład możesz monitorować próby otwarcia każdego pliku lub procesu połączenia sieciowego).
Syswall może również gromadzić statystyki dotyczące wykonywanych wywołań systemowych i generować na ich podstawie raport.
Cele syswall są następujące:
do zapewniają ulepszoną wersję strace co jest łatwiejsze do określenia, jakie oprogramowanie faktycznie robi.
Zapewnij środowisko do testowania i eksperymentowania z oprogramowaniem, umożliwiając szczegółowe i interaktywne podejście do dopuszczania i odrzucania wywołań systemowych.
Każdy proces może mieć plik konfiguracyjny
Dla każdego procesu, sMożna połączyć plik konfiguracyjny z listą jawnie dozwolonych lub zablokowanych wywołań systemowych.
W przypadku obsługiwanych połączeń syswall umożliwia użytkownikowi wykonanie następujących czynności:
- Zezwól raz na wywołanie systemowe
- Zawsze zezwalaj na to konkretne wywołanie systemowe
- Zablokuj wywołanie systemowe raz (twarde lub miękkie)
- Zawsze blokuj to konkretne wywołanie systemowe (twarde lub miękkie)
- Podczas blokowania program może wykonać blok (twardy lub miękki).
Podczas sesji interaktywnej można zezwolić lub zablokować określone wywołania systemowe w czasie wykonywania oraz wszelkie wywołania tego wywołania systemowego, niezależnie od tego, gdzie program jest dostępny.
Blokowanie jest obsługiwane w trybach „twardym” i „miękkim”.
Rodzaje zamków
W pierwszym przypadku wywołanie systemowe nie jest wykonywane i do procesu wysyłany jest kod błędu dostępu. W drugim przypadku wywołanie systemowe również nie jest wykonywane, ale proces otrzymuje fikcyjny, pomyślny kod powrotu, symulujący pomyślne wykonanie wywołania systemowego.
Na przykład obecnie obsługiwana jest tylko analiza wywołań systemowych związana z operacjami na plikach.
Twarda blokada zapobiega wykonaniu wywołania systemowego i zwraca błąd odmowy uprawnień do procesu potomnego. Z drugiej strony, miękka blokada zapobiega wywołaniu systemowemu, ale próbuje zwrócić odpowiednią odpowiedź procesowi potomnemu, aby udawać, że wywołanie systemowe zostało faktycznie wykonane.
W takim przypadku prośby o potwierdzenie będą wyświetlane tylko wtedy, gdy dotyczą specjalnie wybieranych lub wcześniej brakujących połączeń systemowych.
Zapisz i załaduj konfigurację procesu.
Wybory dokonane podczas wykonywania można zapisać w pliku JSON. Ten plik można załadować podczas innego uruchomienia, aby były używane powyższe opcje.
To jest w toku - tylko dozwolone / zablokowane odpowiedzi będą zawsze zapisywane.
informacja
Kiedy proces potomny zakończy się, syswall wygeneruje krótki raport o wywołaniach systemowych tego procesu. Obecnie składa się ze wszystkich otwartych lub zablokowanych plików, ale zostanie rozszerzony w przyszłych wersjach.
Projekt jest wciąż na etapie funkcjonalnego prototypu i nie wszystkie zakładane możliwości są realizowane.
Jest jeszcze wiele do zrobienia
Istnieje duża lista rzeczy do zrobienia w projekcie, w przyszłości planowane jest dodanie obsługi dodatkowych klas wywołań systemowych, lmożliwość weryfikacji, z uwzględnieniem argumentów przekazanych do wywołania systemowego, sposobu zapisywania stanu procesu do pliku w celu późniejszego porównania aktywności podczas różnych uruchomień programów (np. w celu porównania list plików i połączeń sieciowych), opcja ignorować ładowanie bibliotek dynamicznych i obsługiwać typowy zestaw ustawień (na przykład blokować wszystkie gniazda, ale zezwalać na dostęp do plików).