13 분 소요

IDS (침입 탐지 시스템)


  • 오용탐지(Misuse)
  • 공격 또는 악성코드의 패턴을 모아놓은 DB를 Signature DB라고 함( 서명 기반, Signature Base)
    • ex) ‘ or 1=1 #
  • 패턴을 많이 모아 놓았기 때문에 지식 기반(Knowledge Base)라고도 함.
  • 패킷이 들어오면 데이터 부분과 패턴들을 비교함(Pattern Matching)
  • 패턴이 일치하면 관리자에게 Alarm을 보냄
  • 오탐이 거의 없음(오탐 : 공격이 아닌데 공격으로 간주하는 것), 미탐은 있을 수 있음

Anomaly Dectection (이상 탐지)

  • 정상적인 트래픽을 파악하기 위해서 약 2주간의 트래픽을 모아서 기준점을 만듬 –> 통계기법을 활용(Statistical Bassed)
  • 기준점에서 많이 벗어나면 이상하다고 탐지 <- 임계치를 벗어남 : 평소와 다른 트래픽
  • 미탐(공격인데 모르는 것)은 거의 없지만 오탐(공격이 아닌데 공격으로 간주)이 많음 –> 관리자들이 알람을 무시하게 됨
  • 새로운 트래픽을 스스로 학습 하는 방법을 도입 ->Machine Learning (오탐을 줄이는 것이 목적) 이상 행위를 탐지하기 때문에 Behavior Detection이라고도 함.

[실습] IDS의 패턴 이해

alert tcp $EXTERNAL_NET any -> $HOME_NET any ( msg:"APP-DETECT VNC server response"; flow:established; content:"RFB 0",depth 5; content:".0",depth 2,offset 7; metadata:ruleset community; classtype:misc-activity; sid:560; rev:9; )

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS ( msg:"APP-DETECT Acunetix web vulnerability scan attempt"; flow:to_server,established; flowbits:set,acunetix-scan; http_header; content:"Acunetix-",fast_pattern,nocase; metadata:policy max-detect-ips drop,ruleset community; service:http; reference:url,www.acunetix.com; classtype:web-application-attack; sid:25358; rev:5; )

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS ( msg:"INDICATOR-COMPROMISE Revil Kaseya ransomware log clearing http upload"; flow:to_server,established; file_data; content:"Server.CreateObject"; content:"KComWExec.execCmd",fast_pattern,nocase; metadata:impact_flag red,policy balanced-ips drop,policy connectivity-ips drop,policy max-detect-ips drop,policy security-ips drop,ruleset community; service:http; reference:url,doublepulsar.com/kaseya-supply-chain-attack-delivers-mass-ransomware-event-to-us-companies-76e4ec6ec64b; reference:url,www.huntress.com/blog/rapid-response-kaseya-vsa-mass-msp-ransomware-incident; classtype:web-application-attack; sid:57879; rev:2; )

alert tcp $EXTERNAL_NET any -> $HOME_NET 749 ( msg:"INDICATOR-SHELLCODE kadmind buffer overflow attempt"; flow:to_server,established; content:"|00 C0 05 08 00 C0 05 08 00 C0 05 08 00 C0 05 08|",fast_pattern,nocase; metadata:ruleset community; reference:bugtraq,5731; reference:bugtraq,6024; reference:cve,2002-1226; reference:cve,2002-1235; reference:nessus,15015; reference:url,www.kb.cert.org/vuls/id/875073; classtype:shellcode-detect; sid:1894; rev:14; )

// trojan 의 경우 내부망 -> 외부로 나가는 패턴
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS ( msg:"DELETED MALWARE-CNC Win.Trojan.Crysis variant outbound connection"; flow:to_server,established; http_header; content:"|0D 0A|Content-Length|3A 20|88|0D 0A|",fast_pattern,nocase; http_client_body; content:"+",depth 1,offset 71; content:"+",within 1,distance 3; metadata:ruleset community; classtype:trojan-activity; sid:26481; rev:4; )

alert tcp $HOME_NET 445 -> any any ( msg:"OS-WINDOWS Microsoft Windows SMB kernel heap memory leak attempt"; flow:to_client,established; content:"|FF|SMB|A0|",depth 5,offset 4; isdataat:111; content:"|FA FF FF|",within 3,distance 108; content:"|FA FF FF|",distance 0; byte_extract:4,28,ids; byte_test:4,=,ids,242,relative; byte_extract:2,0,uid,relative; byte_test:2,=,uid,240,relative; metadata:policy max-detect-ips drop,policy security-ips drop,ruleset community; service:netbios-ssn; reference:cve,2017-0143; reference:cve,2017-0146; reference:cve,2017-0147; reference:url,technet.microsoft.com/en-us/security/bulletin/MS17-010; classtype:attempted-recon; sid:45978; rev:2; )

패턴 보는 방법

  • $출발지 네트워크 port -> $목적지 네트워크 port +
  • msg : 관리자의 Alert 창에 보여지는 패턴
  • flow : 어느 방향으로 가느냐? server 로 가는건지,,,
  • content : 패턴(공격 패턴 또는 악성코드 패턴)
  • class type : 악성 행위의 분류
  • sid : pattern의 고유 번호
  • reference : 공식 취약점 번호, 취약점 분석 도구의 고유번호, URL 등을 알려줌 -> 어떤 공격인지 상세한 정보를 확인할 수 있음.

댓글남기기