1. DoS 공격의 이해

44
chapter 11. DoS 와 DDoS 와와

description

1. DoS 공격의 이해. DoS(Denial of Service) 공격은 다른 해킹에 비하여 비교적 간단하다 . 공격대상이 수용할 수 있는 능력 이상의 정보나 사용자 또는 네트워크의 용량을 초과 시켜 정상적으로 작동하지 못하게 한다. DoS 공격은 크게 다음과 같은 세가지로 생각할 수 있다 . 1. 파괴 공격 : 디스크나 데이터 , 시스템의 파괴 2. 시스템 자원의 고갈 : CPU, 메모리 , 디스크의 사용에 과다한 부하를 가중시킴 - PowerPoint PPT Presentation

Transcript of 1. DoS 공격의 이해

Page 1: 1. DoS  공격의 이해

chapter 11.

DoS 와 DDoS 공격

Page 2: 1. DoS  공격의 이해

- 2 -

1. DoS 공격의 이해

DoS(Denial of Service) 공격은 다른 해킹에 비하여 비교적 간단하다 . 공격대상이 수용할 수 있는 능력 이상의 정보나 사용자 또는 네트워크의 용량을 초과 시켜 정상적으로 작동하지 못하게 한다 .

DoS 공격은 크게 다음과 같은 세가지로 생각할 수 있다 .

1. 파괴 공격 : 디스크나 데이터 , 시스템의 파괴

2. 시스템 자원의 고갈 : CPU, 메모리 , 디스크의 사용에 과다한 부하를 가중시킴

3. 네트워크 자원의 고갈 : 쓰레기 데이터로 네트워크의 대역폭을 고갈시킴

Page 3: 1. DoS  공격의 이해

- 3 -

2. DoS 공격1. Ping of Death

공격의 기본은 Ping 을 이용하여 ICMP 패킷을 정상적인 크기보다 아주 크게 만드는 것이다 . 이렇게 , 크게 만들어진 패킷은 네트워크를 통해 라우팅(Routing) 되어 공격 네트워크에 도달하는 동안 아주 작은 조각(Fragment) 이 된다 . 공격대상 시스템은 이렇게 작게 조각화된 패킷을 모두 처리해야 하므로 정상적인 Ping 의 경우보다 훨씬 많은 부하가 걸린다 .

Page 4: 1. DoS  공격의 이해

- 4 -

Ping of death 실습

실행명령 C:\>ping -n 100 -l 65500 172.16.0.3

공격대상에서의 TCPDump

Page 5: 1. DoS  공격의 이해

- 5 -

2. Syn Flooding

Syn Flooding 은 서버별 한정되어 있는 동시 사용자 수를 존재하지 않는 클라이언트가 접속한 것처럼 속여 다른 사용자가 서버에서 제공하는 서비스를 받지 못하게 하는 것이다 .

Page 6: 1. DoS  공격의 이해

- 6 -

TCP 3Way 핸드쉐이킹

정상적인 3Way 핸드쉐이킹

Page 7: 1. DoS  공격의 이해

- 7 -

Syn Flooding 공격 시 3Way 핸드쉐이킹

Page 8: 1. DoS  공격의 이해

- 8 -

Syn Flooding 공격

컴파일 : gcc -o synk synk.c

공격 실행 : root# ./synk 0 172.16.0.3 80 80

Page 9: 1. DoS  공격의 이해

- 9 -

Syn Flooding 공격의 TCP Dump

Root# tcpdump eth0

Page 10: 1. DoS  공격의 이해

- 10 -

Syn Flooding 공격 시 서버측의 ‘ netstat –an’ 결과Root# netstat -an

Page 11: 1. DoS  공격의 이해

- 11 -

3. Boink, Bonk, Teardrop

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

1. 패킷의 순서가 올바른가 ?

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

3. 손실된 패킷의 재전송 요구

Boink, Bonk, TearDrop 은 위의 사항을

위반함으로써 공격 대상 시스템에

DoS 공격을 가하게 된다 .

Page 12: 1. DoS  공격의 이해

- 12 -

Syn Flooding 보안 대책

