DongDD's IT

[정보보안기사 실기] 네트워크 보안 - 기초 본문

자격증/정보보안기사

[정보보안기사 실기] 네트워크 보안 - 기초

DongDD 2018. 4. 25. 15:03

[정보보안기사 실기] 네트워크 보안 - 기초



OSI 7 Layer



계층별 특징


1. Physical Layer(Layer 1)

- 디지털 데이터를 신호로 변환해 전송

- Data Unit : bit, signal

1) 주요 장비

- Hub : 들어온 신호를 연결된 모든 포트로 전달하는 중계 장치(Dummy Hub)

- Repeater : 감쇠된 신호를 새롭게 재생하여 전달하는 재생 중계 장치


2) Hub Sniffing

- NIC의 기본 동작 모드는 자신의 목적지와 일치하는 패킷만 받음

- NIC 동작 모드를 Promiscuous Mode(무차별 모드)로 설정하면 모든 패킷을 수신하기 때문에 스니핑할 수 있음



2. DataLink Layer(Layer 2)

- Node-To-Node Delivery

- 인접 노드간 통신이라고 불리며, 각 노드의 목적지에 도달하기 위해 MAC 주소(6bytes) 필요

- IEEE 802 표준에서는 LLC(Logical Link Contorol)와 MAC(Media Access Control), 두가지의 하위 계층으로 세분화

- Data Unit : Frame

1) 신뢰성 전송

- 흐름제어(Flow Control)

- 오류제어(Error Control)

- 회선제어(Line Control)


2) 주요 장비

- L2 Switch : MAC address table을 참조해 해당 MAC 주소의 포트에 연결된 노드에게만 패킷 전송

->목적지 노드로만 패킷을 전송하므로 일반적으로 Sniffing이 불가능(다른 기술 사용)

- Bridge : 물리적으로 떨어진 동일한 LAN을 연결해주는 장비


3) Switch Sniffing

① Switch Jamming/MAC Flooding 

- MAC Address Table을 오버플로우 시켜 허브처럼 모든 노드에게 패킷을 전송하도록 만듬

-> Swtich는 Fail Safe 정책 장비이기 때문에 가능

- 오버플로우를 위해 Source MAC을 계속 변경해 패킷을 전송

ref) Fail Safe, Fail Secure

- Fail Safe : 장애 발생 시 모든 기능 허용하는 정책(가용성 > 보안성)

- Fail Secure : 장애 발생 시 모든 기능 차단하는 정책(가용성 < 보안성)

② ARP Spoofing

- 특정 호스트의 MAC주소를 자신의 MAC 주소로 위조한 ARP Reply 패킷을 만들어 지속적으로 보내 희생자의 ARP Cache Table의 MAC 주소를 공격자의 MAC주소로 변경하는 공격 기법

③ ARP Redirect

- 공격자가 자신의 MAC주소를 라우터인 것처럼 위조하여 패킷을 지속적으로 브로드캐스트 전송하여 로컬 네트워크의 모든 호스트의 라우터 MAC 주소를 공격자의 MAC주소로 변경하는 공격 기법

④ ICMP Redirect

- 경로 재설정을 위한 ICMP Redirect를 이용해 자신의 주소로 위장한 ICMP Redirect 메시지를 보내 라우팅 테이블을 변조하는 기법

⑤ SPAN/Port Mirroring 기능

- 스위치를 통과하는 모든 트래픽을 볼 수 있는 기능


3. Network Layer(Layer 3)

- End-To-End Delivery

- 물리적인 네트워크 사이의 라우팅을 담당하는 계층

- IP address(4bytes)를 이용해 노드 간 라우팅

- Data Unit : datagram(packet)

1) 주요 장비

- Router(L3 Switch) : 최적의 경로를 선정해 전송하는 라우팅 기능을 담당하는 장비


4. Transport Layer(Layer 4)

- Process-To-Process, 신뢰성 있는 데이터 전송 담당 계층

- 목적지 Process를 식별하기 위해 Port address(2bytes) 사용

