행동 분석 및 이상 탐지 템플릿 매크로(베타)
행동 분석 및 이상 탐지를 위한 Panther 관리 매크로로 이상치를 감지하기
개요
Panther는 템플릿 매크로 로그 데이터 전반의 이상값 및 새로운 값을 식별하기 위한 것입니다. 템플릿 매크로를 사용하면 최근 로그 이벤트를 과거 데이터와 비교하여 확립된 기준에서 크게 벗어나는 활동을 식별할 수 있습니다. 이러한 행동 분석 및 이상 탐지 매크로는 사용자 및 엔터티 행동 분석(UEBA) 전략의 일부로 유용할 수 있습니다.
이 매크로들은 최근 시간 간격의 데이터를 더 긴 조회 창의 데이터와 비교하고 둘 사이의 편차 수준을 결정하여 작동합니다.
Panther가 제공하는 매크로는 다음과 같습니다:
statistical_anomaly: 수치형 필드의 이상값을 식별합니다예: 지난 2주와 비교하여 지난 한 시간 동안 비정상적으로 많은 트래픽을 보낸 VPC 호스트를 찾습니다.
자세한 내용은 statistical_anomaly.
statistical_anomaly_peer: 동료 그룹내에서 수치형 필드의 이상값을 식별합니다
자세한 내용은 statistical_anomaly_peer.
예: 같은 팀 구성원들과 비교했을 때 특정 사용자가 리소스에 접근하려는 시도를 식별합니다.new_unique_values: 주어진 엔터티에 대한 새로운 값을 식별합니다
예: 지난 하루 동안 특정 리소스에 접근한 API 토큰 중 이전 30일 동안 접근한 적이 없는 토큰을 찾습니다.new_unique_values_peer 동료 그룹:
자세한 내용은 내에서 주어진 엔터티에 대한 새로운 값을 식별합니다
예: EC2 인스턴스가 자신의 VPC 그룹 구성원에게는 비정형적인 IP에 연결했는지 감지합니다. 아래에서.
new_unique_values_peer.
매크로의 소스 코드를 보는 방법 알아보기 저장된 검색매크로 활성화
매크로를 호출하기 전에 Panther 인스턴스에서 사용할 수 있도록 만들어야 합니다. 매크로는 Panther에서 관리하는
에 제공되며, 다음에서 얻을 수 있습니다:탐지 팩콘솔 워크플로우에서: 를 통해 panther-analysis PantherManaged.Anomalies Panther 분석 도구(PAT)
로 업로드합니다 에 제공되며, 다음에서 얻을 수 있습니다: 콘솔 워크플로우
Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 탐지그런 다음 Packs.
다음 Panther 콘솔에서 매크로를 활성화하려면 팩을 활성화하십시오:
텍스트로 팩 필터 필드에 "Anomaly"를 입력합니다. 의 오른쪽에서
켜기.

