Регистрировать execve вместе с родительским процессом argv?

Регистрировать execve вместе с родительским процессом argv?

Я пытаюсь выяснить, могу ли я вывести из эксплуатации старый сервер. Мне нужна информация об автоматизированных процессах, которые там запущены. Пока что я попробовал следующее:

auditctl -a exit,always -F arch=b64  -S execve -k any-commands

На этапе анализа журнала я обнаружил, что отсутствуют два фрагмента контекста:

  1. Как выполнялись эти программы? Какой процесс был их родителем и каков был его argv?
  2. Куда делись stdin/stdout? В идеале я бы хотел увидеть восстановленную команду оболочки, но я знаю, что, вероятно, прошу слишком многого, так что, по крайней мере, наличие идентификатора дескриптора канала было бы достаточно (чтобы я мог попытаться восстановить его с помощью собственных скриптов).

Как мне подойти к решению такой проблемы?

решение1

Системный execveвызов заменяет текущий процесс. Если программа хочет сохранить управление после запуска другой программы, ей нужно сначала создать новый процесс (используя forkили vfork), который затем вызывает execve.

Дескрипторы и разрешения открытых файлов берутся во внимание при замене образа программы в execve(за исключением отмеченных флагом CLOEXEC), поэтому открытые файлы наследуются от родительского процесса во время fork, затем изменяются между forkи execve(например, с помощью dup2), а затем окончательно фильтруются во время execveвызова.

Поэтому получить полную картину на основе данных аудита будет сложно.

Связанный контент