Blog

데이터 탈취를 위해 악용하는 MOVEit Transfer 제로데이 취약점

Nader Zaveri, Jeremy Kennelly, Genevieve Stark, Matthew McWhirt, Dan Nutting, Kimberly Goody, Justin Moore, Joe Pisano, Zander Work, Peter Ukhanov, Juraj Sucik, Will Silverstone, Zach Schramm, Greg Blaum, Ollie Styles, Nicholas Bennett, Josh Murchie
Jun 02, 2023
6 min read
|   Last updated: Sep 04, 2023
Zero Day Threats
Vulnerabilities
Threat Intelligence
Detection

맨디언트는 Ipswitch에서 개발한 파일 전송 소프트웨어인 MOVEit Transfer의 제로데이 취약점이 데이터 도용을 위해 광범위하게 악용되고 있는 것을 발견하였습니다. 이 취약점은 2023년 5월 프로그레스 소프트웨어 코퍼레이션에서 발표하였고 CVE-2023-34362로 지정되었습니다. 맨디언트는 한 사고 대응에 참여해 이 취약점에 대한 초기 분석을 수행하였습니다. 분석에 따르면 익스플로잇 초기 증거는 2023년 5월 27일에 발생하여 웹 쉘을 배포 및 데이터 도난으로 이어졌습니다. 몇몇 사례에서는 웹 쉘 배포 후 몇 분 내에 데이터 도난이 발생했습니다. 맨디언트는 MOVEit Transfer의 제로데이 취약점을 이용한 활동이 캐나다, 인도, 미국 지역의 여러 산업계 조직을 노리는 위협 행위자 집단인 UNC4857의 소행으로 봅니다. UNC4857의 기회주의적이고 데이터 탈취 활동과 일치하는 부분이 많기 때문입니다. 이를 전제로 놓고 볼 때 MOVEit Transfer의 제로데이 취약점을 악용한 침해를 당한 조직은 며칠 또는 몇 주 안에 랜섬웨어 이메일을 받을 수 있을 것으로 보입니다.

  • 위협 행위자들은 MOVEit Transfer 소프트웨어의 합법적인 구성 요소인 human.aspx로 가장하는 파일 이름을 가진 LEMURLOOT 웹 쉘을 배포하고 있습니다. 맨디언트의 관찰에 따르면 LEMURLOOT 웹 쉘과 상호작용하기 전에 합법적인 guestaccess.aspx 파일에 대한 여러 차례의 POST 요청이 있었습니다. 이는 SQLi 공격이 해당 파일로 향하고 있다는 것을 보여줍니다.
  • 맨디언트는 파일 이름이 human2.aspx 및 _human2.aspx인 LEMURLOOT 샘플을 관찰했습니다. 2023년 5월 28일부터 human2.aspx라는 이름을 가진 다양한 샘플이 바이러스토탈(VirusTotal)에 업로드되었습니다. 이외에도 이탈리아, 파키스탄, 독일 등 여러 국가에 공개 리포지토리에 LEMURLOOT 샘플이 업로드되었습니다. 이를 볼 때 MOVEit Transfer를 악용하는 UNC4857의 활동이 캐나다, 인도, 미국 외에 다른 국가에도 영향을 끼쳤다는 것을 알 수 있습니다.
  • LEMURLOOT는 파일과 폴더를 열거하고, 구성 정보를 검토하고, 하드코딩된 이름으로 사용자를 생성 또는 삭제하는 명령을 생성하는 등의 MOVEit Transfer 소프트웨어 실행 시스템을 침해하기 위한 맞춤형 기능을 제공합니다. 초기 분석에 따르면 LEMURLOOT 웹 쉘은 MOVEit Transfer 소프트웨어를 설치한 시스템에 사용자가 업로드한 데이터를 훔치는 데 사용된 것으로 나타났습니다.
  • 맨디언트는 MOVEit Transfer 소프트웨어를 설치한 피해자의 시스템에서 대량의 파일이 도난당한 여러 사례를 확인하였습니다. 또한, LEMURLOOT는 MOVEit Transfer 소프트웨어 설정에서 자격 증명을 포함한 애저(Azure) 스토리지 블롭(Blob) 정보를 훔칠 수 있습니다. 따라서 이 취약점을 악용하는 공격자는 애저 블롭 스토리지에 저장한 데이터를 훔칠 수 있습니다.
  • 대부분의 경우 LEMURLOOT를 전송하는 스캔 및 익스플로잇은 5.252.188.0/22 범위의 IP 주소에서 시작되었지만 웹 쉘과의 상호작용 및 데이터 도난은 다른 시스템에서 발생하였습니다. 이러한 2단계 작업을 지원하는 데 사용된 호스트 중 상당수는 5월 19일에서 22일 사이에 생성된 인증서가 있는 RDP 서비스를 호스팅했습니다.

