본문 바로가기

컴퓨터/IDS/IPS

KLDP 에서 어떻게 IDS는 침입을 감지하나요?

현존하는 IDS들은 어떤 식으로 침입을 탐지할까욤??

룰과 패킷의 정보를 단순히 비교만 해서 탐지하지는 않을텐데..

예를 들면 포트스캔을 탐지하려면 동일한 송수신지 IP에서 단위시간당

일정횟수 이상의 연결이 시도되고.. 포트번호가 계속 변한다던가 하는

뭐 이런 조건으로 탐지를 한다면.. 새로운 룰이 추가될 때마다

탐지모듈의 코드도 수정되야 하는게 아닐까욤??

이래저래 지식이 짧아서.. 스노트 소스 분석을 하기에는 시간이 좀..

너무 방대하기도 하고.. 조언 부탁 드립니다..


대부분 snort rule set 처럼 되는건 1차적인 IDS 이고,

0
points

대부분 snort rule set 처럼 되는건 1차적인 IDS 이고,

State machine 을 구현해서 더욱 보강된 탐지를 합니다.

간단한 예를 들면

어떤 사용자가 ssh 로 들어왔다 를 State 1 으로 처리하면

State1 이 2 , 3 , 4 ,5 로 계속 진입할 수 있게 됩니다.

즉 사용자가 들어오더니 /usr/sbin 의 ls 를 바꾸려고 하더라

이러면 state 1 에서 state 5 로 바로 건너뛰어서 이녀석은 침입자다

라고 확인 할 수 있고

머 중간 중간에 단계적으로 무엇을 했는가에 따라

state 를 왔다갔다 하며 최종 적인 state 에 들어서면

바로 침입으로 처리하는 것입니다.

( 예제가 너무 부실하군요 ㅠ_ㅠ )

사실 이러한 탐지 방식은 무엇보다도 침입자가 들어와서

무슨 짓을 하는가에 대해 알아야 겠지요.

꼭 저런 type 이 아닌 다른 상황도 state 로 처리될 것이 많습니다.

DOS 같은 경우의 예를 들면

일단 첨에 한번 packet 이 날라 오면 state1 에 들어서고

일정 시간내에 같은 ip 에서 packet 이 일정수 이상 들어오면

state2 가 되었다가,

이 상황이 어느정도 시간이 지나도 state1 으로 도로 안내려가고

계속 state2 상태다

이러면 state3 로써 DOS 로 정의 한다

이런게 가능해 집니다.

(물론 DOS 는 snort 룰로도 가능하죠 )

어떤게 침입이고 크래킹이다 를 정의내리기가

단편적인 상황하나만 보고는 어렵기 때문에

이런 state machine 을 구현 하게 된 것입니다.

이러한 쪽의 언어도 이미 개발 된것도 있고 개발 중인것도 있습니다.

(심지어 그림만 그리면 저절로 룰이 되는 녀석도 있습니다

마치 전자회로 state machine 을 그림그리면 소스로 변환되듯이.. )

IDS 쪽은 논문이 많은 편에 속합니다

아마 논문을 뒤져보시는게 좋을껍니다.