
Azure의 엔터프라이즈 취약점 관리 — Terraform으로 배포된 Nessus 스캐너, 인증된 스캐닝, CVE-2013-3900 수정 및 검증된 재스캔
전체 취약점 관리 수명 주기 — 스캔, 발견, 수정, 검증 — Terraform으로 배포된 전용 Nessus 스캐너를 사용하여 실제 Azure Active Directory 랩 환경에서 실행합니다.
기존 Azure AD 랩 환경에 전용 Ubuntu 24.04 스캐너 VM을 배포하고, 도메인 컨트롤러, 파일 서버, 도메인 가입 클라이언트를 대상으로 인증되지 않은 기준 스캔과 자격 증명 스캔을 실행했습니다. 결과를 분석하고, PowerShell 레지스트리 강화를 통해 High 심각도 항목(CVE-2013-3900)을 수정한 후, 재스캔으로 수정을 확인했습니다. 이는 엔터프라이즈 취약점 관리 프로그램이 지속적으로 실행하는 완전한 워크플로입니다.
| 인증되지 않은 기준 스캔 | 자격 증명 스캔 |
|---|
| 발견 항목 | 35 | 64 |
| 가시성 | 외부 공격 표면만 — 공격자의 관점 | OS 내부 — 패치 수준, 레지스트리 구성, 로컬 검사 |
| 인증 | 실패 (모든 3개 호스트) | NTLMv2를 통한 Windows 자격 증명, 평문 전송 없음 |
| 스캔 시간 | 15분 | 23분 |
발견 항목의 증가는 자격 증명 스캔의 필요성을 완전히 입증합니다. 이 랩에서 수정한 High 심각도 CVE-2013-3900은 로컬 검사로서 인증되지 않은 스캔에서는 전혀 볼 수 없었습니다.
Subnet-Servers에 있는 전용 NESSUS01 스캐너 어플라이언스, 세 개의 모든 Windows 대상으로 자격 증명 스캔 경로. 관리 평면은 관리 워크스테이션에서 SSH 터널을 통해서만 접근 가능 — 포트 8834는 공개적으로 노출되지 않음.
스캐너는 Enterprise Azure Infrastructure Automation 시리즈의 기존 랩 VNet에 합류하며, 독립적인 Terraform 구성과 자체 원격 상태로 배포되었습니다.
| 호스트 | 역할 | OS | 개인 IP |
|---|---|---|---|
| NESSUS01 | 취약점 스캐너 | Ubuntu 24.04 LTS | 10.0.1.8 |
| DC01 | 도메인 컨트롤러 (lab.local) | Windows Server 2025 | 10.0.1.5 |
| FS01 | 파일 서버 | Windows Server 2025 | 10.0.1.6 |
| CLIENT01 | 도메인 가입 워크스테이션 | Windows 11 Pro | 10.0.1.7 |
내가 내린 설계 결정:
data 블록을 통해 참조하며, 상태는 자체 nessus-scanner.tfstate 키에 격리되어 스캐너를 핵심 랩 상태에 영향을 주지 않고 생성 및 삭제할 수 있습니다.ssh -L 8834:localhost:8834)을 통해 UI에 접근합니다. 관리 평면 노출은 스캐너 어플라이언스가 손상되는 가장 큰 원인입니다.배포하기 전에 기존 NSG 규칙을 감사했는데, 이 랩이 잡아내기 위해 존재하는 정확한 종류의 잘못된 구성을 발견했습니다. RDP 규칙이 소스 * (인터넷의 모든 IP)를 허용하고 있었습니다.
사전 감사: az network nsg list 쿼리가 Allow-RDP-3389가 모든 소스(*)에 열려 있음을 노출.
진행하기 전에 현재 공개 IP로 제한했습니다.
az network nsg rule update -g RG-FileServerLab --nsg-name NSG-RDP \
-n Allow-RDP-3389 --source-address-prefixes $(curl -s ifconfig.me)
수정 후 동일한 규칙 — 소스가 단일 관리 IP로 제한됨.
스캐너를 가리키기 전에 자신의 환경에서 노출을 찾아 수정하는 것은 "도구 실행"에서 "보안 수행"으로의 사고 전환입니다.
공용 IP, NSG, NIC, NSG 연결, Ubuntu VM 등 다섯 개의 리소스를 2분 이내에 배포했습니다.
terraform apply: 5개 추가, 0개 변경, 0개 삭제. 출력에는 바로 사용할 수 있는 SSH 명령이 포함됨.
그런 다음 SSH로 연결하여 헤드리스 Nessus Essentials 10.12.1 설치를 수행했습니다.
NESSUS01에 첫 번째 SSH 연결 (키 기반 인증) — Ubuntu 24.04가 10.0.1.8에서 실행 중이며 헤드리스 Nessus 설치 준비 완료.
첫 번째 스캔: 자격 증명 없음 — 이것이 네트워크 세그먼트의 공격자가 보는 것입니다.
세 개의 모든 호스트(10.0.1.5, 10.0.1.6, 10.0.1.7)를 대상으로 하는 기본 네트워크 스캔.
기준 결과: 3개 호스트에서 35개 발견 항목. Auth 열에 Fail 표시 — Nessus가 로그인할 수 없었으므로 모든 결과는 외부 관찰에서만 나옴.
자격 증명 스캔은 내부 취약점 관리의 엔터프라이즈 표준입니다. Windows 대상을 준비하기 위해 Remote Registry 서비스를 활성화하고 도메인 프로필에 필요한 방화벽 규칙 그룹을 열었습니다.
Set-Service -Name RemoteRegistry -StartupType Automatic
Start-Service RemoteRegistry
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True -Profile Domain
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" -Enabled True -Profile Domain
FS01에서 대상 준비 — RemoteRegistry가 Automatic 시작으로 실행 중, 도메인 프로필에 대해 WMI 및 File & Printer Sharing 규칙 활성화.
엔터프라이즈가 요구하는 보안 옵션으로 스캔에 Windows 자격 증명을 구성했습니다. 자격 증명을 절대 평문으로 보내지 않고 NTLMv2만 사용합니다.
Windows 자격 증명 구성 — 도메인 LAB, NTLMv1 비활성화, 평문 자격 증명 전송 비활성화, 스캔 중 Remote Registry 자동 시작 활성화.
자격 증명 결과: 64개 발견 항목 — 동일한 세 개의 호스트에서 인증되지 않은 기준 스캔 대비 83% 증가.
심각도별 정렬된 발견 항목. High 심각도 WinVerifyTrust 로컬 검사가 이제 표시됨 — 인증되지 않은 스캔이 감지할 방법이 전혀 없었던 발견.
플러그인 #166555가 DC01과 FS01 모두에서 WinVerifyTrust 서명 검증 (CVE-2013-3900) 을 플래그했습니다. CVSS v3 기본 점수 8.8, Tenable VPR 9.0. EnableCertPaddingCheck 레지스트리 값이 누락되어 있어 공격자가 서명된 실행 파일에 악성 콘텐츠를 추가해도 Authenticode 서명이 무효화되지 않는 상태로 남아 있었습니다.
전체 발견 분석: 플러그인 출력이 10.0.1.5와 10.0.1.6에서 레지스트리 값이 없음을 확인하며, 해결 방법 섹션에 정확한 수정 경로가 문서화되어 있음.
이 발견이 중요한 이유: 이는 구성에 의한 완화 취약점입니다. Microsoft가 수정을 옵트인 방식으로 만들었기 때문에 패치가 존재하지 않습니다. CVE가 발표된 지 13년 후인 2026년에도 신규 Windows Server 2025 이미지에서 누락된 상태로 출하되었습니다. 이는 자격 증명 스캔과 구성 관리만이 잡아낼 수 있는 정확한 유형의 문제입니다.
플러그인의 해결 방법 섹션에 따라 영향을 받은 호스트에 수정을 적용했습니다. 64비트 및 Wow6432Node 레지스트리 경로 모두에 EnableCertPaddingCheck = 1을 설정한 후, 재스캔하기 전에 두 키를 모두 확인했습니다.
New-Item -Path "HKLM:\Software\Microsoft\Cryptography\Wintrust\Config" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Cryptography\Wintrust\Config" `
-Name "EnableCertPaddingCheck" -Value "1" -Type String
New-Item -Path "HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config" `
-Name "EnableCertPaddingCheck" -Value "1" -Type String
수정 적용 및 Get-ItemProperty로 확인 — 두 레지스트리 경로 모두 이제 EnableCertPaddingCheck : 1을 반환.
그런 다음 대부분의 사람들이 건너뛰는 단계 — 검증 재스캔입니다. 스캐너가 발견 항목이 사라졌음을 확인할 때까지 티켓을 닫지 않습니다.
검증 스캔 (기록: 2): High 심각도 CVE-2013-3900 발견 항목이 해결되었습니다. 남은 가장 높은 심각도는 Medium입니다.
발견 → 분석 → 수정 → 검증. 루프 종료.
| 기술 | 적용 위치 |
|---|---|
| 취약점 관리 수명 주기 | 종단 간: 기준 스캔, 자격 증명 스캔, 분석, 수정, 검증 |
| Nessus 배포 및 운영 | Ubuntu에서 Essentials 10.12.1, 스캔 정책 구성, 자격 증명 스캔 |
| 안전한 스캐너 아키텍처 | 전용 VM, SSH 터널 전용 관리 평면, 키 기반 인증, 최소 권한 NSG |
| 코드형 인프라스트럭처 | 기존 인프라에 대한 데이터 소스를 사용한 Terraform, 격리된 원격 상태 |
| Azure 네트워크 보안 | Azure CLI를 통한 NSG 감사 및 강화, 소스 IP 제한 워크플로 |
| Windows 강화 | 레지스트리 기반 완화 (CVE-2013-3900), Remote Registry / WMI / 방화벽 준비 |
| CVSS 및 위험 해석 | CVSS 8.8 / VPR 9.0 분석, 자격 증명 대 인증되지 않은 가시성 비교 |
| PowerShell 관리 | 서비스 구성, 방화벽 규칙 그룹, 확인을 포함한 레지스트리 수정 |
취약점 관리는 거의 모든 보안 운영, 클라우드 보안 및 GRC 역할의 핵심 기능입니다. 이 랩은 전체 업무를 다룹니다. 단순히 스캐너를 실행하는 것이 아니라, 스캐너를 안전하게 배치하는 아키텍처 설계, 대상을 올바르게 준비, 결과에서 신호와 노이즈를 구분, 수정 실행 및 작동 입증까지 포함합니다. 인증되지 않은 스캔과 자격 증명 스캔의 비교와 검증 재스캔은 실무자와 도구 운영자를 구분짓는 두 가지 요소입니다.
전문 산출물 — 경영진 요약, 방법론, 상세 CVE-2013-3900 발견 분석, 잔여 위험 처리, 우선순위 권장 사항 — 전체를 PDF로 제공합니다.
Nessus Essentials는 보고서 내보내기를 포함하지 않으므로, 이 산출물은 스캔 데이터와 별도로 작성되었습니다. 이것이 무료 티어가 빠뜨리는 평가 보고 기술입니다.
이 스캐너는 Enterprise Azure Infrastructure Automation 시리즈에서 구축한 환경에 배포됩니다.
이 저장소에는 비밀이 저장되지 않습니다. 스캐너는 SSH 키 인증만 사용하며, 스캔 자격 증명은 Nessus 콘솔에 직접 입력되었고 코드에 커밋되지 않았습니다.