LabHub
배우기 러닝패스 코스

cron 이 새벽 세 시에 curl 을 했다 · 시스콜에서 잡으면 거짓말을 못 한다 · 퀴즈

퀴즈: 런타임 탐지

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. Falco 규칙 한 편에 반드시 있어야 하는 다섯 항목은?

    1. `rule`·`desc`·`condition`·`output`·`priority` 다섯이다
    2. `rule`·`desc`·`condition`·`source`·`exceptions` 다섯이다
    3. `rule`·`macro`·`list`·`condition`·`output` 다섯이다
    4. `rule`·`condition`·`output`·`tags`·`enabled` 다섯이다
  2. cron 이 셸을 띄우고 그 셸이 curl 을 부르는 구조에서 `proc.pname` 만 보면 안 되는 이유는?

    1. proc.pname 은 컨테이너 안에서만 값이 채워지고 호스트에서는 비어 있다
    2. 부모가 셸이라서 cron 에서 나왔다는 사실이 부모 이름에는 안 나타난다
    3. proc.pname 은 실행 파일 경로라서 이름만으로는 비교가 되지 않는다
    4. 셸이 exec 로 자기 자신을 대체해 부모 관계가 아예 사라지기 때문이다
  3. `falco --validate` 에 내 규칙 파일만 주었더니 `Undefined macro 'spawned_process'` 로 떨어졌다. 올바른 대처는?

    1. spawned_process 매크로를 내 파일에 똑같이 다시 정의해 둔다
    2. 그 조건을 빼고 `evt.type=execve` 를 직접 적어 매크로를 피한다
    3. 기본 규칙 파일도 함께 `--validate` 로 주어 같은 조건에서 검증한다
    4. 검증을 건너뛰고 서비스를 재시작해 로그로 통과 여부를 확인한다
  4. 규칙에서 `list` 와 `macro` 가 지켜야 하는 순서 규칙은?

    1. 규칙 뒤에 두어야 하며 앞에 두면 규칙이 먼저 평가돼 무시된다
    2. 한 파일에 각각 하나씩만 둘 수 있고 여러 개면 마지막 것이 이긴다
    3. 이름이 알파벳 순서대로 정렬돼 있어야 엔진이 참조를 해결한다
    4. 자기보다 앞에 정의된 것만 참조할 수 있어 목록·매크로·규칙 순으로 적는다
  5. 오탐 하나를 빼려고 `condition` 끝에 `and not proc.cmdline contains backup` 을 붙이는 것보다 `exceptions` 를 쓰는 것이 나은 이유는?

    1. exceptions 는 조건과 달리 커널에서 평가돼 성능이 크게 좋아진다
    2. exceptions 로 뺀 사건은 삭제되지 않고 낮은 심각도로 계속 남는다
    3. 무엇을 왜 뺐는지가 이름과 값으로 드러나고 값만 따로 덮어쓸 수 있다
    4. 조건에 not 을 붙이면 Falco 가 규칙 전체를 비활성으로 처리한다
  6. systemd 아래에서 기본 출력만 쓰는 Falco 가 탐지 체계로 부족한 이유는?

    1. 표준 출력은 버퍼가 작아 알림이 많으면 앞부분부터 잘려 나간다
    2. 알림이 그 호스트의 저널에만 쌓여 호스트가 사라지면 함께 사라진다
    3. 기본 출력은 규칙 이름만 내보내고 필드 값은 전혀 담지 않는다
    4. 서비스로 돌면 알림이 파일로만 가고 저널에는 남지 않기 때문이다