재우니의 블로그




* 서비스 거부 (dos, denial of service) 공격 : 일종의 훼방

1. ping of death

네트워크에서는 패킷을 전송하기 적당한 크기로 잘라서 보내는데, ping of death 는 네트워크의 이런 특성을 이용한 것이다.
네트워크 상태를 점검하기 위한 ping 명령을 보낼 때, 패킷을 최대한 길게 하여 (최대 65,500 byte) 공격대상에게 보내면 패킷은 네트워크에서 수백개의 패킷으로 잘개 쪼개어 보내 진다.

공격대상 시스템은 결과적으로 대량의 작은 패킷을 수신하게 되고,, 네트워크는 마비된다. ping of death 는 공격을 막기 위해 ping 이 내부 네트워크에 들어오지 못하도록 방화벽에서 ping 이 사용하는 프로토콜인 ICMP 를 차단하는 방법이 있다.

2. syn flooding

네트워크에서 제공하는 시스템에서는 동시 사용자 수에 대한 제한이 있다.
syn flooding 은 존재하지 않은 클라이언트가 서버별로 한정되어 있는 접속 가능한 공간에 접속한 것처럼 속여 다른 사용자가 서버의 서비스를 제공받지 못하게 하는 것이다.

이 공격은 tcp 의 연결과정인 쓰리웨이 핸드 쉐이킹의 문제를 악용한 것이다.
tcp 에 대한 최초 연결 시, 클라이언트가 syn 패킷을 보내고, 이를 받는 서버는 syn + ack 패킷을 받게 되어 있다.
그런데 마지막으로 클라이언트가 서버에 다시 ack 패킷을 보내야 연결이 되는데 보내지 않으면 서버는 클라이언트가 ack 패킷을 보낼올 때 까지 syn received 상태로 일정시간을 기다리게 된다.

그 시간안에 공격자는 가상의 클라이언트로 위조한 syn 패킷을 수없이 만들어서 서버에 보내 서버의 가용 동시 접속자수를 모두 syn received 상태로 만들어 진다.

이것이 syn flooding  공격의 기본이다. 대응책은 syn received 대기 사간을 줄이는 것이다. 침입자 차단 시스템(ips) 과 같은 보안시스템도 이러한 공격을 쉽게 차단할 수 있다.


3. boint , bonk, tear drop

tcp 약점을 이용한 것이다. tcp 는 데이터 전송에 있어서 신뢰성 있는 연결을 제공하려 한다. 패킷의 순서가 올바른지 중간에 손실된 패킷은 없는지, 손실된 패킷의 재전송을 요구하는 사항이 확인되지 않은 데이터전송에 대하여 프로토콜은 신뢰도를 확보하고자 반복저인 재요청과 수정을 하게 된다.

boint, bonk, tear drop 은 모든 이러한 반복적인 재요청과 수정을 공격대상이 계속하게 함으로써, 시스템의 자원을 고갈시키는 공격이다. tcp 패킷 안에는 각 패킷이 데이터의 어느 부분에 포함하고 있는지를 표시하기 위하여 시퀀스 넘버가 기록되어 있는데, 이러한 공격들은 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 이 시퀀스 넘버를 속인다. 방지방법은 과부화를 걸리거나 계속 반복되는 패킷을 무시하고 버리도록 처리한다.


4. land

이는 '나쁜 상태에 빠지게 되다' 라는 의미가 있다.
랜드 공격은 말 그대로 시스템을 나쁘게 빠지게 하는 것이며, 패킷을 전송할 때, 출발지 ip 주소와 목적지 ip 주소값을 똑같이 만들어서 공격 대상에게 보내는 것이다.

이때 조작된 ip 주소값은 당연히 공격대상의 i p주소이어야 한다. 이러한 패킷을 공격대상에 보내면서 시스템은 공격자가 처음 보낸 syn 패키의 출발지 주소 값을 참조하여 그 응답 패킷의 목적지 주소를 syn 패킷의 출발지 주소로 설정하여 보내게 된다.

그런데 syn 패킷의 출발지 주소는 실제 공격자의 주소가 아닌 공격대상의 주소값이다. 따라서 캐킷은 네트워크 밖으로 나가지 않고 자신에게 다시 돌아온다. 돌아온 패킷의 출발지 ip 주소에는 또 다시 자신의 ip 주소가 기록되어 있을 것이다. 이 공격법은 flooring 처럼 동시 사용자수를 점유해 버리며, cpu 부하까지 올린다.

land 공격 보안 대책은 운영체제 패치를 통해 가능하다. 방화벽 같은  솔루션을 이용하는것이다. 네트워크 보안 솔루션에는 출발지 주소와 목적지 주소의 적절성 검증 가능이 존재한다.


