맨디언트에서 UNC5221, UNC5266, UNC5330, UNC5337, UNC5291 5개 공격그룹 포착
측면 이동 통한 vCenter 침해, 액티브 디렉토리 침해 위한 측면 이동
[보안뉴스 김경애 기자] 이반티 커넥트 시큐어(Ivanti Connect Secure) 어플라이언스의 취약점을 노린 공격자 활동이 포착됐다. 맨디언트는 2024년 1월 10일 이후 1개 이상의 이반티 보안 취약점을 악용한 5개의 위협 클러스터를 새롭게 탐지하고 UNC 공격 그룹으로 분류했다.
▲SPAWN 맬웨어 패밀리 다이어그램[자료=맨디언트]
1. UNC5221
첫째, UNC5221 공격 그룹은 2023년 12월 초부터 2024년 1월 10일 전까지 CVE-2023-46805, CVE-2024-21887 보안 취약점을 악용했다. 이들은 중국-넥서스 스파이 그룹으로 보이며, Ivanti 관련 취약점을 악용하는 공격을 계속 수행해 왔다.
2. UNC5266
둘째, UNC5266은 SLIVER, WARPWIRE 변형, TERRIBLETEA라는 새로운 맬웨어 패밀리를 사용해 공격을 수행했다. 이 공격 그룹은 Aspera Faspex, Microsoft Exchange, Oracle Web Applications Desktop Integrator 등 다양한 엔터프라이즈 소프트웨어의 취약점을 악용해 초기 접근을 시도한 것으로 보인다. 이외에도 UNC3569로 추적하고 있는 다른 중국-넥서스 스파이 그룹과 일부 활동이 겹치는 것도 확인됐다.
3. UNC5330
셋째, UNC5330 공격 그룹은 또 다른 중국-넥서스 스파이 그룹으로 2024년 2월 초부터 Ivanti Connect Secure VPN 장치를 노린 공격이 시작이었다. 이들은 CVE-2024-21893과 CVE-2024-21887을 악용해 초기 침투를 한 다음 PHANTOMNET, TONERJAM 멀웨어를 배포했다. 이 공격 그룹은 WMI(Windows Management Instrumentation)를 활용해 피해 조직의 네트워크 내에서 정보를 수집하고, 측면이동하면서 시스템 변경과 멀웨어 유지에 관여했다.
이 공격 그룹은 해당 서버를 GOST 프록시 도구로 사용했는데, 이는 멀웨어를 컴퓨터 시스템(엔드포인트) 전송에 사용했다. GOST 프록시 식별에 사용한 인증서 유효 기간은 2022년 9월 1일부터 2024년 1일까지로 확인됐다.
2024년 2월 3일에는 이 공격 그룹이 FRP(Fast Reverse Proxy)라는 도구를 목표로 삼은 Ivanti Connect Secure VPN 장비로부터 이 서버로 다운로드하려고 시도한 바 있다. 이러한 활동들이 비교적 가까운 시간 내에 일어났고, 사용한 SSH가 재사용된 것으로 보아 UNC5330이 최소한 2021년부터 이 서버를 운영한 것으로 보인다.
4. UNC5337
UNC5337은 중국-넥서스 스파이 그룹으로 2024년 1월부터 Ivanti Connect Secure VPN 장비를 공격한 것으로 의심하고 있다. 이들은 두 가지 취약점을 악용해 인증 우회와 명령 삽입을 수행했다. UNC5337은 SPAWNSNAIL, SPAWNMOLE, SPAWNANT, SPAWNSLOTH 등의 사용자 정의 멀웨어를 사용해 장비를 감염시켰다. 맨디언트는 이 공격 그룹이 다른 스파이 활동 그룹인 UNC5221과 관련이 있을 것으로 보고 있다.
5. UNC5291
UNC5291은 교육, 에너지, 방위, 보건 분야를 타깃으로 위협하는 집단으로 UNC3236과 연관됐을 가능성이 있다. 이들의 활동은 2023년 12월에 Citrix Netscaler ADC를 대상으로 시작됐고, 2024년 1월에는 Ivanti Connect Secure VPN 장비에 공격 초점을 맞췄다. Volt Typhoon과 관련된 이 공격 그룹은 중요 인프라에 관심이 많은 것으로 알려져 있으며, 2024년 2월 사이버 보안과 인프라 보안국(CISA)은 이들이 중요 인프라를 목표로 삼고 있다고 경고한 바 있다.
즉 UNC5337과 UNC5291은 중국과 연결된 공격 그룹으로 각각 Ivanti Connect Secure VPN와 Citrix Netscaler ADC를 공격하고 있으며, 특정 인프라를 목표로 삼고 있는 것으로 의심되고 있다.
새로 발견한 TTP와 멀웨어
최근 Ivanti Connect Secure VPN 침해사고가 일어난 한 사이버 공격 조사에서 맨디언트는 해커들이 피해 조직의 네트워크 내에서 측면 이동을 하며 다른 시스템에 접근하기 위해 새로운 전략, 기술, 절차(TTP)를 사용하는 것을 발견했다. 공격자가 사용한 다양한 신규 멀웨어 패밀리도 확인됐으며, 이 중 일부는 해커들이 직접 만든 맞춤형 멀웨어로 분석됐다. 이외에 SLIVER, CrackMapExec 같은 이미 알려진 오픈소스 도구를 사용했다.
(1)SPAWN 멀웨어 패밀리
Ivanti Connect Secure VPN 장비를 해킹한 UNC5221 공격 그룹 분석을 통해 맨디언트는 네 종류의 서로 다른 멀웨어가 사용되어 장비에 장기간 숨길 수 있는 백도어를 생성하는 것을 발견했다. 이 멀웨어 패밀리는 공격자들이 탐지되지 않고 오랫동안 시스템에 접근할 수 있게 해주는 목적으로 개발된 것으로 보인다.
▲취약점을 악용해 웹셸 실행 명령 화면[자료=맨디언트]
(2)SPAWNANT
SPAWNANT는 다른 두 멀웨어인 SPAWNMOLE 터널러와 SPAWNSNAIL 백도어를 지원하는 설치 도구다. 이 도구는 정상적인 설치 프로세스인 dspkginstall을 가로채서 멀웨어를 추가하고, 이후 작업을 정상적으로 마치게 한다. 멀웨어를 컴퓨터 시스템에 안착시키는 데 사용하는 도구다.
(3)SPAWNMOLE
SPAWNMOLE은 프로세스에 주입되는 터널러다. SPAWNMOLE은 web 프로세스에 침투해 트래픽을 처리하는 accept 함수를 탈취하고, 멀웨어를 추가하기 위해 sprintf 함수를 내보내기 전에 해당 프로세스를 가로챈다. 이후 흐름을 다시 vsnprintf로 리다이렉션해 합법적인 웹 트래픽은 그대로 두고, 악성 트래픽만 특정 목적지로 전송한다. 이를 통해 해커는 웹 서버를 이용해 불법적으로 데이터를 전송하거나 명령을 실행할 수 있다.
멀웨어는 web 프로세스 주입 시도, API 탈취 시도, 서드파티 라이브러리 사용을 위해 특별히 PIE(Position Independent Excutable)로 컴파일된다.
(4)SPAWNSNAIL
SPAWNSNAIL(libdsmeeting.so)은 로컬 호스트에서 비밀리에 통신할 수 있는 백도어를 만드는 도구다. 이는 주로 모바일 장치 관리를 위해 사용하는 특정 프로세스에 숨겨져 실행되며, 공격자가 컴퓨터 내부로부터 명령을 수행하고 정보를 가져갈 수 있게 해준다. SPAWNSNAIL은 컴퓨터의 특정 포트에서만 동작하는 SSH 서버를 만들며, 이를 통해 공격자가 컴퓨터에 접근할 수 있게 한다.
첫 번째 스레드는 비밀 키를 임시 파일에 저장한 다음, SSH 연결 설정에 이 키를 사용하도록 한다. 설정 후 임시 파일은 삭제된다. 이렇게 localhost의 특정 포트에서 듣고 있으면서 공개 키 인증 방식을 요구하는 SSH 서버가 생성된다. 연결이 성공하면 SELinux 활성 여부, 가동 시간 등 시스템 관련 정보를 보여주고, 공격자가 시스템을 제어할 수 있도록 bash 쉘을 제공한다.
두 번째 스레드는 ConnectSecure의 이벤트 로깅을 담당하는 다른 프로세스에 SPAWNSLOTH라는 로그 조작 유틸리티를 최대 3번까지 주입한다. 이를 통해 공격자는 로그 파일을 조작해 공격 흔적을 지우거나 변조할 수 있다.
(5)SPAWNSLOTH
SPAWNSLOTH는 컴퓨터 시스템의 로그 기록을 조작하는 도구로 로그 기록 조작, 로깅 함수 가로채기, 프로세스 간 통신을 위해 사용한다. SPAWNSLOTH는 시스템 내의 특정 프로세스에 침투해 이 프로세스가 생성하는 로그를 조작할 수 있다. 특히, SPAWNSNAIL 백도어가 활성화됐을 때, 시스템이 로그를 기록하는 것을 비활성화하고, 외부 syslog 서버로 로그를 전송하는 기능을 멈춘다. SPAWNSLOTH는 백도어가 활성화되어 있을 때만 로그 기록을 차단하는 조건 설정을 위해 사용한다.
문제 원인 찾기
맨디언트는 Ivanti Connect Secure VPN 장비의 보안 침해 사건을 조사하는 과정에서 공격자들이 두 가지 보안 취약점(CVE-2023-46805 및 CVE-2024-21887)을 이용해 특정 파일에 새로운 웹셸(ROOTROT)을 삽입한 사실을 발견했다. 이 웹셸은 Perl 언어로 작성했으며, 장비의 특정 위치에 저장된 합법적인 파일에 추가됐다. 이 파일 위치는 과거에 다른 보안 취약점(CVE-2019-11539, CVE-2020-8218)을 이용한 공격에서도 사용한 바 있다.
ROOTROT 웹셸은 웹 브라우저를 통해 접근할 수 있는 페이지를 통해 작동한다. 사용자나 공격자가 특정 명령을 하면, 웹셸은 명령을 실행하고 이를 통해 공격자는 원격으로 시스템에 명령을 내릴 수 있게 되어 시스템을 제어하거나 데이터를 탈취할 수 있다.
▲UNC5330 공격 경로[자료=맨디언트]
ROOTROT 웹셸은 보안 취약점 발표 전 이미 시스템에 설치됐고, 이는 공격이 매우 세심하게 계획됐음을 의미한다. 그러나 시스템 내부 및 외부 무결성 검사 도구인 ICT는 ROOTROT 웹셸 파일이나 그 상위 디렉토리에서 발생한 변경 사항을 감지하지 못한다. 이유는 이 파일이 ICT 검사에서 제외된 시스템의 동적 파티션 내에 위치하기 때문이다.
측면 이동을 통한 vCenter 침해
UNC5221은 먼저 Ivanti Connect Secure VPN 장비에 ROOTROT이라는 웹셸을 설치해 피해자 네트워크 내에서 측면 이동을 위한 발판을 마련했다. 이를 기반으로 공격자들은 피해자의 네트워크 탐색에 나섰는데, 특히 VM웨어 vCenter 서버에 관심을 가졌다. 측면 이동 단계에서 UNC5221은 vCenter에 접근하기 위해 먼저 vCenter의 웹 콘솔을 사용했고, 그 다음에는 SSH를 통해 서버에 접근했다. 이후 vCenter 서버 내에서 세 개의 새로운 가상 머신을 만들었다.
이들은 네트워크 내의 다른 서버와 비슷한 이름을 가졌지만, UNC5221이 가상 머신들을 실제로 사용했는지는 확인되지 않았다. 마지막으로 UNC5221은 SSH을 통해 vCenter에 다시 접근해 BRICKSTORM이라는 또 다른 백도어를 설치했다. 이 백도어는 vCenter의 정상적인 프로세스인 vami-http를 모방한 것으로 추가 침입이나 명령 실행에 사용할 수 있다.
BRICKSTORM
BRICKSTORM은 Go 언어로 작성한 VM웨어 vCenter 서버를 목표로 하는 백도어 프로그램이다. 이 프로그램은 웹 서버 역할을 하며 파일시스템과 디렉토리 조작, 파일 업로드·다운로드, 셸 명령 실행, SOCKS 프로토콜을 통한 네트워크 트래픽 중계 기능을 제공한다. BRICKSTORM은 하드코딩된 C2(Command & Control) 서버로 웹 소켓을 통해 통신한다.
BRICKSTORM이 실행될 때 환경 변수를 체크해 프로그램이 어떻게 실행될지 결정한다. 만약 이 변수가 false이거나 설정되지 않은 경우 BRICKSTORM은 자신의 코드를 복사한 후, 복사된 위치에서 프로그램을 실행하고 기존 실행을 종료한다. 이 과정은 서버 내에서 더 자연스럽게 숨어 있을 수 있게 한다. WRITE_LOG가 true로 설정된 경우 BRICKSTORM은 자신이 올바른 위치에서 실행되고 있다고 판단하고 정상적인 작동을 계속한다.
BRICKSTORM 백도어에는 자신의 작업을 모니터링하는 특별한 기능이 있다. 백도어가 시스템 내에서 제대로 작동하는지 감시한다. WORKER라는 환경 변수가 false이거나 아예 설정되지 않았다면 BRICKSTORM은 자신이 설치된 위치를 주시하면서 이 파일의 내용을 복사하고, 새로운 프로세스를 생성하며, 이 프로세스가 정상적으로 작동하는지 모니터링한다.
반면에 WORKER 환경 변수가 true로 설정되어 있다면 BRICKSTORM은 자신이 백도어 기능을 수행하기 위해 특별히 생성된 worker 프로세스라고 판단하고 watcher 함수의 나머지 단계를 실행하지 않는다.
또한, BRICKSTORM은 웹 소켓을 통해 외부의 C2 서버와 통신한다. 프로그램 코드 내에는 특정 웹 주소가 하드코딩 되어 있어 이 주소를 통해 지시를 받거나 데이터를 전송한다. 또한, 이 백도어는 DoH(DNS over HTTPS) 서비스를 이용한 통신을 지원하는데, 이는 네트워크 트래픽을 더욱 은밀하게 만들어 외부와 통신을 숨기는 데 도움이 된다.
BRICKSTORM 백도어는 wssoft라는 이름의 사용자 정의 Go 패키지를 사용하는 것으로 나타났다. 현재 공개적으로 wssoft란 이름으로 알려진 Go 패키지는 없으나, 이는 공격자들이 특별히 작업 처리와 연결 관리를 위해 만든 코드일 가능성이 높다.
백도어 기능이 작동하면 이 패키지는 웹 서버를 생성해 외부로부터 명령을 받아들이고 처리하는 역할을 한다. 이 과정에서 BRICKSTORM은 패키지를 사용해 다양한 웹 요청에 대한 경로를 설정하고 관리한다. 또한, lonnng/nex라는 패키지를 이용해 데이터를 JSON 형식으로 변환(marshal)하는 작업을 수행한다. 이러한 기술들은 BRICKSTORM이 네트워크에서 더 효율적으로 통신하고 명령을 처리하는 데 필요한 구조를 제공한다.
액티브 디렉토리 침해를 위한 측면 이동
UNC5330 공격 그룹은 두 가지 보인 취약점(CVE-2024-21893과 CVE-2024-21887)을 사용해 피해자의 시스템에 처음으로 접근하는 데 성공했다. 이들은 처음에 접근한 후 이미 침해된 Ivanti Connect Secure VPN 장비에 설정된 LDAP 바인드 계정을 활용했다. 그들의 목적은 취약한 Windows Certificate Template을 이용해 새로운 컴퓨터 객체를 만들고, 이를 통해 도메인 관리자 인증서를 발급받는 것이었다.
인증서를 획득한 공격자들은 도메인 관리자로 가장할 수 있었고, 이 위치에서 추가적인 자격 증명 정보를 수집할 수 있었다. 이후 공격자들은 네트워크 내에서 더 많은 시스템에 접근하고 제어권을 확장하기 위해 DCSync라는 기술을 사용해 추가적인 측면 이동을 시도했다. 이런 전략으로 UNC5330은 피해자의 네트워크 내에서 광범위한 액세스 권한을 확보해 중요 정보를 탈취할 수 있었다.
(1)Windows Certificate Template 악용
UNC5330은 ldap-ivanti라는 계정으로 LDAP 바인드 작업을 수행했다. 이 과정에서 testComputer$라는 이름의 컴퓨터 객체를 생성했다. 그런 다음 새로 만든 testComputer$ 객체로 도메인 컴퓨터에 등록 권한을 부여하는 취약한 인증서 템플릿으로부터 인증서를 발급받았다.
UNC5330은 이 인증서를 활용해 도메인 관리자 계정용 인증서를 발급받았고, 이를 통해 Kerberos TGT(Ticket-Granting Ticket)를 얻었다. 이 TGT로 UNC5330은 DCSync 공격을 진행해 네트워크 내 다른 시스템의 도메인 자격 증명을 추출해 측면 이동에 필요한 권한을 확보했다.
도메인 관리자 권한 확보 후 UNC5330은 WMI(Windows Management Instrumentation)를 사용해 TONERJAM 런처와 PHANTOMNET 백도어를 네트워크 내 다른 시스템에 배포했다. 이 과정을 거쳐 공격자들은 네트워크 내부에 더 깊숙이 침투하고, 더 많은 시스템을 제어할 수 있는 토대를 마련했다.
(2)WMI Event Consumers
공격자들은 피해자의 네트워크 내에서 측면 이동과 지속적인 접근 확보를 위해 WMI를 활용했다. 공격자들은 작업을 스케줄링하고 실행하는 데 WMI Event Consumers를 사용했다.
이 과정에서 공격자들은 다음과 같은 작업을 수행했다. 시스템이 시작될 때 자동으로 실행되는 작업을 스케줄링하고, 특정 명령을 실행했다. 그리고 이 명령의 결과(출력)를 디렉토리에 파일 형태로 저장하고, 사용이 끝난 후에는 스케줄링한 작업을 삭제했다.
이러한 방법과 WMI를 통한 명령 실행 과정에서 발견된 증거와 명명 규칙은 최신 버전의 CrackMapExec 도구 사용과 일치한다. CrackMapExec는 SMB(Simple Message Block) 프로토콜을 사용하지 않고 DCE/RPC(Distributed Computing Environment/Remote Procedure Call)를 통해 WMI 명령을 실행하는 기능을 제공한다. 맨디언트는 이 기술이 특히 TONERJAM, PHANTOMNET 백도어를 네트워크 내 다른 시스템에 배포하는 데 사용됐다고 보고한 바 있다.
(3)TONERJAM
TONERJAM은 암호화된 쉘 코드 페이로드를 해독하고 실행하는 도구다. TONERJAM은 PHANTOMNET이라는 특정 페이로드의 암호화를 해제하는 데 사용한다. 복호화 과정에서 AES 암호화 키를 활용하는데, 이 키는 페이로드 마지막 부분에 위치한 16바이트 SHA 해시 함수로 처리해 얻는다. TONERJAM은 자신이 실행될 때 어떤 권한을 가졌는지에 따라, 시스템 재시작 후에도 자동 실행이 되도록 윈도우 레지스트리 키를 수정하거나, 필요 없어진 COM 객체를 정리하는 등의 작업으로 지속성을 확보한다.
(4)PHANTOMNET
PHANTOMNET은 TCP 네트워크 프로토콜을 기반으로 통신하는 확장 가능한 백도어다. 이 백도어의 주요 특징은 플러그인으로 쉽게 기능을 추가할 수 있다는 것이다. 플러그인은 시스템 메모리에 직접 적재되어 실행된다.
(5)SILVER C2
UNC5266은 별도의 공격에서 SILVER라는 도구의 복사본을 찾기 위해 특정 Python SimpleHTTP 서버를 사용했다. 이 서버는 공격자들이 이미 제어하고 있는 C2 서버와 같은 IP 주소에 위치해 있었다. SILVER 복사본은 침해 시스템 내 세 개의 다른 위치에 배치됐으며, 각각 합법적인 파일로 위장해 시스템 내에서 찾기 어렵게 해놨다. 또한, 공격자들은 시스템 재시작 후에도 SILVER가 계속 실행되도록 systemd 서비스 파일을 수정해 SILVER의 복사본을 시스템에 영구적인 데몬으로 등록했다.
UNC5266은 이전에 올린 ‘Cutting Edge Part2’ 포스팅에서 설명한 WARPWIRE라는 소프트웨어를 변형한 버전을 사용했다. 이 변형 버전은 루안다에 위치한 침해된 웹 서버에서 UNC5266에 의해 다운로드된 것으로 맨디언트는 파악하고 있다.
(6)TERRIBLETEA
UNC5266은 이전에 SLIVER 작업에서 사용했던 WARPWIRE 샘플을 다시 사용했다. 하지만 이번에는 SLIVER 대신 맨디언트가 TERRIBLETEA라고 이름 붙인 Go 언어로 작성한 백도어를 배포했다. 침입 과정에서 공격자들은 백도어를 다운로드하기 위해 curl 명령어 사용을 시도했으나 실패했다. curl 사용 시도가 실패한 후 약 7분 뒤에 공격자들은 wget 요청으로 익명 파일 공유 사이트(pan.xj.hk)에서 백도어를 받았다. 이 시간 동안 공격자들은 아마 TERRIBLETEA 백도어를 해당 파일 공유 사이트에 올린 것으로 추정된다.
TERRIBLETEA는 XXTEA 암호화를 사용해 HTTP를 통한 암호화된 통신을 지원하는 Go 언어로 개발한 백도어로 △명령 실행 △키스트로크 로깅 △SOCKS5 프록시 △포트 스캐닝 △파일시스템 상호작용 △SQL 쿼리 실행 △화면 캡처 △새 SSH 세션 열기, 명령 실행 및 파일을 원격 서버에 업로드하는 기능을 제공한다.
전망
지금까지 UNC5325가 Ivanti Connect Secure VPN 장비를 공격 대상으로 삼은 사례를 살펴봤다. 그리고 이를 통해 네트워크 엣지 장치가 어떤 위협에 노출될 수 있는지 알아봤다. 맨디언트의 조사에 따르면 중국과 연결된 공격자들은 전 세계 기업들을 대상으로 위협을 가하고 있으며, 아직 공개되지 않은 제로데이 취약점뿐만 아니라 이미 알려진 N-데이 취약점도 적극 활용하고 있다.
엣지 장치의 보안 취약점을 이용한 공격에 성공하면 공격자들은 다양한 TTP를 동원해 후속 공격을 하는 것도 확인되고 있다. 특히, 중국과 연관된 공격자들은 보안 시스템 감지를 회피하기 위해 공격 방법을 은밀하게 개선하고 있다. 오픈소스 도구를 사용하는 경우도 많지만, 특정 환경에 맞춰 직접 개발한 맞춤형 맬웨어 코드를 사용하는 사례도 심심찮게 볼 수 있다.
[김경애 기자(boan3@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>