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

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

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

예, 신뢰할 수 없는 소스에서 임의의 PPA/소프트웨어를 추가하면 문제가 발생할 수 있다는 것을 알고 있습니다. 나는 결코 이렇게 하지 않지만 많은 사람들이 그렇게 합니다(많은 Linux 블로그와 타블로이드에서는 시스템이 손상되거나 더 나쁘게는 보안이 손상될 수 있다는 경고 없이 고급 응용 프로그램에 PPA를 추가하는 것을 옹호합니다).

트로이 목마 또는 악성 애플리케이션/스크립트를 감지하고 제거하는 방법은 무엇입니까?

답변1

모든 경우에 딱 맞는 레시피는 없습니다. 시스템이 알려지지 않은 트로이 목마에 감염된 경우 할 수 있는 일은 다시 설치하는 것뿐입니다.

트로이 목마가 특정 방식으로 동작한다는 것을 알고 있는 경우(예: 트로이 목마가 커널을 감염시키지 않는다는 것을 알고 있는 경우) 덜 과감한 복구 방법이 있을 수 있습니다. 그러나 그것은 모두 트로이 목마의 행동 방식을 이해하는 데 달려 있습니다. 컴퓨터가 동의 없이 스팸을 보내는 것과 같은 증상만 있는 경우에는 일반적인 기술이 없습니다. 트로이 목마 탐지기는 트로이 목마 설계자보다 더 똑똑하고 운이 좋아야 합니다. 트로이 목마의 경우 탐지 및 은폐는 총과 갑옷과 같습니다. 기술은 끊임없이 발전하고 있으며 어느 쪽에도 고유한 이점이 없습니다(컨실러가 이점을 갖고 있음에도 불구하고).

많은 시스템에는 안전한 유통 채널이 있습니다. 예를 들어 apt 기반 도구(apt-get, aptitude, synaptic, Software Center 등)를 사용하여 Ubuntu 저장소에서 패키지를 설치하는 경우 해당 도구는 Ubuntu가 신뢰하는 누군가가 패키지에 서명(심사)했는지 여부를 확인합니다. . (대부분의 배포판에는 유사한 메커니즘이 있습니다.) PPA에서 패키지를 설치할 때 아는 것은 PPA 소유자가 패키지를 검토했다는 것뿐입니다. 이는 애초에 PPA 소유자를 신뢰할 이유가 없다면 불가능합니다. 도움이됩니다.

트로이 목마와 백도어에 관해 읽어볼 것을 적극 권장합니다.켄 톰슨튜링상 연설,신뢰에 대한 생각. 요약하자면, 그는 로그인 프로그램을 컴파일할 때 비밀 비밀번호로 로그인할 수 있는 코드를 추가하도록 컴파일러를 변경했습니다. 그런 다음 컴파일러 자체를 컴파일할 때 백도어를 추가하는 코드를 삽입하도록 컴파일러를 변경했습니다. 그런 다음 그는 전체 시스템(특히 로그인 프로그램과 컴파일러)을 다시 컴파일하고 마지막으로 컴파일러 소스를 의심할 여지 없는 원래 소스로 복원합니다. 다시 읽어보세요기사: 켄 톰슨(Ken Thompson); 그러면 읽을 수도 있습니다.데이빗 휠러의 대위법, 아마도 가장 잘 이해할 수 있는 것은 다음과 같습니다.브루스 슈넬블로그 게시물.

답변2

제가 올바르게 이해한다면, 이 기사에 설명된 "트로이 목마"는 "정상적인" 악성 코드로서 "정상적인" 방법으로는 발견될 수 없습니다. 이 IRCd는 사용되기 전까지는 정상적으로 작동했기 때문에 관리자는 다음과 같은 경우에만 보안 취약점을 발견할 수 있습니다. 1) IRCd가 사용되었고 취약점이 로그에 항목을 생성하거나 표시되는 작업을 수행한 경우, 2) 소스 코드를 읽은 경우.

"진짜" Linux 맬웨어는 Linux AV 소프트웨어 또는 AV LiveCD 복구 디스크로도 감지할 수 있으므로 해당 소프트웨어를 사용하여 컴퓨터를 검사할 수 있습니다. 당신이 본대로안전한 목록목록에는 이름에 Linux가 포함된 1941개 항목이 있으며 Kaspersky에서 소프트웨어를 감지할 수 있어야 합니다. 이 목록을 잠깐 살펴보면 많은 항목이 DDoS 도구 및 공격 도구 또는 자동으로 전파될 수 없고 공격 도구로만 사용할 수 있는(따라서 무해한) 도구에 관한 것임을 알 수 있습니다.

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

일부 맬웨어는 네트워크 트래픽을 검사하기 위해 로컬로 실행하여 탐지할 수 있지만 시스템이 감염된 경우 netstat표시되는 데이터 도 변경될 수 있습니다. netstat이 경우 일부 솔루션은 다른 컴퓨터(예: 인터넷으로 전송되는 트래픽을 검사하기 위한 라우터)의 네트워크 트래픽을 모니터링하는 것입니다.

답변3

SELinux와 AppArmor는 트로이 목마/루트킷 및 기타 감염으로부터 보호하기 위해 존재합니다. 나는 내가 더 잘 알고 있는 SELinux의 사례를 이야기했다. SELinux가 활성화되면 데몬을 포함하여 컴퓨터에 설치된 모든 프로세스에 대한 컨텍스트를 제공할 수 있습니다. 또한 컨텍스트 및 일치 작업을 위해 파일 시스템에 태그를 지정할 수도 있습니다. 프로세스가 해당 컨텍스트 내에 있지 않은 작업을 수행하려고 시도하면 메시지가 수신되며, SELinux가 적용 모드에 있는 경우 작업을 완료할 수 없습니다.
이렇게 하면 ircd 트로이 목마가 ps 명령이나 다른 명령(탐지를 피하기 위한 트로이 목마/루트킷/웜의 일반적인 전술)을 무시하려는 경우 그렇게 하는 것이 허용되지 않습니다. 귀하에게 통보될 것입니다.
구성하기가 어렵다는 것을 알고 있지만 내 컴퓨터는 이제 SELinux를 시행하고 있으며 두 대의 Fedora 랩톱은 데스크톱에서 원하는 모든 작업을 쉽게 수행할 수 있습니다.
내 홈 서버도 이제 시행 모드에 있습니다.
또 다른 전략은 루트킷 탐지기를 주기적으로 실행하여 주요 명령의 체크섬을 계산하고 기본 명령의 변경 사항을 알려주는 것입니다.
저는 SELinux와 rkhunter(및 clamav 바이러스 백신)를 사용합니다.

인사

답변4

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

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


편집자 주:

관련 정보