5. smurf

웜이 네트워크를 공격하는데 아직도 사용되며, ping of death 처럼 icmp 패킷을 이용한다. 기본적인 브로드캐스트 255,255,255,255 의 목적지 ip 주소를 가지고 네트워크의 임의의 시스템에 패킷을 보내는 것이다.
이러한 브로드케스트는 기본적으로 3계층 장비 즉, 라우터를 넘기지 못한다
그러나 라우터를 넘어가서 브로드케스트를 해야 하는 특별한 경우가 있다. 이러한 경우에는 172.16.0.255 와 같은 네트워크 부분(172.16.0) 에 정상적인 ip 를 적어두고 해당 네트워크에 있는 클라이언트의 ip 주소 부분에 255, 즉 브로드케스트 주소를 채워서 원격지의 네트워크에 브로드케스트를 할 수 있는데, 이를 다이렉트 브로드캐스트라고 한다.

대응책은 라우터에서 다이렉트 브로드케스트를 막는 것이다. 처음부터 다이렉트 브로드케스트를 막는 것이다.
처음부터 다이렉트 브로드케스트를 지원하지 않는 라우터도 있다.

6. mail bomb

흔히 폭탄 메일 이라고 하며, 스펨메일도 이와 같은 종류다. 메일 버서는 각 사용자에게 일정한 양의 disk 공간을 할당하는데, 메일 폭주하여 디스크 공간을 가득 채우면 정작 받아야 할 메일을 받을 수 없다. 스펨메일도 서비스 공격이 될 수 있다.

7. ddos

ddos 는 1999 년 8월 17일 미네소타 대학에서 발생하는 것으로 각 포탈 서비스를 중지시켰다.
ddos 는 특성상 대부분 공격이 자동화된 툴을 이용하여, 공격이 방대하고 ddos 공격을 하려면 최종 공격대상 이외에 공격을 주도시켜주는 중간자가 필요하다.

1) 공격자 : 공격을 주도하는 해커 컴퓨터
2)마스터 : 공격자에게 직접 명령을 받는 시스템으로 여러대의 에이젼트를 괸리한다.
3)핸들러  프로그램 : 마스터 system 역할을 수행하는 프로그램이다.
4)에이젠트 : 공격대상에 직접 공격을 가하는 시스템
5)데몬 : 에이젼트 시스템 역할을 수행하는 프로그램

ddos 공격에서 조금 다른 점은 마스터와 에이젼트가 중간자 역할을 하지만, 피해자에게도 한다. 대형 isp 업체나 정부기관이 이런 역할을 하게 되면 폭력배에게 주먹을 빌려주는 형태가 된다.

8. 스니핑

스니핑 공격은 수동적공격이라고 하며, 기본적으로 네트워크에 접속하는 모든 시스템은 설정된 아이피 주소값과 고유한 맥주소값을 가지고 있다.

통신을 할때 네트워크 카드는 두 가지 정보(2계층의 맥정보와 3계층의 ip ) 를 가지고 자신의 랜카드에 들어오는 프로토콜 형식에 따른 전기적 신호의 해더 부분, 즉 주소값을 인기하고 자신의 버퍼에 저장할지를 결정하는데 자신의 것과 일치하지 않은 패킷은 무시하는 것이다. 그러나 공격자는 자신에게 필터링 되는 정보까지 봐야 하는 것으로, 2,3계층 에서의 필터링을 헤제하기 위해 프러미큐어스 모드라는 랜카드 모드를 이용한다.

1) arp 스푸핑

로컬에서 통신하고 있는 서버와 클라이언트의 아이피 주소에 대한 2계층 맥주소를 공격자 맥주소로 속여 클라이언트에서 서버로 가는 패킷이나 서버에서 클라이언트로 가는 패킷이 공격자에게 향하도록 한다. 공격자는 이 패킷을 확인한 후, 원래의 목적지로 향하도록 다시 돌려보내 연결이 유지되는 공격이다.

2) icmp 리다이렉트 

3계층에서 스니핑 시스템이 네트워크에 존재하는 또 다른 라우터라고 알람으로써, 패킷의 흐름을 바꾼다.

3) 스위치 재밍

스위치에는 포트와 맥주소를 저장한 테이블이 있다. 스위치 재밍은 이러한 테이블 기능을 마비시키는 공격으로 MACOF 공격이라고도 한다. 스위치에 랜덤한 형태로 생성된 MAC 을 가진 패킷을 무한대로 보내면 스위치의 MAC 테이블은 저장공간이 넘게 되고, 스위치의 MAC 테이블은 저장공간이 넘게 되고, 스위치 기능을 잃고 허브처럼 작동하게 만든다.