> ## Documentation Index
> Fetch the complete documentation index at: https://parser.xdr.ooo/llms.txt
> Use this file to discover all available pages before exploring further.

# Snort 3 로그를 ChatGPT 보조 규칙으로 복구하기

> Snort 공식 alert_fast 원본을 파서가 이해하지 못할 때 ChatGPT에서 검토한 제한적 규칙과 별도 검증 로그를 이용하는 영상입니다.

# Snort 3 로그를 ChatGPT 보조 규칙으로 복구하기

Snort 공식 alert\_fast 원본을 파서가 이해하지 못할 때 ChatGPT에서 검토한 제한적 규칙과 별도 검증 로그를 이용하는 영상입니다.

영상 나레이션과 하단 캡션은 **영어**입니다. 여기에서는 실제 화면에서 눌러야 할 버튼과 기대 결과를 한국어로 설명합니다.

<video controls playsInline preload="metadata" width="100%" poster="https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/poster.png">
  <source src="https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/scenario-english.mp4" type="video/mp4" />

  동영상이 보이지 않으면 아래 링크를 이용하세요.
</video>

[영상 크게 보기](https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/watch.html) · [MP4 다운로드](https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/scenario-english.mp4) · [영어 SRT 자막](https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/subtitles-en.srt) · [나레이션 원고](https://app.parser.xdr.ooo/training/parser-studio-current-20261031/03-snort-unrecognized-chatgpt/narration-en.md)

## 실습 원본 다운로드

[모든 연습용 공개 로그 ZIP](https://app.parser.xdr.ooo/training/parser-studio-current-20261031/practice/practice-all.zip) · [Parser Studio 실행](https://app.parser.xdr.ooo/)

* [Snort alert\_fast 원본 한 건](https://app.parser.xdr.ooo/training/parser-studio-real-scenarios-20261021/practice/03-snort-alert.log)
* [서로 다른 추가 검증 로그 두 건](https://app.parser.xdr.ooo/training/parser-studio-real-scenarios-20261021/practice/03-snort-holdout.log)
* [검토용 교육 규칙 JSON · 선택 사항](https://app.parser.xdr.ooo/training/parser-studio-real-scenarios-20261021/practice/03-snort-reviewed-recipe.json)

이 파일에는 영상에서 사용한 원본 샘플이 들어 있습니다. 불완전한 이벤트를 삭제하거나 변경하면 영상과 같은 결과를 비교할 수 없습니다.

### 영상과 동일한 로그 원본 직접 복사

각 코드 블록의 **복사 아이콘**으로 모든 내용을 복사한 다음 Parser Studio에 붙여 넣으세요. 각 줄은 하나의 원본 이벤트이며 영상과 같은 결과를 재현하기 위해 수정하지 마세요.

#### Snort 3 원본 alert\_fast 1건 — Add Logs에 붙여 넣기

**원본 크기:** 225 bytes · **파일명:** `03-snort-alert.log` · 영상과 같은 이벤트 줄 수를 유지합니다.

```text theme={null}
07/16-09:23:39.153899 [**] [1:1000000:0] "SERVER-WEBAPP Apache Log4j arbitrary code execution attempt" [**] [Classification: Attempted User Privilege Gain] [Priority: 1] [AppID: HTTP] {TCP} 192.168.1.2:50284 -> 192.168.2.3:80
```

#### Snort 추가 검증 2건 — Add Logs가 아닌 Additional test logs에 붙여 넣기

**원본 크기:** 342 bytes · **파일명:** `03-snort-holdout.log` · 영상과 같은 이벤트 줄 수를 유지합니다.

```text theme={null}
07/16-09:23:39.153899 [would_drop] [**] [1:1000000:0] "SERVER-WEBAPP Apache Log4j arbitrary code execution attempt" [**] [Classification: Attempted User Privilege Gain] [Priority: 1] {TCP} 192.168.1.2:50284 -> 192.168.2.3:80
06/25-00:23:53.106340 [**] [1:1000001:1] "LOCAL UDP test" [**] [Priority: 0] {UDP} 127.0.0.1:34392 -> 127.0.0.1:31337
```

#### 선택: 영상에서 사용한 검토용 ParserRecipe JSON

이 JSON은 **교육용 규칙 제안**이며 자동으로 신뢰하거나 적용해서는 안 됩니다. 원본 이벤트 한 건으로 분석한 다음 별도 로그 2건으로 테스트하고 명시적으로 승인하세요.

검토용 JSON 파일 다운로드: [03-snort-reviewed-recipe.json](https://app.parser.xdr.ooo/training/parser-studio-real-scenarios-20261021/practice/03-snort-reviewed-recipe.json).

```json theme={null}
{
  "contract": "parser-studio.recipe.v0.2",
  "schemaRevision": "0.2",
  "compilerMode": "REVIEW_ONLY",
  "projectId": "draft-snort_snort_3",
  "sourceFormat": "regex",
  "bodyFormat": "regex",
  "sample": {
    "sha256": "a3e78f6e4660338664eae29c4be53f5714eebfb2f0d38f84ba1aad0224226cc4",
    "events": 1
  },
  "stages": [
    {
      "op": "split_event",
      "boundary": "single-line"
    },
    {
      "op": "parse_regex",
      "pattern": "^(?<raw_event>.*?(?:\\[Classification: (?<classification>[^\\]]+)\\] )?\\[Priority: (?<priority>\\d+)\\](?: \\[AppID: (?<appid>[^\\]]+)\\])? \\{(?<protocol>\\w+)\\} (?<srcendpoint>[\\d.]+:\\d+) -> (?<dstendpoint>[\\d.]+:\\d+))$"
    },
    {
      "op": "map_field",
      "source": "raw_event",
      "target": "raw_event",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "classification",
      "target": "classification",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "priority",
      "target": "priority",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "appid",
      "target": "appid",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "protocol",
      "target": "protocol",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "srcendpoint",
      "target": "srcendpoint",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "map_field",
      "source": "dstendpoint",
      "target": "dstendpoint",
      "group": "vendor_fields",
      "data_type": "string"
    },
    {
      "op": "classify",
      "defaultIndex": "syslog",
      "rules": []
    },
    {
      "op": "fallback_unparsed",
      "mode": "retain_unparsed"
    }
  ],
  "nativeVerified": false,
  "targetVerified": false
}
```

## 2026년 10월 31일 화면에서 따라 하기

1. **Auto Parser**에서 `Snort` / `Snort 3`을 입력하고 원본 알림 한 줄만 붙여 넣습니다.
2. **Analyze Logs** 결과에서 **0 of 1 log event parsed completely**를 확인하고 원문을 유지합니다.
3. **Fix with ChatGPT**를 선택합니다. **Prepare ChatGPT Prompt**와 **Copy Prompt**를 사용하기 전에 외부 공유될 원본 로그 내용을 검토합니다.
4. 새 영상은 실제 프롬프트 준비·검토까지만 보여줍니다. 외부 AI가 자동으로 답변하거나 파서를 생성했다고 주장하지 않습니다. 직접 받은 응답은 **ChatGPT result JSON**에 붙여 넣고 **Check ChatGPT Result**를 클릭합니다.
5. 다른 검증 샘플을 **Different examples to test the fix**에 넣고 **Confirm test examples are different**를 체크해 검증합니다. 결과가 검증되지 않으면 적용하지 않습니다.

## 예상 결과

최신 동영상에서는 0/1 초기 분석과 **ChatGPT 프롬프트 수동 준비**까지 확인합니다. AI 결과의 검증 및 최종 파일 생성은 직접 별도의 검증 샘플로 수행해야 하며, 영상에서 성공했다고 주장하지 않습니다.

## 영상 구간 (2026년 10월 31일 신규 녹화)

| 시간 | 실제 화면 단계 |
| - | - |
| 00:01 | Unknown Format |
| 00:07 | Set Product Identity |
| 00:12 | Paste Alert |
| 00:16 | Run Analysis |
| 00:21 | Do Not Guess |
| 00:27 | Open Chatgpt Assistance |
| 00:32 | Copy Prompt Manually |
| 00:39 | Check Independent Samples |
| 00:45 | Verify Before Apply |

*실제 재녹화 영상에서 측정한 구간입니다. 이전 영상의 메뉴는 포함하지 않습니다.*

## 복구 방법

지원하지 않는 JSON이나 실행 가능한 코드가 생성되면 적용하지 마세요. 기존 추출 값 보존 및 독립 로그 검증을 반드시 통과해야 합니다.

## 원본 출처

* [Snort 3 공식 Alert Logging 문서](https://docs.snort.org/start/alert_logging)
* [추가 공개 Snort 테스트 로그](https://www.simplified.guide/snort/alert-log-view)

> [!WARNING]
>
> 샘플 파싱이나 파서 파일 생성은 실제 Stellar Cyber 환경에 설치하거나 수신을 확인한 결과가 아닙니다. 원본 고객 로그를 ChatGPT로 수동 복사할 때에는 민감 정보를 검토하고 마스킹하세요.

[한국어 영상 목록](https://parser.xdr.ooo/ko/videos/index.md) · [영문 안내](https://parser.xdr.ooo/videos/unknown.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.