SQL 인젝션, 파일 접근, 명령어 삽입 등 실제 침해를 노리는 웹 공격을 1시간 동안 20건 이상 시도한 출발지 IP를 탐지합니다.
개요
| 중요도 | 상 |
|---|---|
| 유형 | 배치 탐지 |
| 실행 주기 | 매달/매일/매시/0분 0 * * * * |
| 메시지 | 웹 애플리케이션 공격 탐지: $src_ip ($src_country / $src_asn) — $cnt건 / 시그니처 $sig_kinds종 / 대상 $target_cnt개 |
| 출력 필드 순서 | src_ip, src_country, src_asn, cnt, sig_kinds, target_cnt, uri_cnt, _time, host, uri, signature, action, reason, raw_data, line |
| MITRE 기술 | T1190 |
| MITRE 전술 | TA0001 Initial Access |
| 출처 | 사용자 제안 |
쿼리
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)를 바로 확인할 수 있습니다.
위협 분석
웹 방화벽 경보 중 SQL 인젝션, 명령어 삽입, 역직렬화 등은 성공 시 곧바로 데이터 유출이나 원격 코드 실행으로 이어지는 공격 유형입니다. 동일 출발지에서 1시간에 수십 건 이상 반복된다면 자동화된 공격 도구로 취약점을 적극적으로 탐색하고 있음을 의미합니다. 웹 방화벽이 차단하고 있더라도 공격자는 우회 페이로드를 계속 변형해 시도하므로, 차단 여부와 무관하게 지속 공격 출발지를 식별하고 네트워크 경계에서 차단하는 것이 중요합니다. 여러 대상 호스트에 동일한 공격이 분산된다면 조직의 공인 웹 서비스 전체를 대상으로 한 무차별 공격일 가능성이 높습니다.
오탐 유형
Exchange Online 웹훅, 결제·메신저 연동 콜백 등 정상 서비스 연동 경로의 요청 본문이 특정 시그니처(예: Server Side Scripting Injection)로 반복 오탐되는 경우가 있습니다. 해당 경로와 시그니처 조합을 확인한 뒤 본문 쿼리와 join 서브쿼리 양쪽에 search uri != "<경로>" 형태의 예외 조건을 추가합니다. 사내 취약점 진단, 모의해킹, 외부 보안 점검 업체의 스캐너 IP에서 발생하는 경보도 탐지됩니다. 점검 기간과 출발지가 확인되면 해당 IP를 예외 처리합니다. 환경에 따라 정상 트래픽 규모가 크게 다르므로, 운영 초기 출발지별 일일 건수 분포를 확인하여 소수 출발지가 대부분을 차지하는 지점으로 임계치(20건)를 조정합니다.
대응 방안
출발지 IP의 국가·ASN, 공격 대상 호스트와 URI, 원본 요청을 확인하여 실제 존재하는 애플리케이션 경로를 노린 공격인지 판단하고, 지속 공격 출발지는 방화벽에서 차단합니다. action이 차단이 아닌 탐지로 처리된 건이 있다면 공격이 웹 서버에 도달했으므로, 해당 웹 서버의 접근 로그와 웹쉘 설치 여부 등 침해 흔적을 추가로 점검합니다. 반복 공략되는 URI가 실제 취약점을 가진 것으로 확인되면 애플리케이션 패치 또는 시큐어 코딩 조치를 진행합니다.