Panther Anomaly Detection Pack 타일에서 Enabled 토글을Panther의 예제 SQL 쿼리를 보려면, 로 설정하십시오매크로는 panther-analysis 리포지토리에 anomalies.yml 파일로 추가되었습니다
v3.75.1 . 이 파일을 귀하의 Panther 콘텐츠 리포지토리에 가져오려면 다음 중 하나를 수행하십시오: 리포지토리를 panther-analysis의 어느
다음 파일을 다운로드하세요
릴리스와 동기화하십시오파일에 버전이 v.3.75.1 이상인.anomalies.yml
일단 릴리스와 동기화하십시오 을 GitHub에서 수동으로 다운로드하여 리포지토리에 저장하십시오. 로컬에서 탐지를 작성한다는 것은 개인 컴퓨터에서 Panther 탐지를 정의하는 Python 및/또는 YAML 파일을 작성하는 것을 의미합니다. 로컬에서 탐지를 작성한 후에는 일반적으로.
이 경로는 panther-analysis와 완전 동기화를 수행하지 않고 파일만 가져오려는 경우에 적합할 수 있습니다.
리포지토리에 데이터 탐색기 가 존재하는 경우 다른 쿼리에서 템플릿 매크로 호출하기 를 사용하여 Panther에 업로드할 수 있습니다
Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 저장된 검색 목록에서 다운로드하거나 삭제하려는 검색을 찾습니다. 각 검색 이름 왼쪽의 상자를 체크하세요. > 데이터 탐색기.
다음 지침을 따라 Panther에서 Panther가 관리하는 행동 분석 및 이상 탐지 매크로를 호출할 수 있습니다.
-- pragma: template문에 복사하여 붙여넣을 수 있습니다.
를 추가하십시오
-- pragma: show macro expanded # Optional 사용 가능한 매크로 중 하나를 가져옵니다:{% import 'anomalies' <statistical_anomaly, new_unique_values,
SELECTstatistical_anomaly_peer, OR new_unique_values_peer> %}p_event_time-- 네 가지 모두가 아니라 하나의 매크로만 지정하십시오
공통 테이블 표현(CTE)을 사용하여 서브쿼리를 정의하십시오서브쿼리는 다음을 반드시 포함해야 합니다:적어도 다음을 포함해야 합니다:
statistical_anomaly엔터티 컬럼. 엔터티는 종종 이메일 주소, 사용자 ID, 애플리케이션 ID 또는 호스트명과 같은 ID이지만 IP 주소와 같은 모든 데이터 타입이 될 수 있습니다. 컬럼은 최상위 필드여야 합니다. 필드가 객체나 배열 내에 중첩되어 있으면예: 같은 팀 구성원들과 비교했을 때 특정 사용자가 리소스에 접근하려는 시도를 식별합니다.별칭을 생성하여 컬럼에AS
statistical_anomaly_peer또는예: 지난 하루 동안 특정 리소스에 접근한 API 토큰 중 이전 30일 동안 접근한 적이 없는 토큰을 찾습니다.키워드를 사용하십시오. 동료 그룹 필드에 붙여넣으세요.
다음을 사용하여
절과 같은 필터 안에 있어야 합니다.집계 컬럼. 경우에는 이 컬럼의 내용이 집계되어 이상값을 검사합니다. 경우에는 이 컬럼의 내용이 새로운 값을 검사합니다. 엔터티 컬럼과 마찬가지로 이 컬럼도 최상위 필드여야 합니다.p_occurs_since(). Mappingsp_occurs_since()여기.
user:email as email, -- 엔터티 컬럼
서브쿼리 아래에 매크로를 호출하십시오: {{ <statistical_anomaly, new_unique_values, statistical_anomaly_peer, OR new_unique_values_peer>도 함께 아래에 있습니다.
클릭 검색 실행.
(<subquery>, '<entity_col>', ...) }}
각 매크로의 전체 입력 인수 목록은 저장행동 분석 및 이상 탐지 매크로 참조
임시적 검색을 넘어
Panther의 행동 분석 및 이상 탐지 쿼리는 위협 헌팅에 유용하지만 모니터링 시스템으로 사용할 때 더 강력합니다. 쿼리는
로 설정하여 일정에 따라 실행하고 Scheduled Rules에 연결할 수 있습니다. 이 방식으로 이상 활동이 관찰될 때마다 알림을 받을 수 있습니다.
전체 예시
AND flowDirection = 'egress'
AND pktDstAwsService is null
{{statistical_anomaly('subquery', 'traffic', 'bytes', 'sum', '1', 'hour', 3)}}
{% import 'anomalies' new_unique_values %}
select email, src_ip, p_event_time
{{ new_unique_values('subquery', 'email', 'src_ip', '1hr') }} where \\\\\\\\\\\\\\\ #### `statistical_anomaly_peer`를 사용한 전체 예시 아래 예시는 동료 그룹화를 사용하여 한 사용자가 생성한 GitHub 풀 리퀘스트 수를 같은 팀 다른 구성원들이 생성한 풀 리퀘스트 수와 비교합니다..
panther_lookups.public.custom_github_teams as lut
on logs.actor = lut.actor
{{ statistical_anomaly_peer('subquery', 'actor', 'team', 'n', 'count', '1', 'day', 0.1) }} where \\\\\\\\\\\\\\\ #### `new_unique_values_peer`를 사용한 전체 예시 repo 이 예시의 쿼리는 어떤 사용자가 팀의 다른 구성원들 중 어느 누구도 이전에 사용하지 않았던 리포지토리에서 GitHub 풀 리퀘스트를 생성했는지 여부를 발견하려고 합니다. 아래 예시는 동료 그룹화를 사용하여 한 사용자가 생성한 GitHub 풀 리퀘스트 수를 같은 팀 다른 구성원들이 생성한 풀 리퀘스트 수와 비교합니다..
repo,
적용한 후 {{ new_unique_values_peer('subquery', 'actor', 'team', 'repo', '1d') }}매크로 소스 코드 보기
매크로 활성화
Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 저장된 검색 목록에서 다운로드하거나 삭제하려는 검색을 찾습니다. 각 검색 이름 왼쪽의 상자를 체크하세요. > 저장된 검색.
를 활성화하면 Panther 콘솔 또는 panther-analysis 리포지토리에서 행동 분석 및 이상 탐지 매크로 소스 코드를 볼 수 있습니다.
Panther 콘솔에서 매크로 소스 코드를 보려면:Saved Search 이름으로
anomalies 데이터 탐색기를 검색하고 해당 이름을 클릭하십시오.

