- 전 세계적으로 약 280만 개의 IP 주소를 활용한 대규모 무차별 대입 공격 발생 - Palo Alto Networks, Ivanti, SonicWall 등 다양한 네트워크 장비의 계정 정보를 탈취하기 위한 시도로 확인
내용
- 무차별 대입 공격 > 수많은 사용자 이름과 비밀번호 조합을 반복적으로 입력해 올바른 조합을 찾아내는 방식
- 위협 모니터링 기관인 The Shadowserver Foundation(섀도서버 재단) > "지난 1월 중순부터 공격이 본격화됐으며 최근 들어 그 규모가 급격히 확대됐다"고 > 공격에 사용된 IP 주소는 브라질에서 가장 많이 발생(110만 개 이상) > 터키, 러시아, 아르헨티나, 모로코, 멕시코 등이 주요 발원지로 확인 > 광범위한 IP 분포는 봇넷 또는 주거용 프록시 네트워크와 관련된 운영일 가능성 시사
- 공격에 활용된 장비 > MikroTik, Huawei, Cisco, Boa, ZTE 등의 라우터와 IoT 기기들 > 대부분 악성코드 봇넷에 감염된 상태로 대규모 공격에 동원
- CISA > 이번 상황을 면밀히 모니터링하고 있으며, 필요한 경우 위험에 노출된 기관에 통보하고 대응 지침을 제공할 예정
- 엣지(Edge) 보안 장비는 인터넷에 노출되는 특성상 취약점이 발생하기 쉬운 구조 > 특히 다중 인증(MFA)과 같은 보안 조치를 적용하지 않은 경우 자격 증명 무차별 대입 공격에 취약
기타
- 이번 공격에 대응하기 위해 다음과 같은 조치를 권고 > 우선 기본 관리자 비밀번호를 강력하고 고유한 비밀번호로 변경 > 가능한 모든 시스템에 다중 인증(MFA)을 적용 > 신뢰할 수 있는 IP만 허용하는 화이트리스트를 구성 > 불필요한 웹 관리 인터페이스는 비활성 > 정기적인 펌웨어 업데이트와 보안 패치 적용 > 네트워크 트래픽을 지속적으로 모니터링하여 비정상적인 접근 시도를 조기에 탐지
- PaloAlto GlobalProtect, SonicWall NetExtender SSL-VPN 클라이언트 등에 심각한 취약점 "NachoVPN" 발견 [1][2][3] - 공격자가 악성 VPN 서버를 통해 피해자 기기에 악성 업데이트 설치 또는 민감한 정보를 탈취할 수 있음 - 소셜 엔지니어링 기법을 활용해 사용자를 악성 VPN 서버로 유도해 익스플로잇
2. 주요내용
2.1 CVE-2024-29014
[사진 1] CVE-2024-29014 [4]
- SonicWall의 NetExtender Windows(32 및 64비트) 클라이언트에서 발생하는 임의 코드 실행 취약점 > 소셜 엔지니어링을 통해 악성 VPN 서버로 연결 하도록 유도 및 가짜 EPC 클라이언트 업데이트를 전달해 시스템 권한으로 임의 코드를 실행
영향받는 버전 - NetExtender Windows (32 and 64 bit) 10.2.339 및 이전 버전
- NetExtender 클라이언트는 SSL-VPN 서버에 연결하는 동안 서버에 EPC 클라이언트 업데이트가 있는지 확인하기 위한 요청 전송 > GET /cgi-bin/sslvpnclient?epcversionquery=nxw > 서버는 버전 번호로 판단되는 값으로 응답 > 응답이 0xFF인 경우 클라이언트는 /NACAgent.exe에 대한 GET 요청을 전송
- NECore.dll의 ValidateSignature()에서 해당 파일이 다운로드되고 유효성을 검증
> 해당 함수는 WINTRUST_ACTION_GENERIC_VERIFY_V2 작업을 사용해 WinVerifyTrust 호출 (실행 파일에 포함된 Authenticode 서명 검증 과정) > 그러나 실행 파일의 서명이 신뢰할 수 있는 CA와 연결되는지만 확인하며, 특정 게시자(Microsoft, Adobe, Oracle 등)에 의해 서명되었는지 확인하지 않음
> 따라서 시스템에서 신뢰하는 코드 서명 인증서로 실행 파일을 서명만 하게되면 서명 검사를 통과할 수 있음
※ 다운로드한 NACAgent.exe는 SYSTEM으로 실행되는 NEService.exe의 자식 프로세스로 실행
[사진 2] ValidateSignature()
- sonicwallconnectagent 사용자 정의 URI 핸들러는 SMA Connect 에이전트에 의해 Windows 레지스트리에 등록
> 핸들러는 클라이언트가 연결해야하는 서버를 지정하는 Base64로 인코딩된 JSON 개체가 포함 > 따라서 공격자는 host 값을 악의적인 SSL-VPN 서버의 IP를 가리키도록 sonicwallconnectagent:// URL을 제작하면 취약점 악용 가능
[사진 3] 레지스트리
[사용자 정의 URI 핸들러 예시] sonicwallconnectagent://eyJhY3Rpb24iOjEwLCJoZWxwZXJ2ZXJzaW9uIjoiMS4xLjQyIiwiaG9zdCI6IjE3Mi4xNy4xMjguMSIsInBvcnQiOiI0NDMiLCJ1c2VybmFtZSI6InVzZXIiLCJleHRlbmRpZCI6IkV0UUJ2MFp3elY0OGsxRVpaQ3JMU3ZwOGJLcFh4NFRCcGVISmlmOVUxczQ9In0
- 사용자가 조작된 페이지를 방문하면 악성 SSL-VPN 서버에 연결 및 서명된 악성 NACAgent.exe 실행 > NetExtender 클라이언트에 EPC 에이전트 업데이트 필요 메시지가 표시되며, 무시 또는 확인을 누를 경우 악성 NACAgent.exe 파일이 시스템 권한으로 실행됨
[사진 4] 악성 SSL-VPN 접속
[영상 1] 공격 시연 [5]
2.2 CVE-2024-5921
[사진 5] CVE-2024-5921 [6]
- PaloAlto Networks GlobalProtect 앱의 불충분한 인증 유효성 검사로 임의의 서버에 연결할 수 있는 취약점 > 소셜 엔지니어링을 통해 악성 VPN 서버로 연결 하도록 유도 및 가짜 업데이트를 전달해 시스템 권한으로 임의 코드를 실행
영향받는 버전 - GlobalProtect 6.2.6 이전 버전
- 클라이언트-서버간 인증 과정 중 클라이언트는 POST 메소드로 서버에 자격 증명을 전송 > 서버는 XML 정책 객체로 포맷된 구성 데이터로 응답
- GlobalProtect 클라이언트는 기본적으로 응답을 신뢰 > 유일한 검증은 서버가 해당 도메인에 대한 유효한 TLS 인증서를 가지는지 확인하고 제공된 자격증명을 수락하는 것 > 익스플로잇에서 root-ca, version, uninstall, client-upgrade 요소가 중요
구분
설명
root-ca
- 클라이언트에 제공된 인증서를 신뢰할 수 있는 인증서 저장소에 설치하도록 지시 - GlobalProtect 게이트웨이의 IP 주소가 클라이언트가 신뢰하는 TLS 인증서를 사용할 수 있도록 하기위함 - 공격자는 인증서가 주장하는 모든 목적을 위해 컴퓨터가 완전히 신뢰하는 인증서를 설치할 수 있음 (MITM이 발생해 데이터 탈취 또는 악성 SW 서명 및 실행이 가능)
version
- 클라이언트에 반환된 version 태그는 업데이트 요청이 트리커되는지 여부를 결정 - 값이 클라이언트에 현재 설치된 버전보다 높은 경우 연결 성공 시 업데이트를 요청 - Portal 인증 응답의 version 태그가 현재 설치된 버전보다 높은 경우 > 클라이언트는 Portal에 업데이트를 요청 > 서버는 클라이언트의 OS와 아키텍처에 맞는 적절한 설치 프로그램으로 302 응답
uninstall
- 업그레이드가 관리되는 방식을 설정 > Allow with Prompt (Default) : 새 버전이 확인될 경우 업데이트 메시지 표시 > Allow Transparently : 사용자 상호 작용 없이 자동으로 업데이트 발생 > Internal : 사용자가 내부 네트워크에서 연결되어 있는 경우에만 사용자 상호 작용 없이 업그레이드되며, 내부 GW와 내부 호스트 감지를 구성해야 함 (외부 네트워크에서 연결된 경우 업그레이드 연기) > Disallow : 업데이트 차단 > Allow Manually : "버전 확인"을 선택해 세 버전이 있는 경우 사용자 판단하 수동 업데이트 적용
client-upgrade
- transparent로 설정된 경우 사용자 위치와 동의와 관계없이 자동 업데이트
[사진 6] 응답 예시
- 공격 성공 조건과 성공 시 가능한 악성 행위는 다음과 같음
구분
설명
공격 성공 조건
- 서버 인증서 : 공인 인증 기관에서 서명한 포털용 인증서 - 사용자 지정 루트 인증 기관(CA) : 로컬에서 생성된 CA PEM 파일이 클라이언트에 제공되어 신뢰할 수 있는 인증서 저장소에 설치 - 코드 서명 인증서 : 사용자 지정 CA가 악성 MSI에 서명하기 위해 서명한 인증서
성공 시 가능한 악성 행위
- 자격 증명 공개 : 사용자가 입력한 인증 세부 정보 수집 - 사기성 루트 인증 기관 설치 : 중간자 공격(MITM)이나 코드 서명과 같은 추가 공격이 가능 - 라우팅 구성 조작 : 네트워크 트래픽을 제어하기 위해 악의적인 라우팅 설정 - 악성 업데이트 요청 : 신뢰할 수 있는 기관에서 서명한 MSI를 가져와서 실행하도록 클라이언트를 트리거
[영상 2] Windows 환경 공격 시연 [7][영상 3] macOS 환경 공격 시연 [8]
3. 대응방안
- 벤더사 제공 업데이트 적용 [9][10]
취약점
제품명
영향받는 버전
해결 버전
CVE-2024-29014
NetExtender Windows (32 and 64 bit)
10.2.339 및 이전 버전
10.2.341 및 이후 버전
CVE-2024-5921
GlobalProtect
6.2.6 이전 버전
6.2.6 (또는 VPN 클라이언트를 FIPS-CC 모드에서 실행)
- NachoVPN 툴 활용 [11]
> 개념 증명용 오픈소스 기반 도구로, 악성 VPN 서버를 시뮬레이션할 수 있음
> Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect, Ivanti Connect Secure 등의 VPN 제품 지원
- 권고사항
> SSL-VPN 클라이언트를 최신 버전으로 업데이트
> 호스트 기반 방화벽 규칙을 사용해 VPN 클라이언트가 통신할 수 있는 IP 제한
> WDAC, EDR 등을 사용해 VPN 클라이언트가 승인된 실행 파일과 스크립트만 실행할 수 있도록 설정
- 해커 miyako, 방화벽 호스팅 서버 액세스 정보 판매글 게시 - 한국기업 4곳 포함해 피해 우려 기업 100여곳
내용
- 해커 miyako, 다크웹 브리치포럼에 방화벽 호스팅 서버에 대한 접근권한 판매글 게시 > 한국 기업 4곳을 포함해 총 100여개 이상의 기업이 피해 가능 > 해커는 랜섬웨어 조직 일원으로 알려져 랜섬웨어 피해 가능 > 방화벽 관련 보안 점검과 취약점 패치 요구
- 국가 배후 해커들이 방화벽 취약점 중 CVE-2024-23113 적극 악용 > CVE-2024-23113 : FortiOS, FortiPAM, FortiProxy 및 FortiWeb에서 발생하는 포맷 스트링 취약점 (CVSS : 9.8) > 패치를 적용하지 않은 경우 인증을 가능하기 때문에 승인된 포트 541 IP를 제한 권고
기타
- 최근 다수 랜섬웨어 조직들이 방화벽 취약점을 악용 > 방화벽, VPN 취약점에 대한 빠른 보안 패치 권고
- 네트워크 접점 장비에서 제로데이 취약점이 발견될 경우 > IPS와 같은 보안장비로 탐지가 어려움 > 내부 네트워크 전체에 접근이 허용되는 등 파급효과가 매우 큼 > 네트워크 레벨의 모니터링 체계를 더욱 강화해야할 필요
- 로컬 트래픽 비활성화 (단, 로컬 네트워크 사용이 불가해짐) - 라우팅할 수 없는 IP 주소에 대한 직접 액세스만 허용 (로컬 네트워크에 대한 액세스가 필수인 경우)
ServerIP
- 정책 기반 라우팅 (VPN 클라이언트를 제외한 모든 애플리케이션의 트래픽을 VPN 터널을 통해 전송) - 서버 IP 주소 확인 (클라이언트가 서버에 연결되면 VPN 서버의 IP 주소 확인) - 인증된 DNS 사용 (DNSSEC 등)
3. TunnelVision (CVE-2024-3661) [2][3]
- 24.05.06 VPN 트래픽을 훔쳐볼 수 있는 취약점이 발견
> DHCP의 설계 오류로 인해 발생
> IP 라우팅을 기반으로하는 모든 VPN 시스템에 통하는 공격으로 2 가지 조건을 가짐
① 공격자가 클라이언트의 DHCP 서버가 되어야 함
② 대상 호스트의 DHCP 클라이언트는 옵션 121을 구현해야 함
- DHCP Option 33 vs Option 121
> 1997년 DHCP RFC에는 관리자가 클라이언트의 라우팅 테이블에 설치할 고정 경로를 지정할 수 있는 옵션 33 존재
> 옵션 33은 Classful Static Routes를 사용하였고, 공용 IP 공간이 제한되면서 시간이 지남에 따라 선호되지 않음
> 2002년 RFC 3442에서 Classless Static Routes가 가능한 옵션 121 도입 (호환을 위해 옵션 33 유지)
> TunnelVision은 옵션 121를 악용해 공격
※ Android는 DHCP 옵션 121을 지원하지않아 영향받지 않음
[사진 6] TunnelVision 공격 과정 [4]
① 공격자는 정상 DHCP 서버에 DHCP 고갈 공격을 수행
> DHCP 고갈 공격: DHCP 서버에 MAC 주소를 변조하여 DHCP Discover 패킷을 계속 전송하여 IP 주소를 모두 소진하도록 하는 공격
> DHCP는 DHCP Discover 패킷의 MAC 주소만 보고 호스트 인식
② 공격자는 피해자와 동일한 네트워크에서 악성 DHCP를 운영
③ 악성 DHCP 서버는 옵션 121을 악용해 라우팅 테이블에 고정 경로를 구성
④ 공격자는 트래픽이 기본 게이트웨이로 전달되기 전에 암호화되지 않은 트래픽을 가로챌 수 있음
[사진 7] 옵션 121을 악용한 정적 경로 [4]
[영상 1] TunnelVision 공격 시연 영상 [5]
3.1 대응방안
구분
설명
DHCP Snooping
- DHCP 서버를 보호하기 위해 사용하는 기능 > 스위치에는 DHCP 서버 또는 DHCP Relay Agent가 접속된 Trusted Port와 DHCP 클라이언트가 접속된 Untrusted Port가 있음 > Untrusted Port에서 DHCP 응답 메시지를 확인하면 차단 (DHCP Spoofing 방지) > 또한, Ethernet 프레임의 SRC MAC 주소와 DHCP 메시지의 클라이언트 MAC 주소를 비교해 정상 여부 판단 (DHCP 고갈 공격 방지)