이 질문에는 이미 답변이 있습니다.
- 작업 관리자로 바이러스를 탐지 할 수 있습니까? 답변 5 개
내가 묻는 이유는 컴퓨터에 바이러스가 있는지 알지 못하고 컴퓨터에 바이러스가 있는지 궁금하기 때문입니다. 더 구체적으로 말하면, 어떤 종류의 징후도 보이지 않는 바이러스.
이 질문에는 이미 답변이 있습니다.
내가 묻는 이유는 컴퓨터에 바이러스가 있는지 알지 못하고 컴퓨터에 바이러스가 있는지 궁금하기 때문입니다. 더 구체적으로 말하면, 어떤 종류의 징후도 보이지 않는 바이러스.
답변:
루트킷으로 알려진 운영 체제에서 완전히 숨길 수있는 멀웨어 클래스가 있습니다 .
루트킷은 직장에서 다른 맬웨어의 증거를 숨기고 운영 체제에 매우 깊이 포함되어 있습니다. 깊이 포함되어 있기 때문에 프로세스 목록, 파일 시스템 테이블 및 기타 중요한 구조를 즉석에서 조작 할 수 있습니다.
메모리에서 파일 시스템 구조를 조작하면 디렉토리에 대해 거짓 또는 잘못된 결과를 반환 할 수 있습니다. 특히 주요 악성 프로그램 자체와 관련된 파일을 표시하지 않습니다. 파일이 있으며 Linux LiveCD와 같은 감염되지 않은 운영 체제로 부팅하면 파일이 어딘가에 저장되어 있기 때문에 파일이 표시됩니다.
마찬가지로 루트킷은 특정 프로세스가 작업 관리자와 같은 프로그램에보고되지 않도록 할 수 있습니다. 운영 체제 코어는 일정을 예약하기 위해 필요한 정보를 외부 세계에 알리지 못하도록 막았습니다.
shutdown -r -t 0
권한이 필요하지 않음) 사용자가 재부팅 될 때까지 기다릴 수 있습니다.
모든 정상적인 프로그램이 나타납니다.
svchost
프로세스 (대부분의 경우)에서 스레드로 실행 되므로 지정된 svchost 인스턴스에서 서비스가 실행되는 쉬운 포인트는 없습니다.루트킷을 탐지하도록 설계된 일부 프로그램이 있습니다. 실행하도록 프로그래밍 된 스레드 목록과 시스템의 프로세스 목록 (프로세스에 속하지 않은 스레드는 숨겨진 프로세스의 표시 임) 또는 상위 레벨에서 보이는 파일 목록을 확인하여이를 수행합니다. 디스크 파티션에서 수동으로 읽는 파일과 비교합니다.
그럼에도 불구하고 일단 감염되면 바이러스가 그 존재를 감추어 탐지가 거의 불가능할 수 있습니다. 이를 일반적으로 APT (고급 영구 위협)라고합니다.
운영 체제에는 커널이라는 구성 요소가 있습니다. 커널의 많은 책임 중 하나는 시스템 메모리를 관리하는 것입니다 (물리적 및 가상 모두).
이 작업의 일부로 커널은 사용 가능한 메모리를 사용자 모드와 커널 모드로 알려진 두 개의 개별 영역으로 분할합니다. 커널과 드라이버는 커널 모드 메모리를 공유하며 사용자 프로그램과 덜 중요한 시스템 구성 요소는 사용자 모드 메모리 영역에 있습니다.
사용자 모드의 프로세스는 특별히 지정되고 제어 된 채널을 제외하고는 커널 모드의 프로세스와 일반적으로 통신 할 수 없습니다.
완전성을 위해 사용자 모드에서 실행되는 프로세스도 서로 분리되어 있지만 프로그램이 그렇게 설계되어 있으면 운영 체제에서 제공하는 기능을 사용하여보다 자유롭게 통신 할 수 있습니다.
커널은 사용자 모드에서 프로세스를 시작하는 기능을 제공합니다. 프로세스가 작성되면 현재 존재하는 내부 프로세스 목록에 추가됩니다. 작업 관리자와 같은 프로그램이 프로세스 목록을 요청하면이 목록에있는 정보의 하위 집합이 사용자 별 권한별로 필터링됩니다.
루트킷과 같은 멀웨어가 존재를 숨기는 방법 중 하나는이 테이블에서 직접 제거하는 것입니다. 이 작업을 수행하면 여전히 실행할 수 있지만 일반적인 방법으로 얻은 프로세스 목록에는 더 이상 나타나지 않습니다.
이러한 프로세스는 실제로 존재하고 실행되기 때문에 프로세스가 연 리소스 (예 : 파일)에 대한 정보를 보유하는 핸들 테이블과 같은 다른 커널 데이터 구조를 검사하거나 더 많은 메모리 할당을 검사하여 찾을 수 있습니다. 소프트웨어의 기능을 방해하지 않고 숨길 수 없습니다.
커널 모드 드라이버는 물리적 하드웨어 장치와의 상호 작용을 포함하여 많은 용도로 사용됩니다. 필요에 따라 커널의 제어하에 실행되지만 사용자 모드 프로세스가 아니기 때문에 프로세스 테이블에 나타나지 않습니다. 따라서 작업 관리자 나 프로세스와 관련된 다른 도구에는 표시되지 않습니다.
커널 모드에서 코드를 실행할 수 있다는 것은 코드 실행을 효과적으로 숨길 수있는 중요한 단계입니다. 정상적인 상황에서 Windows는 커널 모드의 코드를 실행하여 서명해야하므로 맬웨어는 운영 체제, 다른 소프트웨어 또는 사회 공학의 익스플로잇을 사용하여 도착해야하지만 코드가 일단 커널 모드에서 실행되면 숨기기 쉬워진다.
요약하면, 프로세스가 존재한다는 증거를 숨길 수 있습니다. 프로세스가 존재한다는 표시는 항상있을 것입니다. 일반적으로 프로세스가 의도 한대로 무엇이든하기 위해서는 항상 어떤 형태의 자원을 사용해야하므로 얼마나 어려운가 탐지는 특정 맬웨어에 따라 다릅니다.
바이러스는 요즘 꽤 정교합니다. 이 수 수 작업 관리자에 표시 컴퓨터에 바이러스가 아니라 . 작업 관리자 (및 운영 체제의 다른 부분) 자체가 손상되어 바이러스를 숨길 수 있습니다. 예를 들어 루트킷입니다.
바이러스를 검사하기 위해 작업 관리자를 사용하려는 경우 지금 중지해야합니다. 바이러스 백신을 설치하면 바이러스 백신이 PC에서 바이러스를 감지하지 못하는 경우가 있습니다.
다른 답변에서 이미 잘 설명 된 다른 바이러스와 "바이러스 숨기기"방법이 하나 더 있습니다.
손상된 DLL (동적으로 연결된 라이브러리)
많은 프로그램 (거의 모든 프로그램)이 실행 되려면 하나 이상의 DLL이 필요합니다. 일부는 OS 자체 (예 : Windows의 하드웨어 액세스를 추상화하는 hal.dll)에 속하며 일부는 더 작은 조각 (하나의 .exe 파일 및 핵심 기능이있는 .dll 파일)으로 분리되어 하나의 프로그램에서만 사용됩니다. 플러그인 등) 일반적인 프로세스 나 서비스처럼 바이러스가 항상 실행되지는 않지만 바이러스가 완전히 순진한 프로그램이나 프로그램 구성 요소처럼 보이기 때문에 실제로 찾기가 매우 어렵습니다.
추가 정보 : http://msitpros.com/?p=2012
그리고 이런 종류의 바이러스 제작에 대해 매우 매력적인 점이 하나 있습니다. 많은 웹 사이트에서 dll을 무료로 (무료로 다운로드 할 수 있음) 다운로드 할 수 있습니다. 원본과 새 .dll 파일 의 체크섬을 비교할 가능성 은 매우 제한적이며 거의 신경 쓰지 않기 때문에 dll 바이러스는 오랫동안 시스템에 들어 와서 오랫동안 눈에 띄지 않을 수 있습니다 (물론 안티 바이러스 프로그램은 그들과 사용자는 삭제에 동의합니다-패턴이 이미 보입니다).
여기서 우리는 Windows에 대해 이야기한다고 생각하지만이 기술은 다른 OS에도 적용 할 수 있습니다.
TL은, DR은 : 윈도우 작업 관리자 꽤가 할 수있는 일에 제한이, 그리고 *하지 않습니다 적 시스템에서 실행중인 모든 프로세스를 보여줍니다. 증거를 원하십니까? 작업 관리자에 표시된 프로세스가 사용중인 RAM의 양을 계산하고 시스템의 RAM 사용량과 비교하십시오. 최소 100MB의 RAM을 고려하지 않은 상태 여야하며, 시스템을 사용하는 대상에 따라 약 1GB로 증가하는 경우가 있습니다. 그래픽 카드는 자체 GDDR RAM과 함께 RAM에서 일부 메모리를 사용할 수도 있습니다. *
Pavel Petman의 답변을 확장하기 위해 게임을위한 많은 정교한 치트 엔진이 치트를 가능하게하는 게임 DLL에 코드를 삽입하는 것에 의존한다고 덧붙일 수 있습니다.
이러한 유형의 타협은 탐지하기 매우 어렵고이 질문에 동일한 기술을 적용 할 수 있습니다. 예를 들어, 바이러스가 탐지되지 않게하려면 시스템 디렉터리에 자동으로 추출되는 유형의 Windows 업데이트로 나타날 수 있으며 바이러스는 중요한 시스템 파일을 덮어 쓸 수 있습니다. 대부분의 바이러스 백신 프로그램은 이러한 유형의 바이러스를 감지하지 못하므로 바이러스가 중요한 Windows DLL (및 .exe)에 바이러스 코드를 계속 주입 할 수 있습니다.
내 클라이언트가 비정상적인 동작을 알려줄 때 항상 프로세스 탐색기 (Microsoft에서 다운로드)를 실행하여 실행중인 바이러스를 감지합니다. 프로세스 탐색기는 실행중인 프로세스 (작업 관리자에없는 프로세스 포함)와 사용중인 DLL 모듈을 정확하게 알려줍니다.