이처럼 아직도 매우 효과적인 Syn Flooding 공격을 막는 방법은 보안 패치로서 대기 시간을 줄이는 것이다 . 하지만 시스템의 특성상 무조건 대기 시간을 줄일 수 없는 경우가 있다 .

또한 방화벽에서도 정상적인 접속의 시도와 비정상적인 Syn Flooding 공격의 시도를 구분할 수 있는 방법이 없기 때문에 직접적인 차단은 불가능하다 . 예방할 수 있는 방법은 일차적으로 시스템에 패치를 하는 것이며 , 그 다음으로는 IDS 의 설치다 .

공격대상의 TCP Dump 에서 볼 수 있듯이 이 공격은 일정 시간 내에 동시 접속자 수를 점유해야 하므로 아주 짧은 시간 안에 똑같은 형태의 패킷을 보내게 된다 . 이는 매우 정형화된 형태로 네트워크에서 쉽게 인지가 가능하며 해당 ISP 업체에 연락하여 그에 해당하는 IP 대역을 접속 금지시키거나 확인한 후 방화벽 , 또는 라우터에서 해당 접속을 금지시킴으로서 시스템의 서비스 중지를 막을 수 있다 .

Page 13: 1. DoS  공격의 이해

- 13 -

Boink, BonkBonk 는 처음 패킷을 1 번으로 보낸 후 두번째 , 세번째 패킷 모두 시퀀스 넘버를 1 번으로 조작해서 보낸다 . Bonk 를 수정한 Boink 공격은 처음 패킷을 1번으로 보낸 후 두번째 패킷은 101 번 , 세번째 패킷은 201 번으로 정상적으로 보내다가 중간에서 일정한 시퀀스 넘버로 보낸다 . 열번째 패킷은 1001 번 , 열한번째 패킷도 100 번 , 열두번째 패킷도 1001 번으로 보내는 것이다 .

TearDrop

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

Page 14: 1. DoS  공격의 이해

- 14 -

New TearDrop 공격 시 서버측의 TCP Dump 결과

Root# tcpdump eth0

Page 15: 1. DoS  공격의 이해

- 15 -

New Tear Drop 공격

컴파일 : gcc -o newtear newtear.c

공격 실행 : root# ./newtear 222.222.222.222 172.16.0.3 –t 80 –n 180

Page 16: 1. DoS  공격의 이해

- 16 -

4. LAND

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

시스템은 처음 시도된 Syn 에 대한 Reply 패킷을 출발지 IP 주소 값을 참조하여 그 값을 목적지 IP 주소 값으로 설정하여 패킷을 보낸다 . 하지만 이 값은 자기자신의 IP 주소 값이므로 네트워크 밖으로 나가지 않고 자신에게 다시 돌아온다 . 이 공격법은 Syn Flooding 처럼 동시 사용자 수를 점유해버리며 , CPU 부하까지 올리게 된다 .

Page 17: 1. DoS  공격의 이해

- 17 -

LAND 공격

컴파일 : gcc -o land land.c

공격 실행 : root#  ./land 172.16.0.3 172.16.0.3 80 80

Page 18: 1. DoS  공격의 이해

- 18 -

5. Win Nuke(OOB)

먼저 상대방 시스템에 139 번 포트를 스캔하여 열려 있는지 확인한다 .

그리고 NetBIOS 패킷에 URG(Urgent) 를 On 상태로 하여 패킷을 전송한다 . URG 가 On 상태는 송수신 중간에 발생할 수 있는 비정상적인 상태를 의미한다 . 서비스 중 ‘ Ctrl + Break’ 또는 ‘ Ctrl + C’ 와 같은 역할을 한다 .

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

Page 19: 1. DoS  공격의 이해

- 19 -

LAND 공격 시 서버측의 TCP Dump 결과

Root# tcpdump eth0

Page 20: 1. DoS  공격의 이해

- 20 -

WinNUKE 공격

Page 21: 1. DoS  공격의 이해

- 21 -

6. Smurf, Fraggle

