Silverfort 연구원들이 Palo Alto Networks PAN-OS에서 인증 우회 취약점을 발견했습니다[CVE-2020-2002].

» 블로그 » Silverfort 연구원들이 Palo Alto Networks PAN-OS에서 인증 우회 취약점을 발견했습니다[CVE-2020-2002].

Palo Alto Networks는 PAN-OS의 KDC 스푸핑 취약점에 대한 권고를 게시했으며, 이 취약점은 다음에서 발견되어 Palo Alto Networks에 공개되었습니다. Silverfort 연구원 Yoav Iellin, Yaron Kassner 및 Rotem Zach. 이 취약점은 지원되는 모든 PAN-OS 버전과 Kerberos를 사용하는 모든 인터페이스에 영향을 미쳤습니다. 인증 프로필. 취약점을 공개한 후 Palo Alto Networks는 지원되는 모든 PAN-OS 버전을 수정하고 자문 그것에 대해. 이 취약점으로 인해 공격자는 다음을 우회할 수 있습니다. Kerberos PAN-OS에 대한 인증, PAN-OS에 대한 관리 인터페이스에 대한 액세스 권한, 캡티브 포털을 통한 방화벽 세션에 대한 인증.

이 취약점은 연구원들이 Cisco ASA에서 발견한 KDC 스푸핑 취약점. Kerberos 인증 프로토콜의 구현이 항상 올바르게 완료되지 않아 시스템이 악용에 취약한 것으로 보입니다.

Palo Alto Networks는 모든 버전의 PAN-OS에서 이 취약점을 수정했습니다. 악용으로부터 보호하기 위해 이 패치를 배포하는 것이 좋습니다.

이 문서는 PAN-OS의 KDC 스푸핑 취약점을 간략하게 설명하고 암호를 모르면서 인증을 우회하는 데 사용되는 방법을 보여줍니다. Kerberos를 구현하는 개발자와 시스템에 Kerberos 인증을 사용하는 기업으로서 이러한 취약점을 피하는 방법에 대해 설명합니다.

취약점 설명

이 취약점은 Palo Alto Networks의 Kerberos 구현에 있습니다. Kerberos는 온프레미스 인증을 위한 가장 일반적인 인증 프로토콜입니다. 의 인기로 인해 기업 네트워크에서 널리 사용할 수 있습니다. Active Directory, NTLM과 같은 약한 인증 프로토콜보다 선호됩니다.

Palo Alto Networks는 많은 PAN-OS 인터페이스(예: SSL VPN, Captive Portal 또는 관리자 로그인)에서 Kerberos 인증 프로토콜을 사용합니다. 따라서 Kerberos 인증을 우회하면 공격자가 Palo Alto Networks Strata를 관리하고 보안을 우회하며 추가 네트워크에 대한 액세스 권한을 얻을 수 있습니다.

Kerberos 프로토콜이 작동하려면 다음 세 가지가 발생해야 합니다.

  1. 사용자가 서버에 인증
  2. 서버가 클라이언트에 인증
  3. KDC는 서버에 대해 인증합니다.

분명히 서버에 대한 KDC 인증은 종종 간과됩니다. 요구 사항이 구성 요구 사항을 복잡하게 만들기 때문일 수 있습니다. 그러나 KDC가 서버에 대해 인증하지 않으면 프로토콜의 보안이 완전히 손상되어 네트워크 트래픽을 하이재킹한 공격자가 잘못된 암호를 포함하여 모든 암호를 사용하여 PAN-OS에 인증할 수 있습니다.

PAN-OS 취약점 발견

추가하려고 할 때 취약점을 발견했습니다. SilverfortSSL VPN, Captive Portal 및 관리자 로그인을 포함하여 Kerberos 프로토콜에 의존하는 인터페이스에 대한 의 MFA. 이를 설정하기 위해 Kerberos를 인증 방법으로 구성하고 일치하는 MFA 정책을 구성했습니다. Silverfort 옆. Kerberos 프로토콜 및 KDC 스푸핑에 대한 자세한 설명은 이 문서의 끝에서 찾을 수 있습니다.
아래와 같이 네트워크 캡처에는 AS-REQ 및 AS-REP가 포함되지만 TGS-REQ는 포함되지 않습니다.

TGS-REQ가 프로토콜에 필요하고 인증 프로세스에서 누락되었음에도 불구하고 인증에 성공했습니다. 우리는 이미 Cisco ASA와 유사한 취약점, 우리는 이것을 확인하고 싶었습니다.

돌아가서 Kerberos 인증 구성에 대한 Palo Alto Networks 가이드를 확인했습니다. 아래는 당시 가이드의 스크린샷입니다.

우리는 구성 프로세스의 어떤 시점에서도 keytab 또는 서비스 암호를 구성할 필요가 없다는 것을 깨달았습니다. PAN-OS는 keytab을 구성하는 옵션을 제공하지만 선택 사항이었습니다. 그러나 keytab이 구성되어 있어도 해당 인터페이스에 대한 인증 프로세스에 사용되지 않는 것을 확인했습니다. keytab이나 암호가 없으면 PAN-OS는 KDC의 진위를 확인하는 데 필요한 자격 증명이 없습니다. 이것은 PAN-OS가 KDC 스푸핑에 취약하다는 것을 의미합니다.

