Snort는 다양한 전처리기(Preprocessor)를 제공 함으로써 여러가지 패킷 전처리 기능을 수행합니다. 

HTTP Inspection 은 HTTP 패킷의 URI에서 encode된 값을 찾아 decode하는 작업을 수행하게 됩니다. 


기본적으로 패킷을 decode하지 못하면 공격 명령을 encode함으로써 간단하게 Snort와 같은 IPS/IDS를 우회할 수 있게 됩니다. 

이런 우회 패킷에 대한 탐지를 수행하기 위해 꼭 필요한 HTTP Inspection 모듈의 정규화 과정에 대해 알아봅시다. 


HTTP Inspection Preprocessor에서는 HTTP패킷이 들어오면 기본적으로 다음과 같은 순서로 정규화 처리를 수행합니다. 


HTTP Inspection에 의해 설정에 따라 최대 2번 까지 '%' decode를 수행합니다. 

또한, 설정에 따라 unicode 및 '%U' decode를 수행 할 수 있습니다. 



'decode'나 '정규화'가 뭘 의미하는지 잘 모르시는 분들은 이 글을 보시면 됩니다. 


[스노트-snort] HTTP Inspection 전처리기의 모든 것



혹시 잘못된 정보가 있거나 궁금한 점이 있으시면 댓글 남겨주세요~ ^^


Posted by KT한
,
목적:
Http의 url에서 자주 사용되는 다양한 인코딩(encoding)에 대한 정리 

※내용은 중요하지 않고 인코딩된 패킷을 생성하고 싶으시다면 다음 포스팅을 참고하세요. 
http://kthan.tistory.com/46


내용:

 1.  Hex Encoding 
URL을 인코딩 하는 가장 간단한 방법 RFC 표준에 따른다.

예) %41 = 'A'  


 
2. Double Percent Hex Encoding
Microsoft IIS에서 지원한다. 
Hex Encoding에 기반하는 encoding방식으로..
'%25' 가 '%'를 의미하기 때문에 결국은 한번 꼬았다고 보면 된다. 

예) %2541 = 'A' 



3.  Double Nibble Hex Encoding
Microsoft IIS에서 지원한다. 
인코딩 할 값을 하나씩 나눠서 각각 인코딩을 한다. (nibble이란 단어의 의미를 곰곰히 생각해보면 이해하는데 조금 도움이 된다.)
'%34' 가 '4'이고 '%31'이 '1'을 의미하므로 각각을 디코딩 하면 결국 %41이 된다. 
 

예) %%34%31 = 'A'

 

4. First Nibble Hex Encoding  
Microsoft IIS에서 지원한다. 
바로 앞에서 다른 'Double Nibble Hex Encoding'과 유사하다. 
인코딩 이름에서 알 수 있듯 처음 nibble만 인코딩을 한다는 의미이다. 
즉, '%34'가 '4'이므로 이 값을 디코딩 하면 '%41'이 된다. 

예) %%341 = 'A' 



5. Second Nibble Hex Encoding
Microsoft IIS에서 지원한다.  
이름을 봐서 알 수 있듯 .. First Nibble과 유사하다.
차이점이라면 두번째 nibble을 인코딩 한다는 점이 다르다.
문법상의 차이로 모양새는 조금 다르지만 이해하는데는 별 문제가 되지 않는다. 
'%31'이 '1'이므로 이 값을 디코딩 하면 '%41'이 된다. 

예) %4%31 = 'A'


6.  Microsoft %U Encoding
Microsoft IIS에서 지원한다.  
%U뒤에 4자리 값이 오는 형식으로 인코딩 한다. 
4자리 값은 0부터 65535까지의 숫자 혹은 16진수로 0x0000 부터 0xffff까지 값이 올 수 있다. 

예) %U0041 = 'A' 

7. UTF-8 Encoding
처음 byte는 길이를 의미하므로 매우 중요하다. 

예) 110xxxxx 10xxxxxx                (two byte sequence)
     1110xxxx 10xxxxxx 10xxxxxx  (three byte sequence)

인코딩을 하기 위해 '%'를 사용한다. 
위에서 xxx 처럼 표현한 부분이 실제 의미있는 값이다. 
다음 예에서 보면.. 녹색으로 표시한 값들이 실제 데이터라고 보면 된다. 

예1) %C0%AF     = 11000000 10101111  =  101111 = 2F = '/'
     %E0%80%AF = 1110
0000 10000000 10101111  = 101111 = 2F = '/'

예2) %C1%81      = 110
00001 10000001 = 1000001 = 41 = 'A'
       %E0%81%81 = 1110
0000 10000001 10000001 = 1000001 = 41 = 'A' 



Full UTF-8 Character Map 링크

8. UTF-8 Bare byte Encoding
Microsoft IIS 서버만이 지원한다. 
UTF-8 인코딩과 같지만 '%'를 쓰지 않는점이 다르다. 

 예) 0xC1 0x81 = 'A'

Posted by KT한
,