MOVEit Transfer의 제로데이 취약점을 악용한 침해 활동에 대한 분석은 현재 진행 중입니다. 분석 내용은 맨디언트 어드밴티지(Mandiant Advantage)의 CAMP.23.037 페이지에 반영될 예정이며 추가 정보가 입수되면 블로그 게시물도 업데이트할 예정입니다. 이 포스팅과 함께 맨디언트는 MOVEit Transfer 취약점을 완화하기 위한 가이드를 만들었습니다. 이 문서에는 다음과 같은 지침이 담겨 있습니다.

  • 격리 조치
  • 애플리케이션 및 인프라 강화
  • 로깅 및 헌팅 권장 사항

LEMURLOOT 분석

LEMURLOOT는 MOVEit Transfer 소프트웨어와 상호작용하도록 맞춤화된 C#으로 작성한 웹 쉘입니다. 이 맬웨어는 하드코딩된 비밀번호를 통해 들어오는 연결을 인증하고, MOVEit Transfer 소프트웨어를 설치한 시스템에서 파일을 다운로드하고, 애저 시스템 설정을 추출하고, 자세한 기록 정보를 검색하고, 특정 사용자를 생성 및 삽입하거나, 동일한 사용자를 삭제하는 명령을 실행할 수 있습니다. LEMURLOOT와 상호작용하는 시스템으로 반환되는 데이터는 gzip으로 압축됩니다.

인증 및 데이터베이스 연결

LEMURLOOT는 먼저 들어오는 HTTP 요청에 헤더 필드 X-siLock-Comment와 샘플에 따라 달라지는 36자 GUID 형식의 값이 포함되어 있는지 확인합니다. 이 GUID를 비밀번호로 사용하며 예상 헤더 필드와 값을 전달하지 않는 클라이언트에는 HTTP 404 상태 코드를 반환합니다.

올바른 비밀번호가 LEMURLOOT에 전달되면 연결이 성공해 작업을 수락할 수 있음을 나타내는 헤더 응답 X-siLock-Comment와 값 주석을 보냅니다. 이 맬웨어는 SystemSetting.DatabaseSettings()를 사용해 검색한 설정으로 실행 호스트에서 SQL 서버에 연결합니다. 그다음 연결 클라이언트에서 수행한 데이터를 처리하여 다음 HTTP 헤더 필드(X-siLock-Step1, X-siLock-Step2, X-siLock-Step3)에서 예상되는 명령을 구문 분석합니다.

X-siLock-Step1명령 시퀀스

  • X-siLock-Step1의 헤더 필드 값이 -1인 경우 LEMURLOOT는 애저 블롭 스토리지 계정과 관련 키 및 컨테이너를 포함한 애저 시스템 설정을 MOVEit Transfer에서 검색해 반환합니다. 그런 다음 SQL 쿼리를 수행하여 파일, 파일 크기, 폴더, 파일 소유자 및 교육기관 이름 데이터를 검색합니다. 결과 데이터는 gzip으로 압축되어 LEMURLOOT와 상호작용하는 클라이언트에 반환됩니다.
  • X-siLock-Step1의 헤더 필드 값이 -2인 경우 다음과 같은 명령으로 LoginName과 RealName이 "Health Check Service"로 설정된 사용자 계정을 삭제합니다.