취약점 악용 시도

이제 PAN-OS가 취약하다는 것을 알았으므로 PAN-OS와 KDC(이 경우 포트 88(Kerberos 포트)의 도메인 컨트롤러) 간의 트래픽을 자체 Windows Server로 리디렉션하여 공격을 시뮬레이션했습니다. Windows 서버에 가짜 도메인을 설정하고 실제 도메인에 PAN-OS 관리자와 동일한 UPN(User Principal Name)을 가진 사용자가 있는지 확인했습니다. 이 예에서는 그를 'Bob'이라고 부를 것입니다. 가짜 도메인에서 해당 사용자의 비밀번호를 "1"로 구성했습니다.

그런 다음 다음 상황을 시도했습니다.

  • 일반 로그인(트래픽이 전환되지 않음) – 예상대로 Bob의 원래 비밀번호로 로그인했습니다. 암호 "1"을 시도하면 로그인에 실패했습니다.
  • 가짜 DC로 전환된 트래픽으로 로그인 – Bob의 원래 암호로 로그인하는 데 실패했지만 암호 "1"로 로그인하면 작동했습니다.

예방 및 완화

보안 전문가를 위한 완화 단계

  1. 가장 먼저 PAN-OS를 고정 버전으로 업그레이드하고 필요한 구성을 변경하십시오. 팔로알토 네트웍스 자문.
  2. Kerberos 인증을 지속적으로 모니터링하십시오. AS_REQ만 요청하는 자원을 찾으십시오. TGS_REQ가 없으면 위험 신호입니다.
  3. Silverfort의 오픈 소스 도구 서비스 티켓을 요청하지 않는 서비스에 대한 인증 로그를 검색합니다.
  4. Kerberos 및 직접 구성한 시스템을 구현하는 내부 개발 응용 프로그램에 대한 개발자 권장 사항을 참조하십시오.
  5. Silverfort Palo Alto Networks의 단계별 인증 기능을 활용하고 있는 고객은 업데이트해야 합니다. Silverfort MFA PAN-OS를 업그레이드한 후 TGT 정책에서 서비스 티켓 정책으로 정책을 변경합니다.

개발자로서