공격자가 172.16.0.255 로 ICMP Request 패킷으로 Direct 브로드캐스트를 했을 경우 다음과 같이 패킷이 전달된다 .

Page 22: 1. DoS  공격의 이해

- 22 -

ICMP Requset 패킷을 전달받은 에이젼트들은 공격대상에게 ICMP Replay 패킷을 보낸다 .

Page 23: 1. DoS  공격의 이해

- 23 -

Smurf 공격

컴파일 :  root#  gcc -o smurf smurf.c

공격 실행 : root#   ./smurf 172.16.0.3 bcast 0 5 512

Page 24: 1. DoS  공격의 이해

- 24 -

Smurf 공격의 TCP Dump

Page 25: 1. DoS  공격의 이해

- 25 -

7. Mail Bomb

Mail Bomb 는 흔히 폭탄 메일이라고 한다 . 스팸 메일도 이와 같은 종류다 . 메일 서버는 각 사용자에게 일정한 양의 디스크 공간을 할당하는데 , 메일이 폭주하여 디스크 공간을 가득 채우면 정작 받아야 하는 메일을 받을 수 없다 . 이 때문에 스팸 메일은 DoS 공격이 될 수도 있다 .

윈도우용 Mail Bomber Upyours

Page 26: 1. DoS  공격의 이해

- 26 -

Sendmail 을 이용한 메일 보내기

Sendmail 은 telnet 을 이용한다 . telnet 으로 로컬 IP 주소를 쓰고 있으며 , SMTP 포트 번호인 25 번을 뒤에 써주면 Sendmail 에 접속할 수 있다 . Sendmail 에 접속한 후 ‘ mail from :' 뒤에 보내는 사람의 주소를 써준다 . 이메일은 어떤 주소를 써도 무방하다 .

Page 27: 1. DoS  공격의 이해

- 27 -

스팸 메일에 대한 보안 설정

SNMP Relay 기능을 정지 : /etc/mail/access 파일을 이용해서 해보자 . ‘access’ 파일에서는 IP 주소 , 이메일 주소 , 도메인별로 제한하거나 Relay 를 허락해줄 수 있다 .

Page 28: 1. DoS  공격의 이해

- 28 -

8. System Resource Exhaustion Attack

1. 가용 Disk 자원의 고갈

파일을 생성하고 생성한 파일에 1000 바이트씩 계속해서 써 나가는 프로그램이다 .

Page 29: 1. DoS  공격의 이해

- 29 -

1. 가용 Disk 자원의 고갈

공격 중 가용 디스크 공간의 확인

Page 30: 1. DoS  공격의 이해

- 30 -

1. 가용 Disk 자원의 고갈

프로세스 확인 및 제거

Page 31: 1. DoS  공격의 이해

- 31 -

2. 가용 Memory 자원의 고갈

다른 특별한 함수 없이 malloc 함수를 통해 메모리 할당만 계속적으로 수행하는 프로그램이다 . 디스크 고갈 공격보다 시스템 자원을 더 많이 차지하는 프로그램으로 터미널 창 하나만을 띄우는 데도 몇 분을 소모하게 만드는 공격이다 .

Page 32: 1. DoS  공격의 이해

- 32 -

3. 가용 Process 자원의 고갈

fork( ) 라는 프로세스 할당 함수만이 무한대로 쓰이고 있다

Page 33: 1. DoS  공격의 이해

- 33 -

Quota 설정

1. /etc/vfstab 파일을 vi 에디터로 연다 .

2. 쿼타를 설정하고자 하는 파티션의 뒷 부분에 usrquota 옵션을 더해준다 .

3. mount -o remount /home 명령을 통해 설정된 마운트를 적용할 수 있다 .

4. 적용된 마운트를 확인하기 위해 mount 를 실행시키면 usrquota 옵션이 들어가 있는 것을 확인할 수 있다 .

5. 이제 쿼타 적용을 위해 touch /home/quota.user 로 쿼타를 적용하고자 하는 파티션의 가장 상위 디렉토리에 quota.user 를 생성한다 . 권한을 600(rw- --- ---) 으로 주고 , quotacheck 를 하면 이제 quota.user 파일에 사용자별 쿼타 데이터베이스를 설정하고 적용할 수 있다 .

