ptrace
최신 버전의 Ubuntu를 사용하여 동일한 OS 사용자로 실행되는 다른 프로세스의 메모리를 확인하고 싶습니다 . 그러나 나는 곧 우연히 발견했다.
허용되지 않는 작업
빠른 웹 검색 후 다음을 찾았습니다.
Ubuntu 10.10 이상에서는 사용자가 디버거의 하위 프로세스가 아닌 프로세스를 ptrace할 수 없습니다. 이 동작은 Yama를 통해 제공되는 /proc/sys/kernel/yama/ptrace_scope sysctl을 통해 제어할 수 있습니다.
나는 이 값을 0으로 설정하고 내가 원하는 것을 할 수 있다는 것을 알고 있습니다. 그런데 ptrace_scope
기본 설정이 0인 Linux 배포판이 있는지 궁금합니다 .
답변1
예, 그렇습니다. 예를 들어 데비안은 ptrace_scope=1
기본값을 간단히 설정했습니다.다시 전환하다.
ptrace
비하위 프로세스를 비활성화하여 제공되는 보호는 다소 제한적입니다. 작지만 무시할 수 없는 비용으로 실제적이지만 협소한 악용을 방지합니다. 사용자로 실행 중인 프로세스에서 실행할 수 있는 공격자는 ptrace
이미 해당 사용자로 임의의 프로세스를 실행하고 해당 사용자의 모든 파일에 액세스할 수 있습니다. 따라서 이러한 제한은 이미 실행 중인 프로세스(일반적으로 메모리에 사용자가 입력한 비밀이 있는 ptrace_scope
실행 중인 키 에이전트 프로세스( ssh-agent
, gpg-agent
, , ...))의 권한 있는 비밀 정보만 보호합니다. gnome-keyring-daemon
제한의 대가는 애플리케이션이 ptrace
시작하는 프로세스를 제어하는 데만 사용할 수 있다는 것입니다. 이는 실행 중인 gdb
프로세스 또는 .fakeroot
reptyr
답변2
있다면 있어서는 안 됩니다. 대부분은 곧 전환되었습니다. https://www.youtube.com/watch?v=hAj2_-KWeoo
간단히 말해서, 영리한 사람이 외부 프로세스에 코드를 주입하기 위해 ptrace를 통해 Linux에서 create-remote-thread를 구현하기로 결정했습니다.