Computer >> 컴퓨터 >  >> 시스템 >> Windows 7

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

이전 글 중 하나에서 인터넷에서 내려받은 실행 파일을 열려고 할 때 Windows가 '잠재적으로 위험한 콘텐츠 실행'에 대한 보안 경고를 표시한다고 소개한 적이 있습니다(자세한 내용은 Windows 보안 경고 비활성화 방법 참조). 그렇다면 시스템은 어떻게 해당 파일이 인터넷에서 다운로드되었다는 사실을 알아낼 수 있을까요? 이번 글에서 그 원리를 자세히 살펴보겠습니다.

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

다운로드된 파일에 표시되는 특수 마커

브라우저를 통해 인터넷에서 내려받은 모든 실행 파일에는 특수한 마커가 부여됩니다. 이 규칙은 Internet Explorer뿐만 아니라 Mozilla Firefox, Google Chrome 같은 주요 브라우저에서도 동일하게 적용됩니다. 흥미로운 점은 파일을 복사하거나 이름을 바꾸거나 다른 NTFS 파티션으로 이동해도 이 마커가 함께 따라온다는 것입니다.

이 마커의 정체는 바로 NTFS 대체 파일 스트림(alternative NTFS file stream)입니다.

NTFS 대체 데이터 스트림(ADS)이란?

참고: NTFS 대체 데이터 스트림(alternative data streams)은 하나의 NTFS 파일에 여러 개의 추가 데이터(메타데이터) 스트림을 생성할 수 있게 해주는 기능입니다. 기본적으로 모든 파일 데이터는 메인 스트림에 저장되지만, 하나 이상의 추가 스트림을 만들 수 있으며 그 크기가 원본 파일보다 커질 수도 있습니다. 대부분의 응용 프로그램(Windows 탐색기 포함)은 표준 스트림만 다루기 때문에 대체 데이터 스트림의 내용을 읽지 못합니다.

dir /r 명령으로 마커 확인하기

인터넷에서 내려받은 파일에 특수 마커가 실제로 부여되어 있는지 확인하려면 해당 파일이 있는 디렉터리에서 아래 명령어로 파일 목록을 출력해 보세요.

dir /r

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

실행 결과를 보면 install_flash_player_16_active_x.exe:Zone.Identifier처럼 실행 파일마다 Zone.Identifier라는 대체 스트림이 붙어 있는 것을 확인할 수 있습니다.

Zone.Identifier 스트림 내용 들여다보기

메모장으로 이 대체 스트림을 직접 열어볼 수 있습니다.

Notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

스트림 파일 안에는 [ZoneTransfer] 섹션이 있으며, 그 안에 전송 영역 ID(ZoneId)가 지정되어 있습니다. 이 값은 IE(인터넷 옵션)의 보안 영역 설정과 연관된 것으로, 0부터 4까지 다섯 가지 값을 가질 수 있습니다.

  1. ZoneId=0: 로컬 컴퓨터(Local machine)
  2. ZoneId=1: 로컬 인트라넷(Local intranet)
  3. ZoneId=2: 신뢰할 수 있는 사이트(Trusted sites)
  4. ZoneId=3: 인터넷(Internet)
  5. ZoneId=4: 제한된 사이트(Restricted sites)
Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

브라우저는 파일을 내려받을 때 해당 보안 영역에 맞는 ZoneId를 파일에 기록합니다. 대체 NTFS 스트림의 ZoneId가 3 또는 4인 파일을 실행하려고 하면, 시스템은 이 ID를 근거로 해당 파일이 인터넷이나 신뢰할 수 없는 출처에서 왔다고 판단하고 경고를 표시합니다. 참고로 Windows는 XP SP2부터 실행 파일에 대해 이 마커를 검사해 왔습니다.

파일 속성에서 마커 삭제하기

이 마커(대체 스트림)를 수동으로 삭제하는 가장 간단한 방법은 파일 속성 창 하단의 차단 해제(Unblock) 버튼을 클릭하는 것입니다.

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

차단 해제 후 다시 dir /r 명령을 실행하면 더 이상 대체 스트림이 존재하지 않는 것을 확인할 수 있습니다.

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

마커가 붙지 않도록 하는 팁

팁: 내려받은 파일에 마커가 부여되지 않게 하려면 인터넷에서 받은 파일을 FAT, exFAT 등 NTFS가 아닌 파일 시스템으로 포맷된 드라이브에 저장하면 됩니다. 대체 데이터 스트림은 NTFS 전용 기능이기 때문입니다.

Sysinternals streams 도구로 일괄 삭제하기

사실 Windows에는 대체 데이터 스트림을 다룰 수 있는 기본 도구가 없습니다. 예를 들어 여러 파일에서 한 번에 스트림을 삭제해야 한다면 Mark Russinovich(마크 러시노비치)가 개발한 서드파티 콘솔 도구인 streams를 사용하는 것이 좋습니다.

예를 들어 c:\Download\ 폴더의 모든 실행 파일에서 대체 스트림을 재귀적으로 삭제하려면 다음 명령을 실행합니다.

c:\TOOLS\streams.exe -s -d c:\Download\*.exe

명령 프롬프트에 Deleted :Zone.Identifier:$DATA라는 메시지가 출력되면 해당 파일의 대체 스트림이 성공적으로 삭제된 것입니다.

주의: streams는 지정한 파일의 모든 대체 스트림을 삭제하며 특정 스트림만 골라서 지울 수 없습니다. 따라서 streams.exe -s -d c:\*.exe처럼 드라이브 전체를 대상으로 실행하지 마세요. 대체 NTFS 스트림에 담긴 중요한 정보가 삭제되어 시스템 장애가 발생할 수 있습니다.

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

PowerShell로 Zone.Identifier 관리하기

PowerShell 3.0 이상에서는 다음 명령으로 특정 디렉터리에서 Zone.Identifier 스트림을 가진 파일 목록을 확인할 수 있습니다.

Get-ChildItem -Recurse | Get-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue | Select-Object FileName

속성(마커)은 아래 명령으로 제거합니다.

Remove-Item .\install-file.exe -Stream Zone.Identifier

Windows PowerShell 4.0부터는 전용 cmdlet을 사용해 더욱 간편하게 차단을 해제할 수 있습니다.

Unblock-File install-file.exe

마커를 수동으로 추가하는 방법

반대로 임의의 파일에 마커를 직접 부여할 수도 있습니다. 다음 명령을 실행해 보세요.

notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

해당 스트림이 존재하지 않기 때문에 새 파일을 만들겠다는 메시지가 나타납니다. 확인을 누른 뒤 메모장에 아래 내용을 입력합니다.

[ZoneTransfer]
ZoneId=3

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법

변경 사항을 저장하고 dir /r 명령으로 확인하면 파일에 대체 스트림이 정상적으로 부여된 것을 볼 수 있습니다.

Windows에서 파일이 인터넷에서 다운로드되었는지 확인하는 방법