
HTTP 서버에 대해 가벼운 무차별 대입 공격을 수행하여 일반적으로 접근 가능한 NTLM 인증 엔드포인트를 식별하는 도구입니다.
NTLMRecon은 Sachin Kamath(AKA pwnfoo)가 작성한 원본 NTLMRecon 유틸리티의 Golang 버전입니다. NTLMRecon을 활용하여 대상 웹서버에 대한 무차별 대입을 수행하고 NTLM 인증을 지원하는 일반적인 애플리케이션 엔드포인트를 식별할 수 있습니다. 여기에는 Exchange Web Services 엔드포인트와 같은 엔드포인트가 포함되며, 이는 종종 다중 인증을 우회하는 데 활용될 수 있습니다.
이 도구는 노출된 NTLM 인증 엔드포인트에서 컴퓨터 이름, Active Directory 도메인 이름 및 Active Directory 포리스트 이름에 대한 정보를 포함한 메타데이터 수집을 지원합니다. 이 정보는 사전 인증 없이 서버에 NTLM NEGOTIATE_MESSAGE 패킷을 전송하고 대상 서버가 반환한 NTLM CHALLENGE_MESSAGE를 검사하여 얻을 수 있습니다. 또한 이 도구와 함께 개발 동기와 Chariot 내에서 보다 고급 메타데이터 수집에 접근하는 방법에 대해 논의하는 블로그 게시물을 게시했습니다.
당사는 외부 공격 표면 관리 및 지속적 자동 레드 팀 플랫폼인 Chariot 내에서 노출된 NTLM 인증 엔드포인트의 무차별 대입 및 자동 식별을 수행하고자 했습니다. 당사의 기본 백엔드 스캐닝 인프라는 Golang으로 작성되었으며, Python으로 작성된 NTLMRecon 유틸리티를 다운로드하여 쉘을 통해 실행할 필요가 없기를 원했습니다. 또한 수집하는 정보의 세부 수준에 대한 더 많은 제어를 원했습니다.
다음 명령을 사용하여 NTLMRecon 유틸리티를 설치할 수 있습니다. 또는 GitHub의 릴리스 탭에서 미리 컴파일된 바이너리 버전을 다운로드할 수 있습니다.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
다음 명령을 사용하여 NTLM recon 유틸리티를 호출하고 노출된 NTLM 인증 엔드포인트를 검색할 수 있습니다:
NTLMRecon -t https://autodiscover.contoso.com
다음 명령을 사용하여 NTLM recon 유틸리티를 호출하고 수집된 메타데이터를 JSON 형식으로 출력하면서 노출된 NTLM 엔드포인트를 검색할 수 있습니다:
NTLMRecon -t https://autodiscover.contoso.com -o json
다음 명령을 사용하여 해당 엔드포인트를 테스트할 때 사용자 정의 Host 헤더를 지정할 수 있습니다:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
다음 명령을 사용하여 문제 해결을 위한 디버그 출력을 활성화할 수 있습니다:
NTLMRecon -t https://autodiscover.contoso.com -debug
다음은 서버에서 반환된 NTLM CHALLENGE_MESSAGE에서 수집한 데이터가 포함된 JSON 출력 예제입니다:
{
"url": "https://autodiscover.contoso.com/EWS/",
"ntlm": {
"netbiosComputerName": "MSEXCH1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "na.contoso.local",
"dnsComputerName": "msexch1.na.contoso.local",
"forestName": "contoso.local"
}
}
➜ ~ NTLMRecon -t https://adfs.contoso.com -o json | jq
{
"url": "https://adfs.contoso.com/adfs/services/trust/2005/windowstransport",
"ntlm": {
"netbiosComputerName": "MSFED1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "corp.contoso.com",
"dnsComputerName": "MSEXCH1.corp.contoso.com",
"forestName": "contoso.com"
}
}
➜ ~ NTLMRecon -t https://autodiscover.contoso.com
https://autodiscover.contoso.com/Autodiscover
https://autodiscover.contoso.com/Autodiscover/AutodiscoverService.svc/root
https://autodiscover.contoso.com/Autodiscover/Autodiscover.xml
https://autodiscover.contoso.com/EWS/
https://autodiscover.contoso.com/OAB/
https://autodiscover.contoso.com/Rpc/
➜ ~
이 도구를 개발할 때 당사의 방법론은 초기 릴리스에서 원하는 기능의 가장 최소한의 버전을 목표로 했습니다. 이 프로젝트의 목표는 Chariot에 통합할 수 있는 초기 도구를 만든 다음 커뮤니티 기여와 피드백이 추가 도구 개선 또는 기능을 이끌어내도록 하는 것이었습니다. 아래는 NTLMRecon에 추가할 수 있는 추가 기능에 대한 몇 가지 아이디어입니다:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/