📄 2026.01.21 (Day 60) - Security Onion IDS/IPS 및 SQLMap 공격 탐지 실전
1. 핵심 개념 정리
IDS/IPS 기초 개념
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 1 | IDS | Intrusion Detection System, 침입 탐지 시스템 | 네트워크 또는 호스트 기반으로 비정상 활동을 탐지하여 알림 |
| 2 | IPS | Intrusion Prevention System, 침입 방지 시스템 | IDS 기능에 더해 실시간으로 공격 패킷을 차단 |
| 3 | Inline Mode | IPS가 네트워크 경로 중간에 위치하여 트래픽 통제 | 차단 기능 수행 가능하나 장애 시 전체 네트워크 영향 |
| 4 | Mirror Mode | 트래픽 복사본을 받아 분석하는 수동 모니터링 방식 | 탐지만 가능하며 실시간 차단 불가 |
| 5 | Snort | 오픈소스 기반 네트워크 침입 탐지/방지 시스템 | 시그니처 기반 룰셋으로 알려진 공격 패턴 탐지 |
Security Onion 플랫폼
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 6 | Security Onion | Snort/Suricata 기반 통합 네트워크 보안 모니터링 플랫폼 | IDS, 전체 패킷 캡처, 로그 분석을 하나의 시스템에 통합 |
| 7 | Sguil | Security Onion의 이벤트 분석 GUI 도구 | 실시간 알림 확인 및 패킷 상세 분석 가능 |
| 8 | Suricata | Snort의 후속 IDS 엔진, 멀티스레드 지원 | 고성능 환경에서 Snort 대비 우수한 성능 |
| 9 | tcpreplay | PCAP 파일을 네트워크 인터페이스로 재생 | 과거 트래픽으로 IDS 룰 테스트 및 검증 |
| 10 | Rule Update | IDS 규칙 파일 변경 후 엔진 재시작 없이 적용 | rule-update 명령으로 신규 룰 즉시 반영 |
웹 취약점 스캐닝
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 11 | OWASP ZAP | Zed Attack Proxy, 웹 애플리케이션 취약점 스캐너 | 자동/수동 스캔으로 OWASP Top 10 취약점 진단 |
| 12 | Spider | 웹 사이트 구조를 크롤링하여 사이트 맵 생성 | 모든 페이지와 파라미터 자동 수집 |
| 13 | Active Scan | 실제 공격 페이로드를 전송하여 취약점 탐지 | SQL Injection, XSS 등 능동적 진단 |
| 14 | Passive Scan | 트래픽 관찰만으로 취약점 힌트 탐지 | 서비스 영향 없이 안전하게 정보 수집 |
| 15 | DVWA | Damn Vulnerable Web Application, 의도적 취약점 실습 환경 | 웹 공격 실습 및 방어 기법 학습용 |
2. 실습 내용 정리
실습 1-1: Security Onion 설치 및 초기 설정
목표: VMware 기반 Security Onion 16 환경 구축
실습 환경:
- VMware Workstation, Security Onion 16 ISO
- CPU 4코어, RAM 8GB, Disk 100GB
실습 단계:
- VMware 가상머신 생성: Custom > Linux/Ubuntu 64-bit > 4코어, 8192MB, NAT, 100GB SCSI
- ISO 마운트 및 설치 진행
- 설치 완료 후 ip addr show 로 네트워크 인터페이스 확인
- Sguil 접속 테스트
- IDS 정상 작동 테스트: curl http://testmynids.org/uid/index.html 후 Sguil에서 알림 확인
보안 인사이트:
- IDS 구축 시 인라인 모드는 네트워크 장애 위험이 있어 미러 모드로 먼저 검증 필요
- Security Onion은 Snort/Suricata 외에도 Bro, OSSEC 등 다양한 도구 통합
- 초기 룰셋은 보수적으로 설정하여 오탐지 최소화 후 점진적 강화
실습 1-2: PCAP 파일을 이용한 IDS 룰 검증
목표: 과거 트래픽을 재생하여 IDS 탐지 능력 확인
실습 단계:
- 네트워크 인터페이스 확인: ip addr show
- PCAP 파일을 Security Onion으로 scp 전송
- tcpreplay로 트래픽 재생: sudo tcpreplay –intf1=ens33 /tmp/2015-08-31-traffic-analysis-exercise.pcap (367초 소요)
- Sguil에서 AlphaCrypt/TeslaCrypt C2 통신, Evil Redirector, Vulnerable Java 등 이벤트 확인
- 특정 이벤트 우클릭 > Transcript 또는 Wireshark로 상세 분석
실습 2-1: OWASP ZAP을 이용한 DVWA 취약점 스캔
목표: 웹 애플리케이션 자동 취약점 진단 수행
실습 환경:
- Windows 10 (ZAP 설치), Metasploitable2 (DVWA 호스팅)
- DVWA Security Level: Low
실습 단계:
- ZAP 실행, 프록시 포트 8080 설정
- DVWA 로그인 후 Security Level을 “Low"로 설정 (모든 보안 메커니즘 비활성화)
- Spider로 vulnerabilities 디렉토리 하위 모든 페이지 자동 발견
- Active Scan 실행 후 High/Medium/Low 취약점 확인
- 스캔 전 웹 로그 초기화 후 access.log 분석으로 ZAP 공격 패턴 확인
실습 2-2: SQLMap을 이용한 SQL Injection 자동화 공격
목표: Kali Linux에서 SQLMap으로 DVWA SQL Injection 취약점 자동 공격
실습 환경:
- Kali Linux (공격자), Metasploitable2 DVWA (피해자)
- Security Level: Low
실습 단계:
- DVWA SQL Injection 페이지 접속 (User ID 입력란에 “1” 입력)
- F12(개발자 도구) > Application > Cookies 에서 PHPSESSID와 security 쿠키 값 복사
- Kali Linux에서 SQLMap으로 기본 취약점 테스트:
- sqlmap -u “http://192.168.x.x/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" –cookie=“PHPSESSID=abcd1234; security=low”
- 결과: Parameter ‘id’ is vulnerable. Injection type: UNION query
- 현재 데이터베이스 이름 확인 (–current-db 옵션): 결과 - current database: ‘dvwa’
- 데이터베이스 내 테이블 목록 조회 (-D dvwa –tables): guestbook, users 테이블 발견
- users 테이블 데이터 전체 덤프 (-D dvwa -T users –dump):
- user_id, first_name, last_name, user, password(해시), avatar 등 출력
- 예시: admin / admin / 5f4dcc3b5aa765d61d8327deb882cf99 (MD5 해시)
SQLMap 자동화 공격 과정:
- 취약점 탐지: 다양한 SQL Injection 페이로드 자동 전송 (UNION, Boolean-based, Time-based 등)
- 데이터베이스 핑거프린팅: 응답 시간, 에러 메시지 분석으로 DBMS 종류 파악 (MySQL, PostgreSQL 등)
- 데이터 추출: UNION SELECT를 이용한 데이터베이스 정보 수집
- 자동 파싱: 테이블, 컬럼, 데이터를 구조화하여 출력
발견 가능한 민감 정보:
- 사용자 계정 정보 (ID, 패스워드 해시)
- 개인정보 (이름, 이메일 등)
- 데이터베이스 구조 (테이블명, 컬럼명)
- 시스템 정보 (DBMS 버전, OS 정보)
방어 방법:
- Prepared Statement (파라미터화된 쿼리) 사용 필수
- 입력값 화이트리스트 기반 검증
- 최소 권한 원칙 (DB 계정 권한 제한)
- WAF 룰셋으로 SQL Injection 패턴 차단
- 에러 메시지 노출 차단 (프로덕션 환경)
실습 2-3: AI를 활용한 취약점 분석 보고서 작성
목표: ZAP 스캔 결과를 체계적인 보고서로 변환
실습 단계:
- ZAP 리포트 생성: Report > Generate HTML Report
- 리포트 파일을 AI에게 업로드
- AI 프롬프트: 발견된 취약점 요약(High/Medium/Low), 기술적 상세 설명, 공격 시나리오, 권장 조치사항, 위험도 평가
- 생성된 보고서 검토 및 수정
실습 3-1: Snort 룰 작성 기초
목표: 사용자 정의 탐지 규칙 작성 및 적용
기본 규칙 예시:
- alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“Snort Test Rule”; content:"/etc/passwd”; nocase; sid:3202411200; rev:1;)
룰 적용:
- sudo rule-update (룰 문법 검증 및 적용)
- 오류 발생 시: sudo nsm –sensor –restart –only-snort-alert
실습 3-2: PCRE 정규표현식을 활용한 고급 룰 작성
실전 PCRE 룰 예시:
예제 1: SQL Injection 탐지
- alert tcp any any -> any 80 (msg:“SQL Injection Attempt - UNION SELECT”; pcre:"/union\s+select/Ui”; flow:to_server,established; sid:3202411201; rev:1;)
예제 2: 신용카드번호 유출 탐지
- alert tcp any any -> any any (msg:“Possible Credit Card Number Leak”; pcre:"/[0-9]{4,}/"; sid:3202411202; rev:1;)
예제 3: HTTP 응답 코드 탐지
- alert tcp any 80 -> any any (msg:“HTTP Response 200 or 404”; pcre:"/(200|404)/S"; flow:from_server,established; sid:3202411203; rev:1;)
실습 3-3: 실전 시나리오 - SQLMap 공격 탐지 및 대응
목표: Kali의 SQLMap 공격을 Security Onion으로 실시간 탐지
실습 환경:
- Kali Linux (공격자), Metasploitable2 DVWA (피해자, Security Level: Low)
- Security Onion (탐지 시스템)
Security Onion에서 커스텀 룰 작성:
SQLMap User-Agent 탐지:
- alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:“SQLMap Automatic SQL Injection Tool Detected”; flow:to_server,established; content:“User-Agent|3a| sqlmap/”; nocase; http_header; classtype:web-application-attack; sid:3202501210; rev:1; reference:url,sqlmap.org;)
UNION SELECT 패턴 탐지:
- alert tcp any any -> any $HTTP_PORTS (msg:“SQL Injection - UNION SELECT Pattern”; flow:to_server,established; content:“union”; nocase; http_uri; content:“select”; nocase; distance:0; within:20; http_uri; pcre:"/union\s+select/Ui"; classtype:web-application-attack; sid:3202501211; rev:1;)
Boolean Based Blind 탐지:
- alert tcp any any -> any $HTTP_PORTS (msg:“SQL Injection - Boolean Based Blind”; flow:to_server,established; pcre:"/(' OR 1=1–|AND 1=1)/Ui"; http_uri; classtype:web-application-attack; sid:3202501212; rev:1;)
Kali에서 SQLMap 공격 실행:
- sqlmap -u “http://192.168.x.x/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" –cookie=“PHPSESSID=abcd1234; security=low” –current-db
Sguil에서 실시간 탐지 이벤트 확인:
- “SQLMap Automatic SQL Injection Tool Detected” (sid:3202501210)
- “SQL Injection - UNION SELECT Pattern” (sid:3202501211)
- “SQL Injection - Boolean Based Blind” (sid:3202501212)
이벤트 분석:
- 이벤트 우클릭 > Transcript 로 HTTP 요청 전문 확인
- Wireshark로 전체 TCP 스트림 재구성하여 공격 전 과정 확인
- 로그에서: GET /dvwa/vulnerabilities/sqli/?id=1’ UNION SELECT null,null– HTTP/1.1, User-Agent: sqlmap/1.7.2#stable 확인
공격 -> 탐지 -> 분석 -> 대응 흐름:
- 공격 발생 (Kali SQLMap 실행): HTTP GET 요청에 SQL Injection 페이로드 포함
- IDS 탐지 (Security Onion Snort): 커스텀 룰에 매칭되어 Alert 생성
- 이벤트 확인 (Sguil): 보안 분석가가 실시간 알림 확인
- 상세 분석 (Wireshark, 로그): 공격 벡터, 페이로드, 피해 범위 파악
- 대응 조치 (차단, 패치): IP 차단, 취약점 제거, 로그 보관
발견 가능한 탐지 이벤트:
- User-Agent에 “sqlmap” 문자열 (자동화 도구 시그니처)
- URI에 “union select” 패턴 (UNION 기반 공격)
- Boolean-based 페이로드 (’ OR 1=1–, AND 1=1 등)
- 짧은 시간 내 동일 IP에서 수백 개 요청 (자동화 특징)
보안 인사이트:
- SQLMap은 User-Agent를 위조할 수 있으므로 페이로드 패턴 탐지가 더 중요
- DVWA Security Level Low는 의도적으로 모든 방어 기능 비활성화 상태
- 실무에서는 WAF와 IDS를 함께 운영하여 다층 방어
- Snort 커스텀 룰은 조직의 특수한 위협에 맞춤 대응 가능
3. Snort 룰 문법 비교표
Action 타입 비교
| 항목 | 기능 | 로그 기록 | 패킷 차단 | 사용 시기/적용 방안 |
|---|---|---|---|---|
| alert | 알림 생성 | O | X | 탐지만 필요한 경우, 대부분의 IDS 운영 |
| log | 로그만 기록 | O | X | 통계 수집용, 오탐지 검증 단계 |
| pass | 무시 | X | X | 화이트리스트, 특정 트래픽 예외 처리 |
| drop | 차단 및 기록 | O | O (Inline) | IPS 모드, 명확한 악성 트래픽 |
| reject | 차단 + RST 전송 | O | O (Inline) | TCP 공격 즉시 차단, ICMP unreachable 응답 |
| sdrop | 조용히 차단 | X | O (Inline) | 스텔스 차단, 로그 부하 감소 |
IP 주소 지정 방법
| 문법 | 설명 | 예시 | 적용 방안 |
|---|---|---|---|
| any | 모든 IP | any | 프로토콜 전체 모니터링 |
| 특정 IP | 단일 호스트 | 192.168.1.100/32 | 중요 서버 타겟팅 |
| 네트워크 대역 | CIDR 표기 | 192.168.1.0/24 | 내부망 전체 |
| ! (부정) | 제외 | !192.168.1.0/24 | 특정 대역 제외 |
| $변수 | 사전 정의 변수 | $HOME_NET, $EXTERNAL_NET | 설정 파일에서 중앙 관리 |
4. 심화 분석
IDS 이벤트 분석 - 실제 케이스
| 구분 | Event 내용 | 시그니처 | 위협 분석 | 대응 방안 |
|---|---|---|---|---|
| Event 3.1394 | Possible Evil Redirector Leading to EK | 64.20.39.203 -> 192.168.137.239:80 | Exploit Kit으로 리디렉션하는 중간 매개 공격 | 출발지 IP 평판 조회 후 차단, 엔드포인트 검사 |
| Event 3.1400 | AlphaCrypt CnC Beacon | 192.168.137.239 -> 72.55.148.19:80 | 랜섬웨어 C2 서버 통신 | 즉시 네트워크 차단, 파일 복구 불가 |
| Event 3.1404 | Vulnerable Java Version 1.8.x Detected | 192.168.137.239 -> 23.60.139.27:80 | 취약한 Java 플러그인 사용 | Java 업데이트 또는 브라우저 플러그인 차단 |
| Event 3.1408 | AlphacryptTeslaCrypt Ransomware CnC Response | 72.55.148.19:80 -> 192.168.137.239 | C2 서버로부터 암호화 키 수신 | 호스트 즉시 격리, 침해사고 대응팀 투입 |
PCRE 정규표현식 연습 문제 풀이
- pcre:"/a.a/” -> 정답: aTa (. 은 임의의 한 문자)
- pcre:"/(one|two) apple/" -> 정답: one apple (| 는 OR 연산)
- pcre:"/boan?/" -> 정답: boan, boa (? 는 0회 또는 1회)
- pcre:"/project/" -> 정답: project, prject ( 는 0회 이상)
- pcre:"/[A-Z]{3}/" -> 정답: ABC (대문자 3개 연속)
- 숫자 9가 4개 이상: pcre:"/9{4,}/"
- pcre:"/bo{2,4}an/" -> 정답: booan (o가 2~4개)
- 200 또는 404 응답 코드: pcre:"/(200|404)/S"
- 요청 헤더에서 select: pcre:"/select/Hi"
5. 실무/보안 적용
SOC 분석가 관점 - IDS 이벤트 대응 포인트
| 단계/유형 | 탐지 포인트 | 로그 예시 | 대응 방안 |
|---|---|---|---|
| 초기 탐지 | IDS 알림 발생, 이벤트 심각도 확인, 출발지/목적지 IP 식별 | ET TROJAN AlphaCrypt CnC Beacon, Src: 192.168.137.239 | 이벤트 상세 정보 확인, Wireshark로 패킷 분석, 위협 인텔리전스 조회 |
| 영향 범위 파악 | 동일 출발지 IP의 다른 이벤트, 시간대별 활동 패턴 | 192.168.137.239 -> Multiple External IPs | 해당 호스트 네트워크 격리, 공격 타임라인 재구성 |
| 침해 확인 | C2 응답 성공 여부, 악성 파일 다운로드 | HTTP/1.1 200 OK, PE EXE Download Detected | 호스트 즉시 차단, 포렌식 이미징, KISA 침해사고 신고 준비 |
Snort 룰 작성 베스트 프랙티스
기본 구조 템플릿:
- alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"[카테고리] 공격명"; flow:to_server,established; content:“악성패턴”; nocase; http_uri; pcre:"/정규표현식/Ui"; classtype:trojan-activity; sid:3YYYYMMDD##; rev:1;)
HTTP 특화 탐지 (SQL Injection in URI):
- alert tcp any any -> any $HTTP_PORTS (msg:“SQL Injection in URI”; flow:to_server,established; content:“union”; nocase; http_uri; content:“select”; nocase; distance:0; within:20; http_uri; sid:3202501201; rev:1;)
다단계 탐지 (Webshell Upload Attempt):
- alert tcp any any -> any 80 (msg:“Webshell Upload Attempt”; flow:to_server,established; content:“POST”; http_method; content:“Content-Type”; http_header; content:“multipart/form-data”; http_header; distance:0; content:".php"; http_client_body; nocase; sid:3202501202; rev:1;)
IDS/IPS 운영 체크리스트
룰셋 관리:
- 일일 룰셋 업데이트 (ET Open, Snort VRT)
- 커스텀 룰 테스트 환경 검증 후 프로덕션 적용
- 주간 오탐지 룰 검토 및 튜닝
- 월간 룰 히트율 분석 및 불필요 룰 제거
이벤트 대응:
- High 심각도 이벤트 즉시 알림 (SMS, 이메일)
- Medium 이벤트 시간당 집계 리포트
- 동일 이벤트 반복 발생 시 자동 티켓 생성
- 주간 TOP 10 이벤트 분석 리포트
6. 배운 점 및 인사이트
새로 알게 된 점
- Security Onion의 통합 플랫폼 강점: Snort, Suricata, Bro, OSSEC, Sguil 등을 하나의 시스템에서 운영하여 침해사고 분석 효율 극대화
- SQLMap의 강력함과 위험성: 단 몇 줄의 명령어로 DB 전체 정보를 자동 탈취할 수 있어, SQL Injection 방어가 얼마나 중요한지 체감
- DVWA Security Level의 교육적 가치: Low/Medium/High로 단계적 방어 수준 조정하며 각 보안 통제의 효과 직접 확인 가능
- Snort 룰의 계층적 구조: content로 1차 필터링 후 pcre로 정밀 탐지하는 방식이 성능과 정확도 균형
- 실시간 공격-탐지 연동의 중요성: Kali의 SQLMap 공격을 Security Onion이 실시간 탐지하는 과정을 직접 보며 IDS의 실전 가치 확인
이전 학습과의 연결고리
- Wireshark 패킷 분석 확장: 수동 분석을 넘어 IDS로 자동화된 대규모 트래픽 모니터링 체계 구축
- 웹쉘 공격 탐지 연계: 이전에 학습한 웹쉘 업로드 패턴을 Snort 룰로 작성하여 실시간 탐지
- ISMS-P 기술적 보호조치 실현: IDS/IPS는 침입 탐지 및 대응 요구사항의 핵심 기술적 통제 수단
실무 적용 아이디어
SOC 분석가 관점:
- 계층적 탐지 체계 구축: Snort(시그니처) + Suricata(프로토콜 이상) + SIEM(상관분석)으로 다층 방어
- 위협 헌팅 워크플로우: IDS 이벤트를 트리거로 Wireshark 상세 분석 -> 위협 인텔리전스 조회 -> 커스텀 룰 작성
- False Positive 관리 프로세스: 오탐지 룰은 별도 파일로 분리하고 suppression list로 관리
보안 컨설턴트 관점:
- 취약점 진단 자동화: ZAP을 CI/CD 파이프라인에 통합하여 코드 배포 전 자동 스캔
- 맞춤형 룰셋 개발: 고객 환경의 특수한 공격 벡터를 Snort 룰로 제작하여 제공
7. Quick Reference
Snort 룰 관리 명령어
- sudo nano /etc/nsm/rules/local.rules (룰 파일 편집)
- sudo rule-update (룰 적용, 문법 검증 포함)
- sudo nsm –sensor –restart –only-snort-alert (Snort 재시작)
- snort -c /etc/nsm/templates/snort/snort.conf -T (룰 문법 수동 검증)
- snort -c /etc/nsm/templates/snort/snort.conf -r test.pcap -A console (PCAP 파일로 룰 테스트)
Snort 룰 옵션 요약표
| 구분 | 항목 | 핵심 키워드 | 주요 내용 | 적용 방법 |
|---|---|---|---|---|
| 일반 | msg | 메시지 | 알림 이벤트 제목 | msg:“공격 설명”; |
| sid | 시그니처 ID | 규칙 고유 번호 (300만 이상) | sid:3202501201; | |
| classtype | 분류 | 공격 유형 분류 | classtype:trojan-activity; | |
| 흐름 | flow | 방향/상태 | 트래픽 방향 및 세션 상태 | flow:to_server,established; |
| 페이로드 | content | 문자열 | 탐지할 패턴 | content:“악성문자열”; |
| nocase | 대소문자 | 대소문자 무시 | nocase; | |
| pcre | 정규표현식 | PCRE 패턴 매칭 | pcre:"/pattern/Ui"; | |
| HTTP | http_uri | URI | 요청 경로 | http_uri; |
| http_header | 헤더 | 요청/응답 헤더 | http_header; |
PCRE 정규표현식 치트시트
메타문자: (이스케이프), ^(문자열 시작), $(문자열 끝), .(임의의 한 문자), |(OR 연산), ?(0회 또는 1회), *(0회 이상), +(1회 이상)
수량자: {n}(정확히 n개), {n,}(n개 이상), {n,m}(n개 이상 m개 이하)
클래스: [abc](a,b,c 중 하나), a-z, A-Z, 0-9, [^0-9](숫자 아닌 것)
PCRE 옵션: /i(대소문자 무시), /U(URI 정규화), /H(HTTP 헤더), /P(HTTP 본문), /S(HTTP 상태 코드)
8. 트러블슈팅
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| rule-update 실패 “Syntax Error” | 룰 문법 오류, 괄호 누락, 세미콜론 빠짐 | 오류 메시지에서 라인 번호 확인, 괄호 쌍 점검, snort -T 로 상세 오류 확인 |
| Sguil에서 이벤트가 안 보임 | Snort 프로세스 중지, 네트워크 인터페이스 미설정 | ps aux 로 프로세스 확인, ip addr show 인터페이스 점검, nsm –sensor –restart |
| tcpreplay 실행 안 됨 | 인터페이스명 오류, 권한 부족 | ip addr 로 인터페이스명 확인, sudo 권한으로 실행 |
| ZAP 스캔 시 타겟 서버 무응답 | 과도한 요청으로 서버 과부하 | Scan Policy에서 스레드 수 감소, 스캔 속도 조절 |
Today’s Insight:
IDS/IPS는 단순히 룰셋을 적용하는 것을 넘어, 지속적인 튜닝과 분석가의 전문성이 결합되어야 효과를 발휘한다는 것을 깨달았습니다. 오늘 Kali에서 SQLMap으로 공격하고 Security Onion에서 직접 작성한 Snort 룰로 실시간 탐지하는 전 과정을 경험하며, 이론과 실전의 간극을 메울 수 있었습니다. DVWA Security Level을 Low로 설정하여 의도적으로 취약하게 만든 상태에서 SQLMap이 단 몇 줄의 명령어로 전체 DB를 덤프하는 것을 보며, SQL Injection 방어가 얼마나 치명적인지 체감했습니다. Sguil에서 내가 만든 룰이 실제로 작동하는 것을 보며 보안 전문가로서의 성취감을 느꼈습니다.