컴퓨터에서 실행중인 모든 프로그램이 작업 관리자의 프로세스 탭에 표시됩니까? [복제]


답변:


48

루트킷으로 알려진 운영 체제에서 완전히 숨길 수있는 멀웨어 클래스가 있습니다 .

루트킷은 직장에서 다른 맬웨어의 증거를 숨기고 운영 체제에 매우 깊이 포함되어 있습니다. 깊이 포함되어 있기 때문에 프로세스 목록, 파일 시스템 테이블 및 기타 중요한 구조를 즉석에서 조작 할 수 있습니다.

메모리에서 파일 시스템 구조를 조작하면 디렉토리에 대해 거짓 또는 잘못된 결과를 반환 할 수 있습니다. 특히 주요 악성 프로그램 자체와 관련된 파일을 표시하지 않습니다. 파일이 있으며 Linux LiveCD와 같은 감염되지 않은 운영 체제로 부팅하면 파일이 어딘가에 저장되어 있기 때문에 파일이 표시됩니다.

마찬가지로 루트킷은 특정 프로세스가 작업 관리자와 같은 프로그램에보고되지 않도록 할 수 있습니다. 운영 체제 코어는 일정을 예약하기 위해 필요한 정보를 외부 세계에 알리지 못하도록 막았습니다.


1
궁금합니다. 어떻게 그 위업을 달성합니까? 처음에는 Windows가 허용해서는 안되는 것 같습니다. "모든 사용자의 프로세스 표시"조차도 '숨김'이 적고 '분류'가
적습니다.

2
@Raestloz : 루트 액세스 권한을 얻은 다음 Windows를 다시 작성하여 허용하지 않는 비트를 제거하여 위업을 달성합니다. 나는 그들 중 일부가 OS로 루트킷에 "부팅"하고 Windows를 변경 한 다음 Windows를 실행함으로써이 작업을 수행한다고 들었습니다 .
Mooing Duck

3
댕 아니라, 어쩌면 누군가가 바이러스 백신을 발명해야하는 롤 BIOS에서 실행
Raestloz

1
@zyboxenterprises Real Windows 업데이트는 서명되어 있으며 위조 할 수 없지만 다시 시작 요청 대화 상자를 위조하거나 다른 방법으로 사용자를 다시 시작하거나 강제로 다시 시작하거나 ( shutdown -r -t 0권한이 필요하지 않음) 사용자가 재부팅 될 때까지 기다릴 수 있습니다.
gronostaj

4
@zyboxenterprises 아마 아닐 수도 있지만;) Flame 은 인증서를 위조하여 자체 목적으로 Windows Update를 악용했지만 해당 취약점은 이미 패치되었습니다. 공개적으로 알려진 WU 익스플로잇은 없지만 이것이 존재하지는 않습니다. Flame에서 사용 된 것은 이전에 알려지지 않았습니다. ( 0 일 공격
gronostaj

16

모든 정상적인 프로그램이 나타납니다.

  • 관리자 계정이 없으면 자신의 프로세스 만 볼 수 있습니다 (관리자 계정은 모든 사람의 프로세스를 보도록 선택할 수 있음)
  • 루트킷은 프로세스를 목록에서 숨기고 작업 관리자를 손상시키고 다른 프로세스 주소 공간 안에 숨겨서 존재를 숨기려고합니다.
  • 서비스는 svchost프로세스 (대부분의 경우)에서 스레드로 실행 되므로 지정된 svchost 인스턴스에서 서비스가 실행되는 쉬운 포인트는 없습니다.

루트킷을 탐지하도록 설계된 일부 프로그램이 있습니다. 실행하도록 프로그래밍 된 스레드 목록과 시스템의 프로세스 목록 (프로세스에 속하지 않은 스레드는 숨겨진 프로세스의 표시 임) 또는 상위 레벨에서 보이는 파일 목록을 확인하여이를 수행합니다. 디스크 파티션에서 수동으로 읽는 파일과 비교합니다.

그럼에도 불구하고 일단 감염되면 바이러스가 그 존재를 감추어 탐지가 거의 불가능할 수 있습니다. 이를 일반적으로 APT (고급 영구 위협)라고합니다.


2
이러한 점 중 일부는 Sysinternals Process Explorer에 의해 다소 무효화됩니다. 제한된 사용자는 다른 사용자가 실행하는 프로세스의 파일 이름을 볼 수 있으며 svchosts의 툴팁에는 호스팅 대상이 나열됩니다.
kirb

"위협"을 쓰려고 했습니까, 아니면 "스레드"를 의미 했습니까? 실제로 작동합니다;)
Konerak

