실제로 이미지 파일에 트로이 목마를 얻을 수 있습니까? 그렇다면 어떻게 실행됩니까?


11

방금 LP를 디지털화했으며 표지 그림이 필요했습니다. 스캐너가 앨범을 스캔하기에 충분히 크지 않아서 인터넷에서 이미지를 검색하고 다운로드했습니다.

내가 그렇게 할 때 Avast는 그들 중 하나가 "Win32 : Hupigon-ONX"트로이 목마를 포함하고 즉시 격리했다고보고했습니다. 기회를 가지지 않기 위해 깨끗한 것으로보고 된 다른 사본을 다운로드했습니다.

이제 이것은 Avast의 잘못된 긍정입니까, 아니면 jpg에 실제로 트로이 목마가 있었습니까?

어떻게 실행 되었습니까?

트로이 목마와 바이러스의 이러한 측면이 항상 저를 당황스럽게했다는 것을 인정해야합니다. 소프트웨어 개발자로서 나는 항상 배열의 길이 등을 확인했기 때문에 버퍼 오버런과 같은 일이 발생하는 이유를 알지 못합니다. 나는 사람들이 모퉁이를 자르고 실수를 저지르고 소프트웨어가 복잡하면 이러한 오류가 발생할 수 있음을 이해합니다.

답변:


11

이미지 파일의 악용은 OS의 이미지 처리 코드에서 버퍼 오버런 결함을 이용합니다. 몇 년 전에 Windows의 GDI 계층에 몇 가지 중요한 결함이 발견되었습니다. 패치는 오래 전에 릴리스되었지만 익스플로잇 이미지는 그대로 남아 있거나 아직 패치되지 않은 시스템에 충돌하기 때문에 여전히 존재합니다. .

이러한 보안 허점의 일반적인 원인은 호출 스택의 기능간에 이미지 데이터를 전달하고 데이터의 최대 길이를 올바르게 확인하지 않기 때문입니다. 이것은 크기가 크고 영리하게 구성된 데이터로 스택 프레임의 다음 코드를 덮어 쓰거나 (다른 코드로 덮어 쓰기) 다른 함수를 호출하는 데 사용될 코드에 대한 포인터를 덮어 쓰는 방식으로 정렬하여 활용 될 수 있습니다. 또는 호출 된 함수가 호출자 인 경우 (호출 코드를 가리 키도록 포인터를 덮어 쓰거나) 다른 구멍이 노출되는 방식으로 데이터를 덮어 씁니다. 정확한 방법은 문제의 보안 허점에 따라 다릅니다.

최신 CPU는 코드에서 지원하는 경우 이러한 악용 대부분을 중지하는 보호 기능을 갖추고 있습니다. 이것은 프로그램 / 라이브러리가 페이지 중 어느 것이 데이터이고 어느 것이 코드인지를 명시 적으로 표시함으로써 작동합니다. CPU는 데이터 (예 : 이미지 데이터)가 무엇이든 코드로 실행하려고하면 예외를 발생시킵니다. IIRC Vista 이상 및 최신 버전의 .Net은이 보호 기능을 지원하기 위해 모든 라이브러리를 재지 그하고 다른 OS에서도 지원하지만 이러한 모든 악용을 중지하지는 않으며 명시 적으로 설정 한 경우에만 작동합니다 (그렇지 않으면 많은 오래된 코드가 깨질 것입니다).


9

트로이 목마와 바이러스의 이러한 측면이 항상 저를 당황스럽게했다는 것을 인정해야합니다. 소프트웨어 개발자로서 나는 항상 배열의 길이 등을 확인했기 때문에 버퍼 오버런과 같은 일이 발생하는 이유를 알지 못합니다.

글쎄, 현실 세계에 오신 것을 환영합니다 ;-). 버퍼 오버 플로우 & c. 여러 언어로 (특히 C와 같은 수동 메모리 관리를 사용하는 언어에서) 발생할 수 있으며 개발자가 실수를 때 발생합니다.

일반적으로 버퍼 오버플로로 인해 프로그램이 충돌하는 경우 (세그먼트 위반 또는 유사) 공격자가 코드-> 트로이 목마 활성화를 실행할 수 있습니다.

예를 들면 다음과 같습니다.

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

그리고 이것이 코드 실행을 허용하는 방법에 대한 설명 :

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers


데이터가 처리 될 때 항상 수행 한 기본 검사 중 하나 일뿐입니다. 데이터를위한 충분한 공간이 있는지 / 할당했는지 확인하십시오.
ChrisF

@ChrisF, 당신 이 ( "컴퓨터"가 아닌) 문제 자체를 확인해야 한다는 사실
Zabba

@Zabba 의미하는 것은 데이터를 처리 할 때 "확인할 프로그램을 코딩"한다는 것입니다.
ChrisF


2

트로이 목마와 바이러스의 이러한 측면이 항상 저를 당황스럽게했다는 것을 인정해야합니다. 소프트웨어 개발자로서 나는 항상 배열의 길이 등을 확인했기 때문에 버퍼 오버런과 같은 일이 발생하는 이유를 알지 못합니다. 나는 사람들이 모퉁이를 자르고 실수를 저지르고 소프트웨어가 복잡하면 이러한 오류가 발생할 수 있음을 이해합니다.

어쩌면 당신은 모든 포인터, 배열 등을 검사하고있을 것입니다. 그러나 당신이 (어쩌면) 사용하는 (제 3의) 어떤 라이브러리의 모든 프로그래머들도 그렇게 했습니까?

가장 간단한 해결책은 "image.jpg.exe"와 같은 파일이나 실제 이미지 대신 비슷한 것을 다운로드하는 것입니다.

PC를 감염시키는 고급 방법은 이미 여기에 설명되어 있습니다 (예 : Buffer Overflow, ...)


1
사실이지만 폴더 옵션을 변경하여 확장자를 표시합니다. 알려진 확장명을 숨기면 더 많은 문제가 해결 될 것으로 확신합니다. 실제로 나는 그것이 실제로 해결하는 문제를 생각할 수 없다.
ChrisF

전체 ack-Windows로 작업 할 때 활성화하는 첫 번째 옵션 중 하나입니다.
Elvith

@ChrisF : 음, 분명히 해결되는 문제는 사용자가 파일 이름을 바꿀 때 실수로 파일 확장자를 변경할 수 있다는 것입니다. "문서의 아이콘이 재미있어서 더 이상 열 수 없습니다. 도움말!" :-) (그렇습니다. 때때로 가족을 위해 기술 지원을합니다).
sleske

@sleske-파일 이름을 바꿀 때 Windows 7은 확장명을 선택하지 않습니다.
ChrisF

1
@ChrisF : 흥미 롭습니다. 적어도 Windows Server 2003은 이름을 바꿀 전체 이름을 선택합니다. 어쨌든 사용자가 확장명을 편집 할 수 있으면 :-)가됩니다.
sleske
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.