
2023년 5월, Progress Software의 파일 전송 솔루션인 MOVEit Transfer에서 인증되지 않은 공격자가 데이터베이스에 접근할 수 있는 SQL Injection 취약점 CVE-2023-34362가 실제 공격에 악용되었다.
공격자는 인터넷에 공개된 MOVEit Transfer 서버의 취약점을 악용한 뒤 LEMURLOOT라는 전용 웹 셸을 설치했다. 이후 MOVEit 데이터베이스와 파일 저장소를 탐색하고 중요 파일을 탈취했다.
Mandiant는 관련 공격 활동을 처음에는 UNC4857로 추적했으나, 기존 FIN11 활동과의 공격 대상, 인프라 및 CL0P 데이터 유출 사이트 사용 정황을 바탕으로 해당 활동을 FIN11에 통합했다. 이후 CL0P 측은 공격의 배후를 주장하며, 금전을 지급하지 않으면 탈취한 데이터를 공개하겠다고 피해 조직을 협박했다.
- CL0P^_- LEAKS 데이터 유출 사이트 게시물
CVE-2023-34362는 별도의 권한이나 사용자 상호작용 없이 네트워크를 통해 악용할 수 있는 SQL Injection 취약점이다. 공격자는 MOVEit Transfer 데이터베이스의 구조와 내용을 조회하고, 데이터베이스 요소를 변경하거나 삭제하는 SQL 문을 실행할 수 있었다.
NVD는 이 취약점을 CVSS 3.1 기준 9.8점으로 평가했으며, CISA는 2023년 6월 2일 실제 공격에 악용된 취약점 목록인 Known Exploited Vulnerabilities 카탈로그에 추가했다.

