robocopy는 sync 개념의 Backup을 수행할 수 있는 Windows의 내장 프로그램으로 리눅스의 rsync와 유사하다.

robocopy 와 간단한 batch script를 통해 Windows PC의 주기적 데이터 백업과 추가적으로 랜섬웨어로부터 데이터를 보호할 수 있는 방법에 대해 알아본다.

! 주의
robocopy를 잘 못 사용하면 원본 데이터가 삭제될 수 있으므로 잘 숙지하고 사용해야 한다.
원본 데이터 삭제로 인한 책임은 필자에게 없습니다.

 

준비물

  • 백업을 위한 추가적인 물리적( 또는 논리적[VHD] ) Disk

 

동작 시나리오

  • D와 B드라이브로 명명된 HDD가 2개가 있다.
  • D 드라이브의 2개 폴더를 B드라이브의 Backup 폴더에 sync 될 수 있도록 스크립트를 적용한다.
  • sync 전 사전에 배치해 놓은 txt 파일을 검사하여 랜섬웨어 감염 여부를 판단한다.
  • B 드라이브는 평상시에는 언마운트 상태이며 robocopy를 수행할 때 마운트 되고 끝나면 다시 언마운트 상태로 된다.
  • Windows 작업 스케줄에 등록하여 주기적으로 start_robocopy.bat 이 자동으로 수행되도록 하여 백업되도록 한다.

 

디스크 준비

    • 원본 및 복사본 폴더
      • Source : D드라이브의 Data 폴더
                       D드라이브의 Doc 폴더
      • Backup : B드라이브의 Backup 폴더
      • 본인 환경에 맞게 스크립트를 일부 수정하여 변경 가능하다.
    • B 드라이브의 volume 정보 확인하기
      • cmd - diskpart - list vol    (Windows 키 + r 을 눌러 cmd 창을 띄울 수 있다.)
        -> 이 때 B 드라이브의 레이블(LABEL) 이름을 통해 Volume 값을 확인한다.
        -> Volume 3으로 확인되었다고 가정하겠다.

* 참고
B드라이브를 사용한 이유는 현재는 거의 사용하지 않는 드라이브명이기 때문이다.
만약 E드라이브를 사용한다면 다른 장치(예. ISO나 USB 마운트)의 드라이브명과 중복될 가능성이 크다.

 

사전에 준비(생성)할 폴더

  • D:\Data
  • D:\Data\Batch
  • D:\Data\Batch\logs
  • D:\Doc
  • B:\Backup

 

스크립트 (start)

파일명 : start_robocopy.bat

위치 : D:\Data\Batch

@ECHO OFF
color 2F
mode con cols=100 lines=25

setlocal

:LOOP
set /p YN=Do you want to start robocopy sync (Y/N)?

if /i "%YN%"=="y" goto YES
if /i "%YN%"=="n" goto NO

goto LOOP

:YES
echo YES

FOR /f "tokens=*" %%a IN ('type D:\Data\my_file.txt') DO SET var=%%a

IF "%var%" == "123456" (
    D:\Data\Batch\01.Robosync-b.bat
) ELSE (
	echo "Detected Ransom. Check D:\Data\my_file.txt"
	PAUSE
)

:NO
echo NO
exit

 

my_file 텍스트 파일 내용

D:\Data\my_file.txt 파일의 내용

123456

D:\Doc\my_file.txt 파일의 내용

123456

랜섬 탐지방법

  • 백업 스크립트가 수행될 때 랜섬웨어 감염 여부를 이 텍스트 파일의 내용을 확인해 봄으로써 판단한다.
    (따라서 해당 파일들은 '파일명변경/파일내용수정/파일삭제/파일이동'을 하면 안된다. 그럴 경우 스크립트가 랜섬웨어 감염으로 판단하게 된다.)
  • 랜섬웨어에 감염된다면 start_robocopy.bat 까지 감염될 것이므로 사용자는 쉽게 눈치챌 수 있다.

 