Delete FROM users WHERE RealName='Health Check Service' 

X-siLock-Step2, X-siLock-Step3 명령 시퀀스

X-siLock-Step2의 헤더 필드 값이 -1 또는 -2가 아닌 경우 맬웨어는 X-siLock-Step2, X-siLock-Step3의 값을 파싱하여 fileid 및 folderid라는 변수에 저장합니다. fileid 및 folderid의 값이 null이 아닌 경우 맬웨어는 로컬 MOVEit Transfer 시스템에서 동일한 값을 가진 파일을 검색해 gzip으로 압축한 다음 연결 클라이언트로 반환합니다. fileid 및 folderid의 값이 null인 경우 LEMURLOOT는 권한 수준이 "30"이고 InstID="X-siLock-Step1"에서 설정된 값으로 기존 계정을 식별하려고 시도합니다. 그렇지 않으면 무작위로 생성된 사용자 이름과 LoginName과 RealName이 "Health Check Service"로 설정된 새 계정을 생성합니다. 이 계정은 활성 MOVEit Transfer 소프트웨어 세션에 삽입됩니다.

속성 분석

초기 수준의 분석을 해본 결과 아직 UNC4857과 기존 위협 클러스터 간에 구체적인 중복이 있다는 증거는 없었습니다. 그러나 UNC4875가 사용하는 전술, 기법, 절차(TTP)와 FIN11 데이터 탈취 활동과 관련된 TTP 간에는 몇 가지 주목할 유사점이 있습니다. 예를 들어 UNC4857과 FIN11 위협 클러스터로 의심이 가는 UNC2546은 모두 제로데이 취약점을 사용해 파일 전송 시스템을 표적으로 삼은 후 맞춤형 웹 쉘로 데이터를 탈취했습니다. 또한, 맨디언트는 최근 CLOP와 관련된 최소 한 명의 공격자가 SQL 인젝션 작업을 위해 파트너를 찾는 것을 관찰하였습니다. 그러나 현재 UNC4857과 FIN11 사이에 관계가 있는지 확인할 수 있는 충분한 증거는 없습니다. 새로운 활동에 대한 지속적인 분석을 통해 추가적인 통찰력을 얻을 수 있습니다.

시사점

맨디언트는 민감한 데이터를 표적으로 삼는 다양한 동기를 가진 위협 행위자들을 일상적으로 관찰하고 있습니다. 예를 들어 국가가 후원하는 위협 행위자들은 정책 연구, 군사 및 정부 파일, 지적 재산, 개인 식별 정보를 보유한 기관에 지속적인 관심을 보이고 있습니다. 또한, 사이버 범죄자들은 갈취 작업을 통해 훔친 정보로 수익을 창출하거나, 언더그라운드 포럼에 판매용으로 게시하거나, 비즈니스 이메일 침해와 같은 2차 작업에 활용할 수 있습니다. 맨디언트는 현재 이번에 식별한 활동을 알려진 위협 행위자의 소행으로 단정할 충분한 증거를 확보하고 있지는 않습니다. 하지만 이번 활동은 FIN11이 주도하여 파일 전송 소프트웨어를 표적으로 삼아 대량의 데이터 유출 사고를 일으키고, 훔친 데이터를 CLOP^_-LEAKS 데이터 유출 사이트(DLS)에 게시하겠다고 협박한 사건을 떠올리게 합니다. 여러 사례에서 FIN11은 데이터 탈취 후 몇 주 후에 CLOP^_-LEAKS 데이터 유출 사이트에 데이터를 게시하지 않는 대가로 금품을 요구하는 이메일을 보냈습니다. 이번 활동의 경우 피해 조직에 몸값을 요구하는 연락이 아직 오지 않았습니다. 아마 위협 행위자들이 여러 피해자와 동시에 협상할 여력이 부족하거나 하는 이유가 있을 것으로 보입니다. 만약 이번 위협 행위의 목표가 몸값 갈취인 경우 피해 조직은 앞으로 며칠 또는 몇 주 내에 훔친 데이터에 대한 몸값을 흥정하는 이메일을 받을 것으로 예상됩니다.