Page 34: 1. DoS  공격의 이해

- 34 -

Quota 설정

6. wishfree란 아이디에 quota 를 적용하기 위해서 edquota wishfree 명령어를 입력하면 다음과 같이 vi 에디터가 뜬다 . 소프트에 10MB, 하드에 15MB 를 지정하였다 . 15MB 이상은 절대로 쓸 수 없다 . 사용자는 10MB 이상을 쓸 수 있지만 , 1 주일동안 경고를 받게 되며 , 1주일이 지난 다음에는 파일을 생성할 수 없다 . 이렇게 지정한 후 저장한 다음 quotaon /home 이라고 입력하면 /home 에 대한 쿼타가 적용되며 , quotaoff /home 이라고 입력하면 설정된 쿼타가 해제된다 .

Page 35: 1. DoS  공격의 이해

- 35 -

2. DDoS 공격

DoS 공격이 짧은 시간에 여러 곳에서 일어나게 하는 공격으로 피해 양상이 상당히 심각하며 , 이에 대한 확실한 대책 역시 없다 . 또한 공격자의 위치와 구체적인 발원지를 파악하는 것 역시 거의 불가능에 가깝다 .

DDoS 공격은 특성상 대부분의 공격이 자동화된 툴을 이용하고 있다 . 공격의 범위가 방대하며 DDoS 공격을 하려면 최종 공격대상 이외에도 공격을 증폭시켜주는 중간자가 필요하다 .

Page 36: 1. DoS  공격의 이해

- 36 -

1. 공격자 (Attacker) : 공격을 주도하는 해커의 컴퓨터

2. 마스터 (Master) : 공격자에게서 직접 명령을 받는 시스템으로 여러 대의 에이전트 (Agent) 를 관리하는 시스템

3. 에이전트 (Agent) : 공격대상 (Target) 에 직접적인 공격을 가하는 시스템

DDoS 공격의 구성 요소

Page 37: 1. DoS  공격의 이해

- 37 -

1. 많은 사용자가 사용하며 , 밴드와이드 (Bandwidth) 가 크다 . 관리자가 모든 시스템을 세세하게 관리할 수 없는 곳에 계정을 획득하여 스니핑이나 버퍼 오버플로우 등의 공격으로 설치 권한이나 루트 권한을 획득한다 .

2. 잠재적인 공격대상을 파악하기 위해 네트워크 블록 별로 스캐닝을 실시하여 , 원격지에서 버퍼 오버플로우를 일으킬 수 있는 취약한 서비스를 제공하는 서버를 파악한다 .

3. 취약한 시스템의 리스트를 확인한 뒤 , 실제 공격을 위한 Exploit 을 작성한다 .

4. 권한을 획득한 시스템에 침투하여 Exploit 을 컴파일하여 설치한다 .

5. 설치한 Exploit 로 공격을 시작한다 .

DDoS 공격의 일반적인 순서

Page 38: 1. DoS  공격의 이해

- 38 -

1. Trinoo

Trinoo 는 1999년 6월 말부터 7월 사이에 퍼지기 시작했으며 , 미네소타 대학의 사고 주범이었다 . 원래 이름은 Trin00 이다 . 처음 솔라리스 2.x 시스템에서 발견되었으며 , 최소 227 개의 시스템이 공격에 쓰였던 것으로 알려져 있다 . UDP 를 기본으로 하는 공격을 시행하며 ‘ statd, cmsd, ttdb 서버 d’ 데몬이 주 공격대상이다 .

주요 이용 포트

접속자 접속대상 프로토콜 포트 공격자 마스터 TCP 27665

마스터 에이전트 UDP 27444

에이전트 마스터 UDP 31335

에이전트 공격대상 UDP

Page 39: 1. DoS  공격의 이해

- 39 -

DDoS 공격에 대한 대책

각각의 DDoS 툴은 통신을 위해 특정 포트를 사용한다 . 때문에 특정 포트가 열려 있는지 검사하면 , 마스터나 데몬이 설치되어 있는 시스템을 찾아낼 수 있다 . 다양한 툴이 있으며 , rid-1.0, DDoS ping, DDoS scan 등이 있다

