개요
패킷의 playload에서 content(특정 패턴)을 특정 범위내에서 검출 하는 방법에 대해 설명하도록 한다.
용어
payload : 전송계층의 상위 계층 데이타. 즉 실제 어플리케이션이 사용하는 데이타가 존재하는 부분
content : payload 부분에서 검출할 패턴(snort는 내부적으로 rawdata를 decode후 content와 매칭하는 부분을 검색, 만약 raw data 트래픽에서 검출하고자 한다면 rawbytes 키워드를 추가 사용)
- offset : payload에서 패턴 매칭할 시작 위치(0 부터 시작)
- depth : payload에서 패턴 매칭할 끝 위치(offset 기준)
- distance : 이전 content가 검색된 지점에서 다음 컨텐츠를 검색할 시작 위치 지정
- within: 다음 content를 검색할 마지막 위치 지정, distance가 지정 되지 않을 경우 이전 content가 검색된 다음 부터 winthin 값 범위
payload : 1234567890abcdef
옵션 | 검출 범위 | 비고 | ||
content:"456" | 1234567890abcdef | |||
content:456";depth:7 |
1234567890abcdef |
|||
content:"456";offset:2;depth:4 | 12 34567890abcdef | |||
content:"123";content:"789";distance:3 | 123 456 7890abcdef | |||
content:"123";content:"789";distance:3;within:5 | 123 456 7890abcdef | |||
content:"34";offset:2;depth:5;content:"0ab";distance:3;within:5 | 1234 567 890abcdef |
예제 1) HTTP 상태코드에서 404 검출
alert tcp any 80 -> any any (msg:"http 404 respose";content:"404";offset:9;depth:3;sid:1000001)
* depth는 content 문자열보다 같거나 크야 한다.(당연한 말이겠지만)
예제 2) raw data 트래픽에서 HTTP 상태코드 404 검출
alert tcp any 80 -> any any (msg:"http 404 respose";content:"|34 30 34|";rawbytes;offset:9;depth3;sid:1000001)
참조) raw data(16진수)를 decode한 결과 값
rawdata | decoding | 비고 |
20 | 공백 | |
2f | /(슬래쉬) | |
34 | 4 | |
0 | 30 | |
31 | :(콜론) | |
· | ascii로 표현할수 없는 문자 |
'보안' 카테고리의 다른 글
[정보보안기사] 2019년 2차 정보보안기사 실기 (0) | 2019.11.09 |
---|---|
[iptables] 활용 (0) | 2019.11.05 |
[wireshark] IP fragments 패킷 필터링 (1) | 2019.10.30 |
[nmap]활용 (0) | 2019.10.29 |
[Snort] 활용1 (0) | 2019.10.28 |