실험 방법
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.INF
로 H
설정 되었으므로가 숨겨져 1
있습니다.
비트 X
및 Y
예약되어 모두 있어야 0
. 그러나 USB 백신은 Y
로 설정 됩니다 1
.
사양의 내용
속성 바이트의 상위 2 비트는 예약되어 있으며 파일이 작성되고 그 이후에는 절대 수정되거나 보지 않을 때 항상 0으로 설정되어야합니다.
또한 디렉토리 내용의 유효성 검사를 권장합니다.
디스크 유지 보수 유틸리티가 디렉토리 구조의 향후 개선 사항과의 호환성을 유지하면서 '정확성'에 대한 개별 디렉토리 항목을 확인할 수 있도록이 지침이 제공됩니다.
DO는 NOT 표시된 디렉토리 항목 필드의 내용을보고 예약 하고 0보다 다른 값이 있다면 그들은 "나쁜"것으로, 그 가정합니다.
0이 아닌 값을 포함하는 경우 ( "나쁜"것으로 가정하여) 예약 된 디렉토리 항목 필드의 내용 을 0으로 재설정 하지 마십시오 . 디렉토리 항목 필드는 must be be zero가 아닌 reserved 로 지정 됩니다 . 응용 프로그램에서는 무시해야합니다. 이 필드는 향후 파일 시스템 확장을위한 것입니다. 이를 무시함으로써 유틸리티는 이후 버전의 운영 체제에서 계속 실행될 수 있습니다.
실제로 일어나는 일
CHKDSK는 확실히 사양을 따르고 AUTORUN.INF
FAT32 드라이버가 이해하지 못하는 항목을 무시 하지만 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를 속 입니다.
파일을 삭제하는 방법
파일 시스템에 직접 액세스 할 경우, 세트에 충분 Y
로 0
(바이트 변경 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
쉽게 악용 할 수 있습니다.