
MacStealer: Wi-Fi 클라이언트 격리 우회
이 저장소에는 MacStealer가 포함되어 있습니다. 이 도구는 Wi-Fi 네트워크에서 클라이언트 격리 우회(client isolation bypass) 를 테스트할 수 있습니다 (CVE-2022-47522). 이 공격은 클라이언트들이 서로 통신하지 못하도록 차단된 경우에도 MAC 계층에서 다른 클라이언트로 향하는 트래픽을 가로챌(스틸) 수 있습니다. 이 취약점은 악의적인 내부자가 존재하는 Wi-Fi 네트워크에 영향을 미치며, 이 공격은 AP 격리라고도 불리는 클라이언트 격리를 우회할 수 있습니다. 이 공격은 동적 ARP 검사(DAI)를 우회하는 데에도 사용될 수 있으며, 클라이언트들이 서로를 공격하지 못하게 하는 다른 방법들을 우회하는 데에도 사용될 수 있습니다. 이 공격은 보안 컨텍스트 재정의(security context override) 공격 이라고도 알려져 있습니다. 자세한 내용은 USENIX Security '23 논문의 5절을 참조하세요 (저장소).
영향을 받을 수 있는 네트워크의 구체적인 예는 다음과 같습니다:
사용자들이 서로를 신뢰하지 않을 수 있고, 클라이언트 격리 또는 ARP 검사와 같은 기술을 사용하여 사용자들이 서로를 공격하지 못하도록 하는 엔터프라이즈 네트워크. 예를 들어, 게스트와 직원 모두를 위한 계정이 있는 회사 네트워크, eduroam 및 govroam과 같은 네트워크 등이 있습니다.
Passpoint(이전 명칭 Hotspot 2.0)로 보호되는 공공 핫스팟. 이는 자동으로 안전하게 연결할 수 있는 핫스팟입니다. 예를 들어, 휴대폰의 SIM 카드를 사용하여 원활하게 인증할 수 있습니다.
클라이언트 격리가 활성화된 가정용 WPA2 또는 WPA3 네트워크. 여기에는 게스트 또는 안전하지 않은(IoT) 장치를 위한 별도의 SSID가 있는 네트워크가 포함됩니다. 또한 장치를 추가로 격리하기 위해 여러 비밀번호가 사용되는 네트워크도 포함되며, 이를 Multi-PSK, Identity PSK, per-station PSK, 또는 EasyPSK라고도 합니다. 추가 정보는 위협 모델 논의를 참조하세요.
WPA3 SAE-PK 기반의 공공 핫스팟. 이는 공유된 공개 비밀번호로 보호되는 핫스팟이지만, 공격자는 이 공개적으로 알려진 비밀번호를 남용할 수 없습니다.
이 공격은 VLAN을 우회할 수 없습니다. 즉, 현재 실험에 따르면, 이 공격을 사용하여 다른 VLAN에 있는 장치를 공격할 수 없습니다.
USENIX Security '23의 다른 결과 저장소도 이용할 수 있습니다.
이 공격의 핵심 아이디어는 클라이언트가 인증되는 방식이 패킷이 올바른 Wi-Fi 클라이언트로 라우팅되는 방식과 무관하다는 것입니다. 즉, 인증은 비밀번호, 사용자 이름, 802.1X ID 및/또는 인증서를 기반으로 수행되지만, 클라이언트가 연결되면 패킷 라우팅은 MAC 주소를 기반으로 수행됩니다. 악의적인 내부자는 이를 남용하여 피해자를 연결 해제한 다음 (공격자의 자격 증명을 사용하여) 피해자의 MAC 주소로 연결함으로써 Wi-Fi 클라이언트로 향하는 데이터를 가로챌 수 있습니다. 피해자에게 아직 전송 중이던 패킷(예: 피해자가 아직 로드 중이던 웹사이트 데이터)은 이제 공격자가 대신 수신하게 됩니다.
보다 정확하게는, 공격은 세 단계로 구성됩니다:
피해자가 데이터를 요청하도록 함: 공격자는 먼저 피해자(클라이언트)가 취약한 액세스 포인트(AP)와 Wi-Fi 연결을 수립할 때까지 기다립니다.
피해자가 인터넷의 서버에 요청을 보낼 것이라고 가정합니다. 예를 들어, 피해자는 평문 웹사이트 example.com에 HTTP 요청을 보낼 수 있습니다.
공격자의 목표는 웹사이트가 보낼 응답을 가로채는 것입니다.
피해자의 MAC 주소로 연결: 피해자가 예를 들어 HTTP 요청 패킷을 보내 데이터를 요청한 후, 공격자는 응답이 취약한 AP에 도착하기 전에
피해자를 네트워크에서 강제로 연결 해제합니다. 이 예에서 피해자는 example.com의 응답이 AP에 도착하기 전에 연결이 끊어집니다.
피해자가 연결 해제되면 공격자는 피해자의 MAC 주소를 스푸핑하고 자신의 자격 증명을 사용하여 네트워크에 연결합니다.
즉, 공격자는 자신의 자격 증명(예: 엔터프라이즈 Wi-Fi 네트워크에서 자신의 사용자 이름과 비밀번호)을 사용하여 네트워크에 연결할 수 있는 악의적인 내부자입니다.
응답 가로채기: 공격자가 피해자의 MAC 주소로 연결되면 AP는 공격자가 새로 생성한 암호화 키를 피해자의 MAC 주소와 연결합니다.
그 결과, 서버의 응답이 Wi-Fi 네트워크에 도착하거나 일반적으로 피해자에게 향하는 수신 트래픽이 있으면 라우터는 이러한 수신 패킷을 피해자의
MAC 주소로 전달합니다. 이 예에서 example.com의 응답은 라우터에 의해 피해자의 MAC 주소로 전달됩니다. 그러나 공격자는 현재 이 MAC 주소를 사용하고 있습니다.
즉, AP는 응답을 공격자의 키로 암호화합니다. 다시 말해, 공격자는 피해자에게 아직 전송 중인 대기 트래픽을 수신하게 됩니다.
가로챈 트래픽은 TLS 및 HTTPS와 같은 상위 계층 암호화로 보호될 수 있습니다. 그럼에도 불구하고, 상위 계층 암호화가 사용되는 경우에도 이 공격은 피해자가 통신 중인 IP 주소를 드러냅니다. 이는 피해자가 방문 중인 웹사이트를 드러내며, 그 자체로 민감한 정보가 될 수 있습니다.
기본적으로 이 공격은 피해자가 보낸 트래픽을 가로채지 않으며, 피해자에게 보내지는 트래픽만 가로챌 수 있습니다. 그러나 공격자는 피해자가 보낸 트래픽도 가로채기 위해 후속 공격을 시도할 수 있습니다. 특히, 피해자에게 전달되는 DNS 응답을 가로챔으로써 공격자는 DNS 응답을 스푸핑하고 피해자에게 보내지거나 피해자가 보낸 모든 IP 트래픽을 가로챌 수 있습니다.
위 공격을 수행하는 것은 대상 네트워크에서 클라이언트 격리가 활성화된 경우에만 의미가 있습니다. 그렇지 않고 클라이언트 격리가 비활성화된 경우, 악의적인 내부자는 ARP 스푸핑과 같은 기술을 사용하여 다른 클라이언트를 직접 공격할 수 있습니다 (클라이언트 격리 테스트 참조).
이 공격은 엔터프라이즈 WPA1, WPA2 및 WPA3 네트워크에 대해 동일하게 동작합니다. 이는 이 공격이 Wi-Fi의 암호화 속성을 악용하는 것이 아니라 네트워크가 패킷을 보낼 클라이언트를 결정(즉, 라우팅)하는 방식을 남용하기 때문입니다.
공격에 대한 추가 세부 정보는 논문 Framing Frames: Bypassing Wi-Fi Encryption by Manipulating Transmit Queues의 보안 컨텍스트 재정의 공격(5절)을 참조하세요.
이 공격을 완화하기 위해 AP는 최근에 AP에 연결된 MAC 주소를 사용하여 연결하려는 클라이언트를 일시적으로 차단할 수 있습니다. 이렇게 하면 공격자가 MAC 주소를 스푸핑하여 피해자에게 향하는 대기 중이거나 대기열에 있는 프레임을 가로채는 것을 방지할 수 있습니다. MAC 주소 뒤의 사용자가 변경되지 않았음을 보장할 수 있는 경우, 클라이언트는 즉시 다시 연결하도록 허용할 수 있습니다. 이 검사는 동일한 분산 시스템에 속한 모든 AP, 더 정확하게는 클라이언트가 현재 IP 주소를 유지하면서 로밍할 수 있는 모든 AP에서 수행되어야 합니다.
최근에 연결된 사용자를 안전하게 인식하기 위해 AP는 클라이언트의 MAC 주소와 캐시된 보안 연관(예: 캐시된 PMK) 간의 매핑을 저장할 수 있습니다. 클라이언트는 이 MAC 주소와 연결된 캐시된 보안 연관을 보유하고 있음을 증명함으로써(예: 올바른 캐시된 PMK를 사용하여 연결) 최근에 사용된 MAC 주소로 즉시 (재)연결이 허용될 수 있습니다.
multi-PSK(또는 per-station PSK 또는 Identity PSK라고도 함)를 사용하는 경우, AP는 최근에 연결된 MAC 주소와 사용된 (고유한) 비밀번호의 매핑을 유지할 수 있습니다. 클라이언트가 연결하면 AP는 해당 MAC 주소가 최근에 사용되었는지 확인합니다. 사용되지 않았거나, 사용되었지만 클라이언트가 이전과 동일한 비밀번호를 사용하는 경우 클라이언트는 정상적으로 연결할 수 있습니다. 그러나 동일한 MAC 주소가 다른 비밀번호와 함께 사용되는 경우, 클라이언트는 사전 정의된 시간 동안 대기한 후에야 성공적으로 연결할 수 있습니다.
SAE-PK를 사용하여 핫스팟을 보호하는 경우, MAC 주소가 이전과 동일한 사용자에 의해 재사용되고 있음을 안전하게 인식할 수 있는 유일한 방법은 캐시된 보안 연관(예: MAC 주소와 연결된 캐시된 PMK)에 의존하는 것입니다.
위의 방어책은 일정 시간이 지나면 피해자에게 더 이상 대기 중인 패킷이 도착하지 않는다고 가정합니다. 이 지연 시간 이후의 유출을 방지하려면 클라이언트는 통신하는 서비스와 종단 간 암호화(예: TLS)를 사용해야 합니다.
802.1X EAP 기반 인증을 사용하는 경우, 최근에 연결된 사용자를 안전하게 인식하는 더 나은 대체 방법은 802.1X 인증 중에 사용한 EAP ID를 기반으로 합니다. AP는 클라이언트를 인증한 RADIUS 서버로부터 EAP ID를 안전하게 학습할 수 있으며, 최근에 연결된 MAC 주소와 해당 EAP ID의 매핑을 유지할 수 있습니다. 클라이언트가 연결하면 AP는 해당 MAC 주소가 최근에 사용되었는지 확인합니다. 사용되지 않았거나, 사용되었지만 클라이언트가 이전과 동일한 EAP ID를 사용하는 경우 클라이언트는 정상적으로 연결할 수 있습니다. 그러나 동일한 MAC 주소가 다른 EAP ID로 사용되는 경우, 클라이언트는 사전 정의된 시간 동안 대기한 후에야 성공적으로 연결할 수 있습니다.
한 가지 과제는 개인정보 보호 문제로 인해 AP가 클라이언트의 802.1X ID를 항상 알지 못할 수 있다는 것입니다. 예를 들어, 이 정보는 홈 AAA 서버에서만 사용할 수 있고 AP는 RADIUS 서버로부터 Chargeable User Identity만 받을 수 있습니다. 이 ID는 값이 지속적으로 변경될 수 있으므로 AP가 동일한 장치/자격 증명의 두 연결을 인식하는 것을 허용하지 않습니다. AP는 EAP-Response/Identity에서 anonymous@realm과 같은 익명 ID를 수신하며, 이를 사용하여 적어도 서로 다른 영역(realm)의 사용자를 인식할 수 있습니다.
동일한 영역의 사용자들이 서로를 공격하는 것을 방지하면서도 클라이언트의 ID를 AP에 공개하지 않으려면 RADIUS 서버의 협력과 변경이 필요합니다. 특히, RADIUS 서버는 MAC 주소가 최근에 동일한 영역(주어진 로컬 네트워크 내)의 다른 사용자에 의해 사용되었는지 감지하도록 업데이트될 수 있습니다. 그러면 클라이언트가 연결을 끊을 때 RADIUS 서버에 알려야 하며, 이를 통해 MAC 주소가 마지막으로 사용자 중 한 명에 의해 사용된 시점을 알 수 있고, 연결을 시도하는 클라이언트의 MAC 주소를 알려야 합니다.
마지막으로, EAP ID에 의존하는 이 접근 방식은 서로 다른 사용자가 서로를 공격하는 것을 방지하지만, 손상된 장치가 동일한 사용자의 다른 장치를 공격하는 것을 방지하지는 못합니다. 즉, 공격은 서로 다른 사용자 간에만 방지되며 동일한 사용자의 서로 다른 장치 간에는 방지되지 않습니다.
중요한 점은 이 공격이 Wi-Fi 클라이언트로 향하는 패킷을 가로채는 것에만 국한되지 않는다는 것입니다. 공격자는 기본 게이트웨이 또는 로컬 네트워크의 다른 서버의 MAC 주소로 연결을 시도할 수도 있습니다. 이러한 공격을 방지하기 위해 AP 또는 컨트롤러는 클라이언트가 기본 게이트웨이와 동일한 MAC 주소를 사용하는 것을 금지할 수 있습니다. 보다 일반적으로, Wi-Fi 클라이언트가 네트워크에 연결될 때 중복 MAC 주소 감지를 사용하여 Wi-Fi 클라이언트가 네트워크의 다른 장치에서도 사용 중인 MAC 주소를 사용하지 못하도록 할 수 있습니다.
관리 프레임 보호(MFP)를 사용하면 공격이 더 어려워지지만 불가능하지는 않습니다. 이전 연구에서 우리는 MFP가 사용되는 경우에도 클라이언트가 연결 해제/비인증될 수 있는 몇 가지 방법을 발견했습니다. 이 경험에 기반하여, MFP가 사용되는 경우에도 클라이언트를 네트워크에서 강제로 연결 해제할 수 있는 방법은 항상 존재하는 것으로 보입니다. 다시 말해, 연결 해제 및 비인증 공격을 완전히 방지하는 것은 어렵습니다. 그럼에도 불구하고, MFP는 실제 공격을 수행할 때 극복해야 할 추가 장애물이 될 수 있으므로 실제로 공격을 더 어렵게(불가능하지는 않지만) 만드는 유용한 완화 방법이 될 수 있습니다.