- Data Unit : TCP(Segment), UDP(User datagram)

1) 기능

- Segmentation, Reassembly : 원본 데이터를 segment로 나누어 전송하고 목적직에서는 재조합함

- Connection Control : 연결지향 TCP, 비연결지향 UDP 방식 제공

- Flow Control : 상호간 수신할 수 있는 만큼의 data를 전송해 data 손실이 발생하지 않도록 하는 제어 방식

- Error Control : 오류 발생 시 교정

- Congestion Control : 네트워크 상황을 고려해 data 전송을 제어


5. Session Layer(Layer 5)

- Application간 세션 생성, 관리, 종료 담당


6. Presentation Layer(Layer 6)

- 데이터 표현 방식 변환 담당

- 암호화/복호화, 압축/압축해제, 인코딩/디코딩


7. Application Layer(Layer 7)

- 네트워크에 접속할 수 있는 응용 프로그램

- Data Unit : Message

1) Well Known port

- HTTP : TCP 80

- FTP : data port(20), control port(21)

- SSH/SFTP : TCP 22

- TELNET : TCP 23

- SMTP : TCP 25(메일 전송)

- POP3 : TCP 110(메일 수신, 서버에서 가져오면 메일 삭제)

- IMAP : TCP 143(메일 수신, 서버에서 가져올 때 메일 삭제 X)

- DNS : TCP,UDP 53

- DHCP : UDP 67,68

- TFTP : UDP 69

- SNMP : UDP 161(네트워크 관리)



OSI 7 Layer 특징


1. Encapsulation/Decapsulation

- Encapsulation : packet을 전송할 때 상위 Layer에서 받은 data는 유지한 채로 해당 Layer에서 필요한 정보만을 덧 붙이고 하위 Layer로 내려보냄

- Decapsulation : packet을 받으면 해당 Layer에서 필요한 header정보 확인 후 해당 header만 제거한 후 상위 Layer로 올려보냄


2. Multiplexing/Demultiplexing

- Multiplexing : 상위 계층의 여러 프로토콜 데이터들이 하위 계층 하나의 프로토콜 데이터로 변환

-> ex) TCP -> IP, UDP -> IP

- Demultiplexing : 하위 계층 하나의 프로토콜이 상위 계층 여러개의 프로토콜 데이터로 변환

-> ex) IP -> UDP, IP -> TCP



ARP/RARP Protocol



ARP/RARP


- ARP : IP address를 MAC address로 변환해주는 프로토콜

- RARP : MAC address를 IP address로 변환해주는 프로토콜


ARP/RARP 동작 방식


1. ARP

- 목적지 IP address를 포함한 ARP Request 메시지를 Broadcast로 전송

- 해당 메시지를 받고 자신의 IP address와 일치하면 자신의 MAC address를 담은 ARP Reply를 unicast로 전송

- 각 시스템은 ARP cache에 정보 보관


2. RARP

- 자신의 IP address를 모를 때, MAC 주소를 담은 RARP Request 메시지를 Broadcast로 전송

- RARP Server는 IP address를 담은 RARP Reply를 unicast로 전송


ARP Cache Table


- arp 명령어를 이용해 확인할 수 있음

- arp - a : cache table 확인

-> dynamic : arp protocol에 의해 동적으로 설정

-> static : 관리자에 의해 설정(시스템 종료 전까지 유지)

- arp -d : cache 삭제

-> Windows : 저장된 모든 내용 삭제

-> Linux : IP를 명시하고 그 IP cache를 삭제

- arp -s : type을 static으로 변경

-> Windows : 시스템 종료 전까지 유지

-> Linux : PERM으로 설정된 정보는 시스템 종료 전까지 유지


ARP Spoofing 공격(ARP Cache Poisoning)


- 공격자가 희생자의 MAC 주소를 자신의 MAC주소로 위조해 지속적으로 ARP Reply를 보내면 희생자의 ARP Cache Table에 MAC 정보가 공격자의 MAC 정보로 바뀌어 Sniffing할 수 있게 됨

