공부/시스템,네트워크 보안

9월 23일 시스템/네트워크 보안 7

마준123 2022. 9. 23. 17:44

 * 지난 시간 복습

 

 * 로그분석

 = 로그는 시스템마다 다르다

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

 = [**]를 제거하려면, sed 's///g'을 사용하면 됨, sed 's/\[\*\*\]//g' ( 만약 안의 내용이 특수문자라면 \으로 이스케이프 처리를 해줘야함 )

    (두번에 걸쳐 삭제하기 : [**]를 | 로 치환했다가, |를 삭제하기 ---> sed 's/\[\*\*\]//g'   |   awk -F"|" )

 

 

실습 ) 우분투 실행!

$ tail dv_access.log

 

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

컬럼 세는게 귀찮아서 한줄씩 뽑아내는중

POST는 6번째 컬럼에있고 페이지는 7번째에 있다.

$ cat dv_access.log | awk '$6~/'POST'/ {print $7}'

정답이 나온다.

$ cat dv_access.log | grep POST | awk '{print $7}'      //안용훈님의 사용방법, 난 이게 더 편할거같다.

 

문제 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_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

$ ra -nzr 1_merged_total.arg -s saddr,daddr,sport,dport | sort | uniq -c | sort -rn                      // 중복제거

$ ra -nzr 1_merged_total.arg -s saddr,daddr,sport,dport | sort | uniq -c | sort -rn | head -30     //너무 많아서 30개만 보기

 

실습 ) 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

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

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

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

    ex ) 파수닷컴, 마크애니, 가비아 등

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

 

 * DLP (Data Loss Prevention)
 = 개인정보가 유출되지 않도록 해주는 도구
 = "주민번호 2개이상 유출 차단"을 설정하면 USB, 웹업로드, 이메일 등으로 복사될 때, "차단됨"이라고 뜨고 복사 안되고 기록됨
 = "전화번호 10개이상 유출 차단"을 설정하면 보내려는 시도를 할 때 차단됨

 * PTS (개인정보 보호 시스템)
 = PC에 설치하면 개인정보를 보관한 파일이 있는지 뒤짐 ----> 경고를 보냄

 

 * 용어 정리
 = Intrusion Blocking System (IBS) : 침입 차단 시스템 = 인터넷 방화벽(Firewall)                 (Firewall : 소방에서 사용하는 용어)
 = Intrusion Detection System (IDS) : 침입 탐지 시스템
 = Intrusion Prevention System (IPS) : 침입 예방 시스템 (FW+IDS+추가)

 * 방화벽
 = 단일 제품(Appliance)으로 판매되는 경우 : Trusguard 등등
 = 여러 종류의 조합을 방화벽이라고도 함
  Screen Router : 라우터에 ACL(액클)을 적용해서 패킷의 흐름을 허용 또는 거부하는 기능을 활성화하면 '스크린 라우터'라고 함
  Bastion Host : 데이터 부분을 조사해서 서비스에서 허용 또는 거부할 것인지를 결정하는 컴퓨터 (Proxy에서 주로 이런 역할을 함)
      -----> 방어의 핵심이 되는 호스트이므로, 어떠한 서비스도 해서는 안됨, 계정의 최소화 등

( 시험문제로 나올만큼 아주 중요한 개념 )

참고) Bastion이란?? 성벽에 돌출되고 높게 지은 구조물, 한국어로 공심돈 (안에는 공간이 있어서 저격수 배치)

 

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

1st : Packet Filtering

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

 = 정책에 따라 규칙을 만듦 (Policing) : 근무시간에 암호화폐 거래소, 증권회사, 게임사이트 방문 금지 가능

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

 = 단점 : 악성코드나 공격이 포함된 데이터 부분을 볼 수 없음  (XSS, SQLi, RAT 등을 막기 어려움)

 

2nd : Application Level Firewall (Application Proxy)

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

 = 서비스마다 데몬이 따로 존재 (단점 : 7계층을 보다보니 속도가 느림)

 = 장점 : 세부적인 통제 가능 (다운로드는 가능한데, 업로드는 안되게 할 수 있음)

 

3rd : Stateful Packet Inspection (SPI) 

 = 상태 기반 방화벽

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

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

 = 최근의 방화벽은 SPI를 발전시켜서 적용 (DPI : Deep Packet Inspection)

 = Check Point社에서 SPI의 원천기술 보유 ----> 한때 시장점유율 1등

 

4th : Dynamic Packet Filter

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

 

 

시험엔 거의 123세대만 ( 거의 3세대 ) 나오고 45세대는 거의 안나옴

 

=========================================================================================

 

 

실습 준비 ) 윈도우 7을 켜고 PW : 윈도 12#$

 = 크롬을 켜고 주소창에 http://ha.do/vFx 입력해서 checkpoint.iso 파일을 다운로드한다

 = 압축 해제도구 설치 (Bandizip, 7zip, V3zip, Alzip 등)
 = checkpoint.iso 파일에 오른쪽 마우스 클릭해서 checkpoint 폴더에 압축풀기

 * SmartConsole (Firewall Client)
 = Smart Dashboard : 방화벽 설정 도구
 = Smart View Tracker : 로그 확인 도구
 = Smart View Status : 상태 확인 도구

 * 방화벽 규칙 집합 (Rule Set)
 = 위에서부터 내려가면서 적용
 = 숫자가 작을수록 우선순위가 높음
 = 가장 아랫줄에 있는 조건은 위의 조건들이 모두 해당되지 않을 때 적용하게 됨