Page 40: 1. DoS  공격의 이해

- 40 -

DDoS 공격에 대한 대책

TCP dump 로 네트워크의 패킷 중 마스터와 데몬의 통신 패킷을 찾는 것 이 다 . 27444, 32770 과 같 이 특 정 한 포 트 를 알고 있으므로 평소에 TCP Dump 결과를 파일로 저장시켜둔 다음 , 알고 있는 포트가 있는지 체크해본다 .

Page 41: 1. DoS  공격의 이해

- 41 -

2. TFN, TFN 2K

TFN 은 Teletubby Flood Network 라고 불리기도 한다 . TFN 역시 Trinoo 와 마찬가지로 ‘ statd, cmsd, ttdb' 데몬의 취약점을 공격한다 .

TFN 은 마스터에 클라이언트라는 용어를 쓰고 있다 . 클라이언트를 구동하면 패스워드가 사용되지 않고 , 클라이언트와 데몬간에는 ICMP Echo Request 패킷이 사용되며 , TCP, UDP 연결도 이루어지지 않는다 . 따라서 이를 모니터링하는 일은 쉽지 않다 . 클라이언트의 각 명령은 ICMP Echo Request 패킷에 16 비트 이진수로 데몬에 전송되며 , 시퀀스 넘버는 0x0000 으로 설정되어 있어 , TCP Dump로 모니터링하면 ping 의 최초 패킷처럼 보이기 때문이다 .

TFN 은 공격자 시스템과 마스터 시스템간 연결이 암호문이 아닌 평문으로 전달되는 약점을 가지고 있다 . 이는 데이터가 다른 해커나 관리자에게 스니핑되거나 세션 하이재킹될 수 있으며 , 공격자를 노출시키는 등 치명적일 수 있다 .

Page 42: 1. DoS  공격의 이해

- 42 -

TFN 2K 의 특징

1. 통신에 특정 포트가 사용되지 않고 암호화되어 있으며 , 프로그램에 의해 UDP, TCP, ICMP 가 복합적으로 사용되며 포트 또한 임의로 결정된다 .

2. TCP Syn Flooding, UDP Flooding, ICMP Flooding, Smurf 공격을 쓰고 있다 .

3. 모든 명령은 CAST-256 알고리즘으로 암호화된다 .

4. 지정된 TCP 포트에 백도어를 실행시킬 수 있다 .

5. 데몬은 인스톨 시 자신의 프로세스 이름을 변경함으로써 , 프로세스 모니터링을 회피한다 .

6. UDP 패킷의 헤더가 실제 UDP 패킷보다 3 바이트만큼 더 크다 .

7. TCP 패킷의 헤더의 길이는 항상 0 이다 . 정상적인 패킷이라면 절대로 0 일 수 없다 .

Page 43: 1. DoS  공격의 이해

- 43 -

3. Stacheldraht

Stacheldraht 는 독일어로서 '철조망 ' 이라는 뜻이다 1999년 10

월 처음 출현한 것으로 알려져 있으며 , TFN 을 발전시킨 형태다 .

Stacheldraht 역시 TFN2K 처럼 공격자와 마스터 , 에이전트 ,

데몬과의 통신에 암호화 기능이 추가되었다 . 공격자가 마스터에 접속하면 ,

마스터는 현재 접속을 시도한 이가 올바른 공격자인지 확인하기 위해 패스워드 입력을 요구한다 . 이때 입력되는 패스워드는 최초 설치되기 전에 ‘ Authentication‘ 의 ‘ Passphrase’ 를 사용하여 암호화된 상태로 공격자에게서 핸들러로 보내진다 .

Page 44: 1. DoS  공격의 이해

- 44 -

4. DoS, DDoS 공격에 대한 대응책

1. 방화벽 설치와 운영

2. IDS 설치와 운영

3. 안정적인 네트워크의 설계

4. 시스템 패치

5. 스캐닝

6. 서비스별 대역폭 제한