바이러스 백신 프로그램은 EICAR 테스트 바이러스를 어떻게 감지합니까?

StackOverflow https://stackoverflow.com/questions/653396

  •  19-08-2019
  •  | 
  •  

문제

EICAR 테스트 바이러스는 항 바이러스 프로그램의 기능을 테스트하는 데 사용됩니다. 바이러스로 감지하기 위해

바이러스 백신 프로그램에 테스트 바이러스에 대한 바이러스 정의가있는 경우

또는

휴리스틱은이를 의심스러운 패턴으로 감지하고 바이러스로 감지합니다.

(AV 프로그램이 다운로드하는 동안 파일을 삭제하지만 바이러스를 EICAR 테스트 바이러스로 식별하지 않고 파일을 삭제하는 경우를 보았습니다. 의심스러운 대상과 마찬가지로-> 즉, 정의가있는 경우 바이러스 이름, 세부 사항 등을 식별해야합니다. T IT?)

도움이 되었습니까?

해결책

테스트 바이러스의 요점 인 IMHO는 무해한 것으로 알려져 있고 바이러스로 인정되는 것을 갖는 것입니다. 최종 사용자가 AV 소프트웨어가 켜져 있는지 확인하고 바이러스 식별의 영향을 볼 수 있습니다. AV 소프트웨어의 경우 화재 드릴을 생각하십시오.

나는 대부분이 서명을 가지고 있다고 생각합니다.

실제 EICAR 테스트의 비트 패턴이 의심스러운 활동을 위해 opcodes 냄새가 나는 비트 패턴을 포함하는 경우에도 놀라지 않을 것입니다. 그러나 그것이 사실인지 모르겠습니다. 그렇다면 간단한 휴리스틱 바이러스 인식기의 유효한 테스트 일 수 있습니다. 그러나 EICAR 테스트가 주변에 있었기 때문에 시간, 나는 또한 캐시를 캐시하는 것이 야생에서 아무것도 잡기에 충분하지 않다고 상상할 것입니다.

나는 EICAR을 인식하는 것이 "AV가 설치되고 스캔 할 것으로 예상되는 것을 스캔하는 것보다 강력한 주장의 증거"라고 기대하지 않을 것이며, AV 시스템을 개발하면 더 강력한 주장을 시도하지 않을 것입니다.

업데이트:

실제 EICAR 테스트 바이러스는 다음과 같은 문자열입니다.

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

신중하게 제작되었습니다 ( 위키 백과 기사) 몇 가지 흥미로운 속성이 있습니다.

첫째, 인쇄 가능한 ASCII 문자로만 구성됩니다. 종종 최종적으로 공백 및/또는 신약이 포함되지만 인식이나 기능에는 영향을 미치지 않습니다.

두 번째 속성을 제기합니다. 실제로 8086 CPU의 실행 프로그램입니다. Extension .com이있는 파일에 (예를 들어 메모장을 통해) 저장할 수 있으며 MSDOS, MSDOS의 대부분의 클론 및 Windows 명령 프롬프트의 MSDOS 호환 모드에서도 실행할 수 있습니다 (Vista, 포함). 그러나 16 비트 실제 모드와의 호환성이 더 이상 우선 순위가 아니라고 결정한 이후 64 비트 창에서는 아닙니다.)

실행되면 출력으로 생성됩니다. 그리고 나서 종료합니다.

그들은 왜이 노력에 갔습니까? 분명히 연구원들은 실행하기에 안전한 것으로 알려진 프로그램을 원했기 때문에 부분적으로 실제 바이러스를 포착하고 실제 감염을 위험에 빠뜨릴 필요없이 살아있는 스캐너를 테스트 할 수있었습니다. 그들은 또한 기존의 및 비 전통적인 수단에 의해 쉽게 배포되기를 원했습니다. 모든 바이트가 인쇄 가능한 ASCII 캐릭터라는 제한을 충족하는 X86 Real-Mode 명령어 세트의 유용한 서브 세트가 있다는 것이 밝혀졌습니다.

위키 기사에는 a에 대한 링크가 있습니다 블로우 블로우 설명 프로그램이 실제로 어떻게 작동하는지에 대한 흥미로운 독서입니다. 복잡성에 추가하는 것은 콘솔에 인쇄하거나 DOS Real Mode에서 프로그램을 종료하는 유일한 방법은 Opcode (0xCD)가 인쇄 가능한 7 비트 ASCII 문자가 아닌 소프트웨어 인터럽트 명령어를 발행하는 것입니다. 또한, 두 인터럽트에는 각각 하나의 바이트 즉시 매개 변수가 필요하며 그 중 하나는 공간 문자가되어야합니다. 자체 부과 규칙은 공간을 허용하지 않는 것이었기 때문에, 프로그램의 마지막 바이트 (문자열의 "H+H*")는 명령 포인터가 실행되기 전에 제자리에 수정됩니다.

내 XP 상자의 명령 프롬프트에서 디버그 명령으로 EICAR.com을 분해 및 덤프합니다.

0C32:0100 58            POP     AX
0C32:0101 354F21        XOR     AX,214F
0C32:0104 50            PUSH    AX
0C32:0105 254041        AND     AX,4140
0C32:0108 50            PUSH    AX
0C32:0109 5B            POP     BX
0C32:010A 345C          XOR     AL,5C
0C32:010C 50            PUSH    AX
0C32:010D 5A            POP     DX
0C32:010E 58            POP     AX
0C32:010F 353428        XOR     AX,2834
0C32:0112 50            PUSH    AX
0C32:0113 5E            POP     SI
0C32:0114 2937          SUB     [BX],SI
0C32:0116 43            INC     BX
0C32:0117 43            INC     BX
0C32:0118 2937          SUB     [BX],SI
0C32:011A 7D24          JGE     0140

0C32:0110                                      45 49 43 41               EICA
0C32:0120  52 2D 53 54 41 4E 44 41-52 44 2D 41 4E 54 49 56   R-STANDARD-ANTIV
0C32:0130  49 52 55 53 2D 54 45 53-54 2D 46 49 4C 45 21 24   IRUS-TEST-FILE!$

0C32:0140 48            DEC     AX
0C32:0141 2B482A        SUB     CX,[BX+SI+2A]

지침을 실행 한 후 JGE 0140, 마지막 두 지침은 다음으로 수정되었습니다.

0C32:0140 CD21          INT     21
0C32:0142 CD20          INT     20

대부분의 DOS 시스템 호출은 파견되었습니다 INT 21 의 가치와 함께 AH 또는 AX 등록 실행 기능을 지정합니다. 이 경우 AH 인쇄 문자열 함수 인 0x09는 오프셋 0x011c에서 시작하는 문자열을 인쇄하여 달러 표시로 종료되었습니다. (순수한 양의 트릭으로 달러 표시를 인쇄해야했습니다.) INT 20 통화는 해당 지점을 지나서 추가 바이트를 실행하기 전에 프로세스를 종료합니다.

자체 수정 코드는 초기 바이러스 트릭 이었지만 여기서는 문자열에서 사용할 수있는 바이트 값에 대한 제한을 보존하는 데 사용됩니다. 최신 시스템에서는 데이터 실행 보호 기능이 COM 파일을 실행하는 MSDOS 호환 모드에서 시행되는 경우 수정을 포착 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top