WAPPLES

Download 0
Last updated Nov 13, 2025

웹 애플리케이션 공격 탐지

SQL 인젝션, 파일 접근, 명령어 삽입 등 실제 침해를 노리는 웹 공격을 1시간 동안 20건 이상 시도한 출발지 IP를 탐지합니다.

Overview

Priority High
Type Batch
Schedule Every month/Every day/Every hour/At 0 min 0 * * * *
Message 웹 애플리케이션 공격 탐지: $src_ip ($src_country / $src_asn) — $cnt건 / 시그니처 $sig_kinds종 / 대상 $target_cnt개
Output field order src_ip, src_country, src_asn, cnt, sig_kinds, target_cnt, uri_cnt, _time, host, uri, signature, action, reason, raw_data, line
MITRE Techniques T1190
MITRE tactics TA0001 Initial Access
Origin User proposal 이정표

Query

1table from=$("from") to=$("to") *:WAF_WAPPLES 2| search _schema == "attack" 3| search in(signature, "SQL Injection", "File Inclusion", "Directory Traversal", "Cross Site Scripting", "XPath Injection", "NoSQL Injection", "XXE Injection", "Insecure Deserialization", "Server Side Scripting Injection", "Server Side Template Injection", "Stealth Commanding", "Buffer Overflow") 4| lookup geoip src_ip output country as src_country, asn as src_asn 5| stats count as cnt, dc(signature) as sig_kinds, dc(host) as target_cnt, dc(uri) as uri_cnt by src_ip, src_country, src_asn 6| search cnt >= 20 7| sort -cnt 8| join type=left src_ip [ 9 table from=$("from") to=$("to") *:WAF_WAPPLES 10 | search _schema == "attack" 11 | search in(signature, "SQL Injection", "File Inclusion", "Directory Traversal", "Cross Site Scripting", "XPath Injection", "NoSQL Injection", "XXE Injection", "Insecure Deserialization", "Server Side Scripting Injection", "Server Side Template Injection", "Stealth Commanding", "Buffer Overflow") 12] 13| order src_ip, src_country, src_asn, cnt, sig_kinds, target_cnt, uri_cnt, _time, host, uri, signature, action, reason, raw_data, line

WAPPLES 테이블(WAF_WAPPLES)의 침입탐지(attack) 로그 중 SQL Injection, File Inclusion, Directory Traversal, Cross Site Scripting, XPath/NoSQL/XXE Injection, Insecure Deserialization, Server Side Scripting/Template Injection, Stealth Commanding, Buffer Overflow 등 실제 침해를 노리는 12종 시그니처만 대상으로 합니다. 출발지 IP별로 1시간 동안 집계하여 탐지 건수가 20건 이상인 경우 탐지하며, 단발성 스캐닝은 임계치에서 걸러집니다. 시그니처 종류 수(sig_kinds), 공격 대상 호스트 수(target_cnt), URI 수(uri_cnt)를 함께 출력하여 특정 취약점을 반복 공략하는지, 여러 유형을 대입하는 자동화 도구인지 판단할 수 있게 합니다. 집계 결과에 원본 로그를 left join하여 티켓에서 실제 요청(raw_data)과 차단 여부(action)를 바로 확인할 수 있습니다.

Threat analysis

웹 방화벽 경보 중 SQL 인젝션, 명령어 삽입, 역직렬화 등은 성공 시 곧바로 데이터 유출이나 원격 코드 실행으로 이어지는 공격 유형입니다. 동일 출발지에서 1시간에 수십 건 이상 반복된다면 자동화된 공격 도구로 취약점을 적극적으로 탐색하고 있음을 의미합니다. 웹 방화벽이 차단하고 있더라도 공격자는 우회 페이로드를 계속 변형해 시도하므로, 차단 여부와 무관하게 지속 공격 출발지를 식별하고 네트워크 경계에서 차단하는 것이 중요합니다. 여러 대상 호스트에 동일한 공격이 분산된다면 조직의 공인 웹 서비스 전체를 대상으로 한 무차별 공격일 가능성이 높습니다.

False positives

Exchange Online 웹훅, 결제·메신저 연동 콜백 등 정상 서비스 연동 경로의 요청 본문이 특정 시그니처(예: Server Side Scripting Injection)로 반복 오탐되는 경우가 있습니다. 해당 경로와 시그니처 조합을 확인한 뒤 본문 쿼리와 join 서브쿼리 양쪽에 search uri != "<경로>" 형태의 예외 조건을 추가합니다. 사내 취약점 진단, 모의해킹, 외부 보안 점검 업체의 스캐너 IP에서 발생하는 경보도 탐지됩니다. 점검 기간과 출발지가 확인되면 해당 IP를 예외 처리합니다. 환경에 따라 정상 트래픽 규모가 크게 다르므로, 운영 초기 출발지별 일일 건수 분포를 확인하여 소수 출발지가 대부분을 차지하는 지점으로 임계치(20건)를 조정합니다.

Response actions

출발지 IP의 국가·ASN, 공격 대상 호스트와 URI, 원본 요청을 확인하여 실제 존재하는 애플리케이션 경로를 노린 공격인지 판단하고, 지속 공격 출발지는 방화벽에서 차단합니다. action이 차단이 아닌 탐지로 처리된 건이 있다면 공격이 웹 서버에 도달했으므로, 해당 웹 서버의 접근 로그와 웹쉘 설치 여부 등 침해 흔적을 추가로 점검합니다. 반복 공략되는 URI가 실제 취약점을 가진 것으로 확인되면 애플리케이션 패치 또는 시큐어 코딩 조치를 진행합니다.

No comments yet.