- 희생자가 눈치채지 못하도록 IP Forward 기능 사용

-> IP Forward : 자신이 목적지가 아닌 패킷에 대해 라우팅 테이블을 참조해 해당 목적지로 전송 

- MAC 주소는 서로 다른 네트워크로 라우팅되지 않기 때문에 동일 네트워크 대역에 있어야함

1) 대응 방법

- ARP 캐시를 정적으로 설정하는 방법(시스템 가동 시마다 설정해야함)

- ARP Watch 등 ARP 패킷 실시간 모니터링 프로그램을 이용해 감시


GARP(Gratuitous ARP)


- Source와 Destination IP가 동일한 ARP 요청

- 다른 장비에게 자신의 존재를 알리는 목적으로 사용(ARP Cache 갱신 유도)

1) 목적

- IP 충돌 감지 : GARP에 들어있는 IP 주소가 자신과 동일한 IP라면 충돌을 감지 할 수 있음

-> 호스트 IP 변경 시, 재부팅 시 GARP 패킷 생성

- 상대방의 ARP Cache 정보 갱신 : GARP 수신 시 자신의 ARP Cache 수정

-> 악의적 목적으로 MAC 정보 위/변조될 수 있음



IP Protocol



IP Protocol 구조 등


ref) http://dongdd.tistory.com/33



IP Routing


1. 라우팅 규칙

- 목적지 주소가 동일한 네트워크에 있으면 직접 전송

- 목적지 주소가 동일한 네트워크에 없다면, router의 주소를 routing table을 참조해 찾음

-> netstat -rn 명령으로 routing table 정보 확인 가능

- 목적지 주소가 자신이라면 상위 계층으로 전송


2. 라우팅 테이블 검색 방식, 우선 순위

1) 검색 방식

- 목적지 IP와 routing table의 netmask/genmask를 &(and) 연산 후 routing table의 destination과 일치하는 경로로 전송

2) 우선 순위

- 목적지와 일치하는 경로를 찾음

- 없으면 목적지 네트워크 주소와 일치하는 경로를 찾음

- 없으면 default(0.0.0.0)로 전송


IP Spoofing


- 서버-클라이언트의 신뢰 관계를 이용해 연결되어있는 클라이언트를 연결 불능상태로 만들고 공격자가 클라이언트의 IP로 위조해 해당 클라이언트인 척 서버에 접속하는 기법

- 트러스트 설정 : ID,PASSWORD 인증이 아닌 IP 주소로 인증

-> IP Spoofing에 취약


1. Linux

1) Trust 설정

- /etc/hosts.equiv(시스템 전체), ~/.rhosts(사용자 별) 파일 수정

- 형식 : hostname username

-> ex) + dongdd : 모든 호스트에 dongdd 사용자 접근 가능

-> ex) 127.0.0.1 -dongdd : 127.0.0.1 호스트에 dongdd 사용자 접근 차단

2) 대응책

- 트러스트 설정 해제

- 사용해야 할 경우, 트러스트된 시스템의 MAC 주소를 정적으로 구성해 IP 위조만으로는 접속할 수 없게 함

3) .rhosts, hosts.equiv 사용 금지(시스템 취약점 분석 항목)

- r계열 원격 접속 서비스는 보안상 매우 취약하므로 허용 X

- 사용해야 할 경우, 트러스트 관계 설정 파일을 적절하게 수정해야함

- 보안조치

-> 두 파일 소유자를 root 또는 해당 계정으로 변경

-> 두 파일 권한을 600 이하로 설정

-> "+"를 제거하고 반드시 필요한 호스트, 계정만 등록



ICMP Protocol



ICMP 구조, Type


ref) http://dongdd.tistory.com/38



ICMP Redirect 공격


- ICMP Redirection(Type 5)를 이용해 패킷의 경로를 재설정하는 공격

- 공격자가 원하는 형태로 만들어 특정 목적지로 가는 패킷을 공격자에게 오도록 함

