Syswall - это новая разработка, направленная на создание подобия динамического межсетевого экрана для фильтрации доступа приложений к системным вызовам. Код проекта написан на языке Rust, лицензия не указана.
Эта новая разработка он выглядит как интерактивная версия утилиты strace и позволяет отслеживать каждый системный вызов, сделанный программой. Ключевое отличие состоит в том, что помимо отображения информации о системных вызовах и результатах их выполнения.
О Syswall
системная стена поддерживает интерактивный режим в котором отслеживаемый процесс останавливается перед выполнением системного вызова и пользователю предлагается продолжить или проигнорировать операцию (например, вы можете отслеживать попытки открыть каждый файл или процесс сетевого подключения).
Syswall также может собирать статистику о выполненных системных вызовах и создавать на ее основе отчет.
Задачи syswall следующие:
к предоставить улучшенную версию strace что легче определить, что программное обеспечение на самом деле делает.
Обеспечьте среду для тестирования и экспериментов с программным обеспечением, позволяя использовать подробный и интерактивный подход к разрешению и отклонению системных вызовов.
У каждого процесса может быть файл конфигурации
Для каждого процесса se может подключить файл конфигурации со списком явно разрешенных или заблокированных системных вызовов.
Для поддерживаемых вызовов syswall позволяет пользователю выполнять следующие действия:
- Разрешить системный вызов один раз
- Всегда разрешать этот конкретный системный вызов
- Блокировать системный вызов один раз (жестко или мягко)
- Всегда блокировать этот конкретный системный вызов (жесткий или программный)
- При блокировке программа может выполнять блок (жесткий или мягкий).
Во время интерактивного сеанса можно разрешить или заблокировать определенные системные вызовы во время выполнения и любые вызовы этого системного вызова, независимо от того, где выполняется доступ к программе.
Блокировка поддерживается в «жестком» и «мягком» режимах.
Виды замков
В первом случае системный вызов не выполняется, а код ошибки доступа отправляется процессу.. Во втором случае системный вызов также не выполняется, но процесс получает фиктивный успешный код возврата, который имитирует успешное выполнение системного вызова.
Например, на данный момент поддерживается только анализ системных вызовов, связанных с файловыми операциями.
Жесткая блокировка предотвращает выполнение системного вызова и возвращает дочернему процессу ошибку отказа в разрешении. С другой стороны, мягкая блокировка предотвращает системный вызов, но пытается вернуть соответствующий ответ дочернему процессу, чтобы сделать вид, что системный вызов действительно был выполнен.
В этом случае запросы подтверждения будут отображаться только тогда, когда они относятся к специально набранным или ранее пропущенным системным вызовам.
Сохраните и загрузите конфигурацию процесса.
Выбор, сделанный во время выполнения, можно сохранить в файл JSON. Этот файл можно загрузить во время другого запуска, чтобы использовать указанные выше параметры.
Это незавершенная работа - всегда будут сохраняться только разрешенные / заблокированные ответы.
информация
По завершении дочернего процесса syswall выдаст краткий отчет о системных вызовах дочернего процесса. В настоящее время он состоит из всех открытых или заблокированных файлов, но будет расширен в будущих выпусках.
Проект пока находится в стадии функционального прототипа, и не все задуманные возможности реализованы.
Есть еще кое-что для развития
Есть большой список дел по проекту, в будущем планируется добавить поддержку дополнительных классов системных вызовов, lвозможность проверки с учетом аргументов, переданных системному вызову, средств сохранения состояния процесса в файл для последующего сравнения активности при различных запусках программы (например, для сравнения списков файлов и подключений сети), опция игнорировать загрузку динамических библиотек и поддерживать стандартный набор настроек (например, заблокировать все сокеты, но разрешить доступ к файлам).