그림 1: 지난 6시간 동안 발생한 WAF 이벤트
2. 이 트래픽에 의해 트리거된 상위 10개의 규칙 ID를 살펴보십시오. 규칙 ID는 트래픽을 추가로 필터링하고 다양한 WAF 이벤트의 페이로드를 관찰하는 데 유용합니다. 즉, 추가 분석을 위해 이러한 규칙 ID별로 트래픽을 하나씩 필터링하십시오.
그림 2: WAF 이벤트에 의해 실행된 상위 10개 규칙
다음으로, 일치된 값 필드를 보고 이 규칙을 트리거한 페이로드 값을 검토합니다.
그림 3: 일치된 값 열 아래의 페이로드 값
4. 페이로드 값을 분석하여 악의적인지 확인합니다. 그들이 어떻게 생겼는지 확실하지 않습니까? 다음은 페이로드에서 찾을 수 있는 몇 가지 잠재적인 악성 값입니다.
- 경로 통과: http://some_site.com.br/../../../../some dir/some file¹ http://testsite.com/get.asp?f=/etc/passwd²
- LFI 취약점: 공격자가 .ini와 같은 서버의 민감한 파일에 액세스하려고 합니다. Edgecast WAF는 기본적으로 이 파일과 다른 많은 중요한 파일 시스템 확장자를 차단합니다.³
- 크로스 사이트 스크립팅: http://testsite.test/<스크립트>경고(“테스트”);</스크립트>⁴ <img src=”http://url.to.file.which/not.exist” OnError=alert(document.cookie);>⁵
- SQL 인젝션: SELECT * from items where ‘a’=’a’;⁷ SELECT 1;⁶
- 원격 코드 실행: Eval(“\$$user = ‘$regdate’);⁸
- 시간 기반 공격: 선택 1 및 sleep(2);⁹ 선택 벤치마크(2000000,MD5(‘A’));¹⁰
5. 페이로드가 악의적인지 여전히 확실하지 않은 경우, 이를 파악하는 가장 좋은 방법은 해당 페이로드를 사용하여 요청을 시작한 클라이언트 IP 목록을 보는 것입니다. 클라이언트 IP가 분산되어 있는 경우, 즉 가변적이면 페이로드가 가양성일 가능성이 높습니다. 그러나 모든 클라이언트 IP의 값이 같으면 잠재적인 볼륨 공격을 나타내므로 악의적인 페이로드로 분류됩니다. 이를 설명하기 위해 3단계를 참조하여 일치하는 이 값({“IATA”:[“TGZ”,”MEX”]}을 선택하고 예로 사용하겠습니다. 이 페이로드를 보낸 클라이언트 IP 목록을 찾으려면 다음과 같이 일치하는 값을 필터로 추가합니다.
그림 5: 페이로드 값을 전송한 클라이언트 IP: {“IATA”:[“TGZ”,”MEX”]}.
이 경우, 이 요청을 만드는 IP 주소의 다양성을 고려할 때, 이러한 요청이 실제 사용자로부터 시작되었을 가능성이 높으며, 이는 오탐에 대한 좋은 후보가 될 수 있습니다.
6. 가양성이 확인되면 관리 규칙 섹션에서 예외를 만들 수 있지만, 그렇게하기 전에 쿼리 문자열, 요청 헤더, URL 또는 기타 위치 등 이 페이로드가 발견된 위치를 찾아야합니다. 이 작업은 5단계의 동일한 페이지에 있는 일치 대상 열을 보면 쉽게 수행할 수 있습니다. 이 사용 사례에서는 아래와 같이 “data” 쿼리 인수에서 페이로드를 찾았습니다.
그림 6: 페이로드 값의 위치: {“IATA”:[“TGZ”,”MEX”]}.
7. 엄지 손가락의 좋은 규칙은 거짓 긍정적 인 페이로드를 포함하는 필드에서 이러한 특정 일치 항목을 필터링한 다음 실제 악성 페이로드를 전달하는 매개 변수에 대해 일치하는 다른 요청이 없는지 확인하는 것입니다. 다시 말해, 특정 일치 대상 필드의 페이로드는 악의적이지 않습니다. 이 작업은 해당 필드에 일치 필드에서 필터를 추가하여 수행할 수 있습니다. 이 사용 사례를 살펴보면 이 쿼리 인수에 악의적인 페이로드가 없음을 확인할 수 있습니다.
그림 7: query 인수에 전송된 모든 페이로드 값: data.
8. 예외를 생성하기 전의 마지막 단계는 일치하는 필드에 의해 트리거된 규칙 ID를 찾는 것입니다. 이 가양성에 의해 트리거된 모든 규칙(규칙 ID)을 기록하려고 합니다. 사용 사례에 따라 이 정보는 5단계의 동일한 페이지에서 확인할 수 있습니다.
그림 8: 페이로드 값에 의해 트리거되는 규칙 목록: {“IATA”: [“TGZ”,”MEX”]}.
9. 예외를 만들 시간입니다. 관리되는 규칙 섹션으로 이동하여 이러한 예외를 추가할 관리되는 규칙을 클릭합니다.
그림 9: WAF 구성에 대해 생성된 기존 관리 규칙
10. 예외 탭으로 이동하여 새 조건 추가를 클릭합니다. 페이로드가 발견된 args, request_cookies 또는 URL과 같이 필드에서 일치하는 유형을 선택합니다. 그런 다음 쿼리 또는 쿠키와 같은 매개 변수의 이름을 입력합니다. 마지막으로, 페이로드가 트리거한 모든 규칙 ID 목록을 입력합니다.