Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

IDP 서명 언어 개선 사항

Junos OS 19.4R1부터 IDP 엔진은 서명 언어 구조를 지원합니다. 서명 구조를 통해 IDP는 오탐을 줄이는 데 도움이 되는 보다 효율적인 시그니처를 생성할 수 있습니다.

서명 언어 구성 이해하기

다음 구조는 IDP 엔진 코드에서 지원됩니다.

  • Depth-주어진 패턴을 검색할 패킷의 깊이를 지정합니다. 깊이 값은 상대적인 것이 아닙니다. 예를 들어, 깊이를 100으로 지정할 수 있습니다.
  • Offset- 패킷 내 패턴 검색을 시작할 위치를 지정할 수 있습니다. 오프셋 값은 상대적이 아닙니다. 예를 들어 오프셋에 대한 값을 100으로 지정할 수 있습니다.
  • Within-패턴 일치 사이에 최대 N 바이트가 있는지 확인합니다. 패턴 일치는 항상 이전 일치와 상대적입니다. 예를 들어, N의 값이 10인 경우. 예에 따라 m01 일치 후 m02 일치는 10바이트 이내에 발생하여 공격 알림을 트리거합니다.
  • Distance- IDP 엔진이 이전 패턴 일치와 상대적으로 지정된 패턴을 검색할 위치를 지정할 수 있습니다. 이는 항상 이전 일치와 상대적이며 거리 값은 부정적일 수 있습니다. 예를 들어, N 값이 10이면 m01이 일치하면 m02는 m01 일치 가 끝난 후 10바이트가 발생해야 합니다.
  • Ipopts—나열된 모든 ipopts는 보안 패키지에 정의된 해당 이상 징후를 가지며 디바이스 또는 IDP 엔진에 구성할 때 이를 감지할 수 있습니다.

    • rr - 기록 경로

    • eol - 목록 종료

    • nop - Op 없음

    • ts - 타임스탬트

    • Sec - IP 보안

    • esec - IP 확장 보안

    • lsrr - Loose Source Routing

    • ssrr - 엄격한 소스 라우팅

    • satid - Stream Identifier

