다음은 네트워크를 사용하는 프로세스 현황. 고작 1시간짜리 데이터인데 프로세스별 현황 파악이 쉽지 않다. 프로세스 범주를 좁힐 수는 없을까? 개발사별로 묶으면 딱인데. 하지만 네트워크 사용 이벤트(eventid: 5156)는 프로세스 개발사 정보를 가지고 있지 않다.
process.name 필드는 같으니 RDB면 이런 식으로 쿼리 날리면 되지만,
select a.process.pe.companyfrom event1 ajoin event5156 bon a.process.name = b.process.name
아쉽게도 엘라스틱은 조인을 지원하지 않는다. 물론 처음부터 조인이 가능한 데이터 구조를 만들어주면 흉내는 내볼 수 있는데, 부모/자식 관계를 만들어주는 거라 이게 조인? 이런 느낌.
그나마 좀 더 조인다운, 사실 엑셀 lookup과 같은 기능. 일단 sysmon 이벤트의 프로세스와 개발사 정보를 별도 인덱스로 저장. 이후 공식 문서가 시키는 대로
1. enrich policy 생성.
PUT _enrich/policy/proc_company{ "match": { "indices": "proc_company", "match_field": "name", "enrich_fields": ["company"] }}
2. policy 실행.
POST _enrich/policy/proc_company/_execute
3. enrich processor를 이용한 ingest pipeline 추가.
PUT _ingest/pipeline/winevent{ "processors": [ { "enrich": { "if": "ctx.winlog.event_id != 1", "policy_name": "proc_company", "field": "process.name", "target_field": "procs", "ignore_missing": true } } ]}
다음은 네트워크를 사용하는 프로세스의 개발사별 발생 현황.
그런데 악성 프로세스가 유명 개발사 흉내내면 어쩌지?
관련 글
댓글 없음:
댓글 쓰기