- ARP Redirect와의 차이점

-> ARP Redirect : ARP Cache table을 변조

-> ICMP Redirect : Routing table을 변조

1) 공격 원리

- ICMP Redirect 메시지는 원래 게이트웨이/라우터만 보낼 수 있는 메시지 이므로 공격자는 source address를 희생자가 보냈던 패킷의 게이트웨이 주소로 설정

- 변경할 Gateway address를 공격자의 주소로 설정

- 특정 목적지로 가는 패킷이 공격자의 주소로 오도록 메시지 전송

2) 대응 방법

- ICMP Redirect 메시지가 routing table을 변경하지 못하게 ICMP Redirect 옵션 해제

- Linux : sysctl -w net.ipv4.conf.all.accept_redirect=0으로 설정



TCP Protocol



TCP 기초


ref) http://dongdd.tistory.com/14



TCP Session Hijacking


- 정상적인 통신을 하고 있는 서버-클라이언트에서 세션을 탈취해 인증된 사용자의 세션으로 서버와 통신

- 공격 툴 : hunt


1) 공격과정

- 서버-클라이언트의 통신 사이의 seq num을 탈취하기 위해 sniffing

- 적절한 시기에 완전하게 접속이 끊기지 않도록 적절한 seq num을 가진 RST 패킷을 서버에 보내 서버를 잠시 Closed 상태로 만듬

- 이 상태에서 탈취했던 seq num를 이용해 서버에 재연결 시도

-> 이 과정에서 클라이언트가 서버에 정상적인 메시지를 보내게 되면 seq num가 맞지 않아 서로의 교정을 위해 서버와 클라이언트가 ACK을 지속적으로 보냄(Ack Storm)

- 원래 클라이언트의 세션을 얻어 서버와 통신

2) 대응 방법

- 패킷 유실과 재전송의 증가를 탐지

- Ack Storm 탐지



네트워크 관리 명령어



ping


- End node 간 네트워크 상태를 관리하기 위한 명령어

- ICMP Request(type 8)과 ICMP Reply(type 0) 메시지를 이용


1. Linux

- ping [option] domain/ip_address

- option

-> -c n : n만큼 패킷 전송(default : 무한)

-> -s n : n size로 패킷 전송(default : 56bytes)

2. Windows

- ping [option] domain/ip_address

- option

-> -n n : n만큼 패킷 전송(default : 4회)

-> -l n : n size로 패킷 전송(default : 32bytes)


traceroute


- End node 사이의 경로, router들에 대한 상태를 관리하기 위한 명령어

- Linux : traceroute, Windows : tracert

- UDP 패킷 이용

1) 동작 원리

- TTL을 1씩 증가시켜 각 router에서 ICMP Time Exceeded(type 11) 메시지를 받아 경로를 파악할 수 있음

- TTL = 1이면, 첫번째 router에서 TTL이 0이 되어 메시지 전송

- TTL = 2이면, 두번째 router에서 TTL이 0이 되어 메시지 전송

- 목적지에 도착하면 해당 UDP 포트가 닫혀있어 ICMP Destination Unreachable(type 3) 메시지를 받아 목적지 호스트임을 판단

-> 현재는 보안 상 이유로 대부분의 router에서 ICMP 프로토콜을 사용하지 못하게 해서 응답 시간이 *로 표시될 수 있음(* : 지정시간 내 응답 없음)


netstat


- 시스템의 네트워크 관련 상태정보를 관리하기 위한 명령어

- netstat [option]

- option

-> -t : 연결된 TCP 소켓만 출력

-> -u : 연결된 UDP 소켓만 출력

-> -a : 모든 소켓 정보를 출력(LISTEN + ESTABLISHED)

-> -i : 네트워크 인터페이스 정보 출력

-> -r : 라우팅 테이블 정보 출력

-> -s : 각 프로토콜 별 통계 정보 출력(시스템 부팅 후 누적 정보)

-> -p : 해당 소켓을 사용 중인 프로세스명/PID 같이 출력

