Linux 컴퓨터의 사용자 계정이 손상되면 해당 사용자가 소유한 모든 파일도 손상됩니다.
불행히도, 손상된 사용자에게 sudo 권한도 있는 경우 바이너리 이식을 사용하여 sudo 비밀번호를 쉽게 얻을 수 있는 것으로 보이며 이로 인해 공격이 루트 권한으로 확대됩니다(나쁜).
이 공격에 대한 효과적인 방어책이 있습니까? 아니면 일반적으로 sudo를 사용하면 루트 권한이 손상된다는 것이 인정됩니까?
관련 의견이 있는 이전 질문: zsh - <tab>에서 바이너리 경로를 완전히 확장합니다.
쉘 .rc 파일이 루트의 소유이더라도 로컬 사용자가 해당 파일을 삭제하고 악성 $PATH 변수가 포함된 파일로 대체될 수 있거나 터미널을 여는 키보드 단축키가 악의적인 사람 한 명으로 대체됩니다.
답변1
적어도 대규모 시스템 재설계 없이는, 그리고 사용자에게 큰 부담을 주지 않고서는 이러한 공격을 완전히 방지하는 것이 불가능합니다.
공격자가 귀하의 계정에 대한 쓰기 권한을 갖고 있는 경우, 사용자는 귀하의 눈에서 모든 손상 흔적을 숨기는 시뮬레이션 환경을 만들 수 있습니다. 가장 확실한 방법은 다음과 같습니다.LD_PRELOAD
자신과 공격자가 심은 다른 모든 것을 숨기는 라이브러리를 로드합니다. 이는 더 복잡한 래퍼가 필요한 정적으로 링크된 바이너리에는 적용되지 않습니다.
공격자가 다른 계정으로 에스컬레이션할 때까지 다른 사용자는 해당 공격을 계속 볼 수 있습니다. 따라서 계정의 파일을 확인하고 변경 사항을 보고하는 프로세스를 루트로 실행할 수 있습니다. 이것의 문제는 많은 법적 변경을 하게 될 것이라는 점입니다. 소음 속에서 불법적인 변경을 발견할 가능성은 거의 없습니다.
계정 손상을 제어하는 한 가지 방법은 완전히 신뢰할 수 있는 사용자 인터페이스를 통과하도록 권한 승격을 요구하는 것입니다. 이는 다음을 의미합니다.
- 루트 인증은 사용자에게 속하지 않고 사용자가 제어할 수 없는 프로세스만 통과할 수 있습니다. 특히 X11 인터페이스는 없습니다.
로그인 프롬프트가 진짜인지 식별할 수 있는 방법이 있어야 합니다. 그렇지 않으면 공격자가 신뢰할 수 있는 UI를 가장할 수 있습니다. 이를 달성하는 방법에는 두 가지가 있습니다.
- 하나 있다안전 주의 버튼, 사용자는 다른 기능으로 바운스할 수 없습니다. 사용자 제어 하에 있지 않은 터미널에 로그인 프롬프트를 표시하려면 SAK를 누르십시오. 이것은 일부 unice에서 설정할 수 있지만 엄격한 보안 검사를 거친 완전한 솔루션을 알지 못합니다.
- 사용자가 제어할 수 없는 사용자 인터페이스를 통해 시스템이 사용자에게 다시 인증하도록 합니다. 인증은 자녀의 사진을 보여주는 등 정적일 수 있습니다. 이는 확인하기 쉽지만 표적 공격에서 스푸핑하기 쉽습니다. 인증은 동적일 수 있으며, 별도의 신뢰할 수 있는 시스템에서 확인할 수 있는 일회용 비밀번호가 제공됩니다. 이를 위해서는 그러한 시스템(일반적으로 OTP 토큰)이 필요합니다.
이 두 가지 방법은 로컬 로그인에만 작동합니다. 원격으로 작업할 때는 사용자와 시스템 간의 경로를 결정할 수 없습니다. 그리고 sudo
사용자 인터페이스 관점에서 복사-붙여넣기 명령 등과 같은 편리한 기능을 사용할 수 없으며 기본적으로 다른 터미널로 전환하는 등 파괴적인 작업을 수행해야 합니다.
아, 공격자가 루트 권한을 얻으면 쉽게 루트킷을 설치하여 탐지할 수 없게 만들 수 있습니다. 어쨌든 로컬 공격은 일반적입니다. 공격자가 귀하의 계정을 손상시켰고 그것이 고급 공격인 경우(단지 터미널을 방치한 경우 반드시 그런 것은 아닙니다) 루트 계정도 손상되었다고 가정하십시오.
답변2
sudo
구성에서 사용자가 실행할 수 있는 명령을 제한할 수 있습니다 sudo
. Sudo는 루트와 동일할 필요가 없습니다.
그렇지 않은 경우에는 귀하가 자신의 질문에 대답했다고 생각합니다. 제가 닭장 열쇠를 가지고 있고 Mr. Fox가 제 열쇠를 받으면 제가 닭을 모두 먹을 수 있습니다. 이에 대한 해결책은 없습니다.
그러나 루트킷이 설치되면 경고할 수 있는 tripwire
또는 같은 도구가 최소한 몇 가지 있습니다 .ossec
자세한 내용은 여기를 참조하세요..
답변3
Tripwire/AIDE/Samhain은 HIDS(호스트 기반 침입 탐지 시스템)가 작동하는 방식입니다. 이들 중 일부는 중앙 서버 구성 요소와 함께 사용될 수 있으므로 서명이 로컬 시스템(예: Samhain의 Beltane)에 있지 않습니다.
파일이 자주 변경되는 또 다른 방법(내 워크스테이션에서 사용)은 OS 파일이 여전히 일관성이 있는지 확인하는 것입니다.
전체 rpm -Va
출력을 파일에 넣고 해당 출력을 다음 실행과 비교하여 이를 수행합니다. 이렇게 하면 OS 패치 변경 사항에 포함되지 않은 바이너리 변경 사항을 캡처할 수 있습니다(gpg 확인도 활성화합니다).
두 가지 방법 모두 이를 우회하는 방법이 있습니다...