•
개요
**XSS(Cross-Site Scripting)**는 공격자가 웹사이트에 악성 스크립트를 삽입하여 다른 사용자의 브라우저에서 실행되도록 하는 공격 기법입니다. XSS는 주로 웹 애플리케이션의 입력 값을 적절하게 검증하지 않을 때 발생하며, 공격자는 이를 이용해 사용자의 쿠키, 세션 정보, 개인 데이터를 탈취하거나, 악성 코드를 실행할 수 있습니다.
•
공격 탐지 규칙 확인 및 설정 (Suricata & Zeek)
◦
Suricata
1.
Detection - “+”
Detection 메뉴 이동 및 “+”버튼 클릭, 룰 추가 메뉴 진입
2.
룰 작성
▪
Language : Suricata
▪
License : GPL-2.0-only
▪
Signature
alert http $EXTERNAL_NET any -> $HTTP_SERVERS any (msg:"XSS Attack Detected"; flow:to_server,established; content:"<script"; http_uri; nocase; classtype:web-application-attack; sid:1000026; rev:1;)
Plain Text
복사
•
룰 내용 (Signature):
◦
alert http any any -> $HOME_NET any: HTTP 프로토콜을 통해 외부 네트워크에서 내부 네트워크로 들어오는 모든 트래픽을 감시합니다.
◦
msg:"XSS Attack Detected": 탐지된 공격에 대해 "XSS Attack Detected"라는 경고 메시지를 출력합니다.
◦
flow:to_server,established: 서버로 향하는 트래픽 중 연결이 성립된 상태에서만 감시합니다.
◦
content:"<script": HTTP URI에 <script> 태그가 포함되어 있는지 확인합니다. 이는 XSS 공격의 대표적인 패턴입니다.
◦
http_uri: HTTP 요청의 URI 부분을 검사합니다.
◦
fast_pattern: 탐지 성능을 최적화하기 위해 사용됩니다.
◦
nocase: 대소문자를 구분하지 않고 검사합니다.
◦
classtype:web-application-attack: 이 경고를 웹 애플리케이션 공격으로 분류합니다.
◦
sid:1000026: 이 룰의 고유한 식별 번호입니다.
◦
rev:1: 룰의 버전입니다.
•
공격 지표 확인 및 경고 필터링 (Kibana&zeek)
◦
suricata
▪
알람 발생 확인
◦
kibana & zeek
▪
Alert 로그 발생 확인
▪
Document
▪
하단에서 자세히 확인 (message)
•
대응 방안
◦
입력값 검증 및 필터링
◦
출력 시 HTML 엔코딩 적용
◦
콘텐츠 보안 정책(CSP) 설정
◦
JavaScript 내 동적 HTML 생성 제한
◦
웹 애플리케이션 방화벽 (WAF) 설정
◦
브라우저 XSS 보호 기능 활용
◦
로그 및 모니터링