-> -n : 네트워크 주소를 숫자 형식으로 출력

-> 옵션 X : ESTABLISHED 소켓 정보 출력

- example

-> ex1) netstat -at : 연결, 연결 대기중인 TCP 소켓 출력

-> ex2) netstat -ant : 연결, 연결 대기중인 TCP 소켓의 네트워크 주소를 숫자로 출력


ifconfig


- Linux에서 네트워크 인터페이스 정보를 출력

- IP 주소, 서브넷 마스크 설정 변경 시 사용

- Sniffing을 위해 해당 interface를 promiscuous mode로 변경할 수 있음

-> ifconfig interface_name promisc



Port Scanning


- 침입 전 취약점을 분석하기 위한 사전 작업으로 연결 포트를 찾는 작업


nmap tool


- 대표적인 포트스캐닝 툴

- nmap [scan_type] [option] target

1) scan_type

- -sS : TCP SYN Scan(Half Open)

- -sT : TCP Open(Connect) Scan

- -sU : UDP Scan

- -sF : TCP FIN Scan

- -sX : TCP Xmas Scan

- -sN : TCP NULL Scan

- -sA : TCP ACK Scan

- -sP : Ping Scan

- -D : Decoy Scan(다양한 주소로 위조해 스캔)

- -b : TCP FTP Bounce Scan

2) port option

- p 번호/서비스명

- -pT x,U:y : TCP는 x번 포트, UDP는 y번 포트 스캔

- -p 1-1000 : 1~1000번 포트 스캔

3) output option

- -v : 상세 내역 출력

- -d : debugging

- -oN file : 일반 파일로 출력(.nmap)

- -oX file : XML 파일로 출력

- -oG file : grep 가능한 파일로 출력

- -oA directory : 일반 파일, XML 파일, grep 가능한 파일로 출력

4) 기타 option

- -O : 타겟의 운영체제 정보 출력

- -F : 빠른 스캐닝

- -T0~-T5 : 속도(느림~빠름)


TCP Open(Connect) Scan


- connect 함수를 이용해 각 포트별로 접속해 스캔하는 방식

- 열린 포트 : 정상적인 연결, 닫힌 포트 : RST+ACK 패킷 받음

- 결과는 가장 정확, 연결을 시도하기 때문에 시스템 로그에 정보가 남음

- 방화벽에 해당 포트가 차단되어 있으면 메시지를 받지 못하거나 ICMP Destination Unreachable 메시지를 받음(Router에서 ICMP를 보내지 않게 해놓을 수 있음)


TCP SYN(Half Open) Scan


- 완전한 연결 과정을 수행하지 않고 SYN을 보낸 후 SYN+ACK이 오면 RST를 보내 연결을 종료함

- 시스템 로그가 남지 않아 Stealth Scan이라고 불림

- SYN+ACK이 오면 열린 포트라는 것을 알 수 있고 RST 패킷을 보내 연결을 종료함

- 닫힌 경우에는 RST+ACK 패킷을 받음

- 방화벽에 해당 포트가 차단되어 있으면 메시지를 받지 못하거나 ICMP Destination Unreachable 메시지를 받음(Router에서 ICMP를 보내지 않게 해놓을 수 있음)


TCP FIN/NULL/Xmas Scan - Stealth Scan


- TCP Header의 flag(제어 비트)를 비정상적으로 설정해 스캔하는 방식

- 연결된 경우와 차단된 경우, 응답이 없어 혼동될 수 있음(nmap -> open/filterd로 표시됨)


1. TCP FIN Scan

- FIN 비트를 설정해 패킷 전송

- 열린 경우 응답을 받지 못함

- 닫힌 경우 RST+ACK 패킷을 받음


2. TCP NULL Scan

- Flag(제어 비트)를 아무것도 설정하지 않고 패킷 젓농

- 열린 경우 응답을 받지 못함

- 닫힌 경우 RST+ACK 패킷을 받음


3. TCP Xmas Scan

