SOC Prime Bias: Medium

04 Jul 2026 07:02 UTC

ADWS와 숨겨진 경로로써의 Active Directory 열거

Author Photo
SOC Prime Team linkedin icon 팔로우
ADWS와 숨겨진 경로로써의 Active Directory 열거
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 기사는 TCP 포트 9389를 통한 Active Directory Web Services (ADWS) 프로토콜을 사용하는 Active Directory 나열에 대한 은밀한 방법을 설명합니다. 공격자들은 표준 LDAP를 포트 389 또는 636 대신 ADWS에 의존함으로써 많은 일반적인 네트워크 탐지 및 EDR 경보를 피할 수 있습니다. 이 접근법은 정당한 관리 프로토콜과 도구를 이용하여 정찰 활동을 숨깁니다.

조사

조사는 .NET 메시지 프레이밍, NegotiateStream 및 NBFSE 바이너리 SOAP 인코딩을 포함하여 ADWS의 기술적 층을 검토합니다. 이러한 구성 요소가 네트워크 트래픽을 모호하게 하여 쿼리 출처를 식별하기 어렵게 하여 운영 보안을 어떻게 향상시키는지 설명합니다. 저자는 ‘ADWSHound’라는 개념 증명 도구를 소개하여 기술을 시연하고 검증합니다.

완화

권장 사항으로는 TCP 포트 9389를 통한 트래픽 모니터링, 이벤트 1644와 함께 디렉토리 서비스 진단 로깅 활성화, 민감한 디렉토리 객체에 대한 SACL을 통한 접근 감사 적용이 포함됩니다. 조직은 또한 비인가 나열을 감지하기 위해 카나리아 객체 배포를 고려해야 합니다. Operation ID에 의해 디렉토리 서비스 이벤트를 연관시킴으로써 의심스러운 나열 활동을 재구성할 수 있습니다.

응답

이런 행동이 탐지되면, 대응자는 포트 9389로의 연결 출처를 조사하고 ADWS를 통해 합법적인 이유 없이 통신하는 프로세스를 식별해야 합니다. 디렉토리 쿼리에 사용된 계정은 환경 전반의 활성 세션과 연관되어 손상된 시스템을 찾아야 합니다. 이벤트 4662도 보호된 객체에 대한 비인가 액세스의 징후를 찾아 검토해야 합니다.

공격 흐름

시뮬레이션 실행

필수 조건: 원격 측정 및 기준선 사전 점검이 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 상대방 기술(TTP)의 정확한 실행을 설명합니다. 명령과 설명은 반드시 식별된 TTP를 직접 반영해야 하며, 탐지 논리에 의해 기대된 정확한 원격 측정을 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 것입니다.

  • 공격 서사 및 명령: 상대방이 워크스테이션에 초기 액세스를 확보하고 횡적 이동을 용이하게 하기 위해 도메인 사용자를 나열하려고 합니다. 기본 서명 기반 도구에 의한 탐지를 피하기 위해, 공격자는 공식 Microsoft PowerShell Active Directory 모듈을 사용하기로 결정합니다. 그들은 Get-ADUser 를 실행하여 도메인의 모든 사용자의 목록을 가져옵니다. 이 작업은 LDAP 쿼리를 처리하기 위해 Active Directory Web Services (ADWS)를 강제하며, 진단 로깅이 활성화되어 Windows 이벤트 1644에 ‘Get-ADUser’ 문자열이 포함되어 탐지 규칙을 트리거합니다.

  • 회귀 테스트 스크립트:

     # Active Directory 모듈이 사용 가능한지 확인
      if (!(Get-Module -ListAvailable ActiveDirectory)) {
          Write-Error "이 스크립트는 RSAT Active Directory 모듈이 필요합니다."
          return
      }
    
      Write-Host "[+] 시뮬레이션 시작: Get-ADUser를 통한 LDAP 나열" -ForegroundColor Cyan
    
      # Get-AD* 패턴을 사용하여 단일 사용자를 쿼리하여 탐지를 트리거
      # 이는 디렉토리 서비스 로그에 'Get-AD*'가 포함된 이벤트 ID 1644를 생성해야 합니다
      try {
          Get-ADUser -Filter * -ResultSetSize 1 | Out-Null
          Write-Host "[+] 시뮬레이션 명령이 성공적으로 실행되었습니다." -ForegroundColor Green
          Write-Host "[+] 'Get-AD*'이 포함된 이벤트 ID 1644의 디렉토리 서비스 로그를 확인하십시오." -ForegroundColor Yellow
      }
      catch {
          Write-Host "[-] 명령 실행 오류: $($_.Exception.Message)" -ForegroundColor Red
      }
  • 정리 명령:

     # AD 데이터베이스에 영구적인 변경 사항이 없었습니다.
      # 레지스트리 진단 수준을 수동으로 증가시킨 경우에는 복원하십시오:
      # Set-ItemProperty -Path "HKLM:SystemCurrentControlSetServicesNTDSDiagnostics" -Name "16 LDAP Interface Contained" -Value 0
      Write-Host "[+] 정리 완료. 되돌릴 상태 변화가 없습니다." -ForegroundColor Cyan