악성 파일이 아닌지 확인하기 위해 실행 파일을 어떻게 감사합니까?


10

가상 시스템에서 격리 된 환경에서 실행 파일을 실행하는 도구 나 기술이 있는지 궁금합니다. 프로그램이 실행되는 동안 응용 프로그램을 감사 할 수 있기를 원합니다. 즉 실행 파일이 수행하는 모든 작업 (파일 및 네트워크 액세스)을 확인하십시오.

그렇게함으로써 실행 파일이 악성인지 확인할 수 있기를 원합니다 (즉, 파일 읽기 / 쓰기, 네트워크 포트 청취 / 연결 등).

그래픽 인터페이스에는 신경 쓰지 않을 것입니다.


2
@EliahKagan : 질문을 올바르게 이해하면 OP는 "실행 파일이 수행하는 모든 작업을 볼 수있는 도구"를 요청합니다. 실행할 수 sandbox somebinary있고 가상 sandbox프로그램이 somebinary읽거나 쓴 모든 파일을 모두 기록 할 수 있는지 상상해보십시오. IP / 포트가 연결되어 있고, 데이터가 전송되는 등 유용한 정보가 될 것입니다. 또한 이와 같은 것이 존재하는지 알고 싶습니다 (실제로 이러한 도구없이 VM에서 실행중인 프로그램을 관찰하는 것은 무의미합니다). 어쨌든 그것이 무엇인지 말할 수 없습니다). 좋은 질문.
Sergey

2
UL.SE에 대한 관련 질문 이전에 요청한 것 : 프로세스의 열린 파일을 실시간으로 어떻게 모니터링합니까? (파일뿐 아니라 네트워크도 포함) 일단 파일이 발생하면 이미 피해가 발생했음을 기억하십시오.
gertvdijk

2
meta.askubuntu.com/questions/5871/… 이 질문을 마치는 것과 관련하여 메타에 대한 질문을 했습니다.
Sergey

답변:


10

내부에서 실행 파일을 실행하는 도구 또는 가상 머신

예,이를 애플리케이션 가상화 라고 합니다.

LXC (Linux Containers)는이 설정을 위해 일반적으로 사용되는 도구입니다. 이 응용 프로그램에 대해 완전히 분리 된 네트워크를 설정할 수 있으며 chroot와 매우 유사한 일종의 가상 머신으로 "샌드 박스 화"합니다. 이것은 주로 감사 목적이 아닌 보안 목적 ( "감옥")을위한 것입니다.

전체 LXC 컨테이너를 설명하고 정확하게 감사하는 방법을 설명하는 것은 질문의 범위를 벗어난 것이라고 생각합니다. 아래는 시작하는 방법에 대한 약간의 설명입니다.

프로그램이 실행되는 동안 실행 파일이 수행하는 모든 작업 (파일 및 네트워크 액세스)을 볼 수 있기를 원합니다.

이것은 사용하여 수행 할 수 있으며 straceUnix & Linux에서 동일한 질문을했습니다.

거기에 대답 했듯이 기본적으로

strace -t -e trace=open,close,read,getdents,write,connect,accept command-here

중요 : 일단 발생하면 피해가 이미 발생했습니다.


LXC 애플리케이션 컨테이너

에서 이 문서 . 그것은 다음과 같습니다.

  1. lxc-macvlan.conf 구성 파일 :

    # example as found on /usr/share/doc/lxc/examples/lxc-macvlan.conf
    # Container with network virtualized using the macvlan device driver
    lxc.utsname = alpha
    lxc.network.type = macvlan
    lxc.network.flags = up
    lxc.network.link = eth0 # or eth2 or any of your NICs
    lxc.network.hwaddr = 4a:49:43:49:79:bd
    lxc.network.ipv4 = 0.0.0.0/24
    
  2. 다음을 사용하여 시작하십시오 lxc-execute.

    sudo lxc-execute -n bash-test2 -f lxc-macvlan.conf /bin/bash
    

LXC는 시스템 및 애플리케이션 유형의 컨테이너를 모두 제공합니다. 여기서 애플리케이션 컨테이너를 찾고 있습니다.


1
LXC는 아직 준비되지 않았으며 현재 안전하지 않습니다. 예를 들어 /sys가상화되지 않고 /sys컨테이너에서 변경 한 내용 /sys이 호스트에서 변경됩니다. 웹에서 빠른 검색을 수행하면서 컨테이너에서 "탈출"하는 방법을 설명하는 기사가 있습니다. LXC는이 문제에 대한 좋은 해결책이 될 수 있지만 현재는 그렇지 않으며 보안 도구로 사용되어서는 안됩니다.
Andrea Corbellini

