2009-11-13 4 views
4

차이점 서비스 계정 유형의 차이점을 찾으려고합니다. 나는이 질문에 넘어졌다.Windows에서 서비스를 로컬 시스템으로 실행하는 것이 왜 안 좋습니까?

로컬 리소스에 대한 강력한 액세스 권한이 있고 가능한 경우 네트워크 서비스를 사용해야하기 때문에 대답이 나왔습니다.

그러나 여전히 로컬 리소스에 대한 강력한 액세스 권한이있는 경우 공격자가 계정에 액세스 할 수있는 방법을 이해할 수 없습니까? 계정을 손상시키는 방법은 무엇입니까? 그것이 보안에 관한 것이 전부라는 것을 이해하지만 어떻게 해야할지 모르겠습니다. 그것은 어두운 해커의 세계 일 수 있습니다. 그러나 누구나 간단히 설명하면 왜 네트워크 서비스 계정이 로컬 계정보다 나은지 설명 할 수 있습니까?

미리 감사드립니다.

+0

이것은 http://serverfault.com으로 가야합니다. – squillman

+4

@ 스킬 만 : 동의하지 않습니다. 서비스가 코딩되는 방식은 종종 필요한 수준의 개인 정보를 지정합니다. 이 질문에 대한 대답은 서비스를 작성하는 모든 사람에게 매우 중요합니다. – AnthonyWJones

+0

@Anthony : 나는 당신에게 동의하지 않는다. "네트워크 서비스 계정이 로컬 계정보다 나은 이유는 무엇입니까?" <- serverfault 자료. –

답변

11

실행하는 모든 프로그램이 서버의 공격 영역을 증가시킵니다.

결정된 악의적 인 배우가 프로그램의 버그 또는 허점을 악용하여 아무 것도 할 수 없다고 생각해야합니다. 작업을 수행하는 데 필요한 최소한의 권한으로 프로그램을 실행함으로써이를 완화합니다.

이 공격의 일부

은 다음과 같습니다

  • Luring attacks을하는 공격자 트릭 프로그램의 상승 된 권한에 따라 자신의 코드를 실행에 프로그램.

  • Buffer Overrun Attacks이 있으며, 여기에서 메소드로 전송 된 여분의 데이터는 제어 흐름 로직의 대상이 될 수도있는 인접 메모리에 기록됩니다.

  • Man in the Middle attacks, 여기서 공격자는 프로그램에 메시지를 위장합니다.

종종 주어진 서비스는 이들의 취약 분명하지 입니다. 네트워크 서비스 (또는 권한이 감소 된 다른 계정)로 실행하는 것은 소프트웨어 개발이라는 두 가지 중요한 사실을 인정하는 '미안한 것보다 나은 전략'입니다. 프로그래머는 오류가 있으며 공격자는 창의력을 발휘합니다.

7

로컬 계정은 로컬 컴퓨터에서 효과적으로 전체 관리 권한을 갖습니다. 따라서 버퍼 오버런에서 벗어나 실행되는 코드에서 벗어날 수있는 모든 코드에는 상당한 피해가 발생합니다.

반면에 네트워크 서비스 계정에는 기본적으로 로컬 시스템에 대한 게스트 수준의 액세스 권한 만 있습니다. 따라서 공격자가 서비스 내에서 코드를 보내고 실행할 수있는 방법을 찾더라도 코드에 제한된 액세스 권한이있을 수 있습니다.

0

서비스에 공격자가 버퍼 오버플로와 같은 임의의 코드를 실행할 수있는 버그가있는 경우 관리자 계정과 동일한 로컬 시스템 계정으로 서비스가 실행되고 있으면 컴퓨터로 모든 작업을 수행 할 수 있습니다. 따라서 서비스가 실행되고있는 권한이 낮은 계정 일수록 공격자가 얻을 수있는 더 적은 권한입니다.

0

가장 간단한 시나리오는 서비스 사용자가 명령 줄에서 일부 코드를 실행할 수 있도록 허용하는 경우입니다. 예를 들어 MS SQL Server에는 '명령 줄'명령 (예 : 프로그램 실행)을 실행할 수있는 저장 프로 시저가 있습니다.

6

LocalSystem 계정은 * nix 루트 계정의 Windows Equivilant입니다. 관리자 계정보다 훨씬 더 특권이 있습니다.LocalSystem으로 실행하면 시스템의 모든 리소스에 대한 모든 액세스 권한을 갖게됩니다.

다른 사람이 작성한 것처럼 최대한 적은 권한으로 실행되도록 코드를 작성해야합니다.

LocalService와 NetworkService의 가장 큰 차이점은 NetworkService로 실행되는 서비스가 도메인의 다른 컴퓨터 (내가 믿는 컴퓨터 계정)에 인증 할 수 있다는 것입니다.

LocalService 및 NetworkService 계정 모두 잠재적으로 위험한 권한 인 "가장"권한을가집니다. 즉, 서비스에서 호출하는 사용자를 가장 할 수 있습니다. 해당 사용자가 관리자 인 경우 낮은 권한 서비스에서 코드가 실행 중이더라도 관리자가 수행하는 모든 작업을 수행 할 수 있습니다. 공격자가 최소 권한 서비스에서 버퍼 오버 플로우를 악용 할 수있는 경우 호출자로 가장하는 데 사용하는 API를 훅 (hook out)하고 권한이 높은 호출자가 서비스를 호출 할 때까지 기다릴 수 있습니다. 이 기술은 "Token Kidnapping"및이 문제를 설명하는 MSRC has a great blog post으로 알려져 있으며 LocalService 및 NetworkService 계정 사용과 관련된 여러 가지 위험을 완화하는 방법을 설명하는 링크가 포함되어 있습니다.

관련 문제