정보보안 전문가를 꿈꾸며 작성하는 블로그입니다.

SK 쉴더스 루키즈

[SK 쉴더스] 네트워크 보안 7일차 -- 추가예정

minjoo 2022. 9. 26. 17:01

* 로그 분석

- 로그는 시스템마다 다름

- DNS 로그는 구분자를 [**]을 사용하기 때문에 awk로 읽어들이려면 [**]을 삭제해야함 (awk는 공백을 구분자로 사용)

- [**]을 제거하려면 sed 's///g'를 사용하면 됨, sed 's/\[\*\*\]//g'  (sed 's/old/new/g')

 (두 번에 걸쳐 삭제 : [**]를 |로 치환했다가 |를 삭제 → sed 's/\[\*\*\]/|g'  | awk -F"|" '[print $3,$5}' )]

 

1.1 실습 - Ubuntu DVWA에서 다운로드 디렉토리에 dv_access.log

$ tail dv_access.log    // 구조 파악

 

문제1) POST로 시작하는 로그를 골라서 어떤 페이지를 요청했는지 확인하려면?

- $6~/"POST/ 골라서 보기, $11 : 전체 URL

→ $ cat dv_access.log | awk '$6~/"POST/ {print $11}'

→ $ cat dv_access.log | grep POST | awk '{print $11}'

 

문제2) 1번 결과에서 중복을 제거하고 누가 그랬는지($1)?

→ $ cat dv_access.log | awk '$6~/"POST/ {print $1,$11}' | sort | uniq -c  | sort -rn

→ $ cat dv_access.log | grep POST | awk '{print $1,$11}' | sort | uniq -c | sort -rn

 

1.2 실습 - 1_merged_total.arg 파일에서 출발지IP,출발지Port,목적지IP,목적지Port 추출

- s를 사용해서 출발지IP는 saddr, 목적지IP는 daddr, 출발지 Port는 sport, 목적지 Port는 dport

→ $ ra -nzr 1_merged_total.arg -s saddr,daddr,sport,dport | sort | uniq -c | sort -rn

 

1.3 실습 - 2_dns.log 파일에서 [**]를 제거하고, Response와 A인 것을 골라서 URL과 IP만 상위 30개 추출

→ cat 2_dns.log | sed 's/\[\*\*\]//g' | awk '$2=="Response" && $6=="A" {print $5,$9}' | sort | uniq -c | sort -rn | head -30

→ cat 2_dns.log | sed 's/\[\*\*\]//g' | awk '$2~Response && $6~"A" {print $5,$9}' | sort | uniq -c | sort -rn | head -30

 

2.1 DRM(Digital Right Management : 디지털 권한 관리)

- 전자문서(설계도) 및 파일에 대한 권한(읽기, 쓰기, 수정, 복사, 삭제, 출력)을 관리하는 솔루션

- 자동차, 조선소, 반도체 등 제조사들은 설계도를 보호하기 위해 DRM을 PC나 Smart Phone에 설치해서 유출 방지

 

2.2 DLP(Data Loss Prevention) = PTS(개인정보 보호 시스템)

- 개인정보가 유출되지 않도록 해주는 도구

- 주민번호 2개 이상 유출 차단 설정시 USB 복사, 웹업로드, 이메일 전송 등에 차단됨 문구 출력(복사x), 기록됨

 

2.3 PTS(개인정보 보호 시스템)

- PC에 설치하면 개인정보를 보관한 파일이 있는지 찾음 → 발견시 경고

- Intrusion Blocking System(IBS) : 인터넷 차단 시스템 = 인터넷 방화벽

- Intrusion Detection System(IDS) : 침입 탐지 시스템

- Intrusion Prevention System(IPS) : 침입 방지 시스템(FW+IDS+추가)

 

2.4 방화벽

- 단일 제품(Appliance)으로 판매되는 경우 : Trusguard 등

- 여러 종류의 조합을 방화벽이라고도 함

- Screen Router : 라우터에 ACL(액클)을 적용해서 패킷의 흐름을 허용 또는 거부하는 기능을 활성화하면 스크린라우터라고 함

- Bastion Host : 데이터 부분을 조사해서 서비스에서 허용할지 거부할지 결정하는 컴퓨터(Proxy에서 주로 이런 역할)

→ 방어의 핵심이 되는 호스트로, 어떠한 서비스도 해서는 안됨, 계정의 최소화 등

 

2.5 방화벽의 종류 (세대별 구분)

1세대) Packiet Filtering

- 규칙(Rule Set)을 만들어서 패킷을 허용하거나 거부

- 정책에 따라 규칙을 만듦(Policing)

- IP주소(L3)와 Port번호(L4)를 기준으로 결정하니까 속도가 빠름

- 단점 : 악성코드나 공격이 포함된 데이터 부분은 볼 수 없음 (XSS, SQL Injection, 트로이목마 등을 막기 어려움)

2세대) Application Leel Firewall(Application Proxy)

- 패킷의 데이터 부분까지 조사해서 허용 또는 거부 결정(주로 7계층 헤더의 요청이 올바른지 판단)

- 서비스마다 데몬이 따로 존재 (단점 : 7계층을 보기때문에 속도가 느림)

- 장점 : 세부적인 통제 가능(ex. 다운로드는 가능한데, 업로드는 불가능하게 설정 가능)

3세대) Stateful Packet Inspection (SPI) → 중요!

- 상태 기반 방화벽

- 상태를 저장한 테이블을 운영 → 트래픽의 상태를 조사해서 허용 또는 거부를 결정

