랜섬웨어 대응 방안 시리즈를 이어갑니다. 지난 글에서는 FSRM(File Server Resource Manager)을 활용해 Windows 파일 서버에서 암호화 랜섬웨어를 차단하는 간단한 방법을 소개했습니다. 이번에는 랜섬웨어가 이미 컴퓨터에 침투해 사용자 문서가 암호화된 상황에서 파일을 손쉽게 복구하는 방법을 알아보겠습니다.
암호화 랜섬웨어에 감염된 후 원본 파일을 되찾는 가장 확실한 방법은 백업에서 복원하는 것입니다. 파일 서버의 중앙 집중식 백업은 구성하기 비교적 수월하지만, 사용자 PC의 데이터를 백업하는 일은 그만큼 쉽지 않습니다. 다행히 Windows에는 VSS(Volume Shadow Copy Service)가 생성하는 섀도 복사본(shadow copies)이라는 내장 백업 메커니즘이 있습니다.
VSS 스냅샷에서 파일의 이전 버전을 복구하려면 다음 조건이 충족되어야 합니다:
- 보호 대상 볼륨에 대해 VSS가 활성화되어 있어야 합니다
- 스냅샷을 저장할 디스크 여유 공간이 충분해야 합니다(최소 10~20%)
- 사용자에게 로컬 관리자 권한이 없어야 하며, UAC(사용자 계정 컨트롤)가 활성화되어 있어야 합니다 — 대부분의 최신 암호화 악성코드는 관리자 권한으로 실행될 때 사용 가능한 모든 VSS 스냅샷을 삭제합니다
이제 Active Directory 도메인 환경에서 스냅샷 생성 정책을 중앙에서 관리하고, 랜섬웨어 공격 이후 원본 파일을 손쉽게 복원할 수 있는 메커니즘을 살펴보겠습니다.
- GPO로 도메인 컴퓨터에서 VSS 활성화하기
- GPO로 사용자 컴퓨터에 Vshadow.exe 배포하기
- 모든 볼륨의 섀도 복사본을 생성하는 PowerShell 스크립트
- VSS 스냅샷 생성 예약 작업 등록하기
- VSS 스냅샷에서 원본 파일 복구하기
- 결론
GPO로 도메인 컴퓨터에서 VSS 활성화하기
먼저 도메인 컴퓨터에서 VSS(Volume Shadow Copy) 서비스를 활성화하는 그룹 정책을 만듭니다. GPMC.msc 콘솔에서 VSSPolicy라는 이름의 새 GPO 개체를 생성하고, 사용자 컴퓨터가 포함된 OU에 연결합니다.
GPO를 편집한 뒤 컴퓨터 구성 → Windows 설정 → 보안 설정 → 시스템 서비스 목록에서 Volume Shadow Copy를 찾아 시작 유형을 자동(Automatic)으로 설정합니다.
GPO로 사용자 컴퓨터에 Vshadow.exe 배포하기
사용자 컴퓨터에서 섀도 복사본을 생성하고 관리하려면 Windows SDK에 포함된 vshadow.exe 도구가 필요합니다. 이 예제에서는 Windows 7 x64용 SDK의 vshadow를 사용했으며, Windows 7과 Windows 10 x64 환경 모두에서 정상적으로 작동했습니다. GPP(Group Policy Preferences)를 사용해 모든 컴퓨터의 %windir%\system32 폴더로 vshadow.exe를 복사합니다.
팁: vshadow.exe는 아래 링크에서 다운로드할 수 있습니다 — vshadow_exe_win7x64.zip
그다음 컴퓨터 구성 → 기본 설정 → Windows 설정 → 파일에서 \\domain.loc\SYSVOL\domain.loc\scripts\vshadow.exe(파일은 미리 이 위치에 복사해 두어야 함)를 %windir%\system32\vshadow.exe로 복사하는 새 정책을 만듭니다. 이 정책은 "한 번만 적용(Apply once and do not reapply)" 옵션으로 구성할 수 있습니다.
모든 볼륨의 섀도 복사본을 생성하는 PowerShell 스크립트
다음으로 시스템의 드라이브 목록을 확인하고 섀도 복사를 활성화한 후 새 VSS 스냅샷을 생성하는 스크립트가 필요합니다. 아래와 같은 스크립트를 사용했습니다:
$HDDs = GET-WMIOBJECT –query "SELECT * from win32_logicaldisk where DriveType = 3"
foreach ($HDD in $HDDs) {
$Drive = $HDD.DeviceID
$vssadminEnable ="vssadmin.exe Resize ShadowStorage /For=$Drive /On=$Drive /MaxSize=10%"
$vsscreatess = "vshadow.exe -p $Drive"
cmd /c $vssadminEnable
cmd /c $vsscreatess
}
첫 번째 줄은 시스템의 모든 드라이브를 찾아내고, 이후 vshadow가 각 디스크에 대해 섀도 복사를 활성화하고 새 복사본을 생성합니다. 복사본은 전체 공간의 10% 이내만 차지하도록 설정했습니다.
이 스크립트를 vss-script.ps1 파일로 저장하고, 역시 GPP를 통해 사용자 컴퓨터로 복사합니다.
VSS 스냅샷 생성 예약 작업 등록하기
마지막으로 모든 컴퓨터에서 vss-script.ps1을 주기적으로 실행해 모든 드라이브의 새 스냅샷을 생성하는 예약 작업을 만들어야 합니다. 이 작업은 GPP로 만드는 것이 가장 편리합니다. GPO의 컴퓨터 구성 → 기본 설정 → 예약된 작업 섹션에서 create vssnapshot이라는 이름의 새 예약 작업(New → 예약된 작업(최소 Windows 7))을 생성하고, NT AUTHORITY\System 계정으로 상승된 권한으로 실행되도록 설정합니다.
예를 들어 매일 오후 1시 20분에 실행되도록 설정할 수 있습니다(스냅샷 생성 주기는 운영 환경에 맞게 조정하면 됩니다).
실행할 프로그램: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
인수: %windir%\system32\vss-script.ps1
팁: 오래된 VSS 스냅샷을 주기적으로 제거하는 주간 예약 작업도 함께 만들어야 합니다. 다음 코드가 포함된 유사한 스크립트를 실행하는 새 예약 작업을 생성하면 됩니다:
$vssadminDeleteOld = “vshadow.exe -do=%$Drive”
cmd /c $vssadminDeleteOld
VSS 스냅샷에서 원본 파일 복구하기
사용자 컴퓨터가 랜섬웨어에 감염된 경우, 관리자나 기술 지원팀이 스냅샷에서 암호화된 문서를 복구할 수 있습니다.
사용 가능한 모든 스냅샷 목록은 다음 명령으로 확인할 수 있습니다:
vssadmin.exe list shadows
이 예제에서 가장 최근 스냅샷은 2016년 10월 6일 오전 1시 33분 35초에 생성되었으며, 섀도 복사본 ID는 {6db666ac-4d42-4734-8fbb-fad64825c66c}입니다.
이 ID를 사용해 해당 스냅샷을 읽기 전용 모드의 별도 드라이브(Z:)로 마운트합니다:
vshadow -el={6db666ac-4d42-4734-8fbb-fad64825c66c},Z:
이제 파일 탐색기나 다른 파일 관리자를 사용해 Z: 드라이브에서 원본 파일을 복사하면 됩니다.
스냅샷이 마운트된 드라이브를 분리하려면 다음 명령을 사용합니다:
mountvol Z:\ /D
결론
물론 VSS는 암호화 랜섬웨어를 사전에 차단하는 보안 수단 자체는 아니며, 백신 소프트웨어, SRP/AppLocker 정책, 평판 필터, SmartScreen 등을 포함한 종합적인 보안 대책을 대체하지도 않습니다. 하지만 볼륨 섀도 복사본의 간편함과 높은 접근성은 암호화된 데이터를 복구하는 데 큰 장점이며, 사용자 PC에 악성코드가 침투했을 때 실질적인 복구 수단이 될 수 있습니다.