=========================================================================================

 

 * 방화벽 규칙 집합 (Rule Set)
 = 위에서부터 내려가면서 적용
 = 숫자가 작을수록 우선순위가 높음
 = 가장 아랫줄에 있는 조건은 위의 조건들이 모두 해당되지 않을 때 적용하게 됨

 * 방화벽 규칙 집합 작성 방법 ★★★★  (강사님이 학교에서 강의하면 시험문제로 낸다고하심!)
1) 맨 아랫줄에 모두 거부를 배치함 ----> 기본적으로 모두 거부 (Deny-all policy)
2) 최소한 하나의 허용이 필요함  (허용이 하나도 없으면 선을 뽑으면 됨)               
3) 작은 규칙은 큰 규칙의 위에 배치해야 함 ----> 위에서부터 적용하기 때문에 큰 규칙이 위에 있으면 작은 규칙이 무력화됨
           ex) host에 대한 설정을 Network 설정보다 위에 배치해야 함
4) 자주 참조될 수록 위에 배치   ( Web Server > Mail Server > SSH )  : 효율성을 고려함

 

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

실습) internal-net 직원들이 근무시간(09:00~18:00)에 게임사이트에 접속을 못하도록 차단하시오.
       ( 게임사이트 :  nexon01: 52.78.153.209,  nexon02: 52.78.145.30)




Quiz) 회사들이 방화벽 규칙을 평균 몇줄로 관리할까요?
1) 50~100
2) 100~200 : 방화벽 업체 권장
3) 200~400
4) 400~600 : 현실 -----> 속도가 느려짐!!

왜 이렇게 많은 규칙이 필요할까?  

 ----->방화벽 관리자도 무슨 규칙인지 잘 모름(인수인계가 잘 안되어서 모름!)삭제하면? 전화옴! ( 인적재해 )

 

 * Security(Packet Filter) : IP주소와 Port번호를 중심으로 차단 또는 허용                 ----> 1차 방어

  Smart Defense : 7계층 서비스의 데이터 부분을 탐지(IDS와 유사)하거나 개수를 셈(몇까지 허용)하는 기능이 있음    ---> 2차 방어

 

 * IDS

 = 침입을 탐지하는 장치

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

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

 

 * 침입탐지 원리 ★★★

1. 오용탐지 (Misuse)

 = 패턴을 모아놓은 Database가 필요함(지식기반) ---> Signature DB라고 함 (서명기반)

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

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

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

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

 

2. 이상 탐지 (Anomaly)

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

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

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

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

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

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

 

 * 대표적인 IDS가 있음 (SW는 대부분 OpenSource이므로 무료로 배포, 패턴은 지식이라서 유료로 배포)

 = Snort : 원조IDS, 패턴  ----> 상용IDS들이 참고

 = Argus IDS : 정확도, 관리 편리

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

 

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

http://snort.org

Download Rules > snort3-community-rules.tar.gz  다운로드

 

snort3-community.rules 를 메모장 또는 워드패드로 열어봅니다.

 

alert tcp $HOME_NET 2589 -> $EXTERNAL_NET any ( msg:"MALWARE-BACKDOOR - Dagger_1.4.0"; flow:to_client,established; content:"2|00 00 00 06 00 00 00|Drives|24 00|",depth 16; metadata:ruleset community; classtype:misc-activity; sid:105; rev:14; )

 

- alert : 관리자에게 알려줌

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

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

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

- flow : 방향

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

 

* 맨 아래에서 두번째

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

 

-----> 정규표현식(pcre) 패턴을 활용해서 log4j 공격 시도를 파악함

/\x24\x7b(jndi|[^\x7d\x80-\xff]*?\x24\x7b[^\x7d]*?\x3a[^\x7d]*?\x7d)/i

  /               /i  ---->  대소문자를 구분하지 않는다는 의미

  \x는 hex 구분자를 제외하고,  [^  ] : ~~가 아닌

/247b(jndi|[^7d80-ff]*?247b[^7d]*?3a[^7d]*?7d)/i

 

* 트로이 목마 사례

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( msg:"MALWARE-CNC Win.Trojan.BlackRAT variant outbound connection"; flow:to_server,established; content:"ProClient.Data",fast_pattern,nocase; content:"Clientx|2C 20|Version=",nocase; content:"data|05|bytes",nocase; metadata:impact_flag red,policy balanced-ips drop,policy max-detect-ips drop,policy security-ips drop,ruleset community; reference:url,www.virustotal.com/gui/file/6610e632758a0ae2ab9b259fe1f83236aff6b5bd485c3d4e3fd4995be68535bf/detection; classtype:trojan-activity; sid:51532; rev:1; )

 

 

- RAT (Remote Access Trojan) : BlackRAT

- www.virustotal.com : Anti-Virus업계의 포털 사이트

 

* Suricata 설치

$ sudo apt update

$ sudo apt install software-properties-common

$ sudo add-apt-repository ppa:oisf/suricata-stable

$ sudo apt update

$ sudo apt install suricata

$ sudo suricata-update

$ cd /etc/suricata/rules/

 

수리카타 로그 보기

$ sudo tail -f /var/log/suricata/suricata.log