스크립트 (sync)

파일명 : 01.Robosync-b.bat

위치 : D:\Data\Batch

@ECHO OFF
color 1F
mode con cols=100 lines=25

FOR /f "tokens=*" %%a IN ('type D:\Doc\my_file.txt') DO SET var=%%a

IF "%var%"=="123456" (

diskpart /s D:\Data\Batch\mnt.sc

ECHO "Sync from D:\Data to B:\Backup\Data ..."
robocopy "D:\Data" "B:\Backup\Data" /MIR /W:3 /R:2 /LOG:"D:\Data\Batch\logs\robobackup-Data-%DATE%.txt"
ECHO "Done sync from D:\Data to B:\Backup\Data - Finish."

ECHO "Sync from D:\Doc to B:\Backup\Doc ..."
robocopy "D:\Doc" "B:\Backup\Doc" /MIR /W:3 /R:2 /LOG:"D:\Data\Batch\logs\robobackup-Doc-%DATE%.txt"
ECHO "Done sync from D:\Doc to B:\Backup\Doc - Finish."

diskpart /s D:\Data\Batch\umnt.sc
) ELSE (
	echo "Detected Ransom. Check D:\Doc\my_file.txt"
	PAUSE
)

-> 백업(싱크)된 파일 리스트를 담은 로그 파일은 D:\Data\Batch\logs 폴더 내에 보관된다.

 

스크립트 (mount)

02.mnt_b.bat 파일 내용
이 파일은 사용자가 B 드라이브를 간편하게 수동 마운트하여 B 드라이브의 내용을 확인하고자 할 때 사용
* 사용 후 반드 시 03.umnt_b.bat 를 수행해서 B: 드라이브를 언마운트해야 한다.

위치 : D:\Data\Batch

@ECHO OFF
color 5F
mode con cols=60 lines=15
echo "Mount B: Drive"
diskpart /s D:\Data\Batch\mnt.sc

 

스크립트 (umount)

03.umnt_b.bat 파일 내용

이 파일은 마운트된 B 드라이브를 다시 언마운트 하고자 할때 사용

위치 : D:\Data\Batch

@ECHO OFF
color 6F
mode con cols=60 lines=15
echo "Umount B: Drive"
diskpart /s D:\Data\Batch\umnt.sc

 

마운트/언마운트 by diskpart

mnt.sc 파일 내용

위치 : D:\Data\Batch

sel vol 3
assign letter=B

-> B 드라이브의 볼륨 값에 맞춰 숫자 3을 다른 숫자로 변경한다.

 

umnt.sc 파일 내용

위치 : D:\Data\Batch

sel vol 3
remove

-> B 드라이브의 볼륨 값에 맞춰 숫자 3을 다른 숫자로 변경한다.

 

Windows 스케줄에 등록

  • 등록 방법
    컴퓨터 관리 - 시스템 도구 - 작업 스케줄러 - 작업 스케줄러 라이브러리 (마우스 우측 버튼) - 기본 작업 만들기 - 이름 입력 - 트리거 (주기 선택) - 시간 설정 - 작업 (프로그램 시작) - 찾아보기 ( D:\Data\Batch\start_robocopy.bat ) - 마침
  • 반자동 실행
    • 백업스크립트를 windows 스케줄러에 등록하여 주기적으로 돌리지만 사용자에게 랜섬 감염여부를 확인 시켜주는 반자동 방법이다.
    • 스케줄 시간이 되면 실행 여부를 묻는 cmd 창(초록색창)이 뜨고 y를 누르면 cmd 창이 파란색으로 바뀌면서 관리자권한 상승 여부를 묻는다.
      '예'를 눌러주면 백업이 진행되고, 진행 후 관리자권한 상승 여부를 또 한번 묻는다. 다시 '예'를 눌러주면 프로그램이 종료된다.

      • 첫번째 관리자권한 요청 : B 드라이브 마운트에 대한 권한상승 요청
      • 두번째 관리자권한 요청 : B 드라이브 언마운트에 대한 권한상승 요청
    • start_robocopy.bat 스크립트 파일 자체가 감염되면 스크립트 구동이 불가하므로 B: 드라이브에 백업을 할 수 없어 1차적으로 백업본이 보호된다.

 

