예시: 드리프트 감지
이 예시에서는 Sandfly의 드리프트 감지 기능을 사용하여 동일한 기본 이미지에서 생성되고 항상 동일하게 구성되어 동일한 프로세스 세트를 실행해야 하는 서버 세트를 모니터링합니다.
시작하기 위해 모든 "webhead" 서버가 Sandfly에 있습니다. 모든 서버는 서버를 생성하는 데 사용한 기본 VM 이미지를 식별하는 공통 태그로 태그가 지정되어 있습니다.
이러한 호스트 중 하나인 mw-webprod-node-01을 예상 결과 프로필을 구축할 "모델 호스트"로 사용합니다.
1단계: 프로필 기반으로 사용할 결과 수집
프로필을 생성할 때 깨끗한 상태를 보장하기 위해 먼저 모델 호스트의 모든 결과를 삭제합니다.
- Results By Host로 이동하여 호스트를 클릭합니다.
- 결과 테이블 상단의 "select all" 상자를 체크합니다.
- 테이블 헤더의 Delete 버튼을 클릭하여 이 호스트의 모든 결과를 삭제합니다.
이제 프로필을 위한 결과를 수집할 수 있습니다. Sandfly UI 상단의 "Scan Now" 버튼을 클릭하여 호스트의 새로운 수동 스캔을 시작합니다.
Create New Scan 대화상자에서 프로필의 모델 호스트(이 경우 mw-webprod-node-01)를 선택합니다. Next를 클릭합니다.
sandfly를 선택하려면 Presets을 클릭하고 Active 및 Type Recon을 선택합니다. 모든 sandfly 유형을 결과 프로필에서 사용하여 자동 화이트리스트를 지원할 수 있지만 일반적으로 정찰 sandfly만 드리프트 감지에 유용합니다.
"select all" 체크박스를 사용하여 모든 정찰 sandfly를 선택하고 Finish를 클릭하여 스캔을 시작합니다.
주의: 선택하는 sandfly에 따라 드리프트에 대해 모니터링하는 시스템의 측면이 결정됩니다. 예를 들어 recon_kernel_models sandfly는 드리프트 감지가 모델 호스트의 일부가 아닌 새로운 커널 모듈에 대해 경고할 수 있도록 합니다. recon_log_list_lastlog 및 기타 로그 목록 sandfly와 같은 일부 정찰 sandfly는 프로필을 적용하는 서버 세트에 사용자가 로그인할 것으로 예상되는 경우 바람직하지 않은 드리프트 경고를 생성할 수 있습니다. 드리프트 감지를 위한 결과 프로필을 생성할 때 이 시점에서 드리프트를 모니터링하기를 원하지 않는 영역의 정찰 sandfly는 선택 해제해야 합니다.
2단계: 결과 프로필 생성
스캔이 완료되면 모델 호스트에 결과 프로필을 생성할 수 있는 결과가 있습니다.
- Results By Host로 이동합니다.
- 프로필의 결과가 있는 모델 호스트 옆의 선택 상자를 체크합니다.
- 테이블 헤더에서 Create Profile 버튼을 클릭합니다.
이제 프로필의 세부 정보를 제공합니다.
- 프로필 이름을 지정합니다.
- 사용자가 프로필의 용도를 기억하는 데 도움이 되는 프로필 설명을 제공합니다.
- 선택적으로 추가 사용자 노트를 입력합니다. 이 경우 이 결과 세트가 반영하는 기본 VM 이미지를 표시합니다.
Next를 클릭한 후 이 프로필을 사용하고 호스트와 연결할 수 있는 기회가 있습니다.
- 이 프로필을 사용하는 방법을 나타내기 위해 "Host Drift Detection"을 선택합니다.
- 드리프트 감지를 적용하려는 적절한 호스트 태그를 입력합니다. 이 경우 모든 유사한 호스트에 태그가 지정된
webhead_v20240105태그를 선택합니다. - 모든 호스트가 동일한 VM 템플릿에서 생성되었으므로 실행 파일의 버전이 동일해야 하고 기타 속성도 매우 밀접하게 일치해야 한다는 것을 알고 있습니다. 드리프트를 식별하기 위해 더 엄격한 조건 세트를 적용하려면 Moderate Hash Match를 선택합니다.
Finish를 클릭하면 프로필이 저장됩니다.
3단계 (선택사항): 프로필 보기
Result Profiles 사이드바 메뉴 옵션에서 프로필 목록을 보고 방금 생성한 새 프로필을 클릭할 수 있습니다.
세부 정보 페이지에서 프로필에 대한 일부 정보를 확인할 수 있으며, Host Coverage 탭을 선택하여 이 프로필이 선택한 태그를 통해 모든 webhead 호스트와 연결되었음을 확인할 수 있습니다.
드리프트 결과
이 시점에서 프로필이 생성되고 태그가 지정된 호스트에 적용되며, 모든 향후 스캔은 결과 프로필을 기반으로 결과를 분석합니다. 시간이 지나면서 webhead 호스트 중 하나가 경고를 생성하기 시작하는 것을 확인합니다:
호스트의 결과를 검토하여 문제가 있는지 확인해보겠습니다.
recon_log_list_... 결과는 시스템의 lastlog에 새로운 항목이 추가되었기 때문입니다. 사용자가 프로덕션 서버에 로그온하지 않을 것으로 예상한다면 이러한 경고는 침해가 발생했을 수 있다는 중요한 표시일 수 있습니다. 그러나 다른 사용자가 시스템에 로그온할 것으로 예상한다면 2단계에서 선택한 정찰 sandfly 목록에서 이러한 sandfly를 제외하고 싶을 수 있습니다.
그러나 프로세스 및 사용자 경고를 살펴보겠습니다.
이 결과는 recon_process_list_all sandfly가 프로필을 생성했던 결과의 일부가 아닌 /usr/bin/httpd에서 httpd라는 이름의 프로세스가 실행되고 있는 것을 발견했음을 보여줍니다. 이것은 의심스럽습니다: 프로필의 일부였던 실제 웹 서버 프로세스는 아마도 /usr/sbin에서 실행되었을 것이고 거의 확실히 root의 process.username으로 실행되지 않았을 것입니다. 이것은 정당한 웹 서버로 가장하려고 하는 악성 프로세스가 이 서버에 배치되었을 가능성이 있으며 추가 조사가 필요합니다.
또한 사용자 목록 경고도 볼 수 있습니다.
모델 호스트의 일부가 아닌 _httpd라는 새로운 사용자가 이 서버에 존재합니다. 다시 말하지만, 이는 예상치 못한 프로세스와 일치합니다: 공격자가 서버에서 존재감을 확립하고 정당한 httpd 활동으로 가장하려고 시도하는 것으로 보입니다. 그러나 /usr/bin/httpd 프로세스와 _httpd 사용자가 정상적인 웹 서버 시스템 빌드의 일부가 아니라는 것을 알고 있기 때문에 Sandfly를 통해 예상 결과에서 이러한 드리프트를 의심스러운 것으로 즉시 식별할 수 있습니다.
결론
Sandfly가 제공하는 드리프트 감지 기능은 유사한 호스트 세트에서 예상 결과와의 편차에 대해 경고함으로써 잠재적인 위협을 빠르게 식별할 수 있는 강력한 도구입니다. 드리프트 감지 프로필을 생성하고 호스트에 적용하는 것은 간단합니다: 호스트를 스캔하여 예상 결과 세트를 수집하고, 호스트에서 새 프로필을 생성하고, 공유 태그가 있는 다른 호스트에 해당 프로필을 적용합니다. Sandfly는 프로필의 관점에서 모든 향후 스캔 결과를 자동으로 검토하고 호스트에서 예기치 않은 새로운 활동에 대해 경고합니다.
드리프트 감지는 임베디드 장치, 동일한 이미지에서 생성된 서버 플릿, 또는 일관된 활동 세트를 가져야 하는 단일 시스템을 모니터링하여 알려진 정상 recon 결과 세트에서 편차를 식별하는 데 유용한 도구입니다.
Updated 7 days ago