상위 프로세스 argv와 함께 execve를 기록하시겠습니까?

상위 프로세스 argv와 함께 execve를 기록하시겠습니까?

오래된 서버를 폐기할 수 있는지 알아보려고 합니다. 그곳에서 실행되는 자동화된 프로세스에 대한 정보가 필요합니다. 지금까지 나는 다음을 시도했습니다.

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

로그 분석 단계에서 두 가지 컨텍스트 누락을 발견했습니다.

  1. 해당 프로그램은 어떻게 실행되었나요? 부모 프로세스는 무엇이며 argv는 무엇이었나요?
  2. stdin/stdout은 어디로 갔나요? 이상적으로는 쉘 명령이 재구성되는 것을 보고 싶지만 아마도 너무 많은 것을 요구하고 있다는 것을 알고 있으므로 최소한 파이프 설명자 ID가 있어야 합니다(그래서 내 스크립트로 재구성을 시도할 수 있습니다).

그러한 문제에 어떻게 접근할 수 있습니까?

답변1

시스템 execve호출은 현재 프로세스를 대체합니다. 프로그램이 다른 프로그램을 시작한 후에도 제어권을 유지하려면 먼저 fork또는 vfork를 사용하여 새 프로세스를 생성한 다음 를 호출 해야 합니다 execve.

열려 있는 파일 설명자와 권한은 프로그램 이미지가 에서 교체될 때 인계됩니다 execve(플래그로 표시된 것은 제외 CLOEXEC). 따라서 열린 파일은 에서 부모 프로세스로부터 상속된 다음 및 fork사이에서 수정 되고 (예: 를 사용하여 ) 마지막으로 필터링됩니다. 호출 .forkexecvedup2execve

따라서 감사 데이터에서 완전한 그림을 얻는 것은 어려울 것입니다.

관련 정보