Linux에서 바이너리 임플란트 공격 방지

Linux에서 바이너리 임플란트 공격 방지

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 확인도 활성화합니다).

두 가지 방법 모두 이를 우회하는 방법이 있습니다...

관련 정보