Brute-Force 사용자 이름 열거 / 실패한 사용자 이름 AD를 추적하는 가장 좋은 방법


9

우리는 응용 프로그램에 로그인하는 도메인 자격 증명을 사용하는 응용 프로그램이있는 Windows Server가 있습니다. 최근 펜 테스트 중에 테스터는 응용 프로그램의 응답에 따라 유효한 도메인 사용자 이름을 열거하기 위해 응용 프로그램을 사용할 수있었습니다 (잘못된 사용자 이름과 잘못된 암호에 대해 다른 응답을 제공함).

응용 프로그램이 수정되어이 정보를 공개하지는 않지만 짧은 기간 동안 2000,000 번 이상의 잘못된 사용자 이름 시도가 있었기 때문에이 공격을 감지 한 것 같습니다. 관리자가 Active Directory를 면밀히 관찰 한 경우에도이를 보지 못했습니다. 분명히 응용 프로그램이 설치된 서버의 로컬 이벤트 로그에만 오류가 나타납니다.

내 질문 : 1) Active Directory가 실패한 사용자 이름 요청을 중앙 위치에 기록하여 급증하는 것을 알 수있는 방법이 있습니까?

2) 그렇지 않은 경우 향후 이러한 유형의 공격을 모니터링하고 적극적으로 탐지하는 가장 좋은 방법은 무엇입니까 (새로운 장비를 너무 많이 사지 않아도 됨).

당신의 도움을 주셔서 감사합니다.

답변:


11

좋은 질문입니다.

가장 먼저해야 할 것-대부분의 "침투 테스터"는 스크립트 키즈라고 생각합니다. 내 편견은 공정하지 않거나 정확하지 않을 수 있지만이 고지 사항을 적용하여 내 음의 냉소를 감지하면 그 출처가 어디인지 알 수 있습니다. 나는 숙련 된 펜 테스터 가 없다고 말하지는 않지만 이것이 나의 전반적인 일반성입니다.

(삶을위한 블루 팀!)

내 질문 : 1) Active Directory가 실패한 사용자 이름 요청을 중앙 위치에 기록하여 급증하는 것을 알 수있는 방법이 있습니까?

이 질문에 철저하고 자신감있게 대답 할 수있는 충분한 정보를 제공하지 않았습니다. 당신은 말했다 응용 프로그램이 열거 사용자 계정에 공격자를 허용 결함을 포함하는 것으로 확인되었다. 난 당신에 대한 로깅을 수행하기 위해 해당 광고의 요구를 느끼는 것을 방법으로 이해하기 위해 노력하고있어 귀하의 응용 프로그램입니다.

분명히 응용 프로그램이 설치된 서버의 로컬 이벤트 로그에만 오류가 나타납니다.

분명히 실패는 서버의 이벤트 로그에 나타났다? 아니면 서버의 이벤트 로그에 실패 표시 되었습니까? 그렇다면 이벤트는 정확히 무엇을 말했습니까? 누가 기록 했습니까? 너의 어플리케이션? 아니면 Windows? 찾아서 답변에 추가 설명을 추가 할 수 있습니다.

이 이벤트가 어떻게 든 Active Directory에 의해 기록되었다는 가정하에 여기에서 사지에 나 가려고합니다. 만약 당신의 테스터가 실제로 응용 프로그램의 결함을 전혀 이용하지 않고 대신에 사용자 이름을 열거하는 Kerberos 자체의 잘 알려진 결함? Kerberos 자체에는 공격자가 수천 번의 "사전 인증"시도 (예 : 무차별 대입 공격)를 시도 할 수있는 설계 결함으로 간주되는 내용이 포함되어 있으며 KDC는 사용자 계정의 존재 여부에 따라 다르게 응답합니다. 이것은 Active Directory 관련 동작이 아니지만 MIT Kerberos, Heimdal 등에 적용됩니다. KDC는KDC_ERR_PREAUTH_REQUIRED실제 인증을 시도하지 않아도 유효한 사용자 이름에 사전 인증 데이터가없는 경우 이런 식으로 KDC에서 사용자 이름을 열거 할 수 있습니다. 그러나 공격자 (또는 KrbGuess와 같은 공격자가 사용하는 도구-다른 사람의 도구를 사용할 때 펜 테스터가 최고이기 때문에)는 전체 인증 시도를 계속할 필요가 없기 때문에 아무 것도 기록되지 않습니다. 실제 인증이 시도되었습니다!

다음 질문으로 넘어가겠습니다.

2) 그렇지 않은 경우 향후 이러한 유형의 공격을 모니터링하고 적극적으로 탐지하는 가장 좋은 방법은 무엇입니까 (새로운 장비를 너무 많이 사지 않아도 됨).

몇 가지.

첫째, 이러한 종류의 공격을 탐지하도록 설계된 유료 엔터프라이즈 급 제품이 많이 있습니다. 많은 공급 업체가 이러한 제품을 제공하며 제품 권장 사항은 Serverfault의 주제와 맞지 않습니다. 그곳에. 이러한 제품 중 다수는 도메인 컨트롤러에 들어가거나 나가는 모든 패킷을 문자 그대로보고 분석 할 수 있도록 도메인 컨트롤러와 이러한 "데이터 수집기"간에 포트 미러링을 구성해야합니다.

(죄송 합니다만, "새로운 물건을 너무 많이 사지 않으면 서"조항에 해당합니다.)

