2022년 12월 25일 일요일

Logstash 필터 csv

강의 때 텍스트, DB, EVT 등의 예제 분석 과정이 끝나면 다른 형식의 예제는 안 궁금한지 꼭 물어본다. 이때 가장 많이 궁금해하는 형식이 쉼표로 필드를 구분하는 CSV.

일단 CSV는 키바나의 파일 업로드 기능을 이용해서 간단하게 연동할 수 있다. 그런데 용량이 100MB를 넘어가면 해당 기능을 사용할 수 없음.
val1,1000,val2
val3,10000,val4

이때 가장 간단한 해결 방법은 로그스태시의 dissect 필터.

2022년 12월 15일 목요일

엘라스틱의 해시 변환 - 2nd

다음은 beat processor 중 fingerprint 사용 결과.
processors:
  - drop_fields:
      fields: ["log", "input", "ecs", "host", "agent"]
  - fingerprint:
      fields: "message"
      target_field: "hash"
      method: "md5"      
{
  "@timestamp": "2022-12-15T01:47:12.316Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "8.5.0"

2022년 12월 7일 수요일

null과 empty - 2nd

다음은 url, param, error 필드 구조를 갖는 uri 데이터. 빈 값을 가진 param 필드가 눈에 띈다.
[2022-12-07T18:11:29,660][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "url" => "/index.html"
}
{
    "param" => "",
    "error" => "|107|80040e07|nvarchar",
      "url" => "/view.asp"
}
{
    "param" => "id=bbs",
    "error" => "-|ASP_0147|500_Server_Error",
      "url" => "/bbs.php"
}

2022년 11월 25일 금요일

Snort 교육 안 하나요?

작년 말 신규 강의 소개를 올린 후 가끔 받는 질문. 기존 출강 커리큘럼에는 패턴매칭 방법론이 포함되어 있지만 새로 기획한 강의는 갈수록 줄어드는 니즈를 감안해 배제하게 됐다.

개인적으로야 패턴매칭과 이상징후 분석의 병행만이 최선의 네트워크 보안이라고 생각하지만 수요 없는 공급을 할 수는 없으니(..)

수요가 적은 이유는 일단 주 질문자인 취업준비생 등 학생층이 감당하기엔 출강 기관의 수강료 부담이 크고, 두 번째로 대부분 갑의 위치에 있는 기업 수강생들에겐 협력업체 업무(?)인 IDS/IPS 교육의 중요도가 낮아서가 아닌가 싶다.

2022년 11월 20일 일요일

혁명 후기

문화혁명을 경험한 저자 한사오궁이 2013년에 쓴 문혁 후기. 정작 중국에서는 출간되지 못했다고.

중국에서 문혁은 천안문과 함께 사실상 금기어라서 그런 듯하다. 문혁을 경험한 국민 대다수가 가해자이면서 동시에 피해자여서라나.

개인적으로는 대약진 운동과 함께 모택동의 양대 삽질 중 하나 정도로만 알고 있는 게 문혁. 

대약진의 실패로 실권 위기에 처한 모택동이 정적을 축출하기 위해 지원한 학생운동의 결과가 문혁이라는 게 다수의 시각일 것이다.
1966년 5.16 통지가 하달되면서 문혁의 막이 열렸다. 마오쩌둥은 그 이후 2년간 당과 단체의 전국적인 조직들을 마비시켰다... 학생들의 가두 집회와 노동자의 정권 탈취를 고무했으며... (146페이지)

2022년 11월 13일 일요일

Sysmon의 unknown process - 2nd

다음은 프로세스가 unknown인 sysmon 이벤트 3의 목적지 통계. 대부분 아마존 대역.


2022년 11월 8일 화요일

empty row 집계

다음은 stats 명령을 이용한 1시간 단위 집계 결과. 발생량이 없는 시간대는 집계에 포함되지 않는다.


2022년 11월 7일 월요일

Sysmon의 unknown process

sysmon은 이따금 프로세스 정보를 수집하지 못하는 버그(?)가 있다.


2022년 11월 4일 금요일

Splunk의 역슬래시

역슬래시는 특수 문자 중에서도 특수(?)한 문자. 일단 search 명령은 \를 특수 문자로 인식한다. 그래서 윈도우 경로 기호인 \를 검색하려면 


2022년 10월 24일 월요일

엘라스틱의 Join

가끔 조인 기능에 대한 질문을 받는다. 대부분 RDB의 조인을 기대하는 질문. 결론부터 말하면 다음 구조로 운영 가능한 데이터라면 엘라스틱 조인이 답이 될 수 있다.


2022년 10월 23일 일요일

netbios-ns

udp 137 포트를 사용하는 netbios-ns는 윈도우 시스템 간 peer 확인 프로토콜. 그런데 내 컴퓨터가 전세계의 컴퓨터와 통신을 시도하고 있다.


2022년 10월 17일 월요일

데이터 노가다 실수담 - 4th

다음은 변수 영역 추출 후 url 디코딩 > 길이 측정 처리가 이어지는 아파치 웹로그 파이프라인. 
filter {
 grok {
  match => { "message" => "%{COMMONAPACHELOG}" }
 }

 if "?" in [request] {
  grok {
   match => { "request" => "(?<url>[^?]+)?(?<param>.*)" }
  }

2022년 10월 15일 토요일

Elasticsearch 8.0의 변화 - 2nd

버전 8은 보안 기능이 필수다. 이때 스택 간 기능 연동을 위해 윈도우 버전은 관련 정보를 콘솔 실행 화면에 뿌려줌. 그런데 리눅스 RPM 버전은 (막연히 로그에 관련 정보가 찍힐 거라 생각했는데) 아니었다. 일단 yum 설치를 진행하면 관련 정보를 확인할 수 없다.

1. rpm 수동 설치
[root@Centos7 ~]# rpm -i elasticsearch-8.4.3-x86_64.rpm
warning: elasticsearch-8.4.3-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Creating elasticsearch group... OK
Creating elasticsearch user... OK
--------------------------- Security autoconfiguration information ------------------------------

2022년 10월 9일 일요일

트래픽 상태 축약

대부분의 트래픽은 클라이언트와 서버 사이에서 발생한다. 이때 출발지와 목적지 포트는 IP에 대한 정보가 없는 상태에서 출발지와 목적지 간의 관계를 알려주는 핵심 정보. 


2022년 10월 3일 월요일

2022년 9월 25일 일요일

키바나 세션 관리

엘라스틱 버전 8부터는 보안(인증 및 암호화 통신) 기능이 필수라 뺄 수 없다. 그래서 사용자 인증 과정을 거쳐야하는데 이게 세션 만료 시간이 있더라.


2022년 9월 21일 수요일

키바나 saved object 복구

data view(구 index pattern)는 삭제/등록을 아무리 반복해도 저장된 데이터에는 영향을 끼치지 않는다. 대신 과거 data view 환경에서 만들었던 차트 등의 화면은 사용할 수 없음. 이름이 같아도 식별 id가 다르기 때문.


2022년 9월 16일 금요일

having query

다음은 변수 평균 길이를 구하는 집계 쿼리.
GET iis_log/_search
{
  "size": 0,
  "aggs": {
    "NAME": {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "6h",
        "time_zone": "Asia/Seoul"
      },
      "aggs": {
        "avg_param_len": {
          "avg": {
            "field": "param_len"

2022년 9월 4일 일요일

ingest pipeline - 3rd

로그스태시 fingerprint 필터를 사용할 때 MURMUR3 해시 함수를 선택하면 숫자 해시값을 구할 수 있다.
input {
 file {
  path => "D:/test.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

filter {
 fingerprint {
method => "MURMUR3"
}
}

2022년 8월 29일 월요일

데이터 시인성 - 5th

같은 메트릭을 다른 조건으로 보고 싶을 때가 있다. 그런데 기본 차트나 엘라스틱이 밀고 있는 Lens는 메트릭별로 조건을 줄 수 없음.


데이터 시인성 - 4th

다음은 서로 다른 성격의 메트릭 비교 차트. 스케일이 달라 비교가 어렵다.


2022년 8월 28일 일요일

null과 empty

null과 empty의 차이는 미묘하다. 다음은 null(필드 X)과 empty 값을 포함한 param 필드.


2022년 8월 20일 토요일

merging windows event

이벤트 뷰어의 필터링 기능은 매우 제한적이다. 쓸만한 건 시간대, eventID 조건 정도? 이때 xpath(xml path language)를 사용하면 xml 구조를 갖는 이벤트 로그의 System, EventData 경로에 자유롭게 접근할 수 있다.


2022년 8월 8일 월요일

geoip_database_unavailable

winlogbeat(v8.3.1) 파이프라인에 geoip processor를 추가했는데 지리 정보를 가져오지 못한다.


2022년 8월 7일 일요일

Winlogbeat 8의 변화

winlogbeat는 모듈 설정을 이용해서 주요 윈도우 이벤트에 대한 데이터 전처리를 지원한다. 버전 7까지는 자바스크립트 기반 beat processor 사용.


2022년 7월 30일 토요일

윈도우 home 버전 사용자 관리

윈도우 홈 버전은 프로에 비해 관리도구 지원이 빈약하다. 예를 들면 사용자 관리 같은 거.


2022년 7월 23일 토요일

retryer: send unwait signal to consumer

다음은 winlogbeat input 설정. no_more_events: stop 옵션은 더 이상 처리할 이벤트 로그가 없을 때 winlogbeat를 자동으로 종료시켜준다. 편리해서 console 테스트할 때 애용 중.
winlogbeat.event_logs:
  - name: 'd:\5156.evtx'
    no_more_events: stop
    processors:
      - script:
          lang: javascript
          id: security
          file: ${path.home}/module/security/config/winlogbeat-security.js

2022년 7월 6일 수요일

Errno::EACCES: Permission denied - NUL

도메인 정규화를 지원하는 로그스태시 tld 필터가 업데이트 됨. 하지만 일부 도메인 정규화 실패 현상은 여전히 발생한다. 그런데 문제는 그게 아니고 설치가 안 됨. 
C:\ELK\logstash-8.3.1\bin> .\logstash-plugin install logstash-filter-tld
"Using bundled JDK: C:\ELK\logstash-8.3.1\jdk\bin\java.exe"
Validating logstash-filter-tld
Resolving mixin dependencies
Errno::EACCES: Permission denied - NUL
                             sysopen at org/jruby/RubyIO.java:1237
                          initialize at org/jruby/RubyFile.java:365
                                open at org/jruby/RubyIO.java:1156
                          initialize at C:/ELK/logstash-8.3.1/vendor/jruby/lib/ruby/stdlib/rubygems/user_interaction.rb:645
                          initialize at C:/ELK/logstash-8.3.1/vendor/bundle/jruby/2.5.0/gems/bundler-2.3.17/lib/bundler/ui/rg_proxy.rb:11

2022년 6월 19일 일요일

데이터 분석이 쉬워지는 비법 - 3rd

어느 CF 한 컷. '목표가 생기면 뭐라도 한다'는 카피가 남다르게 다가온다.


2022년 6월 16일 목요일

엑셀 Distinct Count 구하기 - 3rd

엑셀 피벗 테이블은 시간 단위 인터벌을 바꿀 수 있는 기능을 제공한다.


2022년 5월 29일 일요일

Splunk의 해시 변환 - 2nd

스플렁크는 custom search command, 즉 사용자 맞춤 명령어 생성 기능을 제공한다. 먼저 '앱 관리 > 앱 만들기' 메뉴 실행.


2022년 4월 10일 일요일

엘라스틱의 해시 변환

method

  • This is a required setting.
  • Value can be any of: SHA1SHA256SHA384SHA512MD5MURMUR3IPV4_NETWORKUUIDPUNCTUATION
  • Default value is "SHA1"

2022년 3월 27일 일요일

도메인 정규화 Processor: registered_domain - 2nd

8.1 버전 테스트. 다음은 filebeat.yml 설정.
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
  - drop_fields:
      fields: [ "log", "input", "ecs", "host", "agent" ]

2022년 2월 27일 일요일

Elasticsearch 8.0의 변화

엘라스틱 8.0이 릴리즈됐다. 업데이트가 워낙 잦다 보니 좀 무덤덤하긴 하지만, 검색엔진 기능 개선이 많이 이뤄진 모양. (데이터 분석 관점의 개선점은 잘 모르겠음) 설치 과정도 좀 달라졌다. 일단 엘라스틱 실행.
[2022-02-27T13:33:31,655][INFO ][o.e.c.r.a.AllocationService] [MHKANG] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.security-7][0]]])." previous.health="YELLOW" reason="shards started [[.security-7][0]]"

--------------------------------------------------------------------------------------------------------------
-> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.

->  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  voA_9jKuSzizS0mmZX*e

2022년 2월 13일 일요일

Could not bind to port 8089

재시작이 필요한 윈도우 업데이트를 할 때마다 꽤 잦은 빈도로 스플렁크 서비스가 올라오지 않는다. 수동으로 스타트해봐도,
C:\Splunk\bin> .\splunk.exe start

Splunk> 4TW

Checking prerequisites...
        Checking http port [8000]: open
        Checking mgmt port [8089]: open
        Checking appserver port [127.0.0.1:8065]: open
        Checking kvstore port [8191]: open
        Checking configuration... Done.
        Checking critical directories...        Done
        Checking indexes...

2022년 1월 17일 월요일

엘라스틱이 쉬웠던 이유 - 2nd

데이터 분석 과정에서 데이터 전처리가 차지하는 비중은 생각보다 크다.


2022년 1월 11일 화요일

스플렁크와 엘라스틱 서비스 실행 차이

다음은 스플렁크의 데이터 수집 설정. (/opt/splunk/etc/system/local/inputs.conf)
[monitor:///var/log/secure*]
sourcetype=linux_secure
index=securelog

수집 결과는 다음과 같다.

2022년 1월 8일 토요일

2021년에 있었던 일

작년 회고를 보니 코로나 때문에 꽤 힘들었었던 기억이 난다. 그리고 21년은 좀 나아질 줄 알았다. 최소한 비슷하겠거니 했지. 


크리에이티브 커먼즈 라이선스