Windows EventLog를 ElasticSearch로 가져오기
Overview
제목대로입니다.
특히 EvtxtoElk을 사용하여 가져옵니다.
# dockerでelasticsearch, kibanaを建てる
$ docker run -p 9200:9200 -p 9300:9300 -p 5601:5601 sebp/elk
# ライブラリのインストール
$ pip install evtxtoelk
from evtxtoelk import EvtxToElk
EvtxToElk.evtx_to_elk('example.evtx', 'http://localhost:9200')
2019/10/06 추가:
100배 빨라졌습니다
Windows EventLog를 ElasticSearch로 가져 오기 (100 배 빠르게)
Description
DFIR에서 필수 이벤트 로그 조사이지만, 나는 데이터를 조금 볼 때 log2timeline/plaso에서 CSV로 변환하고 ripgrep에서 검색을 수행했습니다.
눈으로 보는 것만으로도 충분하지만 프로그램에서 어느 정도 자동화를 할 때 pandas를 데이터베이스 적으로 사용하거나 SQLite로 검색하는 것은 성능이 매우 나쁩니다.
가능하면 최소한 1 쿼리 0.1 초 이내에 돌아와 주었지만, 거대한 이벤트 로그 검색에는 SQLite에서도 2 초 정도 걸렸습니다.
역시 떡은 떡집, 라고 하는 것으로 빅데이터 해석에 적합하다 ElasticSearch 씨로 시험한 바 0.02초 정도라고 좋은 느낌입니다! ripgrep 수준의 속도를 얻었습니다!
색인에 시간이 걸리는 것은 어려운 일이지만 프로그램을 돌리면 안심할 수 있으므로 검색 할 때마다 좌절하는 것보다 훨씬 훌륭합니다.
EvtxtoElk의 자세한 사용법은 저자의 블로그에 쓰거나 쓰지 않았으므로 읽으십시오.
여기 ブログに書いてなかった(たぶん)実行オプション
에 대해서도 씁니다.
그런데 evtx 자체는 AccessData - FTK Imager log2timeline/plaso를 사용하여 추출하는 것이 좋습니다.
Example
나는 분석하고 싶은 파일이 여러 개 있었기 때문에 이런 느낌의 스크립트를 써 실행했습니다
이벤트 로그의 디렉토리 구성
data/
├── server01/
│ └── Security.evtx
│
├── server02/
│ └── Security.evtx
│
└── server03/
└── Security.evtx
스크립트 (import_evtx.py)
# coding: utf-8
import sys
from pathlib import Path
from evtxtoelk import EvtxToElk
def main():
evtx_files = Path(sys.argv[1]).glob('**/*.evtx')
for evtx in evtx_files:
print(f"index: {evtx}")
print(f"index-name: {evtx.parent.stem}\n")
EvtxToElk.evtx_to_elk(evtx, 'http://localhost:9200', elk_index=evtx.parent.stem, bulk_queue_len_threshold=3000)
if __name__ == '__main__':
main()
옵션 해설
elk_index
색인 이름
기본값 hostlogs
이 사용됩니다.
이번에는 어떤 서버의 로그를 알고 싶으므로 evtx가 들어있는 디렉토리의 이름을 index 이름으로 변경
bulk_queue_len_threshold
bulkinsert 버퍼 크기
기본값은 500
입니다.
당황하지 않아도 거기까지 속도 변하지 않는 것 같습니다만, 표준 출력이 시끄러워지기 때문에 이번은 3000으로 했습니다.
실행 명령
$ python import_evtx.py data
Reference
이 문제에 관하여(Windows EventLog를 ElasticSearch로 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sumeshi/items/491891d83c3aca224880
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# dockerでelasticsearch, kibanaを建てる
$ docker run -p 9200:9200 -p 9300:9300 -p 5601:5601 sebp/elk
# ライブラリのインストール
$ pip install evtxtoelk
from evtxtoelk import EvtxToElk
EvtxToElk.evtx_to_elk('example.evtx', 'http://localhost:9200')
DFIR에서 필수 이벤트 로그 조사이지만, 나는 데이터를 조금 볼 때 log2timeline/plaso에서 CSV로 변환하고 ripgrep에서 검색을 수행했습니다.
눈으로 보는 것만으로도 충분하지만 프로그램에서 어느 정도 자동화를 할 때 pandas를 데이터베이스 적으로 사용하거나 SQLite로 검색하는 것은 성능이 매우 나쁩니다.
가능하면 최소한 1 쿼리 0.1 초 이내에 돌아와 주었지만, 거대한 이벤트 로그 검색에는 SQLite에서도 2 초 정도 걸렸습니다.
역시 떡은 떡집, 라고 하는 것으로 빅데이터 해석에 적합하다 ElasticSearch 씨로 시험한 바 0.02초 정도라고 좋은 느낌입니다! ripgrep 수준의 속도를 얻었습니다!
색인에 시간이 걸리는 것은 어려운 일이지만 프로그램을 돌리면 안심할 수 있으므로 검색 할 때마다 좌절하는 것보다 훨씬 훌륭합니다.
EvtxtoElk의 자세한 사용법은 저자의 블로그에 쓰거나 쓰지 않았으므로 읽으십시오.
여기
ブログに書いてなかった(たぶん)実行オプション
에 대해서도 씁니다.그런데 evtx 자체는 AccessData - FTK Imager log2timeline/plaso를 사용하여 추출하는 것이 좋습니다.
Example
나는 분석하고 싶은 파일이 여러 개 있었기 때문에 이런 느낌의 스크립트를 써 실행했습니다
이벤트 로그의 디렉토리 구성
data/
├── server01/
│ └── Security.evtx
│
├── server02/
│ └── Security.evtx
│
└── server03/
└── Security.evtx
스크립트 (import_evtx.py)
# coding: utf-8
import sys
from pathlib import Path
from evtxtoelk import EvtxToElk
def main():
evtx_files = Path(sys.argv[1]).glob('**/*.evtx')
for evtx in evtx_files:
print(f"index: {evtx}")
print(f"index-name: {evtx.parent.stem}\n")
EvtxToElk.evtx_to_elk(evtx, 'http://localhost:9200', elk_index=evtx.parent.stem, bulk_queue_len_threshold=3000)
if __name__ == '__main__':
main()
옵션 해설
elk_index
색인 이름
기본값 hostlogs
이 사용됩니다.
이번에는 어떤 서버의 로그를 알고 싶으므로 evtx가 들어있는 디렉토리의 이름을 index 이름으로 변경
bulk_queue_len_threshold
bulkinsert 버퍼 크기
기본값은 500
입니다.
당황하지 않아도 거기까지 속도 변하지 않는 것 같습니다만, 표준 출력이 시끄러워지기 때문에 이번은 3000으로 했습니다.
실행 명령
$ python import_evtx.py data
Reference
이 문제에 관하여(Windows EventLog를 ElasticSearch로 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sumeshi/items/491891d83c3aca224880
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
data/
├── server01/
│ └── Security.evtx
│
├── server02/
│ └── Security.evtx
│
└── server03/
└── Security.evtx
# coding: utf-8
import sys
from pathlib import Path
from evtxtoelk import EvtxToElk
def main():
evtx_files = Path(sys.argv[1]).glob('**/*.evtx')
for evtx in evtx_files:
print(f"index: {evtx}")
print(f"index-name: {evtx.parent.stem}\n")
EvtxToElk.evtx_to_elk(evtx, 'http://localhost:9200', elk_index=evtx.parent.stem, bulk_queue_len_threshold=3000)
if __name__ == '__main__':
main()
$ python import_evtx.py data
Reference
이 문제에 관하여(Windows EventLog를 ElasticSearch로 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sumeshi/items/491891d83c3aca224880텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)