그런데 언제부턴가 winlogbeat로 연동하면 해당 필드가 안 보임. 대신 process.executable 필드 등장. 덤으로 프로세스 이름만 별도로 추출해서 process.name 필드에 저장해준다.
이게 어떻게 되는 건가 싶었는데 이벤트 로그를 해석해주고, 기본 필드를 ECS(Elastic Common Schema) 스타일로 바꿔주는 winlogbeat-security.js라는 게 있더라. 해당 자바스크립트를 대충 훑어보니 특정 필드에 대해 여러가지 처리를 해주는 renameNewProcessFilds 함수(?)를 만들고,
event4688 함수에서 renameNewProcessFilds 함수를 불러온 후,
실행하는 식. 코딩 알못이라 더 이상의 자세한 설명은 생략
그런데 네트워크 연결을 의미하는 5156 이벤트를 처리해주는 함수는 없다.
5156 이벤트의 프로세스 정보가 저장되는 필드는 Application. renameNewProcessFilds 함수를 카피해서 Application 필드를 process.name과 process.executable, 두 개의 필드로 분리해주는 renameApplicationFields 함수를 만들었다.
var renameApplicationFields = new processor.Chain()
.Convert({
fields: [
{from: "winlog.event_data.Application", to: "process.executable"}
],
mode: "rename",
ignore_missing: true,
fail_on_error: false,
})
.Add(function (evt) {
var name = evt.Get("process.name");
if (name) {
return;
}
var exe = evt.Get("process.executable");
if (!exe) {
return;
}
evt.Put("process.name", path.basename(exe));
})
.Build();
이후 해당 함수를 사용하는 event5156 함수를 추가하고,
실행.
잘 된다.
관련 글
댓글 없음:
댓글 쓰기