본문 바로가기
카테고리 없음

페이로드의 키워드 ( Payload keyword )

by 할 수 있다 ! 2024. 10. 13.

안녕하세요 ! 

 

이번 글에서는 페이로드 키워드에 대해서 간단하게 써보려고 합니다. 

 

 

페이로드는 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 기반의 브라우저인지 확인하기 위해서 사용합니다.