루트 비밀번호를 알면 현재 시스템에 설치된 프로세스의 권한이 높아질 수 있습니까?

루트 비밀번호를 알면 현재 시스템에 설치된 프로세스의 권한이 높아질 수 있습니까?

Unix 계열 시스템(macOs, Linux, Solaris 등)이 악의적인 공격자가 개발한 프로그램을 인터넷에서 설치한 시나리오를 가정해 보겠습니다.

프로그램은 권한을 상승시키기 위해 시스템의 제로데이 취약점을 사용하지 않습니다. 모든 제한 사항을 포함하여 관리자가 아닌 일반 사용자의 컨텍스트에서 실행됩니다. 사용자가 터미널에 "su"를 입력하고 이어서 비밀번호를 입력하는 것을 기록할 때까지 백그라운드에서 모든 키 입력을 기록합니다. 이 프로그램은 갑자기 루트 사용자의 비밀번호를 캡처했습니다.

내 질문은 이 암호를 캡처한 후 프로그램이 루트 사용자의 컨텍스트에서 자체적으로 다시 시작될 수 있는지, 아니면 실행 중에 권한을 상승시켜 현재 사용자가 눈치채지 못하게 할 수 있는지입니다. 그러한 프로그램이 그러한 작업을 수행할 수 있게 해주는 유틸리티는 무엇입니까? 나는 커널의 버그나 취약점이 악용되지 않는 이상적인 시나리오에 대해 이야기하고 있습니다. 나는 단지 기존 시스템 유틸리티를 원래 의도된 대로 사용하는 프로그램에 대해 이야기하고 있을 뿐입니다.

답변1

expect이것이 바로 이 프로그램(및 유사한 프로그램)이 수행하도록 설계된 것입니다. su에서 실행하고 expect, 비밀번호 프롬프트를 감지하고, 비밀번호(캡처한)를 보낸 다음 명령을 보낼 수 있는 루트 셸을 가질 수 있습니다 .

예를 들어

#!/usr/bin/expect --

set mypasswd "imnottellingyou"

spawn "su"
expect "ssword"
send "$mypasswd\n"
expect "#"
interact

답변2

예. su을 실행하여 su사용자의 비밀번호를 변경할 수 있는 프로그램입니다. su사용자를 변경할 수 있는 기능이 있으며 올바른 비밀번호를 제공한 경우에만 이 작업을 수행합니다.

그러나 이를 수행하는 유일한 방법은 새 프로세스를 시작하거나 기존 프로세스의 프로그램을 바꾸는 것입니다. 그런 다음 새로운 권한으로 다시 시작할 수 있습니다.

현학적인 참고 사항: 프로세스는 에스컬레이션을 통해 권한을 에스컬레이션할 수 있습니다 su. 그러나 프로그램은 그럴 수 없다. 단, 새 프로그램( su)은 이전 프로그램을 다시 시작할 수 있습니다.

관련 정보