마무리

장단점

  • 장점
    • 간단한 사용 방법
    • 데이터 이중화에 의한 물리적 디스크(원본 디스크) 파손 대비
    • 실수로 삭제하거나 수정한 데이터 복구 가능할 수 있음
    • 간단한 방법이지만 랜섬웨어로부터 데이터를 보호할 수 있음
  • 단점
    • 첫 구성 시 다소 복잡
    • 잘 못 구성시 원본 데이터가 의도치 않게 삭제될 수 있음
    • 데이터 백업 주기에 따라 일부 데이터들은 복구 못할 가능성 있음

랜섬웨어 탐지 및 방어

  1. 사용자가 직접 알 수 있다.
    보통 랜섬웨어에 감염되면 감염 사실과 코인을 전송하라는 안내창이 뜬다.
  2. B 드라이브(백업디스크)를 숨긴다.
    백업디스크 감염 원천 봉쇄
  3. 랜섬웨어 감지 시 start_robocopy.bat 구동 불가
    백업싱크를 돌릴 수 없게되어 백업본 보호
  4. 미끼 파일(my_file.txt)에 의한 랜섬웨어 감여 여부 탐지
    백업싱크를 돌릴 수 없게되어 백업본 보호

보강 방법
이 글의 방법만으로도 데이터 보호에 탁월한 효과가 있지만 아래 내용을 보강한다면 한층 더 강화할 수 있다.

  • B 드라이브를 Bitlocker로 암호화하여 mount / umount 할 때 보안 강화
    ( umount 된 드라이브를 mount 하여 감염시키는 랜섬웨어 방어 가능 )
  • wise folder와 같은 프로그램을 이용하여 백업 폴더를 숨김
    ( 위 Bitlocker 와 유사 장점 )

하지만…

Disk 레벌에서 암호화를 하는 강력한 랜섬웨어에 감염된다면 위 방법도 무용지물이다.
(bitlocker로 암호화된 umount 된 디스크를 암호화 시킬 수 있는 램섬웨어도 존재)
가장 좋은 방법은 PC와 물리적으로 떨어진 원격지에 백업본을 두는 것이다.
(원격지에 백업본이 있으면 물리적인 파손 / 도난되는 것에 대한 대비도 가능)

또는 USB 메모리나 외장HDD를 활용하여 물리적으로 분리(또는 전원 off)하고 백업시만 연결해서 사용하는 방법도 있다.
개인용 PC를 보호한다고 하면 여기서 소개한 스크립트와 외장 하드디스크를 활용한다면 충분히 랜섬웨어를 막아 낼 수 있을 것으로 본다.

 

그 외

  • 추가 디스크 없이 VHD를 활용하여 같은 디스크 내에 백업도 가능
    ( 그럴 경우 랜섬웨어로부터 데이터 보호는 가능하지만 물리적 디스크 고장 대비는 불가 )

 

데이터 이중화 및 랜섬웨어로부터 데이터를 보호할 수 있는 방법에 대해 알아보았다.

랜섬웨어 피해를 최소화하는 방법은 백업이 가장 좋은 방법이지만 평소 백업본이 노출되어 있거나 원본이 감염된 줄 모르고 백업본을 덮어 씌우면 백업을 하나마나하게 된다.

개인 PC에 적용하기 좋은 방법이며, 이 방법으로 데이터를 완벽하게 보호할 순 없겠지만 지켜낼 확률을 끌어 올릴 수는 있다.

 

참조 사이트 :

Does Bitlocker Stop Ransomware? – Computer Forensics World

 

Protect Data by Robocopy Batch Script
태그:                                                     

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다