USB 드라이브에서 파일을 삭제할 수 없도록 만드는 방법은 무엇입니까?


15

누군가 내 USB 드라이브를 사용하고 나에게 반환하면 autorun.inf삭제 불가능한 것을 발견했습니다 . 나는 H (시스템 파일로 설정되지 않았 음) 인 파일 속성을 변경하려고 시도했지만 액세스 거부라고 계속 말합니다.

USB는 FAT32에 설정되어 있으며 친구에게 물어 보면 Panda USB Vaccine 을 사용한다고 말했습니다.

그들은 이것을 어떻게합니까? 일부 Disk Sector 편집기를 사용하려고하지만 어떤 종류의 16 진수 파일이 이런 종류의 파일을 만들고 다시 삭제할 수 있도록 변경했는지 전혀 모릅니다. 드라이브를 포맷하면 드라이브가 제거되지만 이러한 종류의 파일 속성을 설정하는 방법에 대해 궁금합니다.


동일한 링크를 사용하는 다른 도구를 찾았습니다 BitDefender USB Immunizer
MegaNairda

파일에 대한 권한을 검사 했습니까?
Moab

@Moab USB의 파일 시스템은 FAT32입니다.
MegaNairda

Windows 7 이상에서 Panda USB Vaccine으로 만든 autorun.inf는 파일 속성 "HX"와 함께 표시되며 "H"는 숨겨져 있고 "X"는 예약 된 FILE_ATTRIBUTE_DEVICE를 나타냅니다.
Explorer09

답변:


16

실험 방법

Panda는 "백신"의 정확한 메커니즘을 밝히지 않는 것 같습니다 . 기본적으로 모호함을 통한 보안 이기 때문에 이해할 수 있습니다. 그것이 어떻게 작동하는지 안다면, 효과를 되돌릴 수 있고 "백신"은 쓸모 없게됩니다.

Panda USB Vaccine을 다운로드하여 설치 하고 플래시 드라이브를 "백신" 하고 명령을 사용하여 Windows 용 플래시 드라이브 파티션을 dd로 덤프했습니다.

dd --list

dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img

여기서 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx첫 번째 명령으로 제공되는 GUID c:\vaccinated.img는 16 진 편집기에서 열고 를 검색합니다 AUTORUN.

USB 백신의 기능

에 대한 항목 AUTORUN.INF은 다음 12 바이트 로 시작합니다.

41 55 54 4F 52 55 4E 20 49 4E 46 42

첫 번째 11 바이트는 공백으로 채워진 8.3 파일 이름입니다 .AUTORUN INF

마지막 바이트는 파일의 속성을 지정하며 이진 표현은 다음과 같습니다.

01000010

에 따르면 마이크로 소프트 EFI FAT32 파일 시스템 사양 이 마지막 바이트는 다음과 같은 형식을 취 비트 필드입니다 :

XYADVSHR

어디 비트 A, D, V, S, H하고 R있는 1경우 및 파일이 보관되어있는 경우에만, 디렉토리, 볼륨 ID 1 , 시스템 파일, 숨겨진 또는 읽기 전용입니다. AUTORUN.INFH설정 되었으므로가 숨겨져 1있습니다.

비트 XY예약되어 모두 있어야 0. 그러나 USB 백신은 Y로 설정 됩니다 1.

사양의 내용

속성 바이트의 상위 2 비트는 예약되어 있으며 파일이 작성되고 그 이후에는 절대 수정되거나 보지 않을 때 항상 0으로 설정되어야합니다.

또한 디렉토리 내용의 유효성 검사를 권장합니다.

디스크 유지 보수 유틸리티가 디렉토리 구조의 향후 개선 사항과의 호환성을 유지하면서 '정확성'에 대한 개별 디렉토리 항목을 확인할 수 있도록이 지침이 제공됩니다.

  1. DO는 NOT 표시된 디렉토리 항목 필드의 내용을보고 예약 하고 0보다 다른 값이 있다면 그들은 "나쁜"것으로, 그 가정합니다.

  2. 0이 아닌 값을 포함하는 경우 ( "나쁜"것으로 가정하여) 예약 된 디렉토리 항목 필드의 내용 을 0으로 재설정 하지 마십시오 . 디렉토리 항목 필드는 must be be zero가 아닌 reserved 로 지정 됩니다 . 응용 프로그램에서는 무시해야합니다. 이 필드는 향후 파일 시스템 확장을위한 것입니다. 이를 무시함으로써 유틸리티는 이후 버전의 운영 체제에서 계속 실행될 수 있습니다.