끝으로 본 포스팅 작성에 참여한 저자와 CVE-2023-34362 익스플로잇 관련해 고객을 돕기 위해 노력하고 있는 수십 명의 컨설턴트 그리고 맨디언트 FLARE 팀의 Raymond Leong에게 감사의 말씀을 드립니다.

탐지

다음 YARA 룰은 적절한 성능을 보장하고 오탐의 위험을 낮추기 위해 사전 테스트 및 검증을 거친 것이 아닙니다. 이 룰은 LEMURLOOT 페이로드 식별을 위한 위협 헌팅의 출발점으로 삼기 위해 만든 것입니다. 맬웨어 제품군이 변경되면 조정이 필요할 수 있습니다.

rule M_Webshell_LEMURLOOT_DLL_1 {

    meta:

        disclaimer = "This rule is meant for hunting and is not tested to run in a production environment"

        description = "Detects the compiled DLLs generated from human2.aspx LEMURLOOT payloads."

        sample = "c58c2c2ea608c83fad9326055a8271d47d8246dc9cb401e420c0971c67e19cbf"

        date = "2023/06/01"

        version = "1"

    strings:

        $net = "ASP.NET"

        $human = "Create_ASP_human2_aspx"

        $s1 = "X-siLock-Comment" wide

        $s2 = "X-siLock-Step3" wide

        $s3 = "X-siLock-Step2" wide

        $s4 = "Health Check Service" wide

        $s5 = "attachment; filename={0}" wide

    condition:

        uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and

        filesize < 15KB and

        $net and

        (

            ($human and 2 of ($s*)) or

            (3 of ($s*))

        )

}

컴파일된 LEMURLOOT DLL 탐지 룰

rule M_Webshell_LEMURLOOT_1 {

    meta:

        disclaimer = "This rule is meant for hunting and is not tested to run in a production environment"

        description = "Detects the LEMURLOOT ASP.NET scripts"

        md5 = "b69e23cd45c8ac71652737ef44e15a34"

        sample = "cf23ea0d63b4c4c348865cefd70c35727ea8c82ba86d56635e488d816e60ea45x"

        date = "2023/06/01"

        version = "1"

    strings:

        $head = "<%@ Page"

        $s1 = "X-siLock-Comment"

        $s2 = "X-siLock-Step"

        $s3 = "Health Check Service"

        $s4 = /pass, \"[a-z0-9]{8}-[a-z0-9]{4}/

        $s5 = "attachment;filename={0}"

    condition:

        filesize > 5KB and filesize < 10KB and

        (

            ($head in (0..50) and 2 of ($s*)) or

            (3 of ($s*))

        )

}

LEMURLOOT ASP.NET 스크립트 탐지 룰

침해 지표 - LEMURLOOT 샘플

MD5 

SHA256 

00c6bce35c40ce1601aa06c4e808c0f1 

38e69f4a6d2e81f28ed2dc6df0daf31e73ea365bd2cfc90ebc31441404cca264 

04b474e8db353d368e2d791ba5dee6d6 

3a977446ed70b02864ef8cfa3135d8b134c93ef868a4cc0aa5d3c2a74545725b 

11eadcf3f1bc9b0ed6994c3ede299ce8 

