← 메인으로
Security Guide

웹 공격 분석: SQL Injection, XSS, RCE 로그를 어떻게 볼까?

웹 공격 분석은 단순히 탐지명이나 시그니처만 확인하는 것이 아니라, 요청 URI, HTTP 응답코드, 요청 반복성, User-Agent, 출발지 IP를 함께 분석하여 실제 공격 가능성을 판단하는 과정이다. 동일한 탐지라도 맥락에 따라 정탐과 오탐이 나뉘기 때문에 로그 전체 흐름을 기반으로 해석하는 것이 중요하다.

핵심 요약

union select, <script>, ../, wget, curl 같은 문자열은 웹 공격 의심 지표가 될 수 있다. 하지만 단순 문자열 존재만으로 공격으로 단정하지 않고, 차단 여부, 응답코드, 반복 요청 여부를 함께 분석해야 한다.

1. SQL Injection 분석

SQL Injection은 웹 애플리케이션의 입력값을 이용해 데이터베이스 쿼리를 변조하는 공격이다. 로그에서는 union select, information_schema, or 1=1, sleep(), benchmark() 등의 패턴으로 확인된다.

이러한 문자열이 URL 파라미터나 POST 데이터에 포함되어 있다면 DB 정보 조회, 인증 우회, 데이터 추출을 시도하는 공격일 가능성이 높다. 특히 동일 IP에서 다양한 SQL 구문을 반복적으로 시도한다면 자동화 공격 도구를 이용한 탐색 과정으로 판단할 수 있다.

다만 단순 탐지만으로 판단하지 않고, 응답코드가 200인지 403인지 확인해야 한다. 차단된 경우 실제 영향은 낮을 수 있지만, 200 응답이 반복되면 실제 애플리케이션까지 도달했을 가능성이 있다.

2. XSS 분석

XSS(Cross-Site Scripting)는 웹 페이지에 악성 스크립트를 삽입하여 사용자 브라우저에서 실행되도록 만드는 공격이다. 로그에서는 <script>, alert, onerror, javascript: 같은 문자열을 통해 탐지할 수 있다.

특히 이미지 태그나 이벤트 핸들러(onload, onmouseover)를 활용한 우회 패턴도 존재하기 때문에 단순 키워드뿐 아니라 전체 요청 구조를 봐야 한다.

XSS는 서버 침해보다 사용자 세션 탈취, 쿠키 탈취 등으로 이어질 수 있기 때문에 웹 서비스 관점에서 중요도가 높은 공격이다. 반복적으로 동일 패턴이 발생한다면 취약점 존재 여부를 점검해야 한다.

3. RCE 분석

RCE(Remote Code Execution)는 서버에서 직접 명령어 실행을 시도하는 공격으로, 웹 공격 중에서도 가장 위험도가 높은 유형이다. 로그에서는 wget, curl, /bin/sh, cmd.exe, powershell 등의 문자열로 확인된다.

특히 외부 서버에서 파일을 다운로드하려는 요청이나, 쉘 실행 시도가 포함된 경우 실제 침해 시도로 이어질 가능성이 높다. /cgi-bin, /phpunit, /eval-stdin.php와 같은 취약 경로 접근과 함께 나타나면 위험도가 더욱 높다.

이러한 요청은 단발성보다 반복적으로 발생하는 경우가 많으며, 동일 IP에서 다양한 명령 실행 시도가 확인되면 즉시 대응이 필요하다.

4. 웹 공격 공통 분석 포인트

웹 공격은 유형이 다르더라도 공통적으로 다음 요소를 함께 분석해야 한다.

- 요청 URI (취약점 경로 포함 여부)
- HTTP 상태코드 (200, 403, 404 등)
- 요청 횟수 및 반복성
- User-Agent (자동화 도구 여부)
- 출발지 IP 국가 및 평판

특히 단일 이벤트보다 동일 IP에서 여러 공격 유형이 동시에 발생하는 경우 자동화 스캐닝 또는 실제 공격 시도로 판단할 수 있다.

5. 결론

웹 공격 분석은 단순 문자열 탐지가 아니라 전체 로그 흐름을 기반으로 판단하는 과정이다. SQL Injection, XSS, RCE 각각의 특징을 이해하고, 응답코드, 반복성, User-Agent, IP 정보를 함께 분석해야 정확한 판단이 가능하다.

결국 보안관제에서는 개별 로그가 아닌 전체 패턴을 보는 것이 핵심이며, 이를 통해 정탐과 오탐을 구분하고 적절한 대응을 수행해야 한다.