- 일부 제어 비트 or 모든 제어 비트를 설정해 패킷 전송

- 열린 경우 응답을 받지 못함

- 닫힌 경우 RST+ACK 패킷을 받음


TCP ACK Scan


- 포트를 확인하는 스캔이 아닌 방화벽의 필터링을 확인하기 위한 스캔

- ACK Flag를 1로 설정해 전송

- 필터링이 되는 경우, 응답이 없거나 ICMP 메시지를 받음

- 필터링이 되지 않는 경우, RST+ACK을 받음

- 상태 기반 필터링인지, SYN 패킷 필터링인지 점검할 수 있음


UDP Scan


- ICMP Destination Unreachable 메시지를 이용해 UDP 포트의 오픈 여부를 확인하기 위한 스캔

- 열린 경우, 응답이 있거나 없음

- 닫힌 경우, ICMP(type 3) 메시지를 받음


Decoy Scan


- 스캐너 주소를 알기 어렵게 하기 위해 다양하게 위조된 주소로 스캔하는 방식

- 다양한 IP로 위조해 스캔



Dos Attack


- 공격 대상 시스템이 정상적인 서비스를 할 수 없도록 하는 공격(가용성을 낮춤)

- 종류 : 파괴 공격, 시스템 자원 소진 공격, 네트워크 자원 소진 공격

- 단일 컴퓨터 : DoS, 다수의 분산된 컴퓨터 : DDoS


Ping of Death Attack


- ICMP 패킷의 크기를 매우 크게 만들어 많은 분할과 재조합이 일어나도록 하는 공격

- 패킷을 재조합하는 과정에서 과부하 발생, 재조합 과정에서 버퍼오버플로우 발생


1. 대응 방법

- ICMP 패킷 중 분할이 일어나는 패킷을 탐지(원래의 ICMP 패킷은 분할이 잘 일어나지 않음)

- 일정 수 이상 반복적으로 들어오는 ICMP 패킷을 차단


Land Attack


- Source IP와 Destination IP를 동일하게 한 패킷을 보내 수신자가 자신에게 응답을 보내도록 해 시스템을 마비시키는 공격


1. 대응 방법

- Source IP와 Destination IP가 동일한 경우 패킷들을 모두 drop함


Smurf Attack


- Source IP를 희생자의 IP로 하여 ICMP Request를 브로드캐스트로 전송해 희생자가 다수의 echo reply를 받게 해서 DoS를 유발시키는 공격

- Directed Broadcast : 목적지 주소를 모두 1로 설정해 전송

- Amplifier Network : 브로드캐스트 메시지를 받아 희생자에게 다수의 echo reply를 전송하는 네트워크


1. 대응 방법

- 다수의 ICMP echo reply 패킷이 감지되면, 침입차단시스템을 이용해 모두 차단

- Direct Broadcast 메시지를 차단

- 브로드캐스트된 echo request 메시지에 응답하지 않도록 함


Teardrop Attack


- fragment offset을 임의로 수정해 재조합 시 문제가 생기도록 하는 공격

- Bonk Attack : 모든 번호를 1로 보냄

- Boink Attack : 무작위, 이상한 순서로 보냄



DDoS Attack


- 분산된 다수의 좀비 PC에 의해 공격 타겟 시스템을 마비시키는 공격


1. 구성요소

1) 공격자(Attacker)

- C&C 서버에 공격 명령을 하는 주체

2) 명령제어 서버(C&C 서버, Master)

- 공격자에게 명령을 받는 서버로, 받은 명령을 다수의 좀비 PC에게 전달

3) 좀비 PC(Bot, Slave, Agent)

- C&C 서버로부터 받은 명령을 수행해 직접적으로 타겟 시스템을 공격하는 시스템

4) 공격 대상

- 공격의 대상이 되는 시스템

ref)

- Bot : 원격에서 해당 시스템을 제어할 수 있도록 해주는 프로그램(악성 봇에 감염된 PC - 좀비 PC)

