네트워크를 취약하게 만드는 요인: 많은 공격 지점, 네트워크를 통한 자원 공유, 시스템 복잡성
네트워크 위협의 유형: 기술적 위협, 수동적 공격(스니핑)·능동적 공격(Replay-attack, DoS, Session Hijacking)
1. DoS Attack (Denial of Service, 서비스 거부공격)
1) DoS Attack 개념
사용자가 시스템에 과도한 부하를 일으켜 서비스를 사용 하지 못하도록 하는 가용성 파괴 공격이다.
2. TCP SYN Flooding Attack
1) TCP SYN Flooding Attack 방법
TCP 연결과정 중 3-Hand-shaking 과정에서 Half-Open연결 시도가 가능하다는 취약점을 이용한 공격이다.
Victim에 다수의 SYN 패킷을 보낸 후 SYN/ACK 패킷을 받으면 ACK 패킷을 서버에 전송하지 않는다.
Victim에 SYN-RECIVED 패킷이 점점 쌓여 나중에 다른 PC에서 SYN 패킷을 받을 수 없게된다.
2) 랜덤한 출발지에서 TCP SYN Flooding Attack을 수행할 경우
일반적인 경우 랜덤한 출발지로 SYN 패킷 보낼경우 SYN 패킷을 송신하지 않은 TCP가 SYN+ACK 패킷을 수신하면 RST 패킷을 보내 Victim에서 수신 후 Victim의 테이블에서 제거되어 부하가 발생하지 않는다.
위조 IP 주소가 바쁘거나 사용하고 있지 않은 PC의 IP인 경우 Client에서 RST 패킷을 보내지 않기 때문에 서버는 일정 시간동안 SYN+ACK 패킷을 재전송 하며 테이블에 남겨 두게된다.
3) SYN Flooding 보안 대책
3.1) 구간 보안 솔루션에서 SYN 연결의 임계치 설정
DDos, Firewall, IPS 장비 등 구간 보안 솔루션 장비를 도입해 SYN 연결의 임계치 설정한다.
#동일한 출발지에서 동시에 5개 이상의 SYN 패킷이 들어오면 DROP
iptables -A INPUT -p TCP --dport 80 --syn -m connlimit --conlimit-above 5 -j DROP
3.2) 라우터에 Interupt 모드 설정
라우터가 자신이 서버 인척 클라이언트와 TCP Connection을 맺고, 정상적으로 TCP Connection이 생성되면(Established) 해당 정보를 서버에게 전달한다.
<Router>
conf t
access-list 100 permit tcp any any eq 80
ip tcp intercept mode intercept
ip tcp intercept list 100
ip tcp intercept connection-timeout 30 //라우터에서 30초 기다린 후 ACK가 오지 않으면 삭제
3.3) SYN_Cookie
SYN 패킷을 받더라도 SYN_Cookie만 보낸 후 세션을 닫는다.(세션을 기다릴 필요가 없음)
서버에서 클라이언트로 보내는 SYN+ACK 패킷에 임의로 생성되는 시퀀스 넘버 대신 서버에서 암호화 기술을 이용해 인증 정보가 담긴 시퀀스 넘버를 생성하여 클라이언트에 전송한다.
3.4) TCP 연결 테이블 (Backlog Queue)엔트리 선택적 삭제 기법
테이블이Overflow 발생 시 일부 엔트리를 삭제함으로써 가용성을 유지한다.
3.5) 연결 테이블 확장
연결테이블에 할당된 메모리를 확장한다.(오래 버틸 수 있음)
3. SMURF Attack
IP 위장과 ICMP의 특징을 이용한 공격기법이다.
증폭 네트워크: ICMP Broadcast에 대한 응답으로 다수의 ICMP Echo 패킷 발생
1) 공격 방법
① Attacker가 출발지 IP 주소를 Victim으로 Spoofing수행 후 목적지 주소를 직접 브로드캐스트 주소로 설정 후 Ping Request 송신한다.
② Ping 메시지를 수신한 네트워크 내의 모든 시스템들이 Ping Responce 메시지를 Victim에게 전송한다.
③ 수신한 Victim은 트래픽 과부하로 인해 서비스를 마비 시킴 (가용성 파괴)
hping 공격 명령어: hping 192.168.0.255 -a 10.20.10.1 --icmp --flood
2) 보안대책
Router에서다른 네트워크로부터 자신의 네트워크로 들어오는IP Directed Broadcast 패킷 필터링을 수행한다.
Host에서 IP Broadcast 주소로 전송된 ICMP 패킷에 대해 응답하지 않도록 설정한다.
침입탐지 시스템(IPS)를 통해 패킷을 모두Drop 처리를 수행한다.
4. Flooding Attack
Victim에 연결된 네트워크 링크에 과부하를 거는 것이다.
1) ICMP Flooding
ICMP request 패킷을 사용하여 Flooding을 수행한다.
네트워크 패킷을 감지하는 데 유용해서 네트워크 관리자들이 패킷을 허용하는 경우가 많아서 취약하다.
2) UDP Flooding
UDP의 비연결성 및 비 신뢰성을 이용한 Flooding을 수행한다. (비연결성이기 때문에 스푸핑이 용이)
echo와 chargen 서비스를 이용한다.
두 서비스에 의해 계속 생성되는 패킷은 네트워크 상에 방대한 트래픽이 생겨 과부하를 발생시킨다.
echo: UDP 7번 사용, a를 보내면 a를 응답
chargen: UDP 19번 사용, 0~512까지 무작위로 선택된 문자를 가진 패킷으로 되돌려 줌
UDP Scan
스캔 시 ICMP Unreachable 에러 메시지가 수신 된다면 해당 포트의 활성화를 의미한다.
5. 기타 DoS 공격들
1) Land Attack
패킷을 전송할 때 출발지 주소와 목적지 주소 IP를 똑같이 설정하여 공격 대상에게 보낸다.
SYN Flooding 처럼 동시 사용자 수를 증가시키고 CPU에 부하 발생한다.
2) Ping of Death
ping 명령어를 이용하여 ICMP 패킷 크기를 정상 크기(65535byte)아주 크게 생성 후 전송한다.
routing 되어 Victim에게 가는동안 많은 Fragment가 발생하므로 부하가 발생한다.
Routing시 작은 네트워크를 지날때마다 더 많은 Fragment가 발생하지만 한번 분할된 패킷은 도착할때까지 다시 커지지 않는다.
3) Teardrop Attack
IP 패킷을 전송할 때 IP 단편화가 발생하고 수신자는 단편화된 데이터 재조립 및 오프셋을 더하여 데이터를 복구하여 IP 패킷을 수신한다.
오프셋 값을 단편화 간에 중복되도록 고의적으로 수정하거나 정상적인 오프셋 값보다 더 큰 값을 더해 그 범위를 넘어서는 오버플로우를 일으켜 시스템의 기능을 마비시킨다.
Victim은 네트워크 연결이 끊기거나 오류화면이 표시되면서 중단된다.
시스템운영체제가 Trardrop 취약점을 갖지 않도록 패치해야 한다.
4) Inconsistent Fragmentation Attack
8.1) Bonk
처음 패킷을 1번으로 보낸 후다음 패킷을 보낼 때 순서번호를 모두 1번으로 조작하여 전송한다.
8.2 Boink
패킷을 정상적인 순서로 보내다가 중간에 비 정상적인 시퀀스 번호를 전송한다.
5) 해시도스(HashDoS) 공격
웹서버는 HTTP 메시지의 매개정보 관리를 위해 해시 테이블 사용
조작된 매개정보를 전송해 해시값 충돌을 발생시켜 CPU 자원 소모를 통한 서비스 방해
6) 헐크도스(Htpp Unbearable Load King DoS) 공격
웹 서버의 가용량을 모두 사용하도록 하여 정상적인 서비스가 불가능하도록 유도하는 GET Flooding 공격
7) SIP(Session Initiation Protocol) Flooding (VoIP)
하나의 INVITE request 메시지가 상당한 양의 자원을 소모한다는 것을 이용한다.
공격자가 수 많은 INVTE request를 가짜 시작주소 또는 봇넷을 이용한 DDoS를 통해서 보내 SIP Proxy 서버에 부하를 발생 시킨다.
RTP Flooding: 미디어 스트림을 대량으로 수신자에게 전송한다.
UDP Flooding: VoIP 단말의 개방된 포트로 공격한다.
Register Flooding: 반복적인 등록을 통해 사용자들이 서비스를 이용할 수 없도록 한다.
Cancel 공격: 두 사용자 간의 통신이 이루어지기 위한 세션 요청으로, 해당 메시지를 보내면 사용자는 Cancel 메시지에 대한 요청을 수행한다.
Bye 공격: 현재 이루어지고 있는 통화를 강제적으로 종료한다.
6. DDos Attack
1) DDos 개념
여러대의 컴퓨터(좀비 PC)를 일제히 동작시켜 특정 사이트·시스템을 공격하여엄청난 분량의 패킷을 전송하여네트워크 성능 저하 및 시스템 마비시킨다.
2) 구성 요소
공격자, 봇 마스터: 공격을 주도하는 해커의 컴퓨터, C&C(Command&Control)서버에 공격 명령을 전달한다.
마스터, C&C서버: 공격자에게 직접 명령을 받은 시스템, 여러대의 Agent를 관리한다.
에이전트: 공격 대상에 직접적인 공격을 가하는 시스템 (악성코드에 감염된 시스템)
데몬 프로그램: 에이전트 역할을 수행하는 프로그램
3) 공격 대응 절차
공격 순서
공격의 인지 → DDos 공격 유형 파악 → 공격 유형에 따른 차단정책 정의 및 대응 → 공격 대응 후 사후조치
3.1) 1단계: 공격의 인지
① 유입 트래픽크기: 방화벽 IDS등의 네트워크 장비를 통해 웹서버로 유입되는 트래픽의 BBS(Bit Per Second), PPS(Packet Per Second)규모를 확인
② 웹 서버 로그: 웹서버 로그를 확인해 비 정상적인 접속유무 확인
③ 동시접속 정보: 웹 서버와 클라이언트가 유지하고 있는 연결 규모 확인
④ 유입 트래픽 샘플링: 웹서버 운영망으로 유입되는 실제 트래픽을 샘플링
3.2) 2단계: DDos 공격 유형 파악
① 패킷 덤프를 이용한 유입 트래픽 확보: 트래픽 캡처 툴을 이용하여 분석하고자 하는 기간의 유입 트래픽을 PCAP형태로 저장
② 확보된 트래픽 분석: 프로토콜 정보, HTTP 헤더 정보, 연결 정보 등을 확인
③ 시나리오 기반의 공격유형 파악: 대역폭 소진 공격, DB 부하 유발공격, 웹서버 자원 공격 등 공격 유형 파악
④ 웹서버 접속 로그: 서버 접속 로그를 확인하여 요청 페이지, 요청 횟수 확인
3.3) 3단계: 공격 유형에 따른 차단정책 정의 및 대응
3.3.1) 대역폭 소진 공격 대응 방안
공격 유형: UDP Flooding, ICMP Flooding
대응 방안: 방화벽이나 웹서버 상단에 위치한 라우터에서 ACL 정책 적용
공격 유형: TCP Flooding
대응 방안: Source IP별로 PPS 임계치 설정
3.3.2) 웹서버 자원 소모 공격 대응 방안
공격 유형: Syn(Ack/Fin) Flooding
대응 방안: Source IP별로 PPS 임계치 설정, 패킷 헤더 검사를 통한 비 정상적인 필드 파악
3.3.4) DB Connection 부하 유발 공격 대응 방안
웹서버의 OS의 TCP 스택 자원을 소모
공격 유형: Get Flooding, Post Flooding
대응 방안: 클라이언트 요청 수에 대한 임계치 설정, HTTP 헤더를 확인
3.3.5) 웹서버 자원 소모 공격 대응 방안
완료되지 않은 연결 상태를 지속적으로 유지
공격 유형: Slow Header Flooding, Slow Data Flooding, Slow HTTP Header DoS(Slowloris)
대응 방안: 하나의 요청에 대한 연결 타임아웃을 설정
대역폭 소진 공격
UDP, ICMP Flooding
웹서버 자원 소모 공격
SYN Flooding, Slow Header Flooding, Slow Data Flooding, Slow HTTP Header DoS(Slowloris)
DB Connection 부하 유발 공격
GET Flooding, Post Flooding
3.4) 4단계: 공격 대응 후, 사후조치
정책 업데이트, 좀비 PC IP 확보 등
4) DNS 싱크홀 (DNS Sinkhole)
감염된 PC에서 특정 주소로 연결을 원할 때 실제 해당 주소로 데이터가 전송되지 않고 싱크홀 네트워크가 대시 응답하여 패킷이 외부로 전달되지 않도록 처리 이 방법을 DNS에 적용
악성 봇 및 조종자 탐지 및 좀비 PC와 조종자 간의 접속을 차단해 2차 피해 예방
① KISA에서배포한 C&C 목록을 DNS 싱크홀 적용 기관의 DNS 서버에게 주기적으로 업데이트
② 악성 봇에 감염된 PC가 DNS 서버에게 C&C 서버에 대한 질의 요청
③ DNS 서버는 싱크홀 서버 주소를 반환
④ 악성 봇은 C&C 서버가 아닌 싱크홀 서버로 접속
5) DDos 공격의 사례
5.1) 트리누(Trinoo) 공격
많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는데 사용되는 도구
몇개의 서버와 많은 수의 클라이언트로 이루어짐
공격자는 트리누 마스터에 접속하여 하나 혹은 여러 개의 IP 주소를 대상으로 서비스 거부 공격을 수행하라고 명령을 내림
5.2) TFN (Tribed Flood Network) 공격
UDP Flood 공격 뿐만 아니라 TCY SUN flood 공격, ICMP echo 요청 공격, ICMP 브로드캐스트 공격(smurf 공격)이 가능
트리누의 발전된 형태
5.3) Stacheldraht(슈타컬드라아트) 공격
TFN을 참고하여 제작된 도구로써 암호화를 위해서 공격자와 마스터간의 암호화 통신보장 (TELNETC를 사용)
네트워크 패킷 분석 시 Stacheldraht의 여부를 판단하기가 어려움
5.4) TFN2K 공격
TFN의 발전된 형태,통신에 특정 포트를 사용하지 않고 암호화 수행
프로그램에 의해 UDP, TCP, ICMP가 복합적으로 사용되며 포트도 임의로 결정
지정된 TCP 포트에 백도어를 실행 시킬 수 있음
6) HTTP 관련 DDos 공격
6.1) GET Flooding
시스템에 3-Way handshaking을 수행 후 정상접속 한 뒤 특정 한 페이지를 GET Method를 통해 무한대로 실행 (시스템에 과부화 발생)
6.2) GET Flooding with Cache-Control (CC Attack)
HTTP 메시지의 캐시 옵션을 조작하여 캐싱서버가 아닌 웹서버가 직접 처리하도록 유도하여 캐싱 서버의 기능을 무력화하고 웹서버의 자원을 소진
6.3) 동적 HTTP Request Flooding 공격
지속적인 요청 페이지를 변경하여 웹 페이지를 요청하는 기법
6.4) HTTP Header/Option Spoofing Flooding 공격
6.4.1) Slow HTTP POST DoS (RUDY, R-U-Dead Yet)
POST 지시자를 이용하여 서버로 전달할 다량의 데이터를 장시간에 걸쳐 분할전송하면 서버는 POST 데이터가 모두 수신되지 않았다고 판단해 연결을 장시간 유지하기 때문에 부하 발생
6.4.2) Slow HTTP Header DoS (Slowloris)
HTTP 연결 시 최종적으로 개행 문자가 2번 들어와야 하는데 1번만 전송시켜 세션을 유지 시킨다. 해당 세션은 Time out 시간 안에 들어오지 않을 경우 연결을 끊지만 대량의 패킷을 전송하여 가용성을 마비 시킨다.
헤더 정보를 조작해 구분할 수 없도록 하면 웹 서버는 아직 HTTP 헤더 정보가 전달되지 않는 것으로 판단하여 연결을 장시간 유지시킨다.
6.4.3) Slow HTTP Read DoS
TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후 HTTP 데이터를 송신하여 웹서버가 정상적으로 응답하지 못하도록 DoS 상태를 유발
서버는 정상 상태로 회복될 때까지 대기상태에 빠짐
7. DRDoS (Distributed Reflection Denial of Service, 분산 반사 서비스 거부 공격)
별도의 에이전트 설치 없이 프로토콜 구조의 취약점을 이용해 정상적인 서비스를 운영하는 시스템을 분산 반사 서비스 거부 공격의 에이전트로 활용해 공격
1) DRDoS 공격 유형
SYN Flooding: TCP의 연결설정과정의 취약점을 이용
ICMP Flooding: ICMP 프로토콜의 Echo Request와 Echo Reply를 이용
DNS 증폭: 많은 양의 레코드 정보를 요구하는 DNS질의타입을 요청
NTP 증폭: 최근 접속한 클라이언트 목록을 요청
SNMP 증폭: SNMP agent에 MIB와 같은 정보를 대량 요청
CHARGN 증폭: 대량의 문자열을 전송
2) DRDoS 공격의 위협요소
패킷이 전송되는 경로가 무수히 많음
반사 서버의 단계적 사용 및 확산
공격대상 IP를 근원지의 IP로 위조하여 전송 (역추적 어려움)
3) 대응 방법
네트워크에서의 대응: IP 주소가 위조된 패킷이 인터넷망으로 들어오지 않도록 ISP가 차단(Ingress Filtering)
반사서버에서 대응: ICMP를 사용할 필요가 없는시스템인 경우 해당 프로토콜 차단
공격대상에서 대응: 내부 사용자용 DNS 서버라면 내부 사용자 주소만 Recursive Query가 가능하도록 설정
Libpcap: 패킷을 캡처하기 위한 함수의 모임이다
Libnids: IDS의 전자 구성 요소의 구현이다.
Libnet: 응요프로그램이 패킷을 생성하여 보낼 수 있게 하는 라이브러리이다.
'Certification Study > 정보보안기사' 카테고리의 다른 글
[정보보안기사] 27. IDS/IPS (1) | 2020.02.17 |
---|---|
[정보보안기사] 26. 네트워크 스캐닝 (0) | 2020.02.16 |
[정보보안기사] 24. 네트워크 관리 (0) | 2020.02.12 |
[정보보안기사] 23. 무선통신 보안 (출제율: 1.5%) (5) | 2020.02.11 |
[정보보안기사] 18. 최신 보안 주제들 (출제율: 1.5%) (0) | 2020.02.10 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