it-swarm-ko.tech

Linux 트로이 목마를 감지하고 제거하는 방법은 무엇입니까?

나는 최근에 이것을 (다시) 우연히 발견했습니다.

예, 신뢰할 수없는 소스에서 임의의 PPA/소프트웨어를 추가하면 문제가 발생하거나 더 나빠진다는 것을 알고 있습니다. 나는 그렇게하지 않지만 많은 사람들이한다.

트로이 목마 또는 악성 애플리케이션/스크립트를 어떻게 탐지하고 제거 할 수 있습니까?

16
iamsid

일반적인 조리법은 없습니다. 시스템이 알려지지 않은 트로이 목마에 감염된 경우 다시 설치할 수 있습니다.

트로이 목마가 특정 방식으로 작동한다는 것을 알고 있다면 (예 : 트로이 목마가 커널을 감염시키지 않는다는 것을 알고있는 경우) 덜 가혹한 복구 방법이있을 수 있습니다. 그러나 그것은 전적으로 트로이 목마의 작동 방식을 아는 것에 달려 있습니다. 증상 (예 : 동의없이 스팸을 보내는 컴퓨터) 만있는 경우 일반적인 기술은 없습니다. 트로이 목마 탐지기는 트로이 목마 설계자보다 똑똑해야합니다 (운이 좋게도). 트로이 목마에 관한 한, 탐지와 은신은 총과 갑옷과 같습니다. 기술적 인 확대가 있고 어느 쪽도 본질적인 이점이 없습니다 (숨기기는 유리한 출발점이 있습니다).

많은 시스템에 안전한 배포 채널이 있습니다. 예를 들어 apt 기반 도구 (apt-get, aptitude, synaptic, 소프트웨어 센터 등)를 사용하여 Ubuntu 리포지토리에서 패키지를 설치할 때 도구는 Ubuntu가 신뢰하는 누군가가 패키지에 서명 (검토)되었는지 확인합니다. (대부분의 배포판에는 비슷한 메커니즘이 있습니다.) PPA에서 패키지를 설치할 때 알 수있는 것은 PPA 소유자가 패키지를 검사했다는 것뿐입니다. 처음에 PPA 소유자를 신뢰할 이유가 없다면 도움이되지 않습니다.

트로이 목마 및 백도어에 대해서는 Ken Thompson 의 Turing 수상 강의, Reflections on Trusting Trust 를 읽어 볼 것을 강력히 권장합니다. 요약하면, 그는 로그인 프로그램을 컴파일 할 때 비밀 암호로 로그인 할 수있는 코드를 추가하도록 컴파일러를 변경했습니다. 그런 다음 컴파일러를 변경하여 자체적으로 컴파일 할 때 백도어를 추가하는 코드를 삽입합니다. 그런 다음 그는 전체 시스템 (특히 로그인 프로그램과 컴파일러)을 재 컴파일했습니다. 마침내 그는 컴파일러 소스를 의심 할 여지가없는 원래 소스로 복원했습니다. 다시, Ken Thompson의 기사 ; 그런 다음 David Wheeler의 대위법 를 읽을 수도 있습니다. 아마도 Bruce Schneier's blog article 을 통해 파악하는 것이 가장 좋습니다.

이 문서에 설명 된 "트로이 목마"를 올바르게 이해하면 "정상적인"멀웨어로 "정상적인"방식으로 발견 할 수 없습니다. 이 IRCd는 그가 사용될 때까지 정상적으로 작동하고 있었기 때문에 관리자는 다음과 같은 경우에만이 보안 허점을 발견 할 수있었습니다.

"진짜"Linux 악성 코드는 Linux 용 AV 소프트웨어 또는 AV LiveCD Rescue Disks에서도 탐지되어야하므로이 소프트웨어를 사용하여 컴퓨터를 스캔 할 수 있습니다. SecureList 목록에서 볼 수 있듯이 이름에 Linux가있는 1941 개의 항목이 있으며 해당 소프트웨어는 Kaspersky 소프트웨어에서 감지해야합니다. 이 목록을 간략히 살펴보면 많은 항목이 일부 DDoS 도구 및 익스플로잇 또는 자동으로 확산 될 수없고 공격 도구로만 사용될 수있는 도구에 대한 것임을 알 수 있습니다 (따라서 유해하지 않음).