- Botnet : 공격자가 제어할 수 있는 좀비 PC들로 구성된 네트워크


2. 공격절차

- 봇을 관리하고 명령을 내리는 C&C 서버 구축

- 다수의 PC에 bot을 배포해 감염시킴

- 봇에 감염된 PC들이 C&C 서버에 접속해 봇넷에 추가됨

- C&C 서버에 명령을 내려 좀비 PC들이 명령을 수행하게 함

- 좀비 PC들이 타겟 시스템 공격


3. DNS Sinkhole 서비스

- 좀비 PC가 C&C 서버에 연결을 시도할 때 싱크홀 서버로 접속을 우회시켜 해커로부터 명령을 받지 않게 해주는 서비스


공격 유형


1. 대역폭 소진 공격


1) UDP/ICMP Flooding

- 다량의 UDP/ICMP 패킷을 서버로 전송해 네트워크 대역폭을 가득 채워 클라이언트의 접속을 막는 공격


2) DNS Query Flooding

- DNS 쿼리를 다량으로 서버에 전송해 DNS의 정상적인 서비스를 방해하는 공격


3) TCP SYN Flooding

- 다량의 SYN 패킷을 전송해 backlog queue를 가득 채워 클라이언트의 연결 요청을 무시하도록 하는 공격

- 다수의 위조된 IP로 SYN을 보내 서버가 SYN+ACK을 보내게 한 후, 이에 대한 ACK을 보내지 않으면 서버는 backlog queue에 저장해 놓기 때문에 다른 클라이언트의 요청을 받지 못하게 된다.

- 대응 방법

-> 완전한 연결이 이루어지지 않은 경우 연결 요청 큐에 저장되지 않게 함(sysctl -w net.ipv4.tcp-syncookies=1로 설정)

-> 동일 IP에서 과도한 연결요청이 발생하는 것을 차단

-> Source IP가 존재하기 위해 확인하는 First SYN Drop을 설정(첫번째 요청을 드랍한 후 재요청을 확인해 위조된 IP인지 확인)

- tcpdump -nn "tcp port 80" 으로 확인


4) TCP Flag Flooding

- 임의로 조작한 Flag를 가진 패킷을 전송해 서버가 패킷 검증에 자원 소모를 하도록 하는 공격


2. 서비스 마비 공격


1) TCP Session Flooding

- 3-way handshake 과정을 과도하게 유발시켜 서비스 과부하를 유발하는 공격


2) HTTP Continuation

- HTTP Header없이 data만 전송해 data를 수신하는데 자원을 소모시키는 공격


3) HTTP GET Flooding

- 동일한 URL에 반복 요청을 해서 URL에 해당하는 data를 보내기 위해 서버 자원을 사용하게 하는 공격

- 패킷 캡쳐 도구 ngrep을 이용해 HTTP 메시지를 캡쳐할 수 있음


4) HTTP GET Flooding with Cache-Control

- Cache-control을 조작해 요청을 캐싱서버가 아닌 웹서버가 직접 처리하게 하여 자원을 소모시키는 공격


5) Slow HTTP POST DoS(rudy)

- POST 메소드를 이용해 다량의 데이터를 오랜 시간 분할 전송해 서버가 POST 데이터가 모두 전송되지 않았다고 판단하게 하여 장시간 연결을 유지하게 하는 공격

- Content-Length의 값을 매우 크게하고 데이터를 조금씩 전달하게 되면 데이터가 모두 수신될 때 까지 연결을 유지하게 됨

- Header의 끝 부분에 0x0d0a, 0x0d0a(Empty line)을 넣어 헤더가 끝난 것을 표시함

- 그 후에 지속적으로 데이터를 조금씩 보내 연결을 유지시킴

- 대응 방법

-> 동일한 Source IP에서 동시에 연결할 수 있는 연결갯수의 임계치를 설정(iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above N -j DROP, N개 초과 시 차단)

-> Read Timeout 설정(header와 header에 대해 따로 timeout 시간을 둠)


6) Slow HTTP Header DoS(Slowloris)

