외로운 Nova의 작업실

네트워크 공격 기법 본문

Server Penetesting/Network

네트워크 공격 기법

Nova_ 2023. 4. 6. 17:06

- 서비스 거부 공격

<Ping Of Death Attack>

Ping 명령을 통해 TCMP를 정상적인크기 보다 아주 크게 만들어 전송하면 MTU에의해 다수의 IP 단편화가 발생하게되는데, 이 단편화를 타겟은 재조합해야합니다. 이때 많은 부하가 발생하거나 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 합니다. 아래는 Ping Of Death Attack의 파이썬 코드입니다.

from scapy.all import *

# Define the IP address of the target
target_ip = "192.168.1.1"

# Create an ICMP packet with the maximum payload size
max_size = 65535
icmp_packet = IP(dst=target_ip)/ICMP()/("X" * max_size)

# Send the packet and wait for a response
response = sr1(icmp_packet, timeout=2)

# Check if we received a response
if response:
    print(f"Response received from {response.src}")
else:
    print("No response received")

대응책은 보통의 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하는 방식을 사용합니다. 또한 현재 대부분의 시스템은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하게 설정되어 해당 공격을 막고 있습니다.

 

<Land Attack>

공격자가 출발지와 목적지 IP가 같은 패킷을 만들어 공격 대상 시스템에 보냄으로써 수신자가 자기 자신에게 응답을 보내 무한 루프 상태에 빠지도록하여 시스템 자원을 소모시키는 형태의 도스 공격을 말합니다. 아래는 해당 공격의 파이썬 코드입니다.

from scapy.all import *

# Define the source and destination IP addresses
ip_address = "192.168.1.1"

# Create an IP packet with the same source and destination IP
packet = IP(src=ip_address, dst=ip_address)

# Print the packet summary
print(packet.summary())

대응책은 현재 대부분의 운영체제는 보안 패치가 적용되어있고, 침입차단시스템, 라우터 등 패킷 필터링 장비를 통해 출발지 IP와 목적지 IP가 같으면 차단하도록 설정합니다.

 

<Smurf Attack>

스머프 공격은 추발지 IP를 희생자 IP로 위조한 후 증폭 네트워크로 ICMP Echo Request를 브로드캐스트 함으로써 다수의 ICMP Echo Reply가 희생자에게 전달되어 서비스거부를 유발시키는 공격입니다. 요즘에는 라우터에서 Directed Broadcast가 비활성화되어 있어 대응이 가능합니다. 또한 동일한 ICMP Echo Reply 패킷이 다량으로 발생한다면 해당 패킷들을 침입차단 시스템을 통해 모두 차단 시켜야합니다.

 

<Teardrop Attack>

IP패킷 재조함 과정에서 조작된 단편의 오프셋 정보로 인해 수신시스템에 오류나 부하가 발생하도록 만드는 도스 공격을 말합니다. 공격자는 IP fragment offset을 서로 중첩되도록 조작하여 전송하고 이를 수신한 시스템이 재조합하는 과정에서 오류나 부하가 발생하여 시스템의 기능을 마비시키는 공격입니다. 현재 대부분의 운영체제는 이를 방어하고있기때문에 최신 os 버전을 유지하면 대응이 가능합니다. 아래는 관련 파이썬 코드입니다.

from scapy.all import *

# Create an IP packet with the fragment offset field set to 0
packet = IP(dst="192.168.1.1", frag=0)

# Modify the fragment offset field to 100
packet.frag = 100

# Print the packet summary
print(packet.summary())

 

<Tiny Fragment 공격>

TCP 헤더가 2개의 IP 단편에 나누어질 정도로 작게 MTU의 크기를 조작해 최초의 단편을 아주 작게 만들어서 패킷 필터링 장비를 우회하는 공격 기법을 말합니다.

MTU란 아래 그림처럼 2계층의 body 부분의 최대 크기를 말합니다.

MTU를 조작하는 방법은 리눅스에서 아래 명령어를 사용합니다.

sudo ifconfig eth0 mtu 1500

 

<Fragement Overlap(단편 중첩) 공격>

IP 단편의 오프셋을 조작하여 첫번째 단편의 일부분을 두 번째 단편이 덮어쓰도록 함으로써 패킷 필터링 장비를 우회하는 공격 기법을 말합니다.

대응책으로는 단편화된 패킷들을 재조합하여 IP 단편화를 이용한 우회 공격의 탐지가 가능한 패킷 필터링 장비를 적용합니다.

Comments