1
그런데 게시 된 예제 구성은 lxc.mount옵션 을 사용하지 않습니다 . 이것은 실행 가능한 실행으로 전체 사용자의 파일 시스템에 액세스 할 수 있음을 의미합니다.
Andrea Corbellini

10

당신이 찾고있는 것은 프로그램이 시스템 (특히 커널)과 상호 작용하는 방법을 보여주는 도구입니다. 프로그램은 syscall을 사용하여 시스템과 상호 작용합니다. 시스템 콜의 예는 다음과 같습니다.

  • open -파일을 여는 데 사용됩니다.
  • read그리고 write-파일 디스크립터를 읽고 / 쓰는 데 사용된다;
  • connect -소켓을 피어에 연결하는 데 사용됩니다.
  • 많은, 많은 다른 사람들 (참조 man syscalls).

요점은 : syscalls를 사용하여 추적 할 수 있습니다 ptrace(2). 기본적으로, 당신은 주위에 구축 된 도구를 찾고 있습니다 ptrace. 이러한 도구 중 하나는 strace(1)을 (를) 인수로 사용하여 출력하는 터미널 응용 프로그램입니다.

  • 시스템이 프로그램이 호출하는 호출;
  • syscall을 만드는 데 사용되는 인수;
  • syscall의 결과

출력은 C 방식입니다. 예를 들면 다음과 같습니다.

$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY)                 = 3
/* ... */
read(3, "hello\n", 32768)               = 6
write(1, "hello\n", 6)                  = 6
read(3, "", 32768)                      = 0
/* ... */

거기에서 cat test이라는 파일을 열고 test내용 ( hello)을 읽고 표준 출력에 배치하는 것을 볼 수 있습니다.

strace많은 출력을 생성 할 수 있으므로 맨 페이지 ( man strace), 특히 -e관심있는 syscall 만 볼 수 있는 출력 문서 를 읽으십시오 .

불행히도, 나는 그래픽 또는 사용하기 쉬운 대안을 알지 못합니다. 당신이 그들을 찾고 싶을 경우, ptrace검색 키워드 중 하나이어야한다.


격리에 대해서는 많은 기술이 있습니다. Chroot, Linux 컨테이너 (현재 개발 및 불완전한 상태), 소프트웨어 가상화 및 반가상 화가 가장 많이 사용됩니다. 그러나 이것은 논의하기에는 너무 큰 주제입니다. 더 자세한 내용을 원하면 새로운 질문을여십시오.


5

AppArmor를 살펴보십시오 . 실행 파일에 대해 제한된 프로필을 추가하고 "불만"모드로 전환 할 수 있습니다. 여기서 작업은 허용되지만 기록되며 요구 사항을 충족한다고 생각합니다.

그러나 이것으로는 충분하지 않습니다. 영리한 악성 바이너리는 관찰 중임을 감지하고 관찰되지 않는 경우를 제외하고 악의적 인 작업을 수행하지 않을 수 있습니다.

AppArmor는 이보다 더 나아가 응용 프로그램을 승인 된 작업으로 만 제한 할 수 있습니다. Ubuntu Software Center 에있는 앱은 AppArmor 프로파일과 함께 제공됩니다.


5

알다시피, 특히 실행 파일이 악의적이라고 생각할만한 이유가있는 경우 가상 시스템이 격리를 제공하는 것이 좋습니다. 그러나 가상화 플랫폼 (하드웨어 및 소프트웨어 모두)의 취약점을 악의적 인 코드로 악용 할 수 있으므로 완벽하지는 않습니다. 실제 가상화 취약점의 예는 다음과 같습니다. http://www.kb.cert.org/vuls/id/649219


1

당신은 스냅을 만들 수 있습니다 .

스냅은 "보안 메커니즘을 통해 OS 및 기타 앱과 연결되어 있지만 사용자 및 OS 기본값으로 제어되는 세분화 된 정책에 따라 다른 스냅과 컨텐츠 및 기능을 교환 할 수 있습니다." ( http://snapcraft.io/docs/snaps/intro에서 )

이들은 예를 들어 seccomp 를 사용하는 것과 같이 AppArmor 외에 추가 격리를 제공 합니다.

또한 시스템에 쉽게 배포하고 원자 업데이트를 수행하기 위해 스냅을 자체 포함 할 수 있습니다.


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