크래커가 설치 한 백도어/루트킷을 확인하려면 파일 체크섬을 확인하는 도구를 사용할 수 있습니다 (깨끗한 시스템에서 파일 및 체크섬 목록을 생성하고 서버 소프트웨어 업데이트 후 업데이트해야 함). 체크섬이 잘못된 모든 새 파일이나 파일은 의심 스럽습니다. 체크섬 및이를 생성하는 도구 목록은 읽기 전용 매체에 있어야합니다 (예를 들어 크래커는 잘못된 체크섬을 표시하는 자체 버전에 대해 md5sum을 변경할 수도 있습니다). 맬웨어를 찾는이 방법은 소프트웨어가 매일 업그레이드되지 않는 '안정적인'시스템에서 사용될 수 있습니다.

일부 악성 코드는 netstat를 로컬로 실행하여 네트워크 트래픽을 확인하여 탐지 할 수 있지만 시스템이 감염된 경우 netstat에 표시된 데이터도 변경 될 수 있습니다. 이 경우 일부 솔루션은 다른 컴퓨터에서 네트워크 트래픽을 모니터링하는 것입니다 (예 : 라우터에서 인터넷으로 전송되는 트래픽 확인).

7
pbm

SELinux 및 AppArmor는 트로이 목마/루트킷 및 기타 감염을 방지하기 위해 존재합니다. SELinux의 경우에 대해 더 잘 알고 있습니다. SELinux를 활성화하면 머신에 설치하는 모든 프로세스 (데몬 포함)에 컨텍스트를 제공합니다. 또한 컨텍스트와 함께 작동하도록 파일 시스템에 레이블을 지정하여 일치시킵니다. 프로세스가 컨텍스트 내에서 수행하지 않는 작업을 시도하면 메시지가 수신되고 SELinux가 적용 모드에 있으면 작업을 완료 할 수 없습니다.
이렇게하면 ircd 트로이 목마가 ps 명령이나 다른 것 (탐지를 피하기위한 트로이 목마/루트킷/웜에 대한 일반적인 전략)을 기꺼이 덮어 쓰려는 경우 그렇게 할 수 없습니다. 그리고 당신은 알릴 것입니다.
설정하기가 어렵습니다.하지만 제 컴퓨터는 현재 SELinux가 시행되고 있고, 제 (2) 개의 Fedora 노트북은 데스크탑에 필요한 모든 작업을 너무 번거 로움없이 할 수 있습니다.
내 홈 서버도 이제 시행 모드에 있습니다.
또 다른 전략은 중요한 명령에 대한 체크섬을 계산하고 기본 명령의 변경 사항에 대해 알려주는 루트킷 탐지기의 정기적 인 실행입니다.
SELinux와 rkhunter가 활성화 된 상태에서 작업합니다 (클라 마브 바이러스 백신 포함).

문안 인사

4
lucabotti

또 다른 응답은 "숨기기"(스텔스 맬웨어)가 "탐지기"보다 본질적인 이점이 있다고 주장했습니다. 동의하지 않습니다. 멀웨어 탐지를 위해 서명 또는 휴리스틱에 의존하는 탐지 접근 방식으로 제한하는 경우에도 마찬가지입니다. 그러나 맬웨어를 감지하는 또 다른 방법이 있습니다. 알려진 상품을 확인하는 것입니다. Tripwire, AIDE 등은 디스크의 파일을 확인할 수 있습니다. Second Look 실행중인 커널과 프로세스를 확인할 수 있습니다. Second Look은 메모리 포렌식을 사용하여 운영 체제, 활성 서비스 및 애플리케이션을 직접 검사합니다. 메모리에있는 코드를 Linux 배포 공급 업체에서 출시 한 코드와 비교합니다. 이러한 방식으로 루트킷 및 백도어에 의한 악의적 인 수정과 실행중인 승인되지 않은 프로그램 (트로이 목마 등)을 즉시 찾아 낼 수 있습니다.

(공개 : 저는 Second Look의 수석 개발자입니다.)

2
Andrew Tappert