본문 바로가기

Learning/└◆리눅스 서버 보안

08.1_DoS_DDoS_SNORT

 

DoS(Denial of Service) & DDoS(Distributed DoS)

 

■ 보안 이슈 관련 단어

DoS/DDoS, DB Attack, APT Attack, SPAM MAIL, WEB Hacking, Wireless Hacking

+ Big Data Security + IoT Security

 

실습 환경

DoS/DDoS ---> Firewall ---> IPS/IDS ---> WAF ---> WEB Server(SELinux)

 

■ KaliLinux Tools(Attacker)

IDS : snort        (# apt-get install snort)

IPS : suricata    (# apt-get install suricata)

 

1. DoS & DDoS 개요

 

DoS(Denial of Service) 공격 (1:1)

서비스 거부 공격        : 공격자가 호스트의 H/W 또는 S/W 등을 무력하게 만들어 호스트에서 적법한

            사용자의 서비스 요구를 거부하도록 만드는 일련의 과정이다.

 

DDoS(Distributed Denial of Service) 공격 (N:1)

분산 서비스 거부 공격 : 네트워크로 연결된 분산 환경에서 여러대의 컴퓨터를 이용하여 한대의 
                                    공격대상 시스템에 대한 DoS 공격 (EX: BotNet)

 

 

2. DoS 공격의 특징

  • 관리자 권한(EX: root)을 획득하는 것이 아니다.
  • 데이터를 파괴 혹은 변조 혹은 훔쳐가는 것을 목적으로 하지 않는다.
  • 공격의 원인이나 공격자를 추적하기 힘들다.
  • 공격시 해결하기 힘들다.
  • 매우 다양한 공격 방법들이 가능하다.
  • 같은 공격에 대해서 각 시스템마다 결과가 다르게 나타날수 있다.
  • 다른 공격을 위한 사전 공격으로 사용될 수 있다.
  • 사용자의 실수로 발생될수 있다.
  • 금전을 요구하는 사회 범죄 형태로 전이 되었다.

 

3. DoS 공격의 유형

 

(1) 내부 공격

 

공격의 형태

- 시스템이 보유하고 있는 리소스를 점유하거나 모두 고갈시킴으로서 시스템 마비 발생

- 계정을 가진 내부 사용자에 의해 발생(로컬 계정을 가진 악의적인 사용자)

- 고의보다는 실수로 인해 발생(개발자에 의한 경우)

 

공격의 종류

- 디스크 채우기

- 메모리 고갈

- 프로세스 만들기

 

(2) 외부 공격

 

공격의 형태

- 특정 포트를 사용하는 서비스를 마비 시킴(서비스 거부 공격)

- 네트워크 기능 자체를 오동작 시킴

 

공격의 종류

응용 프로그램 수준

- Mail Bomb

- Buffer Overflow

- Java Applet Attack

프로토콜 수준

- SYN Flooding

- Ping Flooding

- Smurfing Attack

네트워크 수준

- UDP Storming

- 네트워크 Bandwidth 공격

 

 

4. 트래픽 구성에 따른 DDoS 공격 유형 분석

순위 

프로토콜 

공격유형 

점유율 

UDP 

악성 IRC Bot Flooding 

Source Spoofing

70%

5% 

ICMP 

Fragementation Attack 

10% 

Garbage Packet 

Opentear, Fragement 

7% 

Service Attack 

GET/POST DDoS Attack 

8% 

 

-> UDP를 통한 악성 IRC BOT 공격이 DDoS의 주류를 이루고 있고, 프로토콜 중 UDP가 전체 DDoS에 약
70% 이상이다.

 

 

5. 공격 방법 구현 실습

 

■ Local Attack(System Resource Exhaustion Attack)

공격 기법 (디스크 자원 고갈)

공격 원리

- 임이의 파일을 생성한 후 계속해서 파일의 크기를 증가 시켜 디스크를 쓸모 없는 데이터로 채우는 공격기법

 

공격 코드 및 실행 방법

# vi disk_attack.c

#include <unistd.h>

#include <sys/file.h>

 

void main()

{

     int attack;

     char buf[10000];

     attack = create("root/temfile",0777);

     while(1)

          write(attack,buf,sizeof(buf));

}

# gcc -o disk_attack disk_attack.c

# ./disk_attack

 

해결방안

- 문제가 되는 프로세스를 찾아 종료

- 각 사용자에 대한 quota 설정

- 공용 디렉토리(/tmp, /var/tmp)에 대하여 독립적인 파티션으로 구성

 

 

 

■ Local Attack(System Resource Exhaustion Attack)

공격 기법 (메모리 고갈)

공격 원리

- 하나의 프로세스가 시스템에서 사용 가능한 모든 메모리 리소스를 고갈시킴으로서 시스템을 마비시키는 공격 기법

 

공격 코드 및 실행 방법

# vi memory_attack.c

#include <stdio.h>

 

void main()

{

     char *c;

     while(1)

          c=malloc(1000);

}

# gcc -o memory_attack memory_attack.c

# ./memory_attack

 

해결방안

- 각 사용자에 대한 최대 메모리 사용량을 제한한다.

- ulimit CMD,

 

 

 

■ Remote Attack

공격 기법 (SYN Flooding 공격)

공격 원리

- IP Spoofing을 이용하여 half-open TCP 연결을 시도하여 상대 호스트의 Listening Queue를 고갈시키는 방법

 

 

SYN Flooding 공격이란

- SYN Flooding 공격은 TCP 프로토콜의 연결 설정 절차의 설계상의 취약성으로 인해 발생되는 것으로서
이에 대한 완전한 해결책은 없다고 봐야 한다.
- 피해를 감애하거나 최소화 하기 위해서 Anti DDoS 솔루션이나 거대 백본을 가진 Secure IDC로 서버들을
이전하여 임시 대응하는 상황이다. (Real-DDoS의 경우 또는 Spoofed DDoS)

 

공격용 툴

 

(Windows) Hdog(http://www.cnhonker.com)

Hgod 툴의 기능

- Spoofed/Non Spoofed Syn Flooding

- Spoofed/Non Spoofed UDP Flooding

- Spoofed/Non Spoofed ICMP/IGMP Flooding

- DrDoS

(Linux) Synk4(http://packetstorm.security.com/new-exploits/synful.c)

  (http://user.cs.tu-berlin.de/~tqiu/exploits/synk4.c)

 

(KaliLinux)

# hping3 -O -S --rand-source 192.168.20.134 -p 21 --flood

 

해결방안

 

- 백 로그 큐의 크기를 증가, Half-Open Time을 적게 한다.

 

 

 

Remote Attack

공격기법 (Ping of Death)

공격 원리- ping을 이용하여 ICMP 패킷을 정상적인 크기보다 매우 크게 만들어 네트워크를 통과할 때 공격 네트워크에 도달하기 위해서는 단편화(Fragementation)이 되는데 이러한 경우 공격 대상 시스템은 이렇게 작은 조각 패킷을 처리하기 위하여 많은 로드가 발생되게 되는데 이른 노린 공격 방법이다.

 

# ping -n 10000 -l 65500 <Vitim's IP>

 

(KaliLinux)

# hping3 -1 -a 8.8.8.8 192.168.20.134 -i u1000 -d 65000

# hping3 -1 --rand-source 192.168.20.134 --flood -d 65000

 

 

 

Remote Attack

공격기법 (ICMP Smurfing)

공격 원리

- ICMP 프로토콜과 IP Broadcast 주소를 이용한 공격 기법

- Broadcast 로의 echo request를 보내 대량의 echo reply를 임의의 주소로 집중 전송되게 하는 원리

 

공격용 툴

smurf.c(http://packetstormsecurity.org/DoS/spike.sh.zip)

Hgod 프로그램을 사용하여 소스를 공격 대상 IP로 설정(IP Spoofing) 하고 대상자 네트워크를 공격하여야 한다.

# ./smurf <Victim's IP> bcastfile 0 5 64

 

해결방안

- Smurfing의 차단 방법은 모든 라우터의 내부(LAN) interface 마다 Directed Broadcast 기능을 막아 준다.

- 자신의 내부 측(EX: 192.168.0.255)의 주소로 ICMP echo의 요청이 들어가지 못하도록 한다.

 

(KaliLinux)

# hping3 -1 -a 192.168.10.100 192.168.10.255 --flood

 

 

 

Remote Attack

공격기법 (Bonk/Boink, Teardrop)

공격원리

- 여러가지 프로토콜은 기본적으로 신뢰성을 높이고자 하는 목적을 가지고 있다. 신뢰성은 다음의 세가지로 크게 생각할 수 있다.

* 패킷의 순서가 올바른가?

* 중간에 손실된 패킷은 없는가?

* 손실된 패킷의 재전송 요구

 

- Bonk/Boink, TearDrop은 위의 사항을 위반함으로써 공격 대상 시스템에 DoS 공격을 가하게 된다.

 

- (Bonk 공격) Bonk는 처음 패킷을 1번으로 보낸 후 두번째, 세번째 패킷 모두 시퀀스 넘버를 1번으로 조작하여 공격

 

- (Boink 공격) Bonk의 개량 버전인 Boink는 처음 패킷을 1번으로 보낸 후 두번째 패킷은 101, 세번째 패킷은 201번으로 정상적으로 보내다가 중간에서 일정한 시퀀스 넘버로 보낸 후 열번째 패킷은 1001, 열한번째 패킷도 1001, 열두번째 패킷도 1001번으로 전송

 

- (TearDrop 공격) TearDrop은 패킷을 겹치게 또는 일정한 간격의 데이터가 빠지게 전송한다.

TeardropIP 패킷의 전송이 잘게 나누어졌다가 다시 재 조합하는 과정의 약점을 악용한 공격이다.

보통 IP 패킷은 하나의 큰 자료를 잘게 나누어서 보내게 되는데 이때 offset을 이용하여 나누었다가

도착지에서 offset을 이용하여 재 조합하게된다. 이때 동일한 offset을 겹치게 만들면 시스템은 교착되거나

충돌을 일으키거나 재기동된다. 과거 윈도우 95 버전에서 발생되었던 문제이다.

그러나 현재도 네트워크나 시스템에 큰 오버헤드를 발생시킨다. 

 

 

공격방법

# ./newtear <공격IP> <대상IP> -s <소스포트> -t <대상포트> -n <공격개수>

 

(KaliLinux)

Bonk

TCP 헤더의 Sequence No를 조작해서 재조립을 못하게 만드는 방법

# hping3 192.168.10.100 -Q /* -Q : Bonk 기본 옵션 */

 

Boink

보안장비가 세번째 까지의 패킷을 검사하는 허점을 이용한 Bonk 변형 공격 방법

# hping3 -S 192.168.20.134 -M 1460 /* 세번째까지만 정상 seq 번호, 나머지는 조작된 seq 번호 */

# hping3 -S 192.168.20.134 -M 2920 /* 세번째까지만 정상 seq 번호, 나머지는 조작된 seq 번호 */

 

Teap Drop

# hping3 -1 192.168.20.134 -g 185

 

 

 

 

Remote Attack

공격기법 (LAND Attack) ( loop )

공격원리

- 패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소값을 공격자의 IP 주소값으로 똑같이 만들어서 공격 대상에게 보낸다.

시스템은 처음 시도된 Syn에 대한 Reply 패킷을 출발지 IP 주소 값을 참조하여 그 값을 목적지 IP 주소 값으로 설정하여 패킷을 보낸다.

하지만 이 값은 자기 자신의 IP 주소 값이므로 네트워크 밖으로 나가지 않고 자신에게 다시 돌아온다.

이 공격 방법은 Syn Flooding 처럼 동시 사용자 수를 점유 해버리며 CPU 부하까지 올리게 된다.

공격방법

- synk4를 이용하여 소스와 목적지 주소를 동일하게 세팅하여 공격

# ./synk4 192.168.1.100 30 1024 192.168.1.100 21

-> wireshark 패킷 캡쳐 분석

 

(KaliLinux)

# hping3 -1 -a 192.168.10.100 192.168.10.100 --flood

# hping3 -1 -a 192.168.10.100 192.168.10.100 -i u1000 -d 65000

 

 

 

 

Remote Attack

공격기법(Win Nuke)

공격원리

- 상대방 시스템에 139번 포트를 스캔하여 열려 있는지 확인하고 NetBIOS 패킷에 URG(Urgent)On 상태로 하여 패킷을 전송한다.

URGOn 상태는 송수신 중간에 발생할 수 있는 비정상적인 상태를 의미한다. 서비스 중 <CTRL + Break> 또는 <CTRL + C>와 같은 역할을 한다.

- 공격 대상은 수 많은 Urgent 패킷을 인식하고 모든 시스템의 세션을 닫은 뒤 재 연결을 요구하게 된다. 이때 CPU에 과부하가 걸리게 된다. 이 공격은 심한 경우 시스템이 손상되기도 한다.

 

공격툴

- Wnuke5(winnuke.c)

Win Nuke 공격에 대해서

- 일반적으로 Out-of-band 플래그가 Padding된 패킷을 전송하게 되는데 윈도우 NT 박스 계열에서는

TCPIP.sys 모듈에서 Stop 0x0000000A를 발생 시키며 중단된다.

 

 

 

 

Remote Attack

공격기법 (UDP Flooding) - 현재도 공격가능

공격원리

- 대역폭 고갈을 위한 공격을 가장 많이 사용되는 DoS, DDoS 공격이다.

UDP BodyGarbage DataPadding 하여 공격한다.

공격툴- UDP Flooder 2.00

 

(KaliLinux)

# hping3 -2 192.168.20.134 -p 139 --flood

# hping3 -2 -rand-source 192.168.20.134 -i u10000 -d 65000

 

 

 

 

Remote Attack

공격기법(Out of Band Flooding)

공격원리

- 일반적인 TCP/IP 세션을 연결하기 위한 과정에서 발생하는 TCP Flag를 제외하거나

비정상적인 순서로 발생되는 Flag의 조합을 통한 DDoS, DoS 해킹 공격

 

공격툴

- stream3.c

stream3.c 기능

* SYN Flooding

* NULL Flooding

* FIN Flooding

* ACK Flooding

* PUSH Flooding

* RST Flooding

* FIN/ACK Flooding

* XMAS Flooding

 

(KaliLinux)

# hping3 -S 192.168.20.134 -p 21 --flood

# hping3 -A 192.168.20.134 -p 21 --flood

# hping3 -P 192.168.20.134 -p 21 --flood

# hping3 -R 192.168.20.134 -p 21 --flood

# hping3 -U 192.168.20.134 -p 21 --flood

# hping3 -F 192.168.20.134 -p 21 --flood

# hping3 -SAPRUF 192.168.20.134 -p 21 --flood

 

 

 

Remote Attack

공격기법(Mail Bomb) - 현재도 많이 사용된다.

공격원리

- Mail Bomb은 흔히 폭탄 메일이라고 한다. 스팸 메일도 이와 같은 종류이다. 메일서버는 각 사용

자에게 일정한 양의 디스크 공간을 할당하는데, 메일이 폭주하여 디스크 공간을 가득 채우면 정작

받아야 하는 메일을 받을 수 없게 된다. 이때문에 스팸 메일은 DoS 공격이 될수 있다.

 

공격툴

- 윈도우용 Mail Bomber Upyours(Digital Dominace(c) 1997 -=Glbal kOS=-- [Up Yours 4.0])

 

 

 

Remote Attack

공격기법(Checksum Error Flodding)

공격원리

- Checksum은 패킷내에 하나의 필드로 구성하며 데이터를 이진수(Binary Number)의 연속으로 간주하여

그 이진수의 합을 계산하는 방법이다. 예를 들어 16 bits checksum을 사용하는 경우 데이터를 16 bits

씩 나누어 16진수로 표현한 다음 그 합을 계산하여 16으로 나눈 나머지에 해당되는 값을 checksum으로 사용하는 방법이다.

- 정확하지 않은 checksum값을 대량으로 보내 시스템이나 네트워크에 성능(Performance)에 영향을 미친다.

 

공격툴

- 윈도우용 Mail Bomber Upyours(Digital Dominace(c) 1997 -=Glbal kOS=-- [Up Yours 4.0])

 

 

Remote Attack

공격기술(IP Checksum Error)

공격원리- IP 헤더의 checksum 값이 틀린 패킷을 다량으로 보내서 대상 서버를 다운시키거나 정상적인 서비스가 불가능하게 한다.

공격방법# ./ipchksum <소스IP> <타켓IP> <포트>

 

 

Remote Attack

공격기술(ICMP Checksum Error)

공격원리- ICMP 헤더의 checksum 값이 틀린 패킷을 다량으로 보내서 대상 서버를 다운시키거나 정상적인 서비스가 불가능하게 한다.

공격방법# ./icmpchecksum <소스IP> <타켓IP> <포트>

 

 

Remote Attack

공격기술(UDP checksum Error)

공격원리- UDP 헤더의 checksum 값이 틀린 패킷을 다량으로 보내서 대상 서버를 다운시키거나 정상적인 서비스가 분가능하게 한다.

공격 방법# ./udpchksum <target> <bcast file> <num packets> <packet delay> [dstport] [srcport] [psize]

 

 

Remote Attack

공격기술(botnet)

공격원리- Robot의 줄임말로 감염된 컴퓨터(Zombie, Hacker Army, troop)는 공격자(Bot Master, Bot C & C)에 의해 조종됨. 취약한 서버들이 주로 C & C(Command and Control Server)로 악용- 악성 프로그램 유포, 피싱/SPAM 메일 방송, 개인정보 유출, AdWare SpyWare 설치, 서비스 거부 공격(DoS)등 수행

 

공격자 -----+-----> 공격자 명령 전달 서버

+-----> 공격자 명령 전달/파일 다운로드 서버

|

|

V

좀비(Zombie PC) ......

|

|

V

타겟시스템(Target)

 

 

Remote Attack

공격기술(Netbot Attack)

공격원리

- 중국발 Ransom(금전요구형) DDoS 공격 툴로 널리 알려진 툴이다.

- 서버와 빌더로 이루어져 있어 빌더로 악성코드를 제작하면 서버에 좀비처럼 통제가 가능하게 된다.

- 국내 게임, 포탈등 다양한 사이트들에 대한 공격이 이루어졌다.

공격툴- NB5.5Build.exe(NB 5.5)- NetBot_Cn.exe

 

 

Remote Attack

공격기술(TCP Slow Attack) - 지금도 공격이 가능하다.

공격원리

- TCP Slow Attack200977일 있었던 7.7 대란에 사용되었던 기법으로 여러대의 좀비 PC들이

소량의 TCP 접속만을 전송하여 정상과 비정상적인 TCP 세션 요청을 구분하기 어렵게 시도하던 공격의 일환

 

공격툴

- 윈도우용 Perl 설치(Active Perl)

- www.perlmania.or.kr:8949/pmdocs/kys/perlstart.html

- # perl sloworis.pl -dns 192.168.0.100

 

 

Remote Attack

공격기술(HTTP Get Flooding)

공격원리

- HTTP 서비스를 제공하고 있는 웹 서버에 직접적인 영향을 비치는 공격방법으로 다량의 접속 요청을 보내서

정상적인 접속을 요청하는 사용자들의 접속을 방해하는 공격이다.- 1514바이트 최대 크기로 대상 사이트 공격,

데이터 영역의 문자열은 적당한 것을 사용하면 된다.

 

공격툴

- Low ORbit Lon Cannon(lolc)