도움이 될 수있는 또 다른 것은 레지스트리 항목입니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

여기에 문서화되어 있습니다 .

이 레지스트리 항목을 사용하면 보안 이벤트 로그에 Kerberos 사전 인증이 필요하다는 Kerberos 오류에 대한 이벤트 가 쇄도 해야 합니다. 그러한 사건의 예 :

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

그러나 Kerberos 요청의 쓰나미가 정확히 어디서 오는지를 지정하지 않으면 도움이 될 수도 있고 도움이되지 않을 수도 있습니다. 이를 통해 앞서 언급 한 엔터프라이즈 침입 탐지 제품으로 돌아갑니다.

또한 서버가 이벤트를 중앙 집중식 위치로 전달하여 원하는 도구를 사용하여 분석 할 수있는 Windows 이벤트 전달을 잊지 마십시오.

이 전체 답변은 지금까지 Kerberos 프로토콜을 전제로 했으므로 게시물에 세부 사항이 거의 없기 때문에 당연히 받아 들일 수 없습니다. 그럼에도 불구하고, 이것이 조금이라도 도움이되기를 바랍니다.


답변 주셔서 감사합니다. 월요일에 다시 확인하지만 이벤트 로그는 로컬 서버에 로그인하지 못한 경우의 표준 Windows 이벤트라고 생각합니다 (예 : 잘못된 사용자 이름으로 RDP를 통한 로그인 실패와 동일 함). 응용 프로그램에 따라 다릅니다. Kerberos 인증 열거의 경우 펜 테스터가 로컬 인트라넷에 있어야한다고 생각합니다. 그들은 아니었다. 응용 프로그램은 인터넷을 통해 표준 폼 기반 인증을 통해 공개적으로 사용할 수 있으며 OS를 기본적으로 호출합니다.
Doug

0

이것은 정답을 듣고 싶은 흥미로운 질문입니다. Doug가 도움이 될만한 정보를 발견했지만 약간 부적절하다고 생각합니다. 다른 사람이 아마도 확장 된 답변을 제공 할 수 있습니다.

감사 정보를 저장하려는 서버에 로그인 하십시오. 실행-> RSOP.MSC-> 컴퓨터 구성-> Windows 설정-> 보안 설정-> 로컬 정책-> 감사 정책-> "계정 로그온 이벤트 감사"& " 감사 로그온 이벤트 "

"계정 로그온 이벤트"에 대한 설명은 다음과 같습니다.

계정 로그온 이벤트 감사

이 보안 설정은이 컴퓨터가 계정의 자격 증명을 확인할 때마다 OS가 감사하는지 여부를 결정합니다.

계정 로그온 이벤트는 컴퓨터가 신뢰할 수있는 계정의 자격 증명을 확인할 때마다 생성됩니다. 도메인 구성원과 도메인에 가입하지 않은 컴퓨터는 로컬 계정에 대한 권한이 있습니다. 도메인 컨트롤러는 모두 도메인 계정에 대해 권한이 있습니다. 자격 증명 유효성 검사는 로컬 로그온을 지원하거나 도메인 컨트롤러의 Active Directory 도메인 계정 인 경우 다른 컴퓨터에 대한 로그온을 지원할 수 있습니다. 자격 증명 유효성 검사는 상태 비 저장이므로 계정 로그온 이벤트에 해당하는 로그 오프 이벤트가 없습니다.

이 정책 설정이 정의 된 경우 관리자는 성공 만, 실패 만, 성공과 실패를 모두 감사할지 또는 이러한 이벤트를 전혀 감사하지 않을지 (즉, 성공이나 실패 여부)를 지정할 수 있습니다.

"로그온 이벤트"에 대한 설명은 다음과 같습니다.

로그온 이벤트 감사

이 보안 설정은 OS가이 컴퓨터에 로그온하거나 로그 오프하려는 각 사용자 인스턴스를 감사할지 여부를 결정합니다.

로그온 한 사용자 계정의 로그온 세션이 종료 될 때마다 로그 오프 이벤트가 생성됩니다. 이 정책 설정이 정의 된 경우 관리자는 성공 만, 실패 만, 성공과 실패를 모두 감사할지 또는 이러한 이벤트를 전혀 감사하지 않을지 (즉, 성공이나 실패 여부)를 지정할 수 있습니다.

실패한 시도 만 모니터링하려면 해당 정책을 활성화하고 정책 설정을 정의한 다음 "실패"를 선택해야합니다. 원하는 경우 성공도 모니터링 할 수 있지만, 이런 종류의 공격을 찾는 것만 걱정하면 파싱하기가 약간 더 어려워 질 수 있습니다.

시스템이 취약 할 수있는 유사한 구성이 걱정된다면 SCAP 스캐너와 함께 사용할 때 STIG 설정 ( link )을 살펴 보는 것이 좋습니다 . 단 달기. STIG 뷰어는 몇 가지 오탐 (false positive)을 발생시키는 경향이 있지만 각 문제의 세부 사항을 읽으면 시작하지 않는 것으로 보일 수 있습니다.


1
나는 MSFT 또는 nist 기준선을 제안 할 것이다. DISA는 호스트를 실체로 확보하기보다는 환경에 대해 가정한다. 예, 적절한 감사가 필요합니다. 또한 Active Directory 백서 보안을위한 모범 사례를 읽었습니다.
Jim B

좋은 지적, 짐 B! 나는 그 측면을 고려하지 않았습니다.
Sawta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.