실제로 일어나는 일

CHKDSK는 확실히 사양을 따르고 AUTORUN.INFFAT32 드라이버가 이해하지 못하는 항목을 무시 하지만 Windows 자체는 예약 된 비트를 다시 보지 않아야 하는 사양의 요구 사항을 준수하지 않는 것 같습니다 : 파일 나열 이외의 모든 종류의 액세스 그리고 그 속성)이 거부되었습니다.

예를 들어

DIR /A /Q

의 소유자는 AUTORUN.INF입니다 .... FAT32는 파일 소유권을 지원하지 않으므로 상태를 표시해야합니다 \All.

이 예기치 않은 동작의 원인은 FAT32-Wikipedia # Directory entry에 따르면 Windows는 비트를 Y내부적으로 사용하여 문자 장치 이름 (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1 등)을 나타 내기 때문입니다. 저장 장치에 없어야합니다. 2

말하자면, USB Vaccine AUTORUN.INF은 실제 파일이 아니라 읽거나 쓸 수없는 장치 라고 가정하여 Windows를 속 입니다.

파일을 삭제하는 방법

파일 시스템에 직접 액세스 할 경우, 세트에 충분 Y0(바이트 변경 42에를 02다시 파일 삭제 가능한을 만들기 위해). 디렉토리 항목의 첫 번째 바이트를로 설정 E5하여 파일을 삭제 된 것으로 직접 표시 할 수도 있습니다.

다른 옵션은 다른 드라이버를 사용하는 것입니다. 예를 들어 Ubuntu 12.04는 문제없이 파일을 삭제할 수 있습니다. 실제로는 디렉토리 항목을 읽을 때 자동으로 "고정"합니다. 4


1 이 속성은 예를 들어 볼륨 레이블 또는 시스템 볼륨 정보 폴더에 사용 됩니다.

2 물론 충분히 설정 X하려면 1어떤 영향을 미칠 것 같지 않습니다.

3C:\vaccinated.img 16 진 편집기로 해당 바이트를 변경 하고 다음 명령을 사용하여 수정 된 이미지를 플래시 드라이브에 기록하여이를 확인했습니다.

dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

4 사양과 명백한 편차가 있지만, 생각한 것 같습니다. Ubuntu X는로 설정되어 있으면 손상 1되지 않으므로 그대로 유지됩니다 . 드라이브의 전체 여유 공간을 차지하는 삭제 불가능한 파일을 만드는 등의 악의적 인 응용 프로그램 에서 Y비트를 1쉽게 악용 할 수 있습니다.


6

이것은 Win32 네임 스페이스의 예약 된 이름을 사용하는 영리한 파일 시스템 속임수입니다. Panda USB Vaccine이이를 수행하는 방법에 대한 자세한 내용은 여기에 요약되어 있습니다 .

기본적으로 소프트웨어는 autorun.inf이름이 같은 폴더를 생성 한 다음 (같은 이름의 파일이 생성되지 않도록) 폴더에 파일 LTP1이 생성됩니다. DOS에서는 LPT1프린터 포트를 나타내며 Windows는 이전 버전과의 호환성을 위해이 포트를 지원합니다. 따라서이라는 파일을 요청하면 LPT1Windows에서 프린터 포트를 열려고하는데 폴더가 정상적으로 삭제되지 않습니다.

드라이브를 포맷하지 않고 폴더 / 파일을 제거하는 방법에 대한 이 Microsoft 기술 자료 문서 는 다음과 같은 팁을 제공합니다.

원인 5 : 파일 이름에 Win32 네임 스페이스에 예약 된 이름이 포함되어 있습니다.