- 헤더를 비정상적으로 조작해 서버가 HTTP 헤더정보가 모두 전달되지 않았다고 판단하게 하여 연결을 장시간 유지하게 하는 공격

- Empty line을 만나게 되면 헤더의 끝으로 판단하여 body를 받게 되는데 empty line을 넣지 않고 CRLF(0x0d0a)를 지속적으로 넣어주어 헤더가 끝이 아니라는 것을 명시해줌

- 패킷을 보면 0x0d0a로 끝난 패킷과 지속적으로 의미없는 값이 들어있는 헤더와 0x0d0a로 끝나는 패킷들이 지속적으로 오는 것을 볼 수 있음

- 대응 방법

-> 동일한 Source IP에서 동시에 연결할 수 있는 연결갯수의 임계치를 설정(iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above N -j DROP, N개 초과 시 차단)

-> Connection Timeout 설정(데이터 송수신이 특정 시간동안 없을 경우 차단)

-> Read Timeout 설정(header와 header에 대해 따로 timeout 시간을 둠)


7) Slow HTTP Read DoS

- TCP 연결 시, TCP 윈도우 크기를 감소시킨 후 HTTP 데이터를 송신해 서버가 정상적으로 응답하지 못하게 하는 공격

- 지속적으로 window size를 0으로 조작해 서버에 보내게 되면, 서버는 이 값을 받아 메시지를 전달하지 못한 채로 연결을 지속적으로 유지하게 됨

- 서버의 Timer가 끝나 probe를 보내면, 다시 window size를 0으로 보내 지속적으로 연결을 유지


8) HashDoS

- 조작된 인자를 이용해 서버의 해시테이블 검색에 충돌을 일으켜 CPU 자원을 소모시키는 공격

- HTTP 바디 내용에 다량의 파라미터 값들이 들어가있음


9) HulkDoS

- 동일 URL 요청 시 차단될 수 있기 때문에 이를 우회하기 위해 지속적으로 URL(다른 인자로)을 변경하면서 공격

- URL에 각기 다른 파라미터들이 들어가있음



DRDoS Attack


- Source IP를 target IP로 위조해 다수의 반사 서버로 요청정보를 전송해 타겟 서버가 다수의 반사서버로부터 응답을 받아 DoS 공격을 받게함


종류


1. TCP 3-handshake 이용

- syn+ack이 타겟 서버로 전송되게함

2. ICMP 이용

- 서버의 IP로 echo request를 반사서버로 전송해 다수의 reply를 받게함

3 UDP 이용

- DNS 증폭 DRDoS : DNS 반사서버에 많은 양의 레코드 정보를 요구하는 DNS 질의 요청

- NTP 증폭 DRDoS : NTP 반사서버에 최근 접속 클라이언트 목록을 요청

- SNMP 증폭 DRDoS : SNMP agent에 MIB와 같은 정보를 대량 요청

- CHARGEN 증폭 DRDoS : CHARGEN 서버에 접속 시 대량의 문자열을 전송


DoS와의 차이점


- 공격 근원지 파악이 어려움

- 좀비 PC의 공격 트래픽 효율 증가(타겟 서버로 보낸 syn+ack에 대한 ack이 오지않으면 지속적으로 재전송)


대응 방법


- IP주소가 위조된 패킷이 인터넷 망에서 들어오지 않도록 차단(Ingress Filter)

- ICMP 프로토콜 불필요시, ICMP 프로토콜 차단

- DNS 증폭 DRDoS 반사서버로의 악용을 막음

-> 내부 사용자용 DNS 서버라면 내부 사용자 주소만 재귀 쿼리 사용이 가능하도록 함

-> 특정 bytes 이상의 쿼리 차단

-> 동일 IP에 대한 단위 초당 요청 횟수 제한

- NTP 증폭 DRDoS 반서서버로의 악용을 막음

-> 최근 접속 클라이언트 정보를 전송해주는 명령어 monlist를 사용하지 못하게 함



 

Comments