루트킷 탐지기는 스레드 또는 프로세스를 어떻게 열거합니까? 일반적인 방법 / WinAPI 인 경우 루트킷이 열거를 조작 할 수 없으며 루트킷 감지기가 이것을 알지 못합니까?
Ray

1
@DebugErr는 상위 레벨과 하위 레벨을보고 차이를보고합니다 (때로는 파일이 중간에 변경 될 때와 같이 오 탐지가 발생 함). 으로 실행 프로그램 스레드의 목록을 확인 나는 OS 스케줄러 예에서 사용되는 이중 연결리스트로 다스 려했습니다. 완전히 낮은 수준 : 존재하지 않으면 타임 슬라이스를 얻지 못합니다 (ISR과 같이 확인할 곳이 더 많음).
Ángel

5

배경

운영 체제에는 커널이라는 구성 요소가 있습니다. 커널의 많은 책임 중 하나는 시스템 메모리를 관리하는 것입니다 (물리적 및 가상 모두).

이 작업의 일부로 커널은 사용 가능한 메모리를 사용자 모드와 커널 모드로 알려진 두 개의 개별 영역으로 분할합니다. 커널과 드라이버는 커널 모드 메모리를 공유하며 사용자 프로그램과 덜 중요한 시스템 구성 요소는 사용자 모드 메모리 영역에 있습니다.

사용자 모드의 프로세스는 특별히 지정되고 제어 된 채널을 제외하고는 커널 모드의 프로세스와 일반적으로 통신 할 수 없습니다.

완전성을 위해 사용자 모드에서 실행되는 프로세스도 서로 분리되어 있지만 프로그램이 그렇게 설계되어 있으면 운영 체제에서 제공하는 기능을 사용하여보다 자유롭게 통신 할 수 있습니다.

프로세스

커널은 사용자 모드에서 프로세스를 시작하는 기능을 제공합니다. 프로세스가 작성되면 현재 존재하는 내부 프로세스 목록에 추가됩니다. 작업 관리자와 같은 프로그램이 프로세스 목록을 요청하면이 목록에있는 정보의 하위 집합이 사용자 별 권한별로 필터링됩니다.

루트킷과 같은 멀웨어가 존재를 숨기는 방법 중 하나는이 테이블에서 직접 제거하는 것입니다. 이 작업을 수행하면 여전히 실행할 수 있지만 일반적인 방법으로 얻은 프로세스 목록에는 더 이상 나타나지 않습니다.

이러한 프로세스는 실제로 존재하고 실행되기 때문에 프로세스가 연 리소스 (예 : 파일)에 대한 정보를 보유하는 핸들 테이블과 같은 다른 커널 데이터 구조를 검사하거나 더 많은 메모리 할당을 검사하여 찾을 수 있습니다. 소프트웨어의 기능을 방해하지 않고 숨길 수 없습니다.

커널 모드 드라이버

커널 모드 드라이버는 물리적 하드웨어 장치와의 상호 작용을 포함하여 많은 용도로 사용됩니다. 필요에 따라 커널의 제어하에 실행되지만 사용자 모드 프로세스가 아니기 때문에 프로세스 테이블에 나타나지 않습니다. 따라서 작업 관리자 나 프로세스와 관련된 다른 도구에는 표시되지 않습니다.

커널 모드에서 코드를 실행할 수 있다는 것은 코드 실행을 효과적으로 숨길 수있는 중요한 단계입니다. 정상적인 상황에서 Windows는 커널 모드의 코드를 실행하여 서명해야하므로 맬웨어는 운영 체제, 다른 소프트웨어 또는 사회 공학의 익스플로잇을 사용하여 도착해야하지만 코드가 일단 커널 모드에서 실행되면 숨기기 쉬워진다.

개요

요약하면, 프로세스가 존재한다는 증거를 숨길 수 있습니다. 프로세스가 존재한다는 표시는 항상있을 것입니다. 일반적으로 프로세스가 의도 한대로 무엇이든하기 위해서는 항상 어떤 형태의 자원을 사용해야하므로 얼마나 어려운가 탐지는 특정 맬웨어에 따라 다릅니다.


