linefilt

URL Scan과 Crawler 본문

Rules/behavior

URL Scan과 Crawler

mong.goose 2019. 4. 5. 19:20

Client에서 Scan과 Crawler의 차이라고 한다면 서버의 데이터를 가져온(GET) 뒤 데이터 파싱의 유무라고 볼 수 있다.
이를 다시 중간 경유지인 네트워크 구간 탐지 관점(IDS뿐만 아니라)으로 본다면, URL Scan과 Crawler의 특별한 차이는 없다.  Crawler는 많은 정보를 가져오기 위해서 결국 URL을 탐색해야 되기 때문이다.


외부 구간이 HTTPS 프로토콜을 사용하더라도 리버스 프록시 등을 이용해서 내부 구간에 있는 IDS를 통해서 탐지가 가능 하기 때문에 특정 스캐너가 가지고 있는 문자열을 기반으로 탐지 할 수 있다. 하지만, Scanner를 식별할 수 있는 패턴은 변경이 가능하며, 이러한 종류가 너무 많다는 것이 가장 큰 문제이다. 또한 Injection과 같은 공격과 달리 정상 사용자의 웹 요청과 차이가 없다는 점에 있어서 미탐이 발생할 수 있다.


미탐을 최소화 하고자 URL Scan의 행위 기반 탐지가 필요하다. 물론 행위 기반 탐지도 패턴 기반과 동일하게 오탐이 발생할 수 있다. 행위 기반 탐지를 추가하고자 하는 것은 Scanner에 의한 트래픽 패턴 양상을 활용해서 최대한 많은 Scan을 탐지하고자 하는 것이다.

아래의 패킷 캡처는 URLscanio와 같은 주요 스캔 사이트 및 Crawler 프로그램을 통해서 내부 서버에 스캔을 적용했을 때 트래픽 양상을 보여준다.


바이러스 토탈의 악성URL 검사를 제외하고 확인한 URL Scan 사이트와 Crawler 프로그램 모두 공통적으로 빠른 시간(세션 개시 후 절대시간 또는 적은 SEQ)내 많은 RST을 보낸다.

 

그림 1. URL Scan Example.1
그림 2. URL Scan Example.2
그림 3. wireshark filter: tcp.flags.reset==1

이를 기반으로 탐지 룰은 다음과 같이 작성할 수 있다.

alert tcp any any -> $HOME_NET 80 (msg:"URL Scan"; flow:to_server,established,no_stream; flags:R+; prefilter; stream_size:client,<,1000; threshold:type threshold, track by_src, count 60, seconds 30; sid:1; rev:1;)

다만 웹 서버에서 가상 호스트를 사용하여 도메인을 분리한 경우에는 위와 같이 단순히 RST 패킷만을 검출하는 것은 임계 값 판단에 의해서 오판이 날 수 있는 가능성이 있으므로, 이 경우 도메인을 식별하여 임계 기준을 분리할 필요가 있다.

도메인을 분리하여 식별할 경우 탐지 룰은 다음과 같다:

alert tcp any any -> $HOME_NET 80 (msg:"URL Scan per doamin prerule"; flow:to_server,established; tls_sni; content:"www.domain.com"; fast_pattern; flowbits:set,scan_perdomain; sid:1; rev:1;)
alert tcp any any -> $HOME_NET 80 (msg:"URL Scan per domain"; flow:to_server,established,no_stream; flowbits:isset,scan_perdomain; flags:R+ prefilter; stream_size:client,<,1000; threshold: type threshold, track by_src, count 60, seconds 30; sid:1; rev:1;)

행위 탐지는 보완 룰이며, 패턴 기반 탐지가 주요 룰이되어야 할 것이다.

Scan 프로그램들은 명확한 User-Agent를 갖는 경우가 많다. 명확한 User-Agent와 같은 패턴을 가지고 있다면, 오히려 트래픽 양상을 탐지하는 것보다 정확하기 때문이다. 취약점이나 악성 행위에 있어서 온라인 상에서 기 배포되었던 프로그램들을 그대로 이용하는 경우가 많기 때문에 패턴 기반 탐지 룰을 통해서 탐지 할 수 있으며, 수정이 되거나 애초에 User-Agent를 정상 프로그램으로 위조하였을 경우 행위 탐지를 통해 보완해나가야 한다.

'Rules > behavior' 카테고리의 다른 글

raw stream based Slowloris (Inline mode)  (0) 2022.04.08
TCP Out-Of-Order (or segment loss) 탐지  (0) 2019.12.23
Comments