KQL 조회 빌드

Kusto Query Language (KQL) 는 QRadar® 데이터 레이크를 조회하는 데 사용할 수 있는 조회 언어입니다. KQL을 사용하면 단순 검색 조회에서 보다 복잡한 집계 조회까지 다양한 유형의 조회를 빌드할 수 있습니다.

프로시저

  1. 메뉴 > Data Explorer > 검색으로 이동하십시오.
    팁: 홈 페이지에서 검색 시작 을 클릭할 수도 있습니다.
  2. 조회 유형 드롭 다운 목록에서 로그/경보 (KQL)를 선택하십시오.
  3. 조회 텍스트 필드에 조회를 입력하십시오. 예를 들어, 다음 조회는 마지막 5분동안 최대 10000개의 이벤트까지 모든 이벤트를 리턴합니다.
    events    
        | project original_time, data_source_name, name, user_id, low_level_categories,
            src_ip, src_port, dst_ip, dst_port, payload
        //--- Search for the last 5 minutes of data
        | where original_time > ago(5m)    
        //--- USER Criteria Here    
        | take 10000

    파이프 문자 (|) 가 앞에 붙은 각 필터는 일부 매개변수가 있는 연산자의 인스턴스입니다.

    다음 목록에는 조회에서 사용할 수 있는 몇 가지 공통 KQL 연산자가 포함되어 있습니다.

    KQL 연산자 설명
    주문 하나 이상의 열을 기준으로 결과를 정렬합니다.
    프로젝트 지정된 컬럼의 서브세트만 리턴합니다. 예를 들어, 프로젝트 original_time, 이름 및 페이로드입니다.
    요약 by 표현식 다음에 동일한 값을 갖는 그룹으로 결과를 배열합니다.
    가져오기 지정된 행 수만 리턴합니다 (5사용).
    여기서 인수에 지정된 대로 행의 서브세트로 결과를 필터링합니다.
    주: ISO 8601 형식의 경우 datetime() 연산자는 따옴표로 묶거나 따옴표 없이 묶을 수 있습니다. RFC 822, RFC 850 및 정렬 가능한 형식과 같은 다른 표준의 경우 공백이 포함된 쿼리는 따옴표로 묶어야 합니다.

결과

조회에 구문 오류가 있는 경우, 오류를 해결할 때까지 조회 실행 이 사용 불가능합니다. 각 구문 오류는 빨간색 밑줄로 강조표시되며 구문 오류 세부사항이 있는 도구 팁 및 구문 수정사항 제안이 있는 컨텍스트 헬퍼가 표시됩니다.

조회가 실행되면 '활성 조회' 카드가 추가됩니다. 각 조회는 작성된 후 4일후에 만료됩니다. 만료 시간이 카드에 표시됩니다.

이벤트 테이블에서 100개의 행을 리턴합니다.

events
| take 100

이벤트가 가장 많은 10개의 이벤트 카테고리를 리턴합니다.

events_all
| summarize Count=count() by qid_event_category
| order by Count desc
| take 10

이벤트 수가 가장 많은 10개의 데이터 소스를 리턴합니다.

events
| project data_source_name, original_time
| where data_source_name != ''
| summarize Events=count() by data_source_name
| order by Events desc
| take 10

지난 한 시간 동안의 데이터 소스를 리턴합니다.

events
| project original_time, data_source_name
| where original_time > ago(1h)  
| summarize Count=count() by Time=bin(original_time, 5m), data_source_name  
| order by Time, data_source_name desc

마지막 5분동안 최대 10000까지의 이벤트를 리턴합니다.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last 5 minutes of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

최대 10000까지 마지막 시간 동안의 이벤트를 리턴합니다.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last hour of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

소스 IP 주소가 127.0.0.1이고 최근 24시간동안의 이벤트를 검색하십시오.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP = 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip = ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

소스 IP 주소 127.0.0.1이 없는 최근 24시간동안의 이벤트를 검색하십시오.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP not equal to 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip != ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

페이로드가 svchost에서 일치하는 마지막 시간의 이벤트를 검색합니다.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for payload that has a match on ‘svchost’ over last hour
    | where original_time > ago(1h) and payload has ‘svchost’  
    //--- USER Criteria Here    
    | take 100