* 지난 시간 복습
* 로그분석
= 로그는 시스템마다 다르다
= 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 패턴을 다운로드 받아서 확인
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
'공부 > 시스템,네트워크 보안' 카테고리의 다른 글
9월 22일 시스템/네트워크 보안 6 (0) | 2022.09.22 |
---|---|
9월 21일 시스템/네트워크 보안 5 (0) | 2022.09.21 |
9월 20일 시스템/네트워크 보안 4 (0) | 2022.09.20 |
9월 19일 시스템/네트워크 보안 3 (0) | 2022.09.19 |
9월 16일 시스템/네트워크 보안 2 (0) | 2022.09.16 |