공격자는 MOVEit Transfer의 SQL Injection 취약점을 이용해 LEMURLOOT 웹 셸을 설치하고, 정상 애플리케이션의 데이터베이스와 세션 기능을 악용해 중요 파일을 탈취했다.
MOVEit Transfer는 기업과 기관이 직원, 외부 고객, 협력사 및 다른 시스템 사이에서 중요 파일을 전송하고 관리할 수 있도록 지원하는 MFT(Managed File Transfer) 솔루션이다.
파일 업로드·다운로드, 사용자 권한 관리, 전송 기록 및 감사 로그 등의 기능을 제공하며, 온프레미스 Windows Server 또는 클라우드 환경에서 운영할 수 있다.
금융, 공공, 의료, 교육 등 민감한 정보를 처리하는 산업에서도 사용되기 때문에 MOVEit 서버가 침해되면 서버 운영 조직뿐 아니라 파일을 주고받은 고객과 협력사의 정보까지 함께 노출될 수 있다.
Mandiant가 확인한 최초 악용 정황은 2023년 5월 27일이다. 일부 피해 환경에서는 LEMURLOOT 웹 셸이 설치된 지 수분 만에 데이터 탈취가 시작될 정도로 공격이 빠르게 진행됐다.
이후 Progress Software는 취약점과 보안 업데이트를 공개했으며, CISA와 FBI도 관련 보안 권고문을 발표했다. 그러나 공식 대응이 시작되기 전에 이미 다수의 MOVEit Transfer 서버가 침해된 정황이 확인됐다.
Mandiant는 캐나다, 인도, 미국의 여러 산업에서 침해 사례를 조사했다. 또한 이탈리아, 파키스탄, 독일에서도 LEMURLOOT 샘플이 발견돼 실제 피해 범위는 공개된 조사 사례보다 더 넓었을 가능성이 있다.
Mandiant는 초기 공격 활동을 UNC4857이라는 임시 식별자로 추적했다. 이후 기존 FIN11 활동과 공격 대상, ISP, 네트워크 대역, IP 주소, 인증서 및 CL0P 데이터 유출 사이트 사용 정황이 겹치는 것을 확인하고 UNC4857을 FIN11 활동에 통합했다.
FIN11은 과거에도 중요 데이터가 집중된 파일 전송 솔루션(MFT)을 반복적으로 노리고, 탈취한 데이터의 공개를 빌미로 피해 조직을 협박해 온 것으로 분석된다.
따라서 MOVEit 침해 사고는 단발적인 공격이라기보다, MFT 솔루션을 대상으로 수행된 대규모 데이터 탈취 및 갈취 작전의 연장선으로 볼 수 있다.
MOVEit Transfer는 외부 사용자와 파일을 교환하기 위해 인터넷에 공개되는 경우가 많다. 공격자는 이러한 특성을 이용해 다수의 취약한 서버를 탐색하고 공격한 것으로 분석된다.
Mandiant는 여러 피해 환경에서 대량의 파일이 탈취된 사실을 확인했다. LEMURLOOT는 MOVEit 애플리케이션 설정에서 Azure Blob Storage 계정, 컨테이너 및 접근 키도 조회할 수 있었다. 따라서 MOVEit 데이터를 Azure에 저장한 환경에서는 클라우드 저장소까지 침해 범위를 조사할 필요가 있었다.
이번 공격에서는 시스템 전체를 암호화하는 전통적인 랜섬웨어 행위보다 데이터 탈취와 공개 협박이 중심적으로 관찰됐다.
따라서 이 사고는 단순한 랜섬웨어 공격이 아닌 제로데이 취약점을 대규모로 악용한 데이터 탈취 및 갈취 공격이다.
MOVEit Transfer 침해 사고의 전체 흐름은 다음과 같다.
인터넷에 공개된 MOVEit Transfer 서버 탐색
↓
CVE-2023-34362 SQL Injection 취약점 악용
↓
LEMURLOOT 웹 셸 설치
↓
MOVEit 데이터베이스 연결
↓
파일·폴더·사용자 및 저장소 정보 탐색
↓
고권한 계정 생성 및 활성 세션 삽입
↓
파일 조회 및 HTTP 통신을 통한 외부 전송
↓
공격용 계정 삭제
↓
탈취 데이터 공개를 이용한 협박
공격자는 인터넷에서 접근할 수 있는 MOVEit Transfer 서버를 탐색하고, CVE-2023-34362에 취약한 시스템을 공격 대상으로 선정했다.
Mandiant는 다수의 사고에서 LEMURLOOT가 설치되기 전 정상 MOVEit 구성요소인 guestaccess.aspx를 대상으로 여러 차례 POST 요청이 발생한 사실을 확인했다. 이를 근거로 SQL Injection 공격 요청이 해당 엔드포인트를 통해 전달된 것으로 분석했다.
다만 guestaccess.aspx는 정상 파일이므로 해당 경로에 POST 요청이 발생했다는 사실만으로 공격을 확정해서는 안 된다. 다음 이벤트가 짧은 시간 안에 연결되는지를 함께 확인해야 한다.
guestaccess.aspx 비정상 POST 요청
→ 웹 루트에 신규 ASPX 파일 생성
→ human2.aspx 또는 유사 파일 접근
→ X-siLock-* HTTP 헤더 사용
→ 고권한 계정 생성
→ 대량 파일 조회 및 외부 전송
초기 스캔과 취약점 악용에는 주로 5.252.188.0/22 대역이 사용됐다. 그러나 웹 셸 제어와 실제 데이터 탈취에는 다른 인프라가 사용됐기 때문에 해당 대역만으로 침해 여부를 판단해서는 안 된다.
취약점 악용에 성공한 공격자는 MOVEit Transfer 웹 서버에 C# 기반 ASP.NET 웹 셸인 LEMURLOOT를 설치했다.
대표적으로 다음 파일명이 관찰됐다.
human2.aspx
_human2.aspx
MOVEit Transfer에는 human.aspx라는 정상 구성요소가 존재한다. 공격자는 파일명에 숫자나 밑줄을 추가해 악성 파일이 MOVEit의 정상 구성요소처럼 보이도록 위장했다.
따라서 정확한 파일명만 검색하기보다 다음 조건을 함께 확인해야 한다.
human.aspx와 이름이 유사한 파일X-siLock-* 또는 Health Check Service 문자열이 포함된 파일LEMURLOOT는 별도의 데이터베이스 접속 정보를 외부에서 전달받지 않았다. 대신 MOVEit 애플리케이션의 SystemSettings.DatabaseSettings()를 호출해 서버에 설정된 데이터베이스 연결 정보를 가져왔다.
이는 공격자가 MOVEit 서버에 이미 저장된 정상 설정을 그대로 악용했다는 의미다.
웹 셸은 데이터베이스를 통해 다음 정보를 조회할 수 있었다.
조회된 정보는 gzip 형식으로 압축되어 LEMURLOOT와 통신하는 외부 시스템으로 반환됐다.
LEMURLOOT는 MOVEit 애플리케이션 내부의 고권한 계정을 검색하고, 적절한 계정이 없으면 새로운 공격용 계정을 생성할 수 있었다.
생성된 계정에는 다음 이름이 사용됐다.
Health Check Service
이 계정은 데이터베이스에만 추가되는 것이 아니라 활성 MOVEit 애플리케이션 세션에 삽입됐다. 공격자는 이를 통해 정상 사용자 세션을 이용하는 것처럼 MOVEit의 파일 접근 기능을 사용할 수 있었다.
기존 고권한 계정 검색
→ 적절한 계정이 없으면 공격용 계정 생성
→ 활성 애플리케이션 세션에 삽입
→ 정상 MOVEit 기능을 이용해 파일 접근
LEMURLOOT는 전달받은 파일 ID와 폴더 ID를 이용해 MOVEit 저장소에서 특정 파일을 조회했다.
파일이 확인되면 gzip으로 압축한 뒤 HTTP 응답을 통해 공격자에게 반환했다. 명령 전달과 파일 반환에 동일한 웹 통신 경로가 사용됐기 때문에 정상적인 MOVEit HTTPS 통신처럼 보일 가능성이 있었다.
Mandiant가 조사한 일부 사례에서는 웹 셸 배포 후 수분 만에 데이터 탈취가 시작됐다. 따라서 하루 단위의 다운로드 통계만 확인하기보다 수분 단위로 발생하는 파일 접근량과 HTTP 응답 크기의 급증을 탐지해야 한다.
공격자는 데이터 탈취 작업이 끝난 뒤 생성한 Health Check Service 계정을 삭제할 수 있었다.
따라서 현재 사용자 목록에 해당 계정이 존재하지 않더라도 침해 가능성을 배제해서는 안 된다. MOVEit 감사 로그, 데이터베이스 변경 이력, 트랜잭션 로그 및 백업 데이터를 함께 확인해야 한다.
데이터 탈취 이후 CL0P는 데이터 유출 사이트를 통해 금전을 지급하지 않으면 탈취한 정보를 공개하겠다고 피해 조직을 위협했다.
초기 침해와 협박 사이에는 시간 차이가 존재할 수 있으므로, 금전 요구를 받지 않았다는 이유만으로 데이터 유출 가능성을 배제해서는 안 된다.
LEMURLOOT는 C#으로 작성된 ASP.NET 웹 셸이다. 일반적인 웹 셸처럼 운영체제 명령을 폭넓게 실행하기보다, MOVEit Transfer의 데이터베이스 구조와 파일 관리 기능을 직접 활용하도록 설계됐다.
| 구분 | 내용 |
|---|---|
| 악성코드 유형 | ASP.NET 웹 셸 |
| 개발 언어 | C# |
| 주요 파일명 | human2.aspx, _human2.aspx |
| 정상 위장 대상 | human.aspx |
| 인증 헤더 | X-siLock-Comment |
| 명령 헤더 | X-siLock-Step1, X-siLock-Step2, X-siLock-Step3 |
| 데이터베이스 연결 | SystemSettings.DatabaseSettings() 활용 |
| 주요 목적 | 파일 조회 및 데이터 탈취 |
| 계정 기능 | 계정 생성, 세션 삽입, 계정 삭제 |
| 데이터 반환 | gzip 압축 |
| 은폐 방식 | 인증 실패 시 HTTP 404 반환 |
LEMURLOOT는 수신한 HTTP 요청에 다음 헤더가 포함돼 있는지 확인했다.
X-siLock-Comment
헤더 값에는 샘플마다 다른 36자리 GUID 형식의 문자열이 사용됐다. 이 값은 웹 셸에 접속하기 위한 비밀번호 역할을 했다.
올바른 헤더와 값이 전달되지 않으면 LEMURLOOT는 HTTP 404 상태 코드를 반환했다. 파일이 실제로 존재하더라도 인증값을 모르는 스캐너나 보안 담당자에게는 존재하지 않는 것처럼 보일 수 있었다.
인증에 성공하면 다음 응답 헤더를 반환해 명령을 받을 준비가 됐음을 알렸다.
X-siLock-Comment: comment
LEMURLOOT는 URL 파라미터나 요청 본문 대신 커스텀 HTTP 헤더를 통해 명령과 인자를 전달받았다.
| 커스텀 HTTP 헤더 | 전달 값·조건 | 수행 기능 |
|---|---|---|
X-siLock-Step1 | -1 | 시스템 정보, 파일·폴더 목록 및 Azure Storage 설정을 조회해 gzip으로 반환 |
X-siLock-Step1 | -2 | 생성했던 Health Check Service 계정 삭제 |
X-siLock-Step1 | 그 외의 값 | Step2와 Step3를 파일 ID와 폴더 ID로 인식 |
X-siLock-Step2, X-siLock-Step3 | 값이 존재함 | 지정된 파일을 조회하고 gzip으로 압축해 반환 |
X-siLock-Step2, X-siLock-Step3 | 값이 비어 있음 | 고권한 계정을 찾거나 공격용 계정을 생성해 세션에 삽입 |
이러한 명령 구조는 LEMURLOOT가 범용 명령 실행 도구가 아니라 MOVEit 내부 데이터 모델에 맞춰 제작된 전용 데이터 탈취 도구라는 점을 보여준다.
LEMURLOOT에서 확인되는 주요 은폐 방식은 다음과 같다.
human.aspx와 유사한 파일명 사용이러한 특성 때문에 파일 해시나 IP 주소만 검색하기보다 웹 요청, 파일 생성, 데이터베이스 변경, 사용자 세션 및 네트워크 전송량을 함께 분석해야 한다.
| 공격 단계 | 전술 | 기술 | 매핑 근거 |
|---|---|---|---|
| MOVEit 취약점 악용 | Initial Access | T1190 – Exploit Public-Facing Application | 인터넷 공개 웹 애플리케이션의 SQL Injection 취약점 악용 |
| LEMURLOOT 설치 | Persistence | T1505.003 – Web Shell | MOVEit 웹 서버에 ASP.NET 웹 셸 설치 |
| 공격용 계정 생성 | Persistence | T1136 – Create Account | MOVEit 애플리케이션 내부에 고권한 계정 생성 |
| 파일 및 폴더 조회 | Discovery | T1083 – File and Directory Discovery | 파일, 폴더, 소유자 및 기관 정보 탐색 |
| 데이터 수집 | Collection | T1005 – Data from Local System | MOVEit 서버와 연결 저장소의 파일 수집 |
| 웹 셸을 통한 유출 | Exfiltration | T1041 – Exfiltration Over C2 Channel | 웹 셸의 HTTP 통신 경로를 이용해 파일 반환 |
계정이 Windows 로컬 계정이나 도메인 계정이 아니라 MOVEit 애플리케이션 내부 계정이므로 T1136.001 – Local Account로 세분화하기보다 상위 기술인 T1136 – Create Account로 매핑하는 것이 적절하다.
SQL Injection은 취약점 유형이며 MITRE ATT&CK 기술명이 아니다. SQL Injection을 통해 인터넷 공개 애플리케이션을 침해한 행위는 T1190으로 매핑한다.
| 유형 | IoC |
|---|---|
| 악성 파일명 | human2.aspx |
| 악성 파일명 | _human2.aspx |
| 정상 위장 대상 | human.aspx |
| 취약점 악용 관련 경로 | /guestaccess.aspx |
| 웹 셸 접근 경로 | /human2.aspx |
| 웹 셸 접근 경로 | /_human2.aspx |
guestaccess.aspx는 정상 MOVEit 파일이므로 해당 경로에 대한 POST 요청만으로 공격을 확정해서는 안 된다. 신규 ASPX 파일 생성, 커스텀 헤더, 계정 변경 및 대량 파일 접근을 함께 확인해야 한다.
X-siLock-Comment
X-siLock-Step1
X-siLock-Step2
X-siLock-Step3
Health Check Service
5.252.188.0/22
해당 IP 대역은 여러 사고에서 초기 스캔과 취약점 악용에 사용됐다. 그러나 웹 셸 제어와 데이터 탈취에는 별도의 인프라가 사용됐으므로, 이 대역이 확인되지 않았다는 이유만으로 침해 가능성을 배제해서는 안 된다.
| 구분 | SHA-256 |
|---|---|
| LEMURLOOT ASP.NET 샘플 | cf23ea0d63b4c4c348865cefd70c35727ea8c82ba86d56635e488d816e60ea45 |
| LEMURLOOT 컴파일 DLL 샘플 | c58c2c2ea608c83fad9326055a8271d47d8246dc9cb401e420c0971c67e19cbf |
| LEMURLOOT 샘플 | 38e69f4a6d2e81f28ed2dc6df0daf31e73ea365bd2cfc90ebc31441404cca264 |
| LEMURLOOT 샘플 | 3a977446ed70b02864ef8cfa3135d8b134c93ef868a4cc0aa5d3c2a74545725b |
| LEMURLOOT 샘플 | b1c299a9fe6076f370178de7b808f36135df16c4e438ef6453a39565ff2ec272 |
| LEMURLOOT 샘플 | c77438e8657518221613fbce451c664a75f05beea2184a3ae67f30ea71d34f37 |
파일 해시는 이미 알려진 샘플을 식별하는 데 유용하지만, 공격자가 파일을 수정하거나 새로운 변형을 사용하면 탐지되지 않을 수 있다. 따라서 파일명, 문자열, 웹 요청 및 행위 기반 탐지를 함께 적용해야 한다.
IIS, WAF, 리버스 프록시 로그와 파일 무결성 모니터링 결과에서 다음 행위를 확인한다.
guestaccess.aspx를 대상으로 한 비정상적인 POST 요청human2.aspx, _human2.aspx 또는 유사 ASPX 파일 접근X-siLock-Comment, X-siLock-Step* 헤더가 포함된 요청⚠️ 주의: LEMURLOOT는 올바른 인증 헤더인
X-siLock-Comment가 없으면 의도적으로 HTTP 404 Not Found를 반환한다. 따라서 HTTP 200 성공 로그만 모니터링하면 웹 셸의 존재를 놓칠 수 있다. 특정 ASPX 경로에서 발생하는 반복적인 404와 이후의 대용량 응답 또는 송신량 증가를 함께 추적해야 한다.
MOVEit 감사 로그와 데이터베이스 변경 기록에서는 다음 행위를 확인한다.
Health Check Service 이름의 계정 생성 또는 삭제LEMURLOOT는 작업용 계정을 삭제할 수 있기 때문에 현재 사용자 목록만으로는 침해 여부를 확인하기 어렵다. 데이터베이스 트랜잭션 로그, 백업본 및 MOVEit 애플리케이션 로그를 함께 조사해야 한다.
파일 접근 로그와 네트워크 로그에서는 다음과 같은 행위를 중점적으로 확인한다.
일부 사고에서는 웹 셸 배포 후 수분 만에 데이터 탈취가 진행됐다. 따라서 하루 단위의 임계치보다 5분 또는 10분 단위의 파일 접근량과 전송량 증가를 탐지하는 것이 효과적이다.
단일 IoC보다 다음 이벤트가 짧은 시간 안에 순차적으로 발생하는지를 분석하는 것이 중요하다.
guestaccess.aspx 비정상 POST
↓
웹 루트에 신규 ASPX 파일 생성
↓
X-siLock-* 헤더를 포함한 요청
↓
Health Check Service 계정 생성
↓
다수 파일 및 폴더 조회
↓
대용량 HTTP 응답
↓
Health Check Service 계정 삭제
이러한 상관분석은 파일명이 변경되거나 알려진 공격 IP가 사용되지 않은 경우에도 공격자의 행위를 식별하는 데 도움이 된다.
Mandiant가 공개한 LEMURLOOT YARA 규칙은 다음 문자열을 탐지에 활용한다.
Create_ASP_human2_aspx
X-siLock-Comment
X-siLock-Step2
X-siLock-Step3
Health Check Service
attachment; filename={0}
원본 ASPX 파일뿐 아니라 ASP.NET에 의해 컴파일된 DLL도 탐지 대상에 포함된다.
다만 공개 YARA 규칙은 운영 환경에서 즉시 차단 규칙으로 사용할 목적이 아니라 위협 헌팅의 출발점으로 제공됐다. 조직 내부에서 성능과 오탐 가능성을 검증한 뒤 적용해야 한다.
MOVEit Transfer 침해 사고는 인터넷에 공개된 업무용 파일 전송 솔루션의 취약점 하나가 여러 조직의 대규모 데이터 유출로 이어질 수 있음을 보여준 사례다.
공격자는 CVE-2023-34362 SQL Injection 취약점을 악용해 MOVEit Transfer 서버에 접근하고, 전용 웹 셸인 LEMURLOOT를 설치했다. 이후 정상 애플리케이션의 데이터베이스 설정을 이용해 파일과 사용자 정보를 조회하고, 고권한 계정을 활성 세션에 삽입한 뒤 중요 파일을 외부로 탈취했다.
전체 흐름은 다음과 같이 정리할 수 있다.
SQL Injection 취약점 악용
→ LEMURLOOT 웹 셸 설치
→ MOVEit 데이터베이스 연결
→ 파일 및 저장소 정보 탐색
→ 공격용 계정 생성과 세션 삽입
→ HTTP 통신을 통한 데이터 탈취
→ 공격용 계정 삭제
→ 데이터 공개를 이용한 금전 요구
이번 사고에서 주목할 부분은 공격자가 시스템 전체를 암호화하지 않고, 중요 데이터를 먼저 탈취한 뒤 공개를 빌미로 피해 조직을 협박했다는 점이다. 따라서 랜섬웨어 대응을 파일 암호화나 대량 확장자 변경 탐지에만 의존해서는 안 된다.
외부에 공개된 MFT, VPN, 원격 관리 솔루션 등은 중요한 공격 표면으로 관리해야 하며, 패치 적용과 함께 다음 행위를 지속적으로 감시해야 한다.
또한 패치 적용은 새로운 취약점 악용을 차단할 뿐, 이미 설치된 웹 셸이나 생성된 계정, 탈취된 인증정보를 제거해 주지는 않는다. 실제 공격에 악용된 경우에는 패치와 별도로 침해 여부 조사, 인증정보 교체 및 데이터 유출 범위 확인을 수행해야 한다.
MOVEit Transfer 사고는 단순한 SQL Injection 공격이 아니라, 외부 노출 자산 관리와 애플리케이션 행위 모니터링, 데이터 이동 가시성의 중요성을 함께 보여준 침해사고였다.
Mandiant / Google Cloud
Zero-Day Vulnerability in MOVEit Transfer Exploited for Data Theft
CISA·FBI
CL0P Ransomware Gang Exploits CVE-2023-34362 MOVEit Vulnerability
NIST NVD
CVE-2023-34362 Detail
Progress Software
MOVEit Transfer Critical Vulnerability – May 2023
MITRE ATT&CK
Enterprise Techniques