복습
• 로그 분석
- 로그는 시스템마다 다르다.
- DNS로그는 구분자를 [**]를 사용 때문에 awk로 읽어 들이려면 [**]를 삭제해야 한다.( awk는 공백을 구분자로 사용)
- [**] 를 제거하려면 sed 's///g'을 사용하면 된다. => sed 's/\[\*\*\]//g'
- 두번에 걸쳐 삭제하기 : [**]를 |로 치환했다가 |를 삭제하기 => sed 's/\[\*\*\]/|/g' | awk -F"|" 'print {$3,$4}'
dv_access.log 분석하기 |
구분자는 공백을 사용했다.
192.168.5.1 - - [08/Jul/2021:04:09:30 -0400] "GET /mutillidae/images/backtrack-4-r2-logo-90-69.png HTTP/1.1" 200 1444 "http://192.168.5.136/mutillidae/" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" |
POST로 시작하는 로그를 골라서 어떤 페이지를 요청했는지 확인하려면? (URL은 $11에 위치해 있다.) |
※ grep 명령어
리눅스에서 grep 명령어는 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어이다.
위 결과에서 중복을 제거하고 어떤 URL($11)에 누가($1) 그랬는지 확인 |
1_merge_total.arg 파일에서 출IP, 출 Port, 목IP, 목Port 를 추출해보세요. |
-s를 사용해서 출발지 IP는 saddr, 목적지 Ip는 daddr, 출발지 Port는 sport, 목적지 Port는 dport으로 설정을 해주고 awk로는 위치만 조정을 했다.
2_dns.log 파일에서 [**]를 제거하고, Response와 A인 것을 골라서, URL과 IP만 상위 30개 추출해보기 |
오늘 배운 내용
• DRM(Digital Rights Mangement : 디지털 권한 관리)
- 전자문서(설계도) 및 파일에 대한 권한( 읽기, 쓰기, 수정, 복사, 삭제, 출력)을 관리하는 솔루션
- 자동차, 조선소, 반도체 등 제조사들은 설계도를 보호하기 위해서 DRM을 PC나 Smart Phone에 설치해서 유출 방지
•DLP(Data Loss Prevention) = PTS(개인정보 보호 시스템)
- 개인정보가 유출되지 않도록 해주는 도구
- 주민번호 2개 이상 유출 차단을 설정하면 USB, 웹 업로드, 이메일 등 복사될 때 차단(기록에 남는다.)
- 전화번호 10개 이상 유출 차단을 설정하면 보내려는 시도를 할 때 차단
•PTS(개인정보 보호 시스템)
- PC에 설치하면 개인정보를 보관한 파일이 있는지 검색 ---> 경고를 보낸다.
※ 용어 정리
- Intrusion Blocking System (IBS) : 침입 차단 시스템 = 인터넷 방화벽(Firewall) - Intrusion Detection System (IDS) : 침입 탐지 시스템 - Intrusion Prevention System (IPS) : 침입 예방 시스템 (FW+IDS+추가) |
• 방화벽
- 단일 제품(Appliance)으로 판매되는 경우 : Trusguard 등
- 여러 종류의 조합을 방화벽이라고도 함
‣ Screen Router : 라우터에 ACL을 적용해서 패킷의 흐름을 허용 또는 거부 하는 기능을 활성화하면 "스크린 라우터"라고 함
‣ Bastion Host : 데이터 부분을 조사해서 서비스에 허용 또는 거부할 것인지를 결정하는 컴퓨터(Proxy에서 주로 이런 역할을 함) ---> 방어의 핵심이 되는 호스트이므로, 어떠한 서비스도 해서는 안되고 계정의 최소화
• 방화벽의 종류(세대별 구분)
‣ 1세대 (Packet Filtering )
- 규칙을 만들어서 패킷을 허용하거나 거부
- 정책에 따라 규칙을 만든다 (Policing) : 근무시간에 암호화폐 거래소, 증권회사, 게임사이트 방문 금지 가능
- IP주소(L3)와 Port번호(L4)를 기준으로 결정하니까 속도가 빠름
-단점 : 악성코드가 포함된 데이터 부분을 볼 수 없음 (xss, sqli, rat 등을 막기 어려움)
‣ 2세대 ( Application Level Firewall , Application Proxy)
- 패킷의 데이터 부분까지 조사해서 허용 또는 거부 결정 (주로 7 계층 헤더의 요청이 올바른지 판단)
- 서비스마다 데몬이 따로 존재(단점 : 7 계층을 보다 보니 속도가 느림)
- 장점 : 세부적인 통제 가능(다운로드는 가능한데 업로드는 안되게 할 수 있다)
‣ 3세대 (Stateful Packet Inspection(SPI))
- 상태 기반 방화벽
- 상태를 저장한 테이블을 운영해서 트래픽의 상태를 조사해 허용 또는 거부를 결정
- 주로 3 계층 정보를 기반으로 상태 테이블(State Table)에 기록하고 참고해서 허용 또는 거부 결정 ---> 속도 빠르면서도 안전
‣ 4세대 (Dynamic Packet Filter)
- 2세대와 3세대의 조합으로 규칙을 실시간으로 수정할 수 있음 => 악성코드를 계속 보내는 IP를 스스로 차단하는 기능
• SmartConsole(Firewall Client) 실습
- Smart Dashboard : 방화벽 설정 도구
- Smart View Tracker : 로그 확인
- Smart View Status : 상태 확인 도구
• 방화벽 규칙 집합
- 위에서부터 내려가면서 적용
- 숫자가 작을수록 운선순위가 높음
- 가장 아랫줄에 있는 조건은 위의 조건들이 모두 해당되지 않을 때 적용
방화벽 규칙 집합 작성 방법 ⭐⭐⭐
1) 맨 아랫줄에 모두 거부를 배치함 --> 기본적으로 모두 거부(Deny-all policy)
2) 최소한 하나의 허용이 필요함 (허용이 하나도 없으면 선을 뽑으면 됨)
3) 작은 규칙은 큰 규칙의 위에 배치해야 함 ---> 위에서부터 적용하기 때문에 큰 규칙이 위에 있으면 작은 규칙이 무려화됨
4) 자주 참조될수록 위에 배치 (Web Server > Mail Server > SSH ) : 효율성을 고려함
※ 방화벽 규칙은 공식적인 방식 (신청서 및 관리자 승인)을 통해서만 요청할 수 있음
저 아이콘을 통해 규칙 테이블을 만들 수 있다.
왼쪽에서 찾아 테이블 칸을 채울 수 있다.
• Mail Server의 동작
※ 메일서버에서 Office로 못들어온다 그래서 메일을 확인을 하려면 Mail Server로 이동해서 확인을 할 수 있다.
Internal-net 직원들이 근무시간(09:00~18:00)에 게임사이트에 접속을 못하도록 차단하시오. 게임사이트 IP 주소 : 52.78.153.209 52.78.145.30 |
Nodes에서 추가할 HOST을 만들어준다.
두 개의 호스트를 만들었다.
두개의 호스트를 근무시간에 접속을 하지 못하도록 설정을 해준다.
두개의 호스트를 목적지 칸에 넣는다.(두 개의 호스트에 들어오는 건 차단)
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서버 등에 설치
•침입탐지 원리⭐⭐⭐
‣ 오용 탐지(Misuse)
- 패턴을 모아놓은 Database가 필요함 --> Signature DB라고 함(서명 기반, 지식기반)
- 공격명령이나 악성코드/악성 스크립트 등이 들어오면 Signature DB 패턴을 비교해서 일치하면 관리자에게 알려준다(Alarm)
- 패킷의 데이터 부분과 시그니처를 비교 : 패턴 매칭(Pattern Matching)
- 특징 : 오탐이 적고 미탐이 있을수 있음 (패턴이 저장되어 있지 않으면 탐지되지 않는다)
- 반드시 업데이트 계약을 맺고 새로운 패턴을 주기적으로 추가해야 함
‣ 이상 탐지 (Anomaly)
- 평소와 다른 트래픽(행위 기반)을 찾아내서 관리자에게 알려주는 것 : 이상한 행위를 찾아냄 ---> 이상 탐지
- 약 2주간의 트래픽을 모아서 평균을 계산하고, 허용 범위를 설정함 ---> 기준점이 됨
- 임계값(허용 범위)을 벗어나면 이상행위로 보고 관리자에게 알려줌
- 특징 : 너무 알람이 많으면 알람을 무시하게 됨 ---> 진짜로 공격이 발생되어도 놓치게 될 우려가 있음
- 미탐이 적은 편이지만, 오탐이 많을 수 있음 (오용 탐지에서 놓친 공격을 탐지할 가능성이 있음)
- 최근에는 평균점에 새로운 트래픽을 반영하는 방식을 사용(신경망 기법)하고 스스로 학습을 시켜서 정확도를 높임(머신 러닝)
• 대표적인 IDS가 있음 (SW는 대부분 OpenSource이므로 무료로 배포, 패턴은 지식이라서 유로로 배포) -Snort -Argus -Suricata |
•Snort 패턴 실습
- alert : 관리자에게 알려줌
- $HOME_NET : 홈네트워크 지정 (Snort 설치 시 HOME_NET 지정) : 내부망
- 2589 : 백도어가 사용하는 포트
- msg:" " -----> 관리자의 알람 창에 뜨는 내용
- flow : 방향
- content: " " -----> 패턴 부분 (일치하면 관리자에게 알려줌)
- pcre : 정규화식
• 맨 아래에서 두번째 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공격 시도
정규표현식 분석을 해보자
1. /\x24\x7b(jndi|[^\x7d\x80-\xff]*?\x24\x7b [^\x7d]*?\x3a [^\x7d]*?\x7d)/i //i는 대소문자를 구분하지 않는다는 의미
2. /24 7b(jndi|[^ 7d 80- ff]*? 24 7b[^ 7d]*? 3a[^ 7d]*? 7d)/i // \x는 hex 구분자이기 때문에 제거를 한다.
• 트로이 목마 사례 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; ) |
$HOME_NET any -> $EXTERNAL_NET any :내부망에서 외부망로 들어왔다.
outbound connection : 홈네트워크에서 인터넷으로 나가는 트래픽이다
ProClient.Data Clientx|2C 20|Version= data|05|bytes : 이러한 패턴들을 가지고 있다.
6610e632758a0ae2ab9b259fe1f83236aff6b5bd485c3d4e3fd4995be68535bf : 악성파일의 해시값이다.
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/ |
'Rookies 9기 > 시스템 네트워크보안' 카테고리의 다른 글
시스템/네트워크 보안 6일차 (0) | 2022.09.22 |
---|---|
시스템/네트워크 보안 5일차 (0) | 2022.09.21 |
시스템/네트워크 보안 4일차 (0) | 2022.09.20 |
시스템/네트워크 보안 3일차 (0) | 2022.09.19 |
시스템 / 네트워크 보안 2일차 (0) | 2022.09.16 |