본문 바로가기

AI 활용 종합실습

우리는 앞에서 배운 1장 ~ 5장의 내용을 종합하여 하나의 자동화된 모의해킹 흐름을 만들어 볼 것입니다.

법·윤리 주의

이번 회차의 표적도 본인이 직접 띄운 서버 단 하나입니다. 외부 도메인, 학교·회사 IP 대역, 클라우드 인스턴스 IP를 표적으로 같은 스크립트를 돌리는 순간 명백한 위법입니다.

팀 편성

가능하면 실무 경험이 있으신 분이 한 분, 학생이 한 분씩 섞이셨으면 좋겠습니다. 만약 팀이 구성이 안되면 개인 프로젝트로 진행을 하겠습니다.

  • 발표는 팀 또는 개인으로 진행합니다. 따로 발표자료 없이 라이브 데모로 진행하며, 마크다운으로 발표합니다. 발표 시간은 10분입니다.
  • 발표는 자유롭게 진행하고 싶으신 분이 진행하는 것으로 하겠습니다. 9시부터 발표 진행하겠습니다. 다만 지원자가 없으면 발표를 지정하도록 하겠습니다.
  • 최종 결과물은 마크다운 파일 1개를 '종합실습-결과물' 채팅방에 '압축하여' 업로드 해주세요. 텍스트가 아니라 파일로 올려주시면 됩니다. 마크다운 파일 등 산출물 압축해서 주시면 됩니다. 마크다운 안에 모든 코드가 다 있기 때문에 마크다운 파일 하나만 올리셔도 됩니다.

1. 이번 회차가 달성하려는 것

종합 실습의 목표를 단 한 문장으로 줄이면 다음과 같습니다.

모의 서버 한 대를 향해 AI를 활용하여 "정보 수집 → 취약점 분석 → 공격 → 보고서 생성" 절차를 경험해본다.

필요하다면 AI를 활용하여 도구를 더 만들어도 좋지만 가능하면 이미 만든 도구들을 이어 붙이고 자동화하는 파이프라인까지 완성하는 것을 권장드립니다.

2. 해킹 시나리오를 머메이드로 그리기

자동화에 앞서, 사람이 머릿속에서 무엇을 시도할지를 먼저 시각화합니다. 시나리오 다이어그램에서 보고 싶은 것은 다음 네 가지입니다.

  1. 어떤 페르소나로 공격하는가
  2. 어떤 표적을 노리는가
  3. 어떤 순서로 무엇을 시도하는가
  4. 어디까지 가면 시나리오 성공인가

이 네 가지를 mermaid sequence diagram 한 장에 담아봅니다. 아래는 참고용 골격이고, 실제 흐름과 박스 안의 동작은 본인 시나리오에 맞춰 자유롭게 다듬어도 좋습니다.

각 Phase의 박스 안에 들어갈 구체적인 동작과 산출물의 이름은 팀이 정하면 됩니다. 한 박스가 한 함수가 되고 한 화살표가 한 호출이 되도록 다이어그램을 그려두면, 자동화 코드의 골격은 절반 이상 결정됩니다.

프로브(probe)가 뭔가요

프로브는 표적이 특정 취약점을 가지고 있는지 가볍게 찔러서 확인하는 작은 점검 모듈입니다. 의사가 환부를 손으로 톡톡 눌러 반응을 보는 것처럼, 표적에 특정 입력을 한 번 보내고 응답으로 취약 신호를 판단합니다. 본격 공격(exploit)이 아니라 그 직전 단계의 탐지 신호 수집입니다.

이 챕터에서 만드는 세 프로브는 이런 역할입니다.

  • sqli_probe: ?id=1' 같은 페이로드를 보내고, 응답에 SQL 에러 메시지나 UNION 결과가 보이면 "여기 SQL 인젝션 가능성 있음"으로 표시
  • xss_probe: <script> 같은 입력을 보내고, 그 문자열이 응답 HTML에 그대로 반사되면 "여기 XSS 가능성 있음"으로 표시
  • csrf_probe: 폼 페이지를 가져와서 CSRF 토큰이 있는지, SameSite 쿠키 설정이 어떤지 확인

프로브의 산출물은 vulnerable: true/false와 그 근거(evidence)입니다. Phase 3의 공격(PoC)은 이 프로브가 true로 표시한 지점에만 시도합니다.

3. AI 기반 취약점 탐지 자동화 파이프라인 그리기

같은 시나리오를 데이터 흐름의 관점에서 다시 그립니다. 사람이 무엇을 시도하는가가 아니라, 어떤 데이터가 어디로 흘러서 무엇이 되는가를 봅니다. 이 그림은 자동화 파이프라인의 청사진이 됩니다.

