10분 만에 셀프 호스팅 로그를 위협 헌팅하는 방법
요약
셀프 호스팅 환경에서 발생하는 로그 데이터를 분석하여 위협을 탐지하는 도구 'sigwood'를 소개합니다. 이 도구는 Zeek, Pi-hole 등 기존 로그를 활용해 비정상적인 네트워크 활동(포트 스캔, 특이한 DNS 이름 등)을 통계적으로 감지하며, SIEM이나 에이전트 없이 로컬에서 작동하는 것이 특징입니다.
핵심 포인트
- 기존 로그 데이터만으로 위협 헌팅 가능
- SIEM/에이전트가 아닌 순수 분석 도구
- 비정상 패턴 탐지를 통해 정상 활동 파악 및 허용 목록 구축 용이
안녕하세요 여러분, 즐거운 수요일입니다. 저도 대부분의 분들처럼 셀프 호스팅 사용자입니다. Pi-hole, mattermost, 홈 자동화 시스템, Zeek 센서, 그리고 수많은 리눅스 박스들을 운영하고 있습니다. 그리고 모두가 그러하듯(제 생각으로는), /var/log 폴더를 가지고 있지만 실제로 문제 해결을 위해 적극적으로 열어보는 경우는 거의 없습니다. 하지만 올해의 CVE 폭발적인 증가 소식들이 한동안 제 머릿속에 남아있었습니다. '만약 무언가가 여기에 침입했다면, 내가 알 수 있을까?' 그래서 저는 도구를 찾아봤지만, 오히려 공백을 발견했습니다. 한쪽에는 오래된 grep이 있고 다른 쪽에는 완벽한 SIEM(Security Information and Event Management)이 있지만, 저 같은 일반 사용자가 자신의 장비들을 위해 사용할 만한 중간 단계의 것은 거의 없었습니다. 결국 제가 직접 만들게 되었습니다. 이름은 sigwood이고 오늘 기준으로 버전 1.1입니다. 이 도구는 무엇을 하냐면, 이미 가지고 있는 로그(Zeek, Pi-hole/dnsmasq, syslog 또는 journald, 클라우드 관련 자료가 있다면 CloudTrail)를 가리키면 그 위에서 여러 통계적 탐지기들을 실행합니다. 비콘 리듬으로 나가는 연결, 기계적으로 생성된 것처럼 보이는 DNS 이름, 포트 스캔, 대용량 외부 전송, 특이한 TLS 설정, 희귀한 syslog 라인 및 재부팅 같은 것들입니다. 또한 아무것도 하기 전에 로그 파일의 내용을 파악할 수 있게 해주는 'digest' 명령어와 연결 로그(conn.log)를 자체 포함된 HTML 파일에서 Sankey 흐름으로 애니메이션화하는 'graph' 명령어도 있습니다 (두 번째 스크린샷). 이 도구가 아닌 것은: SIEM이 아니며, 에이전트도 아니고, 배포할 것도 없습니다. 데이터베이스가 없고, 데몬(daemon)도 없고, 계정도 없고, 네트워크 호출도 없습니다. pipx install sigwood를 실행한 다음, sigwood /var/log/를 입력하고 출력 결과를 읽으면 됩니다. 로그는 사용자 컴퓨터에 그대로 남아 있습니다. '발견'이란 알려진 악성 패턴이 아니라 사용자 네트워크에서 평소와 다른 특이점을 의미합니다. 따라서 시그니처(signature) 같은 것은 없습니다. 가정용 네트워크에서는 주로 사용자의 자체적인 활동을 먼저 찾아냅니다. 그리고 이것이 일종의 목적입니다. 자신의 네트워크가 실제로 무엇과 통신하는지 확인하고, 그 정상적인 패턴들을 허용 목록(allowlist)으로 지정할 수 있게 됩니다. 아무것도 발견하지 못했을 경우, 결론은 해당 시간 동안 네트워크가 평소처럼 작동했다는 것입니다. AI 부분에 대해 말씀드리자면: 저는 탐지기들의 원래 구현을 작성했고, 이 모든 것을 작동하는 도구로 조립하기 위해 AI를 사용했습니다.
Claude와 Codex를 제가 만든 제안/도전 환경(propose/challenge harness)에 함께 배치하고, 저는 이를 검토하며 방향을 제시했습니다. 이것은 AI가 없었다면 존재할 수 없었으며, 저는 그렇지 않다고 거짓말하지 않을 것입니다. 그리고 여러분 중 일부는 이 부분에서 반발심을 느낄 수도 있는데, 이는 완전히 당연합니다. 하지만 저는 소프트웨어 엔지니어(SWE)가 아니라 보안 전문가이자 프라이버시 덕후입니다. 어쨌든, 레포지토리는 여기 있습니다: https://github.com/helixmap/sigwood 저는 진정으로 피드백을 받고 싶습니다. 좋든 나쁘든 상관없습니다. 만약 여러분이 로그에 이를 실행했는데 잘못된 것을 얻게 된다면, 저에게 알려주세요. 결과가 혼란스럽다면 그것도 말해주세요. 이 전체 아이디어가 잘못되었다고 생각하더라도, 듣지 않는 것보다는 차라리 듣는 편이 낫습니다. 첫 번째 스크린샷은 예시 HTML 보고서이며(실제 네트워크 데이터 없음), 두 번째는 그래프 애니메이션의 정지 화면입니다. /u/perlmangle님이 제출했습니다 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기