b1c299a9fe6076f370178de7b808f36135df16c4e438ef6453a39565ff2ec272 

317552cac7035e35f7bdfc2162dfd29c 

c77438e8657518221613fbce451c664a75f05beea2184a3ae67f30ea71d34f37 

359a1141a79480555aa996fd6d9e4af1 

702421bcee1785d93271d311f0203da34cc936317e299575b06503945a6ea1e0 

44d8e68c7c4e04ed3adacb5a88450552 

387cee566aedbafa8c114ed1c6b98d8b9b65e9f178cf2f6ae2f5ac441082747a 

45685c190c91ebe0966e8a0aeca31280 

4359aead416b1b2df8ad9e53c497806403a2253b7e13c03317fc08ad3b0b95bf 

538d6e172d18d4cebeac211873779ba5 

daaa102d82550f97642887514093c98ccd51735e025995c2cc14718330a856f4 

67fca3e84490dfdddf72e9ba558b589a 

6015fed13c5510bbb89b0a5302c8b95a5b811982ff6de9930725c4630ec4011d 

7d5e5537c5346d764f067f66cca426ba 

9d1723777de67bc7e11678db800d2a32de3bcd6c40a629cd165e3f7bbace8ead 

8cd6c75e6160b90de2a52c967b3d4846 

c56bcb513248885673645ff1df44d3661a75cfacdce485535da898aa9ba320d4 

8d88e451e39506ae258f3aa99da8db9a 

0ea05169d111415903a1098110c34cdbbd390c23016cd4e179dd9ef507104495 

911230b5dca1c43f6d22e65c66b0f6b1 

d49cf23d83b2743c573ba383bf6f3c28da41ac5f745cde41ef8cd1344528c195 

96d467fd9663cf2e5572f8529e54f13e 

5b566de1aa4b2f79f579cdac6283b33e98fdc8c1cfa6211a787f8156848d67ff 

9f3c306dabc3f349b343251f4443412c 

f0d85b65b9f6942c75271209138ab24a73da29a06bc6cc4faeddcb825058c09d 

a85299f78ab5dd05e7f0f11ecea165ea 

fe5f8388ccea7c548d587d1e2843921c038a9f4ddad3cb03f3aa8a45c29c6a2f 

b1bdad086567efd202babf56eac17e1d 

9e89d9f045664996067a05610ea2b0ad4f7f502f73d84321fb07861348fdc24a 

b52e56bfc03878cc5cb9eae9d3896808 

ea433739fb708f5d25c937925e499c8d2228bf245653ee89a6f3d26a5fd00b7a 

b69e23cd45c8ac71652737ef44e15a34 

cf23ea0d63b4c4c348865cefd70c35727ea8c82ba86d56635e488d816e60ea45 

bf7c1dd613101c0a95027249a5fcb759 

2413b5d0750c23b07999ec33a5b4930be224b661aaf290a0118db803f31acbc5 

c2db1091eb7bac28461877f736d86d83 

348e435196dd795e1ec31169bd111c7ec964e5a6ab525a562b17f10de0ab031d 

d71a6b5ae3d89dc33cbbb6877e493d52 

b9a0baf82feb08e42fa6ca53e9ec379e79fbe8362a7dac6150eb39c2d33d94ad 

ddd95f1c76a1d50b997b2e64274f386a 

a1269294254e958e0e58fc0fe887ebbc4201d5c266557f09c3f37542bd6d53d7 

e9a5f0c7656329ced63d4c8742da51b4 

48367d94ccb4411f15d7ef9c455c92125f3ad812f2363c4d2e949ce1b615429a 

eea4d43f9e3700ebcd61405776eb249a 

d477ec94e522b8d741f46b2c00291da05c72d21c359244ccb1c211c12b635899 

fbba113d1d121220fa43f90b3a20870a 

3ab73ea9aebf271e5f3ed701286701d0be688bf7ad4fb276cb4fbe35c8af8409