에서 소스 코드를 볼 수 있습니다:
panther-analysis 리포지토리 panther-analysis에서 매크로 소스 코드를 보려면:로컬 Panther 코드 리포지토리 또는
Panther의 업스트림 panther-analysis 리포지토리파일에.
에서
queries/macros/anomalies.yml
동료 그룹 분석 statistical_anomaly 와 예: 같은 팀 구성원들과 비교했을 때 특정 사용자가 리소스에 접근하려는 시도를 식별합니다. 엔터티의 행동을 동료들의 행동과 비교하는 것이 유용한 경우가 많습니다. 예를 들어, 어떤 엔지니어가 최근에 다른 엔지니어들이 하지 않은 계정에 로그인했나요?
Panther는 이러한 분석을 수행하기 위해 의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다.이 쿼리들은 비동료(일반) 버전과 유사하게 작동하지만 추가 매개변수 의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다. group_field
{{ <statistical_anomaly, new_unique_values, statistical_anomaly_peer, OR new_unique_values_peer>
를 사용하여 동료 그룹을 정의합니다. 이는 엔터티를 함께 그룹화하는 데 사용되는 값이 있는 컬럼이어야 합니다. 일반적인
statistical_anomaly
설정은 statistical_anomaly 값의 예로는 사용자 역할, 직무 부서, VPC ID, 계정 ID 등이 있습니다.
아래에는 Panther가 제공하는 매크로를 사용하는 방법에 대한 참조 정보가 있습니다. 별도로 명시되지 않는 한 모든 입력 인수는 여기에 표시된 순서대로 제공되어야 합니다.
매크로는 최근 기간 내 데이터셋에서 비정상적인 데이터 포인트를 검사합니다. CTE를 기본 데이터 집합으로 사용하고 해당 기간 동안 엔터티의 기준 활동을 동일 엔터티의 최신 활동과 비교하여 이 행동이 얼마나 비정상적인지 계산합니다.
기본 데이터 집합을 제공하고 어떤 컬럼이 엔터티 이름을 포함하는지, 그리고 어떤 컬럼을 데이터 비교에 사용할지 지정해야 합니다. 또한 이상을 찾을 최근 기간의 크기도 정의해야 합니다.
다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
문자열
설명
subquery
문자열
이전에 정의된 CTE의 이름으로, 매크로가 분석할 데이터를 제공합니다.
entity_field
문자열
그룹화에 사용할 컬럼의 이름; 보통 이름, IP 주소 또는 ID입니다.
agg_field
문자열
이상값을 찾을 컬럼의 이름입니다. entity_field agg_func 기간 내에서, 의 데이터를 집계하는 데 사용할 SQL 함수입니다. 일반적인 값은및 count.
sum
문자열
max 1 tmag1 이상값을 찾을 조회 창의 단위 수. 예: "
day"의
문자열
값. 일 tunit 일이상값을 찾을 조회 창의 시간 단위. 예: "1
"의
숫자
입니다. 단수형이어야 합니다(끝에 "s" 없음). "의 zscore
다음을 반환합니다
이상값 임계값; 계산된
N
숫자
값이 이 값보다 높지 않으면 결과가 반환되지 않습니다. entity_field매크로 실행 후 반환되는 테이블에는 다음 컬럼들이 포함됩니다: agg_field조회 기간 동안
에서
타임스탬프
에 의해 집계된 데이터의 값.
t1
타임스탬프
조회 기간의 시작.
t2
내에서 하나 이상의 일치 표현식을 나열하세요.
조회 기간의 끝. subquery.
<entity_field>
숫자
선택한 "의 의 값 "의 p_zscore
조회 기간 동안 엔터티 활동의 계산된
숫자
입니다. 값이 클수록 더 이상합니다. entity_field p_mean 다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.조회 기간을 제외한
의 해당 엔터티에 대한 평균값입니다.
숫자
p_stddev entity_field p_mean 다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.조회 기간을 제외한 의 해당 엔터티에 대한 평균값입니다. 의 표준편차입니다. 값이 클수록 엔터티의 활동이 전반적으로 덜 일관되었음을 의미합니다.
예: 같은 팀 구성원들과 비교했을 때 특정 사용자가 리소스에 접근하려는 시도를 식별합니다.
설정은 예: 같은 팀 구성원들과 비교했을 때 특정 사용자가 리소스에 접근하려는 시도를 식별합니다. 매크로는 데이터 집합을 스캔하고 주어진 엔터티에 대해 최근 조회 기간에 존재하는 선택된 컬럼의 새로운 값 집합을 반환합니다.
매크로는 최근 기간 내 데이터셋에서 비정상적인 데이터 포인트를 검사합니다. CTE를 기본 데이터 집합으로 사용하고 해당 기간 동안 엔터티의 기준 활동을 동일 엔터티의 최신 활동과 비교하여 이 행동이 얼마나 비정상적인지 계산합니다.
다음 인수들은 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
문자열
이전에 정의된 CTE의 이름으로, 이상값을 찾기 위해 사용할 기본 데이터를 포함합니다.
subquery
문자열
그룹화에 사용할 컬럼의 이름; 보통 사용자 이름, IP 주소 또는 ID입니다.
entity_field
문자열
새로운 값을 검색할 컬럼의 이름입니다.
다음을 반환합니다
이상값 임계값; 계산된
t2
내에서 하나 이상의 일치 표현식을 나열하세요.
정의된 subquery 열을 확인하여 찾을 수 있습니다.
<agg_field>
내에서 하나 이상의 일치 표현식을 나열하세요.
조회 기간 동안 entity_field 열에서 발견된 모든 새로운 값입니다.
statistical_anomaly_peer
이 매크로를 사용하여 엔터티가 동료들과 비교했을 때 비정상적인 수치적 행동을 결정할 수 있습니다. 예: 같은 태그를 가진 다른 인스턴스들과 비교한 EC2 인스턴스의 트래픽 볼륨 또는 같은 버킷 내 다른 객체들과 비교한 S3 객체에 대한 접근 요청 검사. 동료 그룹엔터티를 식별하는 데 사용할 컬럼의 이름; 보통 이름, IP 주소 또는 ID입니다.
매크로는 최근 기간 내 데이터셋에서 비정상적인 데이터 포인트를 검사합니다. CTE를 기본 데이터 집합으로 사용하고 해당 기간 동안 엔터티의 기준 활동을 동일 엔터티의 최신 활동과 비교하여 이 행동이 얼마나 비정상적인지 계산합니다.
다음 인수들은 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
문자열
설명
subquery
문자열
엔터티를 그룹화하는 데 사용할 컬럼의 이름; 예: 역할 이름 또는 계정 ID.
의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다.
문자열
<group_field>
entity_field
문자열
그룹화에 사용할 컬럼의 이름; 보통 이름, IP 주소 또는 ID입니다.
agg_field
문자열
이상값을 찾을 컬럼의 이름입니다. entity_field agg_func 기간 내에서, 의 데이터를 집계하는 데 사용할 SQL 함수입니다. 일반적인 값은및 count.
sum
문자열
max 1 tmag1 이상값을 찾을 조회 창의 단위 수. 예: "
day"의
문자열
값. 일 tunit 일이상값을 찾을 조회 창의 시간 단위. 예: "1
"의
숫자
입니다. 단수형이어야 합니다(끝에 "s" 없음). "의 zscore
다음을 반환합니다
이상값 임계값; 계산된
N
숫자
값이 이 값보다 높지 않으면 결과가 반환되지 않습니다. entity_field매크로 실행 후 반환되는 테이블에는 다음 컬럼들이 포함됩니다: agg_field조회 기간 동안
에서
타임스탬프
에 의해 집계된 데이터의 값.
t1
타임스탬프
조회 기간의 시작.
t2
내에서 하나 이상의 일치 표현식을 나열하세요.
조회 기간의 끝. subquery.
이 매크로를 사용하여 엔터티가 그 동료 그룹의 구성원이 이전에 관찰한 적이 없는 동작을 했는지 식별할 수 있습니다.
내에서 하나 이상의 일치 표현식을 나열하세요.
조회 기간의 끝. 의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다..
<entity_field>
숫자
선택한 "의 의 값 "의 p_zscore
조회 기간 동안 엔터티 활동의 계산된
숫자
입니다. 값이 클수록 더 이상합니다. entity_field p_mean 다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.조회 기간을 제외한
의 해당 엔터티에 대한 평균값입니다.
숫자
p_stddev entity_field p_mean 다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.조회 기간을 제외한 의 해당 엔터티에 대한 평균값입니다. 의 표준편차입니다. 값이 클수록 엔터티의 활동이 전반적으로 덜 일관되었음을 의미합니다.
예: 지난 하루 동안 특정 리소스에 접근한 API 토큰 중 이전 30일 동안 접근한 적이 없는 토큰을 찾습니다.
새로운 값을 찾을 조회 창의 크기입니다. 은(는) 동일한 구문을 사용합니다: 동료 그룹.
매크로는 최근 기간 내 데이터셋에서 비정상적인 데이터 포인트를 검사합니다. CTE를 기본 데이터 집합으로 사용하고 해당 기간 동안 엔터티의 기준 활동을 동일 엔터티의 최신 활동과 비교하여 이 행동이 얼마나 비정상적인지 계산합니다.
다음 인수들은 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
다음 각 인수는 아래에 표시된 순서대로 매크로에 제공되어야 합니다.
문자열
이전에 정의된 CTE의 이름으로, 이상값을 찾기 위해 사용할 기본 데이터를 포함합니다.
subquery
문자열
엔터티를 그룹화하는 데 사용할 컬럼의 이름; 예: 역할 이름 또는 계정 ID.
의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다.
문자열
<group_field>
entity_field
문자열
새로운 값을 검색할 컬럼의 이름입니다.
다음을 반환합니다
이상값 임계값; 계산된
t2
내에서 하나 이상의 일치 표현식을 나열하세요.
정의된 subquery 열을 확인하여 찾을 수 있습니다.
이 매크로를 사용하여 엔터티가 그 동료 그룹의 구성원이 이전에 관찰한 적이 없는 동작을 했는지 식별할 수 있습니다.
내에서 하나 이상의 일치 표현식을 나열하세요.
정의된 의 동료 버전을 제공합니다. 동료 버전에서는 기준 통계가 동료 그룹에 따라 계산된 다음 엔터티 행동을 기준과 비교합니다. 열을 확인하여 찾을 수 있습니다.
<agg_field>
내에서 하나 이상의 일치 표현식을 나열하세요.
조회 기간 동안 entity_field 열에서 발견된 모든 새로운 값입니다.
Last updated
Was this helpful?