3

바이러스는 요즘 꽤 정교합니다. 이 작업 관리자에 표시 컴퓨터에 바이러스가 아니라 . 작업 관리자 (및 운영 체제의 다른 부분) 자체가 손상되어 바이러스를 숨길 수 있습니다. 예를 들어 루트킷입니다.

바이러스를 검사하기 위해 작업 관리자를 사용하려는 경우 지금 중지해야합니다. 바이러스 백신을 설치하면 바이러스 백신이 PC에서 바이러스를 감지하지 못하는 경우가 있습니다.


0

다른 답변에서 이미 잘 설명 된 다른 바이러스와 "바이러스 숨기기"방법이 하나 더 있습니다.

손상된 DLL (동적으로 연결된 라이브러리)

많은 프로그램 (거의 모든 프로그램)이 실행 되려면 하나 이상의 DLL이 필요합니다. 일부는 OS 자체 (예 : Windows의 하드웨어 액세스를 추상화하는 hal.dll)에 속하며 일부는 더 작은 조각 (하나의 .exe 파일 및 핵심 기능이있는 .dll 파일)으로 분리되어 하나의 프로그램에서만 사용됩니다. 플러그인 등) 일반적인 프로세스 나 서비스처럼 바이러스가 항상 실행되지는 않지만 바이러스가 완전히 순진한 프로그램이나 프로그램 구성 요소처럼 보이기 때문에 실제로 찾기가 매우 어렵습니다.

추가 정보 : http://msitpros.com/?p=2012


그리고 이런 종류의 바이러스 제작에 대해 매우 매력적인 점이 하나 있습니다. 많은 웹 사이트에서 dll을 무료로 (무료로 다운로드 할 수 있음) 다운로드 할 수 있습니다. 원본과 .dll 파일 의 체크섬을 비교할 가능성 은 매우 제한적이며 거의 신경 쓰지 않기 때문에 dll 바이러스는 오랫동안 시스템에 들어 와서 오랫동안 눈에 띄지 않을 수 있습니다 (물론 안티 바이러스 프로그램은 그들과 사용자는 삭제에 동의합니다-패턴이 이미 보입니다).

여기서 우리는 Windows에 대해 이야기한다고 생각하지만이 기술은 다른 OS에도 적용 할 수 있습니다.


0

TL은, DR은 : 윈도우 작업 관리자 꽤가 할 수있는 일에 제한이, 그리고 *하지 않습니다 시스템에서 실행중인 모든 프로세스를 보여줍니다. 증거를 원하십니까? 작업 관리자에 표시된 프로세스가 사용중인 RAM의 양을 계산하고 시스템의 RAM 사용량과 비교하십시오. 최소 100MB의 RAM을 고려하지 않은 상태 여야하며, 시스템을 사용하는 대상에 따라 약 1GB로 증가하는 경우가 있습니다. 그래픽 카드는 자체 GDDR RAM과 함께 RAM에서 일부 메모리를 사용할 수도 있습니다. *

Pavel Petman의 답변을 확장하기 위해 게임을위한 많은 정교한 치트 엔진이 치트를 가능하게하는 게임 DLL에 코드를 삽입하는 것에 의존한다고 덧붙일 수 있습니다.

이러한 유형의 타협은 탐지하기 매우 어렵고이 질문에 동일한 기술을 적용 할 수 있습니다. 예를 들어, 바이러스가 탐지되지 않게하려면 시스템 디렉터리에 자동으로 추출되는 유형의 Windows 업데이트로 나타날 수 있으며 바이러스는 중요한 시스템 파일을 덮어 쓸 수 있습니다. 대부분의 바이러스 백신 프로그램은 이러한 유형의 바이러스를 감지하지 못하므로 바이러스가 중요한 Windows DLL (및 .exe)에 바이러스 코드를 계속 주입 할 수 있습니다.

내 클라이언트가 비정상적인 동작을 알려줄 때 항상 프로세스 탐색기 (Microsoft에서 다운로드)를 실행하여 실행중인 바이러스를 감지합니다. 프로세스 탐색기는 실행중인 프로세스 (작업 관리자에없는 프로세스 포함)와 사용중인 DLL 모듈을 정확하게 알려줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.