Syswall je nový vývoj zaměřený na vytvoření podobnosti dynamického firewallu k filtrování přístupu aplikací k systémovým voláním. Kód projektu je napsán v jazyce Rust, licence není specifikována.
Tento nový vývoj vypadá to jako interaktivní verze obslužného programu strace a umožňuje vám sledovat každé systémové volání provedené programem. Klíčovým rozdílem je, že kromě zobrazení informací o systémových voláních a výsledcích jejich provádění.
O společnosti Syswall
syswall podporuje interaktivní režim ve kterém je sledovaný proces zastaven před provedením systémového volání a uživatel je vyzván k pokračování nebo ignorování operace (můžete například sledovat pokusy o otevření každého souboru nebo procesu připojení k síti).
Syswall může také shromažďovat statistiky o uskutečněných systémových voláních a generovat na jejich základě zprávu.
Cíle syswallu jsou následující:
na poskytují vylepšenou verzi strace což je snazší určit, jaký software vlastně dělá.
Poskytněte prostředí pro testování a experimentování se softwarem tím, že umožníte podrobný a interaktivní přístup k povolení a odmítnutí systémových volání.
Každý proces může mít konfigurační soubor
Pro každý proces, sMůžeme připojit konfigurační soubor se seznamem výslovně povolených nebo blokovaných systémových volání.
U podporovaných hovorů umožňuje syswall uživateli provádět následující akce:
- Povolit volání Syscall jednou
- Vždy povolte tento konkrétní telefonický hovor
- Blokovat volání Syscall jednou (tvrdé nebo měkké)
- Vždy zablokujte konkrétní volání Syscall (tvrdé nebo měkké)
- Při blokování může program provést blok (tvrdý nebo měkký).
Během interaktivní relace je možné povolit nebo blokovat konkrétní systémová volání za běhu a jakákoli volání tohoto systémového volání, bez ohledu na to, kde je přístup k programu.
Blokování je podporováno v „tvrdém“ a „měkkém“ režimu.
Typy zámků
V prvním případě se systémové volání neprovede a do procesu se odešle chybový kód přístupu. V druhém případě se systémové volání také neprovede, ale proces obdrží fiktivní úspěšný návratový kód simulující úspěšné provedení systémového volání.
Například v tuto chvíli je podporována pouze analýza systémových volání související s operacemi se soubory.
Pevný blok zabrání spuštění volání syscall a vrátí podřízenému procesu chybu s odepřením oprávnění. Na druhou stranu měkký zámek brání volání syscall, ale pokouší se vrátit příslušnou odpověď na podřízený proces, aby předstíral, že byl volání syscall skutečně proveden.
V takovém případě se žádosti o potvrzení zobrazí, pouze pokud se týkají speciálně vytočených nebo dříve chybějících systémových volání.
Uložte a načtěte konfiguraci procesu.
Volby provedené během provádění lze uložit do souboru JSON. Tento soubor lze načíst během dalšího spuštění, aby byly použity výše uvedené možnosti.
Toto je nedokončená práce - vždy se budou ukládat pouze povolené / blokované odpovědi.
informace
Po dokončení podřízeného procesu vydá syswall krátkou zprávu o systémových voláních podřízeného procesu. V současné době se skládá ze všech otevřených nebo uzamčených souborů, ale v budoucích verzích bude rozšířeno.
Projekt je stále ve fázi funkčního prototypu a nejsou realizovány všechny koncipované možnosti.
Stále je co rozvíjet
K projektu existuje velký seznam úkolů, v budoucnu se plánuje přidat podporu pro další třídy systémových volání, lschopnost ověřit, s přihlédnutím k argumentům předaným systémovému volání, prostředky uložení stavu procesu do souboru pro pozdější srovnání aktivity během různých spuštění programu (například pro porovnání seznamů souborů a připojení k síti), možnost ignorovat načítání dynamických knihoven a podporovat typickou sadu nastavení (například uzamknout všechny zásuvky, ale povolit přístup k souborům).