파일 이름에 Win32 네임 스페이스에 예약 된 이름 (예 : "lpt1")이 포함되어 있으면 파일을 삭제하지 못할 수 있습니다. 이 문제를 해결하려면 Win32 이외의 프로그램을 사용하여 파일 이름을 바꿉니다. POSIX 도구 또는 적절한 내부 구문을 사용하여 파일을 사용하는 다른 도구를 사용할 수 있습니다.

또한 일부 기본 제공 명령을 사용하여 특정 구문을 사용하여 파일 경로를 지정하는 경우 일반적인 Win32 예약 이름 검사를 무시할 수 있습니다. 예를 들어, Del Windows XP 에서 명령 을 사용하는 경우 다음 특수 구문을 사용하여 파일의 전체 경로를 지정하면 "lpt1"이라는 파일을 삭제할 수 있습니다.

del \\?\c:\path_to_file\lpt1

Windows NT 및 Windows 2000에서 예약 된 이름을 가진 파일을 삭제하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

120716 Windows에서 예약 된 이름을 가진 파일을 제거하는 방법

Windows XP에서 예약 된 이름을 가진 파일을 삭제하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

315226 Windows XP에서 예약 된 이름을 가진 파일을 제거하는 방법

일반적인 Win32 CreateFile 메커니즘 을 사용하여 파일 핸들을 열면 특정 파일 이름이 구식 DOS 장치 용으로 예약되어 있습니다. 이전 버전과의 호환성을 위해 이러한 파일 이름은 허용되지 않으며 일반적인 Win32 파일 호출을 사용하여 만들 수 없습니다. 그러나이 문제는 NTFS의 제한이 아닙니다.

Win32 프로그램을 사용하여보다 깊은 폴더를 탐색하는 데 사용하는 것과 동일한 기술을 사용하여 파일을 만들거나 삭제할 때 수행되는 일반적인 이름 확인을 무시할 수 있습니다 MAX_PATH. 또한 일부 POSIX 도구에는 이러한 이름 확인이 적용되지 않습니다.


2
그것은 악의적 인 autorun.inf로부터 USB 드라이브를 보호하는 팬더 USB 백신의 오래된 방법입니다. 제공 한 링크를 다운로드하여 사용하면 폴더가 생성되지 않음을 알 수 있습니다. autorun.inf라는 단일 파일
MegaNairda 8:14의

@MegaNairda : Weird ... USB 백신을 설치했지만 FAT32 썸 드라이브를 예방 접종 할 때마다 프로그램 AUTORUN.INF이 드라이브에 (문서에 언급 된 "caacaa ..."문자열과 함께) 드라이브를 생성 한 다음 즉시 얼다. 자동 실행 파일을 삭제하는 데 전혀 문제가 없습니다 ...
Lèse majesté

USB 드라이브를 삽입 할 때 BitDefender USB Immunizer 링크 Panda USB Vaccine도 시스템에서 정지되는 경우가 있습니다.
MegaNairda

@ MegaNairda : 그 엄지 드라이브에 문제가있는 것 같습니다. 어느 프로그램도 예방 접종을 할 수 없었습니다. 그러나이 우연의 일치는 BitDefender의 면역자가 적어도 유사한 기술을 사용한다는 것을 보여주었습니다. 오류 로그 에 "1"또는 "2" I:\autorun.inf\bdsanitize#\bdsanitize#...위치에 일련의 중첩 된 폴더 / 파일을 만들려고 시도한 것으로 나타났습니다 #. 로그 파일은 또한 각 레벨의 파일 /있는 dirname을 첨부 .dir하거나 .file하지만, 이것은 단지 디버깅 / 기록을 위해 도시 될 수있다.
Lèse majesté

1
USB에 실제로 문제가있는 것 같습니다. BitDefender의 Immunizer는 폴더를 생성 autorun.inf하지만 그 후에는 autorun.inf 파일 로 대체됩니다 . autorun.infPanda USB Vaccine 과의 차이점 은 파일이 비어 있고 cacacaPanda에서 만든 것과 같은 파일이 포함되어 있지 않다는 것입니다.
MegaNairda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.