안녕하세요 !
이번 글에서는 페이로드 키워드에 대해서 간단하게 써보려고 합니다.
페이로드는 IP 헤더와 TCP / UDP 헤더 뒤에 위치한 데이터 부분으로, 공격 시 악성 코드나 악의적인 명령이 포함될 수 있는 영역입니다.
1. Content
Content 는 패킷 페이로드에서 특정 문자열을 찾습니다. 주로 바이너리 데이터나 ASCILL 문자열을 검색할 수 있습니다.
예시 :
alert tcp any any -> any 80 ( msg : "Example content match"; content: "GET"; sid:1000001;)
TCP 포트 80 ( HTTP ) 에서 GET 문자열이 있는 패킷을 탐지합니다.
2. nocase
nocase 는 contetn 키워드와 함께 사용되어 대소문자를 구분하지 않고 문자열을 검색할 때 사용됩니다.
예시 :
content: "login"; nocase;
이 규칙은 login, LOGIN, Login 등 대소문자 구분 없이 매칭합니다.
3. offset
offset 는 페이로드에서 검색을 시작할 위치를 지정합니다. 첫 번째 바이트부터 몇 번째 바이트에서 검색할지를 결정합니다.
예시 :
content: "test"; offset:5;
페이로드의 5번째 바이트부터 test 문자열을 찾습니다.
4. depth
depth 는 페이로드의 처음부터 몇 번째 바이트까지만 검색할지를 설정합니다.
예시 :
content : "example"; depth:10;
페이로드의 첫 10바이트에서만 example 문자열을 찾습니다.
5. distance
distance 는 마지막으로 검색된 문자열의 끝에서부터 다음 검색을 시작할 지점까지의 거리를 설정합니다.
예시 :
content : " user"; content: " pass" distance:5;
첫 번째 문자열이 발견된 위치에서 5바이트 떨어진 곳에 pass 문자열이 있는지를 확인합니다.
6. within
within 는 마지막 검색된 문자열부터 특정 바이트 수 내에 다음 문자열이 있어야 함을 의미합니다. distance와 유사하지만, 더 구체적인 범위를 제한합니다.
예시 :
content : "username"; content : "password"; within:10;
username 문자열이 발견된 지점에서 10바이트 내에 password 가 있어야 합니다.
7. pcre
pcre 는 정규 표현식을 사용하여서 복잡한 패턴을 매칭할 수 있게 합니다.
예시 :
pcre : "/User-Agent\:. *Mozlia/";
정규 표현식을 사용해서 User-Agent 문자열 뒤에 Mozlilla 가 포함된 패턴을 탐지합니다.
User-Agent\:. *Mozilla 는 정규 표현식을 사용한 패턴 매칭입니다.
1) User-Agent\:
- User-Agent : 는 HTTP 헤더의 한 부분으로, 웹 브라우저나 기타 클라이언트가 서버에 요청을 보낼 때 자신이 어떤 소프트웨어인지 설명하는 문자열입니다.
- 여기서 \: 는 : 문자 자체를 의미합니다. 정규 표현식에서는 : 가 특수 문자가 아니지만, 일부 환경에서는 백슬래시 \ 로 이스케이프 처리를 해줘야 할 때가 있습니다. 이 경우에도 Uset-Agent : 라는 명확한 문자열을 찾으려는 패턴입니다.
2) . *
- . 점은 정규 표현식에서 임의의 문자를 의미합니다.
- * 는 바로 앞에 있는 문자가 0번 이상 반복될 수 있음을 의미합니다. 즉, . * 는 "임의의 문자가 0번 이상 나타남" 을 뜻하므로, User-Agent : 와 Mozilla 사이에 어떤 문자든 올 수 있으며 몇 개가 오든 상관없다는 의미입니다.
3) Mozilla
- Mozilla 는 검색하고자 하는 문자열 입니다. 주로 웹 브라우저가 자신을 식별할 때 사용하는 이름이므로, 이 표현식은 Uset-Agent 문자열에 Mozilla 가 포함된 패턴을 찾습니다.
Uset-Agent\:. *Mozilla 는 "Usr-Agent: 라는 문자열이 나오고, 그 뒤에 어떤 문자들이 있더라도 결국 Mozilla라는 문자열이 나오는 패턴을 찾는 정규 표현식 입니다. 주로 웹 브라우저가 Mozilla 기반의 브라우저인지 확인하기 위해서 사용합니다.
끝