이 그림에서 두 개의 박스가 특별한 위치를 차지합니다.

  • 정규화: 서로 다른 프로브가 만든 결과들을 하나의 공통 JSON 스키마로 합칩니다. 이렇게 하지 않으면 AI가 받아 보는 데이터가 뒤죽박죽이라 보고서 품질이 무너집니다.
  • 사람 검토: AI가 생성한 보고서는 자동 산출물이 아니라 초안입니다. 사람이 검토하지 않은 보고서를 외부에 내보내는 순간 책임 소재가 모호해집니다.

4. 실습 디렉터리와 단계별 코드

폴더 구조, 파일 이름, 함수 시그니처는 모두 자유롭게 정해도 됩니다. 다만 다음 세 가지 원칙은 지켜주세요.

  1. 이전 회차의 코드를 끌어다 쓴다: 03-2 / 03-3 / 03-4에서 만든 코드들을 함수 한두 개로 압축해 옮겨오는 것이 이번 회차의 출발점입니다. AI를 활용해 새로 짜더라도 이 코드가 기반이 되게 해주세요.
  2. 프로브들은 같은 모양으로 만든다: SQLi든 XSS든 CSRF든, 입력은 베이스 URL, 출력은 JSON 직렬화 가능한 dict 리스트가 되도록 통일합니다. 이 균일성이 정규화 단계를 한 줄로 만들어줍니다.
  3. 한 줄 실행이 가능해야 한다: 정보 수집부터 보고서 생성까지가 한 번의 명령으로 흘러가야 합니다. 명령어 이름은 자유지만, 시연 직전에 결과 폴더를 비우고 처음부터 굴리는 모습을 보여줄 수 있어야 합니다.

각 단계에서 만들어야 하는 것은 다음과 같습니다. 코드 형태는 본인이 정합니다.

  • Phase 1, 정보 수집: 표적의 페이지 인벤토리와 응답 헤더, 페이지 길이를 한 번에 모아 구조화된 데이터로 떨어뜨립니다.
  • Phase 2, 프로브: SQLi / XSS / CSRF 각각에 대해 페이로드를 보내고, 응답에서 취약 신호를 뽑아냅니다. vulnerable: true/false와 그 근거(evidence)를 반드시 함께 남깁니다.
  • Phase 3, 정규화: 세 프로브의 결과를 한 파일로 모읍니다. 공통 키 다섯 개(check, vulnerable, evidence, payload, status)를 강제하면 다음 단계의 AI 입력 품질이 크게 올라갑니다.
  • Phase 4, AI 보고서: 정규화된 결과와 정보 수집 결과를 묶어 Claude에게 한국어 마크다운 보고서를 부탁합니다. API를 직접 호출해도 좋고, 같은 프롬프트를 Claude 웹에 붙여 넣어도 무방합니다. 핵심은 요약 텍스트만 LLM에 보낸다는 점입니다.

5. 제출 문서 양식

발표 전에 팀당 마크다운 한 파일을 제출합니다. 이 한 파일이 시나리오, 다이어그램, 데모 절차, 공격 코드, 보고서를 모두 담는 단일 산출물입니다. 파일 이름과 위치는 자유고, 아래 양식을 그대로 복사해 채워 넣으세요. 양식은 자유롭게 수정하셔도 됩니다.

# [팀명] 종합 실습 보고서

* 팀 구성원: (예: 홍길동, 김철수)

## 1. 시나리오

- 내용

## 2. 다이어그램

- 내용 (sequence diagram, flowchart)

## 3. 대상 서버

- 내용

```python
# 내용
```

## 4. 공격 코드

- 내용

### 4.1 정보 수집

```python
# 내용
```

### 4.2 프로브

```python
# 내용
```

### 4.3 정규화

```python
# 내용
```

### 4.4 AI 보고서 호출

```python
# 내용
```

## 5. 보고서 (AI 초안 + 사람 검토)

### 5.1 요약

(3~5줄)

### 5.2 표적 정보

(recon에서 의미 있는 항목만)

### 5.3 탐지된 취약점

| 항목 | 증거 | 심각도 |
|------|------|--------|
| ... | ... | ... |

### 5.4 권장 조치

- **코드 수준**: ...
- **인프라 수준**: ...

### 5.5 한계와 다음 단계

- 내용

## 6. AI 사용 기록

- 내용

6. 발표: 10분짜리 데모 시나리오

작성된 마크다운, 머메이드 다이어그램, 그리고 라이브 데모로 발표를 진행합니다. 발표는 팀 단위로 진행하며, 따로 발표자료 없이 라이브 데모로 진행합니다. 발표 시간은 10분입니다.