2017-12-06 16 views
0

상황 : 공격자가 일치하지 않는 콘텐츠 크기를 가진 잘못된 HTTP 패킷을 실제 콘텐츠 크기로 보내는 공격이 있습니다. 이러한 패킷을 꺼내기 위해 Snort 규칙을 작성해야합니다.유효하지 않은/일치하지 않는 HTTP 헤더 콘텐츠 크기와 실제 내용 크기를 비교하는 Snort 규칙

문제점 : 내가 아는 한, Snort는 사용자가 Snort 변수/값 (예 : "dsize")을 사용하여 규칙 집합을 정의하는 것을 허용하지 않습니다. 예를 들면 다음과 같습니다.

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (\ 
    msg:"mismatched HTTP header content size vs actual content size"; \ 
    offset: *to http header content field*; \ 
    byte_test: *length of field of content*, !=, dsize; \ 
    gid: 1; sid:1000001;) 

질문 : 위의 내용이 작동하지 않는다는 것을 잘 알고 있습니다. Snort 규칙을 사용하여 상기 목적을 달성 할 수있는 방법이 있습니까?

추가 정보 1 : 나는 스 노트 2를 사용하고

추가 정보 2 : 스 노트 2가 지원할 수있는 (LUA) 이외의 다른 스크립트가 있나요?

추가 정보 3 : http preprocessor가 존재하지만 제대로 작동하도록하는 방법을 모릅니다. 전처리기를 사용하여 제안한다면, 올바른 방향으로 나를 가리 키시겠습니까?

답변

1

짧은 대답은 "아니오"입니다.

더 긴 대답은 그렇습니다.이 유형의 감지를위한 플러그인을 작성할 수 있습니다. 처음에는 플러그인 프레임 워크가 힘들어 보일 수도 있지만 요청에서 콘텐츠 크기 필드를 쉽게 추출한 다음 실제 데이터 콘텐츠의 크기와 비교하여 확인할 수 있습니다. 이것은 플러그인에 대한 이상적인 감지 상황입니다. 플러그인이 분석하는 패킷이 관심이없는 패킷이라는 사실을 알게 될 때마다 신속하게 빠져 나가야합니다. 예를 들어 포트 80을 보도록 플러그인을 제한 할뿐만 아니라 HTTP 헤더가 포함 된 패킷을 검사합니다.