Junos OS 20.2R1부터 IDP 엔진은 서명 언어 구조를 지원합니다. 서명 구조를 통해 IDP는 오탐을 줄이는 데 도움이 되는 보다 효율적인 시그니처를 생성할 수 있습니다.

  • Byte extract바이트 추출 키워드는 길이 부호화 프로토콜에 대한 서명을 작성하고 패킷 페이로드를 바이트로 읽고 나중에 사용할 수 있도록 변수로 저장하는 데 도움이 됩니다. 바이트 추출은 상대 및 비 상대성일 수 있습니다. 체인 공격당 사용되는 바이트 추출은 몇 개나 있을 수 있습니다. 예를 들어:

    표 1 에는 구조에 대한 필드가 나열되어 있습니다 Byte extract .

    표 1: 바이트 추출 출력 필드

    필드

    필드 설명

    align

    바이트 정렬을 지정합니다.

    bitmask

    AND 작업의 비트마스크(1~4바이트)를 16진수 형식으로 지정합니다.

    bytes

    패킷에서 추출할 바이트 수를 지정합니다(1..10).

    endianness

    IDP 엔진이 읽는 바이트를 처리해야 하는 엔디안(endianness)을 지정합니다.

    multiplier

    읽은 바이트에 대해 곱할 값을 지정합니다.

    offset

    IDP 엔진이 처리를 시작해야 하는 위치에서 페이로드의 오프셋 바이트 수를 지정합니다.

    relative

    마지막 패턴 일치와 상대적인 오프셋을 사용할지 여부를 지정합니다.

    string

    문자열 데이터를 구문 분석해야 하는 데이터 유형을 지정합니다.

    var-name

    다른 규칙 옵션에서 참조할 변수 이름을 지정합니다.

  • Byte test-바이트 테스트 키워드를 사용하면 작동 값을 사용하여 바이트 필드를 테스트할 수 있습니다. 바이트 테스트는 상대 및 비 상대성일 수 있습니다. > , < , =, &, ^ ,<=,>= 은(는) 지원되는 연산자이며 추출한 최대 바이트 수는 4입니다. 예를 들어:

    표 2 에는 구조에 대한 필드가 나열되어 있습니다 Byte test .

    표 2: 바이트 테스트 출력 필드

    필드

    필드 설명

    bitmask

    AND 작업의 비트마스크(1~4바이트)를 16진수 형식으로 지정합니다.

    bytes

    패킷에서 추출할 바이트 수를 지정합니다(1..10).

    endianness

    IDP 엔진이 읽는 바이트를 처리해야 하는 엔디안(endianness)을 지정합니다.

    negate

    운영자가 True가 아닌지 확인합니다.

    offset

    오프셋 변수 이름 또는 오프셋 값 언급

    operator

    추출된 값에 대해 수행할 작업을 지정합니다.

    relative

    마지막 패턴 일치와 상대적인 오프셋을 사용할지 여부를 지정합니다.

    rvalue

    변환된 값은 rvalue로 테스트됩니다. .

    string

    문자열 데이터를 구문 분석해야 하는 데이터 유형을 지정합니다.

  • Byte jump바이트 점프 키워드는 페이로드의 특정 부분을 건너뛰고 매우 특정 위치에서 탐지를 수행하기 위해 길이 인코딩 프로토콜에 대해 작성된 서명에 사용됩니다. 바이트 점프 값은 상대 및 비 상대성일 수 있습니다. 예를 들어:

    표 3 은 구조에 대한 필드를 나열합니다 Byte jump .

    표 3: 바이트 점프 출력 필드

    필드

    필드 설명

    align

    IDP 엔진이 읽는 바이트를 처리해야 하는 엔디안(endianness)을 지정합니다.

    bitmask

    AND 작업의 비트마스크(1~4바이트)를 16진수 형식으로 지정합니다.

    bytes

    패킷에서 추출할 바이트 수를 지정합니다(1..10).

    endianness

    IDP 엔진에서 읽는 바이트가 처리되어야 하는 엔디안(endianness)을 지정합니다.

    from-beginning

    페이로드 시작부터 점프를 활성화합니다.

    from-end

    페이로드의 끝에서 점프를 활성화합니다.

    multiplier

    읽은 바이트에 대해 곱할 값을 지정합니다.

    offset

    사용할 오프셋 변수 이름 또는 오프셋 값을 언급합니다.

    post-offset

    앞으로 또는 역으로 건너뛰는 바이트 수를 지정합니다(-65535..65535).

    relative

    마지막 패턴 일치와 상대적인 오프셋을 사용할지 여부를 지정합니다.

    string

    문자열 데이터를 구문 분석해야 하는 데이터 유형을 지정합니다.

  • Byte math- 바이트 수학 키워드를 사용하면 추출된 값, 지정된 값 또는 기존 변수에서 수학 연산을 수행할 수 있습니다. 바이트 수학 값은 결과를 새로운 결과 변수에 저장합니다. 와 같은 1) '+' | '-' | '*' | '/' | '<<' | '>>' 작업이 지원됩니다. 상대 및 비 상대성 모두일 수 있습니다. 예를 들어:

    표 4 는 구조에 대한 필드를 나열합니다 Byte math .

    표 4: 바이트 수학 출력 필드

    필드

    필드 설명

    bitmask

    AND 작업의 비트마스크(1~4바이트)를 16진수 형식으로 지정합니다.

    bytes

    패킷에서 추출할 바이트 수를 지정합니다(1..10).

    endianness

    바이트를 처리해야 하는 엔디안(endianness)을 지정합니다.

    offset

    처리를 시작할 페이로드의 바이트 수를 지정합니다(0..65535).

    operator

    추출된 값에 대해 수행할 작업을 지정합니다.

    relative

    마지막 패턴 일치와 상대적인 오프셋을 사용할지 여부를 지정합니다.

    result

    결과를 저장해야 하는 변수 이름을 지정합니다.

    rvalue

    특정 수학 연산에 사용할 값을 지정합니다.

    string

    문자열 데이터를 구문 분석해야 하는 데이터 유형을 지정합니다.

  • Is-data-at— is-data-at 키워드를 사용하면 페이로드에 지정된 위치에서 필요한 데이터가 포함되어 있는지 확인할 수 있습니다. 예를 들어:

    표 5 에는 구조에 대한 필드가 나열되어 있습니다 Is-data-at .

    표 5: Isdataat 출력 필드

    필드

    필드 설명

    negate

    is-data-at 테스트의 결과를 무효화합니다.

    offset

    오프셋 변수 이름 또는 오프셋 값을 언급합니다.

    relative

    마지막 패턴 일치와 상대적인 오프셋을 사용할지 여부를 지정합니다.

  • Detection Filter— 탐지 필터는 공격이 일치해야 하는 속도를 정의합니다. 서명에 지정된 옵션 값에 따라 소스 또는 대상에 대한 카운트가 유지됩니다. 탐지 필터는 외부 <SLE_Constructs> 에 있으며 공격 멤버별로 지정되지 않습니다. 공격이 동일한 소스 IP에서 10초 간격으로 5번 감지되면 공격으로 플래그가 지정됩니다. 예를 들어: