처음 만나는 클라우드 보안

침입탐지 시스템(IDS) - snort, suricata, 패턴 읽기 본문

정보보안

침입탐지 시스템(IDS) - snort, suricata, 패턴 읽기

영민하게 2022. 5. 13. 18:05
반응형

침입탐지 시스템(IDS)이란?

: 시스템과 네트워크 작업을 분석하여 악의성 있는 작업을 찾아내는 장치를 말한다. 가장 많이 사용되는 유형으로 호스트 기반(host-based)과 네트워크 기반(network-based) IDS가 있다.

 

침입탐지 시스템(IDS) 주요 기능

1. 오용 탐지(Misuse)

 : 공격 또는 악성코드의 패턴을 모아놓은 Signature DB를 기반으로 탐지한다.

  ex) 'or 1=1 # 등과 같은 SQL 인젝션 패턴 수집 DB = Signature DB

  - 패킷이 들어오면 데이터 부분과 패턴들을 비교해본다 (Patern Matching)

  - 패턴 일치 시 관리자에게 Alarm을 보낸다.

  - 오탐이 거의 없음, 미탐(공격 탐지를 못함)은 있을 수 있다.

  - 패턴을 많이 모아놓았기 때문에 이것을 지식기반(Knowlege Base)라고 한다. 

 

2. 이상 탐지(Anomaly Detection)

: 정상 트래픽 파악을 위해 약 2주간 트래픽을 수집해 기준점을 수립한다. --> 통계기반(Statistical Based)라고 한다.

 - 패킷이 기준점에서 크게 벗어나면 이상으로 탐지 => 관리자에게 알림

 - 미탐(공격탐지를 못함)은 거의 없지만, 오탐이 많다. => 관리자들이 Alarm을 무시하는 현생 (양치기 효과) 발생

   최근의 트래픽을 기준점에 반영 ---> 신경망 기법

   새로운 트래픽을 스스로 학습하는 방법을 도입 --> Machine Learning

 - 이상 행위를 판단하기 때문에 행위 기반(Behavior)라고 한다.

 

참고) 네트워크 기반의 IDS (NIDS) 설치 위치 => 방화벽 뒤에 바로

 

침입탐지 시스템(IDS) VS 침입방지 시스템(IPS)

 

IDS(Intrusion Detection System): 탐지 후 관리자에게 보고한다.

IPS(Instrusion Prevention System): 탐지 후 스스로 차단한다.

 

ex) Suricata: IDS설치를 한 후 설정에서 스스로 차단하는 기능이 있다면 IPS

 

SNORT

IDS의 원조격 시스템, Snort의 감지 패턴 포맷은 다른 IDS 시스템에서도 동일하게 호환된다. 

 

[snort 공식 홈페이지] https://www.snort.org/

 

Snort - Network Intrusion Detection & Prevention System

With over 5 million downloads and over 600,000 registered users, it is the most widely deployed intrusion prevention system in the world.

www.snort.org

 

1) 패턴 해석 주요 사항

  • msg: "   " : 관리자의 Alert창에 보이는 내용
  • $출발지_NET 포트 -> $도착지_NET:
  • flow: 방향
  • content:"  ": 패턴 (공격 패턴, 악성코드 패턴)
  • classtype: 악성 행위의 분류
  • sid: 패턴의 고유번호
  • reference: 공식 취약점 번호, 취약점 분석도구의 고유번호, 참조 URL
  • pcre: 악성코드 패턴 정규표현식

 

2) Snort감지 패턴 분석

 

- VNC탐지

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; )

APP-DETECT VNC server response: 외부 공격저에 의해 원격 접속 APP-DETECT VNC server response

 

- 웹 취약점

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; )

nocase: 대소문자 구분 X

 

- 랜섬웨어

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; )  

 

- Hex Code

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 $HTTP_PORTS -> $EXTERNAL_NET any ( msg:"DELETED SERVER-WEBAPP Potential hostile executable served from local compromised or malicious WordPress site"; flow:to_client,established; http_uri; content:"/wp-content/"; pkt_data; content:".exe|20|HTTP/1.",fast_pattern,nocase; http_uri; pcre:"/\/\d+\.exe$/"; metadata:ruleset community; reference:url,blog.avast.com/2013/05/03/regents-of-louisiana-spreading-sirefef-malware; classtype:trojan-activity; sid:26618; rev:4; )
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; )

$출발지_NET 포트 -> $도착지_NET: Reverse connection

 

 

- Wannacry

alert tcp any any -> $HOME_NET 445 ( msg:"OS-WINDOWS Microsoft Windows SMB remote code execution attempt"; flow:to_server,established; content:"|FF|SMB3|00 00 00 00|",depth 9,offset 4; byte_extract:2,26,TotalDataCount,relative,little; byte_test:2,>,TotalDataCount,20,relative,little; metadata:policy balanced-ips drop,policy connectivity-ips drop,policy max-detect-ips drop,policy security-ips drop,ruleset community; service:netbios-ssn; reference:cve,2017-0144; reference:cve,2017-0146; reference:url,blog.talosintelligence.com/2017/05/wannacry.html; reference:url,isc.sans.edu/forums/diary/ETERNALBLUE+Possible+Window+SMB+Buffer+Overflow+0Day/22304/; reference:url,technet.microsoft.com/en-us/security/bulletin/MS17-010; classtype:attempted-admin; sid:41978; rev:5; )

 

 

참고) Virus Total

: Anti-Virus의 포털 사이트, 악성코드 여부 확인 가능

해쉬값 입력하면 악성코드 여부를 확인 가능하다

[공식 홈페이지] https://www.virustotal.com/gui/home/upload

 

VirusTotal

 

www.virustotal.com

 

추가) 정규표현식 (PCRE)

: Perl Compatible Regular Expression, 펄 호환 정규 표현을 뜻한다. 전화번호, IP, Email에 대한 특정 형식의 패턴을 추출하기 위해 사용되며, 각 언어 또는 스크립트에 따라 조금씩 다르다.

 

  • ^ (캐럿) // 문자열이 시작되는 패턴 =>
  • $ (달라) // 문자열이 끝나는 패턴
  • [] (대괄호) // '[a-zA-Z00-9]' // 영문 대소문자 및 숫자
  • [^] // '[^0-9']' // 숫자가 아닌 패턴
  • . (닷) // 'a..d' a와 d사이의 아무 2개 문자가 오는 패턴
  • A*  //A를 0번 이상 반복한다 => " ", "A", "AAAAA", "AB"
  • \{n, m\} // A\{4, 8\} B A가 4번 이상, 8번 이하로 반복되며, 이후에 B가 오는 패턴

 

ex) 처음이 127.0.0.1로 시작하는 로그 고르기

=> cat access.log  | grep -v "^127\.0\.0\.1"

 

 

Suricata 설치

: Snort와 같이 IDS뿐 아니라 IPS로 동작 가능한 무료 설치 프로그램, 설치와 사용이 용이하다.

 

[공식 홈페이지]https://suricata.io/

 

Home - Suricata

Meerkats (Suricata suricatta) are known for their sentinel behavior, patiently and alertly standing watch over their class. Sentries who stand guard gain trust through their experience and reputation, not through their age or social rank.

suricata.io

설치된 Suricata의 패턴규칙은 모두 Snort의 호환되는 동일 형식이다.

 

반응형
Comments