Sec 4 네트워크 기본 학습
1. 프로토콜
- : 시스템 간에 통신을 하기 위한 규약
프로토콜은 구문, 의미, 타이밍으로 이뤄져 있다.
2. OSI 7Layer
(1) 개요
① : 국제 표준화 기구(ISO)에서 제정한 개방형 시스템 간의 상호연결 모델
② 분산된, 이기종 시스템간의 네트워크 상호호환을 위해 필요한 표준 아키텍처를 정의한 참조모델
③ 기능에 따라 계층적으로 표준화되어있다. 어떤 목적을 수행하기 위해 하나의 큰 프로토콜을 설계하는 것이 아니라 계층적으로 나뉘어진 여러 프로토콜들을 조합하여 그 목적을 수행하는 방식. = 분할 정볼
④ 각 계층별로 표준화를 함으로써 상/하위 계층 간에 인터페이스만 충족시켜주면 다양한 제조사들에 의한 독자적인 프로토콜 구현 및 발전을 이룰 수 있다.
(2) 계층별 특징
1) 물리 계층
① 물리적 장치의 전기적, 전자적 연결에 대한 명세
② bit 비트
③ 주요 네트워크
- HUB 허브 : 들어온 신호를 연결된 모든 포트로 전달하는 중계 장치다. 이러한 허브를 Dummy hub라 한다.
- Reapeter리피터 : 감쇠된 전송신호를 새롭게 재생하여 다시 전달하는 재생 중계 장치
④ 허브 환경에서의 스니핑
- 더미 허브는 전달받은 패킷을 단순히 모든 노드로 전송하기 때문에 허브에 연결되어 있는 모든 노드는 스니퍼를 통한 스니핑이 용이.
- 네트워크 카드의 동작모드를 무차별 모드(Promiscuous Mode)로 설정하면 자신이 목적지가 아닌 패킷도 모두 수신하기 때문에 더미 허브 환경에서 손쉽게 스니핑할 수 있다.
2) 데이터 링크 계층
(가) 개요
① : Node to node delivery, 인접한 노드간의 신뢰성 있는 프레임 전송을 담당하는 계층
이 계층은 인접 노드간의 통신이며 최종 목적지 노드에 도달하기 위해서는 각각의 노드 간에 프레임에 대한 주소설정이 이뤄진다.
② 목적지 노드를 찾아가기 위해서는 목적지 노드에 대한 물리적인 주소가 필요하며 네트워크 카드의 MAC 주소가 해당 역할을 수행한다.
③ IEEE 802 표준에서 LAN 상의 2계층을 LLC와 MAC 두 개의 하위 계층으로 세분화한다.
④ 데이터링크 계층의 데이터 단위를 프레임이라 한다.
⑤ 대표 프로토콜 : Ethernet, TokenRing, FDDI, X.25, Frame Relay 등
(나) 신뢰성 있는 전송을 위한 기능
① : 데이터의 안전한 전송을 보장해준다는 의미로 일반적으로 데이터 링크 컨트롤이라 한다.
② 흐름제어 : 송신노드가 수신노드의 처리속도를 고려하여 이를 초과하지 않도록 전송을 제어한다. 이런 흐름제어는 수신노드가 수신확인응답을 송신노드에 제공함으로써 흐름제어를 수행하는데 2가지 방식이 있다.
- 정지-대기 방식 : 송신측에서 프레임을 전송한 후 확인응답을 받을 때까지 대기하는 방식
- 슬라이딩 윈도우 방식 : 송신측에서 프레임을 전송한 후 확인응답을 받기 전에 수신가능한 범위 내에서 여러 프레임을 전송하는 방식
③ 오류 제어 : 전송 중에 여러가지 원인(주파수 혼란, 감쇠, 잡음 등)에 의한 오류나 손실 발생 시 이를 해결하기 위한 제어방식이다. 2가지
- 후진 오류 수정 방식(BEC, Backward Error Correction) : 송신측에서 데이터 전송 시 오류를 검출할 수 있는 부가정보를 함께 전송하여 수신측에서 이를 점검하여 오류 발생 시 재전송을 요청하는 방식으로 이러한 요청을 ARQ(automatic Repeat Request)라 한다.
- 전진 오류 수정 방식(FEC, Forward error Correction) : 재전송이 불필요한 방식으로 송신츠겡서 데이터 송신 시에 오류의 검출 및 수정까지 가능한 부가 정보를 담아서 보내는 방식
④ 회선 제어 : 점대점 또는 다중점 회선 구성 방식과 단방향 반이중 및 전이중 등의 전송 방식에 따라 사용되는 전송링크에 대한 제어 규범이다.
(다) 주요 네트워크 장비
① L2 Switch
- 스위치 장비는 내부적으로 MAC Address Table을 가지고 있다. 이 테이블에는 스위치 포트에 연결된 노드의 MAC정보를 담고 있다. 이 정보를 참조하여 목적지 MAC주소의 포트에 연결된 노드에게만 패킷을 전송한다.
- 스위치 환경에서 특정 포트를 모니터링 하고자 한다면 모니터링 포트 또는 네트워크 트래픽을 모니터링 할 수 있는 탭 장비를 통해 패킷을 복제해서 트래픽 분석 장비로 전달한다.
② bridge
- 물리적으로 떨어진 동일한 LAN을 연결해주는 장비
(라) 스위치 환경에서의 스니핑 공격 기법
① 스위칭 재밍 / MAC Flooding 공격
- 스위치 MAC Address Table의 버퍼를 오버플로우 시켜서 스위치가 허브처럼 동작하게 강제적으로 만드는 기법.
- 스위치는 Fail Safe/Open 정책을 따르는 장비이므로 장애가 발생하면 더미 허브처럼 연결된 모든 노드에게 패킷을 전송한다.
- Mac Address Table을 채우기 위해 Source MAC 주소를 계속 변경하면서 패킷을 지속적으로 전송하는 방식을 사용한다.
#장비 장애 관련 보안 정책
1) Fail Safe(장애 안전) : 장애 발생 시 모든 기능을 허용하는 정책
스위치와 같은 장비는 가용성을 더 중시하기 때문에 Fail Safe 정책을 따른다.(= Fail Open)
2) Fail Secure(장애 보안) : 장애 발생 시 모든 기능을 차단하는 정책
② ARP 스푸핑 공격
- 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply 패킷을 만들어 희생자에게 지속적으로 전송
- 희생자의 ARP cache Table에 특정 호스트의 MAC 정보가 공격자의 MAC 정보로 변경된다.
- 이를 통해 희생자로부터 특정 호스트로 나가는 패킷을 공격자로 향하도록 하여 스니핑하는 기법이다.
③ ARP 리다이렉트 공격
- ARP 스푸핑 공격의 일종으로 공격자가 자신라우터/게이트웨이인 것처럼 MAC 주소를 위조하여 ARP Reply 패킷을 대상 네트워크에 지속적으로 브로드캐스트하면
- 해당 로컬 네트워크의 모든 호스트의 ARP Cache Table에 라우터/게이트웨이의 MAC 정보가 공격자의 MAC 정보로 변경이 된다.
- 이를 통해 호스트에서 라우터로 나가는 패킷을 공격자가 스니핑하는 기법이다.
④ ICMP 리다이렉트 공격
- ICMP Redirection 메시지는 호스트-라우터 또는 라우터 간에 라우팅 경로를 재설정 하기 위해 전송하는 메시지다.
- 이를 악용하여 특정 IP 또는 IP 대역으로 나가는 패킷의 라우팅 경로를 자신의 주소로 위조한 ICMP Redirect 메시지를 생성하여 희생자에게 전송
- 희생자의 라우팅 테이블을 변조하여 패킷을 스니핑하는 공격기법이다.
⑤ 스위치의 SPAN/Port Mirroring 기능 이용
- 스위치의 SPAN/Port Mirroring 기능은 스위치를 통과하는 모든 트래픽을 볼 수 있는 기느응로 특정 포트에 분석 장비를 접속하고 다른 포트의 트래픽을 분석 장비로 자동 복사해주는 기술이다.
- 관리적 목적으로 사용하지만 공격자가 물리적으로 해당 포트에 접근할 수 있다면 손쉽게 패킷을 스니핑할 수 있다.
3) 네트워크 계층
(가) 개요
① End 노드 간의 라우팅을 담당하는 계층으로 HOst - to - Host Delivery라고도 한다.
② 라우팅이란 라우팅 알고리즘에 의해 목적지로 전송하기 위한 최적의 경로를 설정하고 패킷을 교환하는 기능을 제공하는 것을 말한다.
③ 최종 목적지 노드를
④
⑤
(나) 주요 네트워크 장비
4) 전송 계층
(가) 개요
(나) 신뢰성 있는 데이터 전송을 보장하기 위한 기능
(다) 주요 네트워크 장비
5) 세션 계층
- Application 간 논리적인 연결인 세션의 생성, 관리 및 종료를 담당하는 계층
6) 표현 계층
데이터 표현방식 변환을 담당하는 계층
7) 어플리케이션 계층
사용자가 네트워크에 접근할 수 있는 인터페이스를 담당하는 계층
5,6,7은 데이터라 한다.
3. OSI모델 데이터 교환 방식
4. TCP/IP 프로토콜
5. ARP/RARP 프로토콜(TCP/IP 2층)
6. IP 프로토콜
① 비연결형 프로토콜로 연결 상태를 유지하지 않기 때문에 패킷 전송 순서를 보장하지 않는다.
② IP는 목적지 주소를 기반으로 라우팅을 담당하는 인터넷 계층의 대표 프로토콜이다.
2) IP 프로토콜 구조
3) IP 단편화
5) IP 스푸핑
① IP를 속이고 통신하는 공격으로 캐빈미트닉이 이를 이용하여 시도했었음
② 시스템 간의 트러스트 관계를 이용
트러스트 관계가 맺어진 서버와 클라이언트를 확인 후 클라이언트를 연결 불가능 상태로 만든다(DoS 공격)
그리고 공격자가 클라이언트의 IP로 위조하여 서버와 통신.
- 유닉스, 리눅스 시스템에서 트러스트 관계 설정파일로 /etc/hosts.equiv와 $HOME/.rhost 파일이 있다.(전자는 시스템 전체에 영향을 주고 후자는 각 사용자별로 설정하는 파일)
- 설정 방식
host_name : 해당 호스트의 접근 허용
+ : 모든 호스트의 접근을 허용
..
rlogin 서비스 활성화
- r게열 서비스는 인증없이 신뢰 관계에 있는 시스템들의 원격접속을 허용해주는 서비스들이다. rlogin의 경우 telnet과 유사하지만 인증 없이 접속이 가능하다.
- xinetd 데몬의 rlogin 서비스를 활성화한 후 xinetd 데몬을 재기동한다.
- netstat명령으로 소켓 상태를 확인해보면 513/tcp 포트가 listen 상태에 있는 것을 확인
대응책
① 시스템 간 트러스트 설정 하지 않기
② 반드시 사용해야되는 경우 시스템의 MAC 주소를 정적으로 구성해 단순히 IP 만 위조한 클라이언트 차단
6) IPv6
7. ICMP 프로토콜
8. TCP 프로토콜
9. UDP 프로토콜
10. 네트워크 관리 명령어
(1) ping 명령
① 종단 노드 간에 네트워크 상태를 관리하기 위한 명령어
② target 시스테메 대한 접근성, 해당 구간에 대한 네트워크 속도 및 품질 검사
③ ICMP echo request(type:8)와 ICMP Echo Reply(Type:0) 메시지 이용
-n : 패킷 전송 횟수 설정 (4번)
-l : 패킷 크기 설정 32bytes
-c : 패킷 전송 횟수 설정(무한)
-s : 패킷 크기 설정 56bytes
(2) traceroute/tracert 명령
① 종단 노드 사이에 있는 여러 중계 노드 각 구간에 대한 네트워크 상태를 관리하기 위한 명령어로 라우팅 문제를 찾는 목적으로 많이 사용
② 각 구간에 대한 접근성 및 네트워크 속도 검사
③
(3) netstat 명령
(4) ifconfig 명령
11. 포트 스캐닝
decoy 스캔 : 다양한 포트 스캔을 수행할 때 스캔을 당하는 Target 호스트에서 스캐너 주소를 식별하기 어렵도록 실제 스캐너 주소 외에 다양한 위조된 주소로 스캔하는 방식.
nmap -T4 -sF -p 23,80 IP 주소 -D RND // D : 디코이 옵션을 통해서 임의로 부여한(RND) 위조된 IP로 TCP FIN 스캔을 수행
- oN : 스캔 결과 일반 파일 형식으로 출력
- oX : 스캔 결과 XML 파일 형식으로 출력
- oG : 스캔 결과 Grepable(grep, awk 등으로 분석하기 편한) 파일 형식으로 출력
- -O : 영 대문자 O는대상 호스트의 운영체제 정보를 출력
12. 서비스 거부 공격(DoS)
(1) 개요
① 대상 시스템이 정상적인 서비스를 할 수 없도록 만드는 공격이다.
② 유형
- 파괴 공격 - 디스크, 데이터, 시스템 파괴
- 시스템 자원 소진 공격 - CPU, 메모리, 디스크 등의 자원에 과도한 부하를 줌
- 네트워크 자원 소진 공격 - 과도한 트래픽으로 네트워크 대역폭(bandwidth)을 소진
(2) Ping of Death
1) 개요
① ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 MTU에 의해 다수의 IP 단편화가 발생하게 된다.
- MTU는 물리적인 네트워크 프로토콜의 데이터부(payload)의 최대크기를 의미한다.
- Ethernet의 경우 1500bytes, 즉 IP의 최대 크기가 1500 bytes이기 때문에 IP 헤더부(기본 20)을 제외하면 최대 1480bytes의 크기로 생성된다.
② 수신측에서는 단편화된 패킷을 처리(reasembling, 재조합)하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하게 한다.
2) 대응책
- 보통의 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지
- 대부분은 공격을 받았을 때 반복적으로 들어오는 일정 수 이상의 ICMP패킷을 무시하게 설정되어 있다.
(3) Land Attack
(4) Smurf Attack
1) 개요
① 출발지 IP를 희생자 IP로 위조한 후 증폭 네트워크로 ICMP Echo Request를 브로드캐스트 함으로써 다수의 ICMP echo Reply가 희생자에게 전달되어 유발시키는 공격
② Directed Broadcast
- IP 주소의 호스트ID 비트를 모두 1로 설정하여 broadcast 하는 방식
- 원격지 네트워크에 broadcast를 해야 할 경우에 원격지 주소의 호스트ID 비트를 모두 1로 설정하여 전송을 하게 된다.
- 이 때 원격지 라우터의 directed broadcast가 활성화 되어야 가능한데 일반적으로 보안상의 문제로 허용하지 않는다.
③ Amplifier(Bounce) network
- ICMP Echo Request 브로드캐스트 메시지를 받아서 희생자에게 다수의/증폭된 ICMP echo Reply를 전송하는 네트워크를 말한다.
2) 대응책
① 스머프 공격의 특성상 공격이 시작되면 단시간에 다수의 ICMP Echo Reply 패킷을 희생자에게 전송한다. 동일한 ICMP Echo Reply 패킷이 다량으로 발생한 경우 IPS로 차단
② 증폭 네트워크로 사용되는 것을 막기 위해 다른 네트워크로부터 자신의 네트워크로 들어오는 Driect broadcast 패킷을 허용하지 않도록 라우터 설정
(config-if)# no ip directed-broadcast
③ 브로드캐스트 주소로 전송된 ICMP Echo Reply메시지에 대해 응답하지 않도록 설정
(5) Teardrop Attack
13. 분산 서비스 거부 공격 (DDoS)
1) 개요
① 분산된 다수의 좀비 PC/디바이스에 의해 공격대상 시스템의 서비스를 마비시키는 공격 형태를 말한다.
② 4가지 구성요소
- 공격자 : C&C 서버에 공격 명령을 전달하는 해커의 컴퓨터 = 봇 마스터
- 명령제어(C&C서버) : 공격자로부터 직접 공격 명령을 전달받는 시스템을 말하며 전달받은 명령은 관리하는 다수의 좀비 PC/디바이스에게 전달된다. = 마스터
- 좀비 : C&C 서버로부터 전달받은 명령을 실행하여 공격대상에 실제 공격을 수행하는 PC/디바이스를 말한다. = 봇, 슬레이브, 에이전트
- 공격 대상 : 공격의 대상이 되는 시스템
③ 절차
- 공격자는 각 봇을 관리하고 명령을 내리는 C&C 서버를 구축
- 스펨메일이나 악의적인 웹사이트 등을 통해 불특정 다수의 PC에 봇을 배포해 감염을 시도한다.
- 사용자가 봇 프로그램을 다운로드해 실행하면 봇에 감염된다.
- 봇이 C&C 서버에 접속함으로써 감염 PC의 일원이 된다.
- 공격자가 C&C서버에 명령을 내리면 C&C서버는 봇에 명령을 전달한다.
- 봇은 명령에 따라 다양한 공격을 수행한다.
2) 봇/봇넷 살펴보기
(가) 개요
① 봇은 소프트웨어적 로봇을 줄임말로 보안상 결함을 이용해 원격에서 해당 시스템을 제어할 수 있는 프로그램을 말한다.
- 일반적으로 봇은 웜/바이러스, 백도어, 스파이웨어, 루트킷 등 다양한 악성코드들의 특성을 복합적으로 가지고 있다.
② 봇넷이란? 악성 소프트웨어인 봇에 감염된 다수의 좀비로 구성된 네트워크를 말한다.
③ 봇넷은 명령/제어를 위해 사용하는 프로토콜에 따라 IRC, HTTP, P2P 봇넷으로 분류할 수 있다.
(나) 봇넷 명령 제어 방식
①
②
③
(다) DNS 싱크홀 서비스
① 악성 봇에 감염된 PC가 해커의 명령을 받기 위해 C&C 서버로 연결을 시도할 때 C&C 서버 대신 싱크홀 서버로 우회시켜 더 이상 해커로부터 조종 명령을 받지 않도록 해주는 시스템을 말한다.
② 동작 과정
- 사전 단계로 KISA에서 배포한 C&C 서버 목록을 ISP 등 DNS 싱크홀 적용기관의 DNS 서버에 업데이트 작업을 주기적으로 진행한다.
- 악성 봇에 감염된 pC가 싱크홀이 적용된 DNS에 C&C 서버에 대한 질의를 요청한다.
- DNS는 악성 봇 PC에 싱크홀 서버 IP 주소를 반환한다.
- 이를 통해 악성 봇PC는 C&C 서버ㅏ 아닌 싱크홀 서버로 접속하여 공격자의 명령으로부터 피해를 방지할 수 있다.
3) DDoS 공격 유형
문자 값 | 대역폭 소진 공격 | 서비스 마비 공격(어플리케이션) |
대표 공격 유형 | UDP/ICMP Flooding, SYN Flooding | HTTP Get Flooding |
공격 형태 | 1. UDP/ICMP Traffic Flooding - UDP/ICMP Flooding, DNS Query Flooding 등 2. TCP Traffic Flooding - SYN Flooding, SYN+ACK Flooding 3. IP Flooding - Land Attack, Tear Drop, HTTP Continuation 등 |
1. HTTP Traffic Flooding - GET Flooding, CC Attack 등 2. HTTP Header/Option Spoofing - Slowloris, Pyloris 등 3. TCP Traffic Flooding - TCP Session, SYN Flooding, TCP slow read 등 4. Other L7 Service Flooding - Hash DoS, Hulk DoS, FTP/SMTP Attack 등 |
프로토콜 | 3~4계층 : ip, tcp, udp, igmp,icmp 등 | 7계층 : HTTP, DNS, FTP, SMTP 등 |
증상 | 회선 대역폭고갈 동일 네트워크를 상용하는 모든 서비스에 대한 접속장애 |
HTTP 서버 과다 접속으로 인한 장애발생 공격대상 시스템만 피해 |
공격 대상 | 네트워크 인프라 | 웹서버, 정보보호 장비 등 |
1. UDP/ICMP Traffic Flooding
: 공격자는 다량의 UDP/ICMP 패킷을 서버로 전송하여 서버가 보유한 네트워크 대역폭을 가득 채워 다른 정상적인 클라이언트의 접속을 원활하지 못하도록 유발시키는 공격이다.
2. DNS Query Flooding
: UDP 프로토콜 기반의 서비스를 제공하는 DNS에 대해 DNS 쿼리 데이터를 다량으로 서버에 전송하여 DNS의 정상적인 서비스를 방해하는 공격
3. TCP SYN Flooding
: 다량의 SYN 패킷을 서버로 전달하여 서버의 대기큐를 가득 채워 새로운 클라이어트의 연결 요청을 무시하도록 하여 장애를 유발시키는 공격
4. TCP Flag Flooding
: TCP의 Flag값(control bit)를 임의로 조작하면 SYN, ACK, FIN, RST와 같이 여러 형태의 패킷을 생성할 수 있으며, 서버는 이러한 패킷을 수신하는 경우 해당 패킷을 검증하기 때문에 서버의 자원을 소모시키는 공격이다.
5. TCP Session Flooding
: TCP 3-way handshake 과정을 과도하게 유발함으로써 서비스 과부하를 유발하는 공격
6. HTTP Continuation
: 서버로 전달되는 패킷에 HTTP Header없이 Data만 채워 웹서버가 지속적으로 데이터 수신을 위해 TCP자원을 사용하도록 하는 공격
7. HTTP Get Flooding
: 공격자는 동일한 URL을 반복 요청하여 웹서버가 URL에 해당되는 데이터를 클라이언트에게 회신하기 위해 서버 자원을 사용하도록 하는 공격
8. HTTP Get Flooding with Cache-Control(CC Attack)
: 공격자는 HTTP 메시지의 캐시 옵션 CC을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도하여 캐싱 서버의 기능을 무력화하고 웹 서버의 자원을 소모시키는 공격
9. Slow HTTP POST DOS(rudy)
: HTTP POST 메소드를 이용하여 서버로 전달할 대량의 데이터를 장시간에 걸쳐 분할 전송하면 서버는 POST데이터가 모두 수신하지 않았다고 판단하여 연결을 장시간 유지하게 하는 공격
10. Slow HTTP Header DoS(Slowloris)
: 웹서버는 HTTP 메시지의 헤더부분을 먼저 수신하여 이후 수신할 데이터의 종류를 판단하게 되는데 헤더부분을 비정상적으로 조작하여 웹서버가 헤더정보를 구분할 수 없도록 하면 웹서버는 아직 HTTP헤더 정보가 모두 전달되지 않은 것으로 판단하여 연결을 장시간 유지하게 된다.
11. Slow HTTP Read DoS
: 공격자는 웹서버와 TCP 연결 시 TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후 HTTP데이터를 송신하여 웹서버가 정상적으로 응답하지 못하도록 DoS상태를 유발한다.
12. 해시도스(HashDoS) 공격
: 웹서버는 클라이언트로부터 전달받은 HTTP 메시지의 매개정보 관리를 위해 해시테이블을 사용한다. 조작된 매개정보를 포함한 다량의 메시지는 해시테이블 검색을 위한 인덱스로 사용되는 해시값에 충돌을 발생시켜 정확한 값을 찾기 위해 모든 해시테이블을 검사하게 되는데 이떄 웹 서버의 CPU자원을 소진하게 되어 정상적인 서비스를 방해한다.
13. 헐크도스(HulkDoS) 공격
: GET Flooding 공격유형으로 동일 URL을 지속적으로 요청 시 차단될 수 있기 때문에 이를 우회하기 위해 URL을 지속적으로 변경하면서 공격하는 방식
4) 네트워크 대역폭 소진 공격 실습
5) 서버/서비스 자원 소진 공격 실습
(가) TCP SYN Flooding 공격
- 3way handshake 이용
대기큐
- 대응책
- 완전한 3way handshaking이 이뤄지지 않는다면 Backlog Queue(연결 요청 대기큐)가 소비되지 않도록 설정한다.[Syn Cookie설정 이용 : TCP 프로토콜 표준 명세서에 정의된 내용으로 연결 요청 상대방, 즉 클라이언트의 유효성을 확인하는 방법이다.
연결설정 과정에서 서버는 특정값을 생성, SYN + ACK 응답 시 이를 ISN으로 설정해서 전달하는데 클라이언트가 이에 대한 적적한 ACK응답을 받을 때까지 대기큐에 연결요청정보를 담지 않는다.]
{#sysctl -w net.ipv4.tcp_syncookies=1 활성화} - 방화벽 또는 DDoS 대응장비를 이용하여 동일 IP 연결 요청에 대한 임계치 설정 - TCP 포트80번 연결 요청에 대해 동일 출발지 IP로 동시 연결 개수가 5개 초과 시 이를 차단
[iptables : iptables -A INPUT -p tcp --dport 80 --syn -m connlimit--connlimit-above 5 -j DROP] - First SYN Drop 설정
연결 요청 패킷을 보내는 클라이언트가 실제로 존재하는지를 파악하는 방법으로 클라이언트로부터 전송된 첫 번째 SYN은 Drop하여 재요청 패킷이 도착하는지 확인하여 출발지IP가 위조 되었는지 판단. - backlog queue의 크기를 늘려준다. 효과 보기 힘듦
[리눅스#sysctl -w net.ipv4.tcp_max_syn_backlog = 1024 : 크기를 1024로 늘림]
[유닉스#ndd -set /dev/tcp tcp_conn_req_max_q0 1024 : //] - SYN + ACK에 대한 대기 시간(connection time out)을 줄인다.
(나) HTTP Get Flooding 공격
① : 공격자가 동일한 동적 컨텐츠에 대한 HTTP Get 요청을 다량으로 발생 시켜 공격대상 웹서버가 해당 요청을 처리하기 위해 서버 자원을 과도하게 사용하도록 하여 정상적인 요청을 처리하지 못하도록 하는 서비스 거부 공격이다.
② 웹 로그 access 분석
(다) Hulk DOS 공격
: HTTP Get Flooding 공격이 공격자가 동일한 주소에 대한 HTTP Get 요청을 다량으로 발생시키지만 해당 URL에 대한 방어(URL 임계치 설정)가 쉬워 Hulk DoS 공격처럼 공격대상 웹사이트 주소를 지속적으로 변경하면서 다량으로 GET 요청을 발생시키는 공격을 한다.
(라) Hash DoS 공격
- 웹 서버는 클라이언트 HTTP 요청을 통해 전달되는 파라미터를 효율적으로 저장하고 검색하기 위한 자료구조로 해시테이블을 주로 사용한다.
공격자는 이런 특성을 악용하여 조작된 많은 수의 파라미터를 POST 방식으로 웹서버로 전달, 웹서버는 다수의 해시 충돌이 발생하게 되고 결과적으로 정상적인 파라미터 조회 시 많은 CPU자원을 소모하게 된다. 이런 공격
6) Slow 계열 공격 유형 실습
(가) Slow HTTP Header DoS 공격 = Slowloris(저 대역폭 공격)[빈라인을 전달하지 않고]
- HTTP 요청 메시지는 [요청 라인 / 요청 헤더 / 빈 라인 / 메시지 바디]로 구성되어 있다. 개행은 CRLF(CR : 행의 맨 앞으로 이동 /LF : 다음 행으로 이동)를 의미하며 16진수 값으로 0x0d0a로 표현
- 기본적으로 웹 서버는 클라이언트의 요청 메시지가 들어오면 먼저 요청 헤더부까지 모두 수신한 후 헤더 필드들을 분석하여 이후 메시지 바디부를 어떻게 처리할지 결정하게 되는데, 공격자는 이부분의 취약점을 이용하여 공격을 수행한다.
- 만약 요청 헤더의 끝, 즉 빈 라인을 전달하지 않고 지속적으로 천천히 불필요한 헤더 필드 정보를 전달한다면 모두 수신할 때까지 연결 상태를 유지하면서 대기한다.
이런 방식으로 다수의 연결을 지속시키면 대상 웹서버의 연결 자원(가용량 : 웹서버로 접속할 수 있는 최대 클라이언트의 수)이 모두 소진되어 정상적인 요청을 받을 수 없는 상태가 된다.
(나) Slow HTTP POST DoS(rudy) 공격 [Content-Length 헤더 필드 건드림]
- 클라이언트는 HTTP 요청을 통해 데이터를 웹서버로 전달하고자 할 때 POST 방식을 사용하고메시지의 유형과 크기 정보를 전달하기 위해 Content-Type 헤더 필드와 Content-Length 헤더 필드를 사용한다.
- 기본적으로 웹서버는 Content-Type 헤더 필드를 참고해서 데이터의 유형을 파악하고 Content-Length 헤더 필드를 참고해서 데이터의 길이를 파악한 후 해당 데이터의 길이만큼 읽어 들이는 작업을 수행한다.
- 공격자는 Content-Length 헤더 필드를 비정상적으로 크게 설정한 후 매우 소량의 데이터를 지속적으로 천천히 웹서버에 전송
-> 웹 서버는 Content-Length 헤더 필드에 명시된 크기만큼 데이터를 모두 수신하기 위해 연결 상태를 유지하면서 대기하게 된다. - 이런 방식으로 다수의 연결을 지속시키게 되면 대상 웹서버의 연결자원이 모두 소진되어 정상적인 요청을 받을 수 없는 상태가 된다.
- 이처럼 POST 방식으로 데이터를 전송하면서 Content-Length 헤더 필드와 전송 데이터를 조작해 하는 것을 rudy라 함.
(다) Slow HTTP Read DoS 공격 [Window 필드 건드림]
- TCP의 흐름제어란 연결된 상호간에 수신 가능한 양만큼만 데이터를 전송하는 제어방식을 의미한다. 즉 수신측의 수신 버퍼에 충분한 여유 공긴이 없다고 송신측에게 알려주면 송신측은 수신측에서 여유 공간이 생겼다고 알려줄 때까지 대기(지속적으로 확인하느 작업 수행)함으로써 흐름제어를 하게 된다.
- TCP 헤더 Window 필드가 수신측에서 수신 가능한 여유 공간의 크기를 담아서 송신측에게 전달하는 헤더 필드다.
만약 수신측의 수신 버퍼에 여유 공간이 0이 되면 window 필드를 0으로 설정한 "Zero Window Packet"을 전달하고,
이를 수신한 송신측에서는 일정 시간 대기 후(Timer 동작) 수신측 상태를 확인하기 위해 "Zero Window Probe Packet"을 전달한다. - 이를 수신한 수신측에서는 여유 공간이 생겼다면 해당 공간의 크기만큼 Window 필드를 설정하여 응답하고
여전히 여유 공간이 없다면 "Zero Window Packet"으로 응답 - 공격자는 이런 TCP 흐름제어 특성을 이용하여 HTTP 요청을 보낸 후 Window 크기를 조작하여 0인 "Zero Window Packet"을 지속적으로 서버 측에 전달
서버가 요청에 대한 응답 메시지를 전송하지 못하고 연결을 지속적으로 유지하도록 한다. - 이런 방식으로 다수의 연결을 지속시키게 되면 대상 웹서버의 연결 자원이 모두 소진되어 정상적인 요청을 받을 수 없는 상태가 된다.
(라) Slow HTTP Header/POST 공격 대응책
① 동시 연결(concurrent connection)에 대한임계치 설정을 통한 차단
- 동일한 출발지 IP에서 동시에 연결할 수 있는 연결 개수에 대한 임계치를 설정
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP //30개 초과 동시 연결에 대해 차단
② 연결 타임아웃(Connection Timeout)설정을 통한 차단
<Apache httpd.conf> 중 일부
Timeout 120
- 클라이언트와 웹서버 간에 아무런 데이터 송수신 없이 세션을 유지하는 시간에 대한 타임아웃을 설정하여 연결을 종료한다.
- Apache웹 서버의 경우 httpd.conf의 Timeout 지시자를 120에서 작은 값으로 설정한다.
- 공격자가 방어 정책을 우회하기 위해 데이터 전송 주기를 짧게 가져갈 수 있으므로 이 방안에는 한계가 있다.
③ 읽기 타임아웃 설정을 통한 차단
<Apache httpd.conf> 중 일부
<IfModule reqtimeout_module>
RequestReadTimeout header=5 body=10
</IfModule>
- Apache2.2.15버전 이상에서 클라이언트의 요청에 대한 더욱 세부적인 제한을 줄 수 있다.
요청 헤더와 바디 각각에 대한 타임아웃을 지정하여 오류코드를 반환한다.
14. DRDoS(Distributed Reflection DoS)
① : 공격자는 출발지 IP를 공격대상의 IP로 위조하여 다수의 반사서버로 요청정보를 전송,
공격대상은 반사서버로부터 다수의 응답을 받아 서비스 거부 상태가 되는 공격 유형을 말한다.
② 유형
- TCP의 연결설정과정 3-way hand shake의 취약점을 이용
위조된 주소의 syn 요청을 반사서버로 전달하여 syn+ack응답이 공격대상으로 향하도록 하는 방법 - ICMP 프로토콜의 Echo Request와 Echo Response를 이용
위조된주소의 Echo Request를 반사서버로 전달하여 Echo Response가 공격대상으로 향하도록하는 방법 - UDP 프로토콜 서비스를 제공하는 서버를 반사서버로 이용하여 그 응답이 공격대상으로 향하도록 하는 방법 - DNS, NTP, SNMP, CHARGEN 등..
- UDP 서비스를 이용한 DRDoS 공격 유형
1. DNS증폭 DRDoS 공격
: DNS서버에 많은 양의 레코드 정보를 요구하는 DNS 질의 타입(ANY, TXT등)을 요청하여 공격대상에게 대량의 트래픽을 유발
2. NTP증폭 DRDoS 공격
: NTP서버에 최근 접속한 클라이언트 목록(monlist 명령)을 요청하여 대량의 응답 트래픽을 유발
3. SNMP 증폭 DRDoS 공격
: SNMP agent에 MIB와 같은 정보를 대량 요청(GetBulkRequst)하여 공격대상자에게 대량 트래픽을 유발
4. CHARGEN 증폭 DRDoS 공격
: CHARGEN서버에 접속 시 대량의 문자열을 전송하여 공격대상자에게 대량 트래픽을 유발
- 대응 방법
① DRDoS는 출발지 IP를 위조하는 공격이므로 IP 주소가 위조된 패킷이 인터넷 망에서 인입되지 않도록 ISP가 직접 차단(Ingress Filtering)
② 반사서버에서는 icmp 프로토콜을 이용하는 DRDoS에 악의적으로 이용되지 않기 위해 icmp프로토콜이 필요가 없는 시스템은 차단
③ DNS 증폭 DRDoS의 반사서버로 DNS서버가 악용되지 않도록 하기 위해서는 아래 사항 점검
- 공개용이 아닌 내부 사용자용 DNS 서버라면 서버 설정을 통해 내부 사용자 주소만 Recursive Query가 가능하도록 제한
- 서버방화벽 또는 네트워크 보안 장비를 통해서 특정 byte 이상의 DNS질의에 대한 응답을 차단하거나 동일 IP에 대해 단위 초당 요청 개수 제한을 설정
④ NTP 증폭 DRDoS의 반사서버로 NTP 서버가 악용되지 않도록 하기 위해서 대량의 응답 트래픽을 발생시키는 monlist명령 해제
#monlist : nTP 서버에 최근 접속한 클라이언트 정보를 전송해주는 명령어로 접속 클라이언트가 많을 경우 대량의 응답 트래픽이 발생하게 된다.
ntpdc -c monlist <ntp 서버 주소>
15. 무선랜 보안
①
②
③
④
⑤
⑥
⑦
⑧
⑨
(가)
(나)
(다)
(라)
(마)
(바)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
Sec 5 네트워크 보안 프로토콜
1. 가상 사설망(VPN)
2. IP 보안(IPsec)
3. 전송 계층 보안 - SSL/TLS
Sec 6 라우터 보안
1. 라우터 자체 보안
2. 라우터와 접근제어(ACL)
3. 라우터를 통한 네트워크 보안
- 참고
정보보안기사 실기 알기사 책
'교육 및 자격증 > 정보보안기사 : 실기' 카테고리의 다른 글
ㅁ (1) | 2023.04.16 |
---|---|
보안 솔루션 종류 및 특징 (0) | 2023.04.15 |
sec2 UNIX, Linux 서버 취약점; sec3 윈도우 서버 취약점 (0) | 2023.04.07 |
정보보안기사 실기 기출 분석 및 출제 범위 (0) | 2023.03.31 |
Sec17; 정보보안 법규 (0) | 2023.03.06 |