솔루션이 KDC 스푸핑에 취약하지 않도록 몇 가지 단계를 수행하는 것이 좋습니다.

  1. Kerboros 구현에 암호 또는 키 탭이 필요한지 확인: DC를 확인하려면 일종의 공유 비밀을 사용해야 합니다. 솔루션이 keytab 파일 구성을 활성화하지 않거나 서비스 계정 암호, 응용 프로그램은 분명히 KDC 스푸핑에 취약합니다.
  2. Wireshark 실행 - Wireshark를 사용하여 인증 중에 전송된 Kerberos 요청을 확인합니다. TGS_REQ가 없으면 위험 신호입니다.
  3. 인증 프로토콜을 직접 구현하려면 프로토콜 RFC를 부지런히 따라야 합니다. 더 쉬운 경로를 선택하고 이러한 프로토콜의 기존 구현을 사용하는 것이 좋습니다.
  4. 3 사용rd 제대로 된 파티 라이브러리 – 일부 3rd 파티 라이브러리는 KDC 스푸핑을 방지하기 위해 특정 구성이 필요합니다. 예를 들어, pam-krb5라는 Kerberos에 사용되는 공통 라이브러리에는 올바르게 작동하도록 구성된 keytab이 있어야 합니다. 다음은 문서의 관련 단락입니다(https://github.com/rra/pam-krb5/blob/master/README.md)

배경

Kerberos 프로토콜 개요

Kerberos 인증 프로토콜은 1980년대에 Steve Miller와 Clifford Neuman이 개발했습니다. 관리되는 네트워크에서 SSO(Single Sign-On)를 허용하고 Active Directory (AD) 구현으로 온프레미스 엔터프라이즈 환경을 위한 기본 인증 프로토콜로 전환되었습니다.

이 프로토콜은 사용자와 액세스한 서버에 대한 상호 인증을 제공하는 세 가지 교환으로 구성됩니다. 사용자가 로그인할 때 자격 증명을 입력하면 AS(인증 서비스) 교환이 발생합니다. 사용자는 나중에 TGS(Ticket Granting Service) 교환 중에 특정 서비스에 대한 티켓을 얻는 데 사용되는 TGT(Ticket Granting Ticket)를 얻습니다. 그런 다음 클라이언트/서버 교환 중에 티켓을 사용하여 인증을 완료합니다.

1. 인증 서비스(AS) 교환

AS 교환 중에 사용자는 키 배포 센터(KDC)로 인증합니다. 그 대가로 사용자는 자격 증명을 다시 입력하지 않고 네트워크의 서비스를 인증하는 데 필요한 티켓과 키를 얻습니다. 사용자가 자격 증명을 처음 입력하면 클라이언트는 KDC의 AS(인증 서비스) 기능에 AS_REQ를 보냅니다. AS_REQ는 사용자 암호의 기능인 마스터 키로 서명된 메시지입니다. KDC의 일부인 인증 서비스는 KDC에서도 사용할 수 있는 마스터 키에 따라 AS_REQ를 확인합니다. AS_REQ의 유효성을 검사한 후 KDC는 로그온 세션 키와 KDC의 키로 암호화된 TGT(Ticket-Granting Ticket)가 포함된 AS_REP를 반환합니다. AS Exchange는 아래와 같습니다. TGT는 특정 서비스에 대한 액세스 권한을 얻기 위해 TGS 교환에서 사용됩니다.

2. TGS(Ticket-Granting Service) 교환

사용자가 네트워크의 서비스에 액세스하려고 시도하면 사용자는 TGS_REQ를 KDC의 TGS(Ticket Granting Server) 기능으로 보냅니다. 이 메시지는 AS 교환 중에 얻은 로그온 세션 키로 암호화됩니다. TGS_REQ는 TGS에 의해 확인된 다음 TGS_REP를 반환합니다. TGS_REP에는 서비스를 호스팅하는 서버의 마스터 키로 암호화된 서비스 세션 키와 서비스 티켓이 포함되어 있습니다. Unix 기반 시스템에서 서버의 마스터 키는 keytab 파일이라는 파일에 구성됩니다. 구성원 서버에 있는 서버의 마스터 키는 컴퓨터 계정의 암호에서 파생됩니다. TGS 거래소는 아래와 같습니다.

3. 클라이언트/서버 교환

이제 클라이언트는 서비스에 인증하는 데 필요한 모든 것을 갖추고 있습니다. 클라이언트는 서비스 세션 키로 암호화된 AP_REQ를 서비스로 보냅니다. 서비스는 서비스 세션 키를 해독하여 AP_REQ의 유효성을 검사합니다. 그런 다음 서버는 AP_REP 메시지를 반환하고 인증이 완료됩니다. 클라이언트-서버 교환은 다음과 같습니다.

스푸핑 방지 프로토콜

Kerberos 프로토콜이 올바르게 구현되면 KDC를 가장하려는 공격자가 인증을 우회할 수 없습니다. 공격자가 하이재킹된 AS_REQ에 대한 응답으로 유효한 AS_REP를 성공적으로 생성하더라도 공격자는 유효한 서비스 티켓을 조작할 수 없기 때문입니다. 서비스 티켓은 공격자가 가지고 있지 않은 키인 서버 키로 암호화되기 때문에 불가능합니다.

KDC 스푸핑이란 무엇입니까?

2000년 듀오시큐리티를 공동 창업한 더그송은 기술 일부 상황에서 Kerberos 프로토콜을 우회하는 데 사용됩니다.

그는 Kerberos 클라이언트의 특정 구현 및 구성이 클라이언트/서버 교환을 실행하지 못하고 이전 교환의 성공을 기반으로 인증을 허용한다는 사실을 발견했습니다. 안타깝게도 이 동작은 안전하지 않으며 공격자가 악용할 수 있습니다. 클라이언트와 DC 간의 통신을 하이재킹할 수 있는 공격자는 다음 단계를 수행할 수 있습니다.

  1. 가짜 KDC를 만듭니다.
  2. 공격하려는 서비스에 액세스할 수 있는 권한이 있는 사용자 이름을 얻습니다.
  3. 공격자가 선택한 비밀번호로 가짜 KDC에 사용자를 만듭니다. 데모를 위해 이 암호를 "1"이라고 하겠습니다.
  4. 획득한 사용자 이름과 암호 "1"로 서비스에 인증합니다.
  5. 클라이언트에서 DC로의 통신을 하이재킹하고 가짜 KDC로 전환합니다.
  6. AS 교환 중에 암호 "1"에 해당하는 AS_REP, 가짜 KDC 키 및 가짜 로그온 세션 키를 반환합니다.
  7. TGS 교환 중에 모든 TGS_REP를 반환합니다.
  8. 클라이언트는 애플리케이션 교환을 수행하지 않고 인증을 수락합니다.

KDC 스푸핑 공격은 공격자가 KDC에서 들어오고 나가는 트래픽을 하이재킹하고 KDC를 대신하여 응답할 수 있다고 가정합니다. 이는 다양한 기술을 사용하여 수행할 수 있습니다. 예를 들어 공격자가 클라이언트와 동일한 물리적 네트워크 세그먼트 내에 있는 경우 네트워크 보안 해킹에 설명된 대로 ARP 스푸핑 공격을 수행할 수 있습니다. 록 하트 2007. 또 다른 가능한 접근 방식은 스위치나 라우터와 같은 네트워킹 장치를 인수하고 거기에서 통신을 제어하는 ​​것입니다.

인증 공격 막기