- 주로 3계층 정보를 기반으로 상태 테이블(State Table)에 기록하고 참고해서 허용 또는 거부 → 속도 빠르면서 안전

 

2.6 실습 - Dynamic Packet Filter

- 2세대와 3세대의 조합으로 규칙을 실시간 수정 가능 ex)악성코드를 계속 보내는 IP를 스스로 차단하는 기능

 준비) Windows7 가상머신 - checkpoint.iso 파일 다운, 압축풀기

 

* SmartConsole (Firewall Client)

- Smart Dashboard : 방화벽 설정 도구

- Smart View Tracker : 로그 확인 도구

- Smart View Status : 상태 확인 도구

 

2.7 방화벽 규칙 집합(Rule Set)

- 위에서부터 내려가면서 적용

- 숫자가 작을수록 우선순위 높음

- 가장 아랫줄에 있는 조건은 위의 조건들이 모두 해당되지 않을 때 적용

 

2.8 방화벽 규칙 집합 작성 방법 → 중요!
1) 맨 아랫줄에 모두 거부를 배치 → 기본적으로 모두 거부(Deny-all policy)

2) 최소한 하나의 허용이 필요 (허용이 하나도 없으면 선을 뽑으면 됨)

3) 작은 규칙은 큰 규칙의 위에 배치해야 함 → 위에서부터 적용하므로 큰 규칙이 위에 있으면 작은 규칙이 무력화

→ ex) host에 대한 설정을 Network 설정보다 위에 배치

4) 자주 참조될수록 위에 배치(Web Server > Mail Server > SSH) : 효율성을 고려

 

(방화벽 실습 다시)

 

* 방화벽 규칙은 공식적인 방식(신청서 및 관리자 승인)을 통해서만 요청할 수 있음

 

* 방화벽 규칙

- 100~200줄 : 방화벽 업체 권장

- 400~600줄 : 현실 → 속도 느려짐

 

3. IDS

- 침입을 탐지하는 장치

- 네트워크 주요 구간에 배치하는 방법 → Network기반 IDS(NIDS) : HW + OS + SW = Appliance(독립실행형)

- 주요 서버에 설치하는 방법 → Host 기반 IDS (HIDS) :  SW방식으로 웹서버/메일서버/DB서버 등에 설치

 

4. 침입탐지 원리

1) 오용탐지(Misuse)

- 패턴을 모아놓은 Database가 필요함(지식기반) → Signiture DB (서명기반)

- 공격 명령이나 악성코드/악성스크립트 등이 들어오면 Signiture DB에 있는 패턴과 비교해서 일치하면 관리자에게 알려줌(Alarm)

- 패킷의 데이터부분과 시그니처를 비교 : 패턴매칭(Pattern Matching)

- 특징 : 오탐이 적은 편이지만, 미탐이 있을 수 있음(패턴이 저장되어있지 않으면 탐지x)

- 반드시 업데이트 계약을 맺고 새로운 패턴을 주기적으로 추가해야 함

2) 이상탐지 (Anomaly)

- 평소와 다른 트래픽(행위 기반)을 찾아서 관리자에게 알려주는 것 : 이상한 행위를 찾아냄 → 이상탐지

- 약 2주간의 트래픽을 모아서 평균을 계산하고, 허용 범위를 설정 → 기준점이 됨

- 임계값(허용 범위)를 벗어나면 이상행위로 보고 관리자에게 알려줌

- 특징 : 너무 알림이 많으면 알림을 무시하게 됨 → 진짜로 공격이 발생되어도 놓치게 될 우려가 있음

- 미탐이 적은 편이지만, 오탐이 많을 수 있음(오용탐지에서 놓친 공격을 탐지할 가능성이 있음)

- 최근에는 평균점에 새로운 트래픽을 반영하는 방식을 사용(신경망 기법)하고 스스로 학습시켜 정확도를 높임(머신 러닝)

 

4.1 대표적인 IDS(SW는 대부분 오픈소스이므로 무료로 배포, 패턴은 지식이라 유료 배포)

- Snort : 원조 IDS, 패턴 → 상용 IDS들이 참고
- Argus IDS : 정확도, 관리 편리

- Suricata : 미국 정부에서 후원, 성능 좋음, 기능을 활성화화려면 IPS로 동작 가능

 

4.2 실습 - Snort 패턴을 다운로드 받아서 확인

- alert : 관리자에게 알려줌

- $HOME_NET : 홈네트워크 지정(Snort 설치시 HONE_NET지정) : 내부망

- 2589 : 백도어가 사용하는 포트

- msg:"  " : 관리자의 알람창에 뜨는 내용

- flow : 방향

- content:"  " : 패턴부분(일치하면 관리자에게 알림)

ex) alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS ( msg:"SERVER-OTHER Apache Log4j logging remote code execution attempt"; flow:to_server,established; http_cookie; content:"${",fast_pattern,nocase; http_uri; content:"|2F|"; http_cookie; pcre:"/\x24\x7b(jndi|[^\x7d\x80-\xff]*?\x24\x7b[^\x7d]*?\x3a[^\x7d]*?\x7d)/i"; metadata:policy balanced-ips drop,policy connectivity-ips drop,policy max-detect-ips drop,policy security-ips drop,ruleset community; service:http; reference:cve,2021-44228; reference:cve,2021-44832; reference:cve,2021-45046; reference:cve,2021-45105; classtype:attempted-user; sid:300061; rev:1; )

 

* RAT(Remote Access Trojan) : BlackRAT