랜섬웨어
시놀로지 NAS 파일이 .encrypt로 바뀌었을 때 eCh0raix 변종을 확인한 순서
사진 23,015개가 .encrypt로 암호화된 시놀로지 NAS에서 랜섬노트, 파일 시간, 암호화 구조로 eCh0raix 후기 변종을 가려내고 원본을 찾아본 과정입니다.
NAS 공유 폴더를 열었더니 사진 파일 이름 뒤에 전부 .encrypt가 붙어 있었습니다. 20170609_101501.jpg.encrypt 이런 식입니다. 원래 파일 이름은 그대로 두고 확장자만 하나 더 붙인 모양이라, 처음엔 무슨 동기화 프로그램이 이상하게 만든 파일인가 싶었습니다.
아니었습니다. 시놀로지 DS918+를 노린 랜섬웨어 eCh0raix(다른 이름 QNAPCrypt)였고, 암호화된 파일은 23,015개였습니다. 대부분 2017~2021년에 찍은 개인 사진입니다.
이 글은 복구를 시도하기 전에 이게 정확히 어떤 랜섬웨어의 어느 변종인지를 어떻게 확인했는지 정리한 겁니다. 변종에 따라 무료 복구가 되느냐 마느냐가 갈리기 때문에, 이 단계를 대충 넘기면 뒤의 시간이 다 날아갑니다.
1. 랜섬노트부터 확보합니다
감염된 폴더마다 README_FOR_DECRYPT.txt가 하나씩 있었습니다. 내용은 세 줄이 전부입니다.
All your data has been locked(crypted).
How to unlock(decrypt) instruction located in this TOR website: http://veqlxhq7ub5qze3qy56zx2cig2e6tzsgxdspkubwbayqije6oatma6id.onion/order/1JCVbrtzB36TrytzWHs4qV291ecUBHw1R6
Use TOR browser for access .onion websites.
주소 끝의 1JCV…는 비트코인 주소이고 피해자마다 다르게 발급됩니다. 이 노트는 지우지 말고 원본 그대로 따로 보관해 둡니다. 나중에 신고하거나, 수사기관이 키를 공개했을 때 내 파일에 맞는 키를 찾는 근거가 됩니다.
이 문구와 .encrypt 확장자, 원래 파일 이름을 그대로 두는 방식은 eCh0raix에 대해 보안 업체들이 보고한 특징과 같습니다.
2. 감염 시각을 파일 시간으로 좁힙니다
변종을 가르려면 언제 감염됐는지가 필요합니다. 암호화된 파일 23,015개의 수정 시각(mtime)을 전부 뽑아 정렬했습니다. Windows에서 NAS를 네트워크 드라이브로 붙여 PowerShell로 뽑았습니다.
Get-ChildItem -Recurse -Filter *.encrypt |
Sort-Object LastWriteTimeUtc |
Select-Object -First 5 LastWriteTimeUtc, Name
count=23015
=== EARLIEST 5 ===
2021-09-07T16:57:57Z 20170609_101501.jpg.encrypt
2021-09-07T16:57:57Z 20170609_111126.jpg.encrypt
2021-09-07T16:57:58Z 20170609_111139.jpg.encrypt
2021-09-07T16:57:58Z 20170609_111143.jpg.encrypt
2021-09-07T16:57:58Z 20170609_111127.jpg.encrypt
README unix=1630974971 2021-09-07T09:36:11Z
가장 이른 파일이 2021년 9월 7일이고, 초당 여러 개씩 연달아 찍혀 있습니다. 한꺼번에 암호화된 흔적입니다. 가장 늦은 mtime은 2025년으로 찍힌 파일도 있었는데, 감염 시각과 맞지 않아서 기준에서 뺐습니다. mtime은 파일을 옮기거나 복사하면 바뀔 수 있으니 "가장 이른 값"을 기준으로 보는 게 안전합니다.
3. 파일 구조로 한 번 더 확인합니다
이름과 노트만으로는 흉내 낸 다른 랜섬웨어일 수도 있습니다. 그래서 공개된 eCh0raix 복호기 소스(BloodDolly의 복호기)와 그 저장소에 들어 있는 테스트 파일로 암호화 구조를 직접 맞춰 봤습니다. 알려진 키로 테스트 파일을 복호해서 원본과 SHA256이 완전히 같아지는 것까지 확인한 구조는 이렇습니다.
| 항목 | 내용 |
|---|---|
| 암호 | AES-256, CFB 모드 |
| 키 | 32바이트 문자열 하나를 모든 파일에 사용 |
| IV | 파일 맨 앞 16바이트 |
| 큰 파일 | 10MB 또는 파일 크기 절반 단위로 잘라 조각마다 16바이트 IV를 다시 넣고, 내용을 두 번 기록 |
| 끝 표시 | 원본 끝에 \x00 7바이트 + eCh0raix 문자열을 붙인 뒤 암호화 |
제 파일 22,888개도 앞 16바이트가 파일마다 다른 IV였고, 가장 큰 86MB 파일까지 끝까지 암호화돼 있어 이 구조와 맞았습니다. 이걸로 eCh0raix라는 건 확정했습니다.
4. 변종을 가릅니다 — 여기서 무료 복구 여부가 갈립니다
eCh0raix는 버전에 따라 키를 만드는 방식이 다릅니다.
- 2019년 중반 이전 변종은 키를 NAS 안에서 시간을 시드로 한 난수로 만들었습니다. 그래서 감염 시각을 알면 키를 다시 계산할 수 있었고, BloodDolly의 무료 복호기가 이걸 해 줍니다.
- 그 이후 변종은 키를 공격자 서버(C2)에서 받아 옵니다. NAS에는 키가 남지 않으니 계산으로 되찾을 수 없습니다.
제 감염 시각은 2021년 9월이라 후기 변종 쪽입니다. 실제로 BloodDolly 복호기의 키 찾기를 돌려 봤지만 키를 찾지 못했습니다. 혹시 몰라 시간 시드를 직접 전수 탐색까지 해 봤는데, 그 과정은 따로 정리했습니다. 결론만 말하면 키는 없었습니다.
5. 원본이 남아 있을 만한 곳을 전부 뒤집니다
키가 없으면 남은 방법은 암호화되지 않은 원본을 찾는 것뿐입니다. 제가 확인한 순서와 결과입니다.
| 위치 | 결과 |
|---|---|
| Btrfs 스냅샷, 휴지통 | 2024년 이후 파일만 있어 2021년 원본 없음 |
| Hyper Backup, Active Backup | 감염 이전 백업 없음 |
| NAS 두 볼륨 전체의 평문 이미지 약 37만 장 | 파일 이름이 같은 원본 127장 발견 |
| PC와 OneDrive 이미지 71,902개 | 일치 2개 |
127장은 중복으로 저장해 둔 사진이라 살아남은 겁니다. 나머지 22,888개는 NAS가 유일한 사본이었고, 그 NAS가 감염된 거라 되찾을 원본이 없었습니다.
지금 하고 있는 것
- 암호화된 파일 22,888개는 지우지 않고 그대로 보관합니다. 수사기관이 C2 서버를 압수해 키를 공개한 사례가 다른 랜섬웨어에서 있었기 때문입니다.
- 키가 생기면 바로 돌릴 수 있게 복호기를 미리 만들어 테스트 벡터로 검증해 뒀습니다.
- 샘플 파일 2개와 랜섬노트를 묶어 No More Ransom, KISA(118), 경찰청 사이버범죄 신고 시스템(ECRM)에 낼 자료를 만들었습니다.
- 돈은 내지 않았습니다. 5년이 지나 C2 서버가 살아 있는지도 알 수 없고, 내도 복호된다는 보장이 없습니다.
침투 경로는 5년 전 일이라 로그가 남아 있지 않아 확인하지 못했습니다. 다만 2026년에 외부에서 포트를 점검해 보니 DSM 관리 포트와 FTP가 인터넷에 그대로 열려 있었습니다. 지금은 닫았습니다. 비슷한 증상을 보고 있다면, 복구 도구를 찾기 전에 감염 시각과 변종부터 확인하는 게 순서입니다.
확인한 공식 자료
구현 과정에서 판단 기준을 교차 확인한 공식 문서입니다. 글의 사례와 결론은 운영자가 직접 겪은 작업을 바탕으로 작성했습니다.