서비스 거부(DoS, Denial of Service) 공격을 쉽게 얘기하면 일종의 훼방입니다.

서버나 네트워크에서의 서비스 공격은 무척 다양합니다.

이번 글에서는 다양한 서비스 거부 공격 방법과 이에 대한 대응책을 간단히 살펴보겠습니다.


1. Ping of Death


이메일로 10MB 파일을 보낼 떄, 10MB 크기의 데이터 패킷 하나가 퉁 하고 가는 것이 아니고, 수천 개의 패킷으로 나뉘어 전송됩니다.


네트워크는 패킷을 전송하기 적당한 크기로 잘라서 보내는데, Ping of Death는 그러한 특성을 이용한 것입니다.


네트워크 연결 상태에서 Ping 명령을 보낼 때 패킷을 최대한 길게하여(최대 65,500바이트) 공격 대상에게 보내먄 패킷은 네트워크에서 수백 개의 패킷으로 잘게 쪼개져 보내집니다.




2. SYN Flooding


네트워크에서 서비스를 제공하는 시스템에는 동시 사용자 수에 대한 제한이 있습니다. 

동시 사용자 제한은 정해져 있지는 않지만 무한할 수는 없습니다.

SYN Flooding은 존재하지 않는 클라이언트가 서버별로 한정되어 있는 접속 가능한 공간에 접속한 것처럼 속여 다른 사용자가 서버의 서비스를 제공받지 못하게합니다.




이 공격은 TCP의 연결 과정인 쓰리웨이 핸드셰이킹의 문제점을 악용한 것입니다.


최초 연결시 클라이언트가 서버에게 SYN 패킷을 보내고, 이를 받은 서버는 SYN+ACK 패킷을 보내고 포트는 대답을 기다리는 SYN Received상태가 됩니다.

그런데 마지막으로 클라이언트가 서버에 다시 ACK패킷을 보내야 연결이 되는데 클라이언트가 ACK패킷을 보내지 않는다면 SYN Received상태로 일정시간동안 기다리게 될것입니다. 


그리고 공격자는 가상의 클라이언트로 위조한 SYN 패킷을 수없이 만들어서 서버에 보내 서버의 가용 동시 접속사 주를 모두 SYN Received 상태로 만들어 버리는것이

SYN Flooding 공격의 기본입니다.



흔히 사회적이슈로 인해 특정 웹 서버가 접속자 폭주로 마비되어 서버 접속이 되지 않는 경우가 있는데, 이것도 SYN Flooding 공격을 받은 상황이라 할수도 있습니다.



대형 시스템을 제외한 일반적인 서버는 SYN Flooding 공격이 진행 되는 동안 접속이 거의 불가능 합니다. 하지만 공격이 끝난 후 일정시간, 즉 SYN Received 상태에서 자동으로 벗어나는 시간이 지나면 시스템은 회복됩니다.


따라서 이 공격에 대한 대응책은 SYN Received의 대기시간을 줄이는 것이라 할 수 있습니다.

또한 침입차단 시스템(IPS)과 같은 보안 시스템도 쉽게 이러한 공격을 차단할 수 있습니다.




3. Land


Land를 사전에서 찾아보면 착륙하다라는 의미 외에 '(나쁜 상태에)빠지게 하다'라는 의미가 있습니다.


Land공격은 말 그래도 나쁜 상태에 빠지게 하는 것이며, 방법도 아주 간단합니다.


패킷을 보낼 때 출발지 IP주소와 목적지 IP주소를 똑같이 만들어서 공격 대상에게 보내는 것입니다. 이 때 조작된 주소값은 당연히 공격 대상의 IP주소여야 합니다.


이러한 패킷을 공격 대상에 보내면 시스템은 공격자가 처음 보낸 SYN 패킷의 출발지 주소값을 참조하여 그 응답 패킷의 목적지 주소를 SYN패킷의 출발지주소로 설정하여 내보내게 됩니다.. 그런데 SYN 패킷의 출발지 주소는 실제 공격자의 주소가 아닌 공격 대상의 주소값으로 변경되어 있기 때문에 응답 패킷을 보내도 자신에게 다시 돌아옵니다. 그 돌아온 패킷 또한 출발지IP주소와 목적지 IP주소가 기록되어 있고 둘다 자신의 IP로 기록되어 있을 것입니다.


이 공격법은 SYN Flooding처럼 동시 사용자 수를 점유해버리며 CPU부하까지 올리고 시스템은 자기 꼬리를 빙빙 쫓는 강아지처럼 곧 지쳐버리게 될것입니다.



Land 공격에 대한 보안 대책도 운영체제의 패치를 통해서 가능합니다.  또 다른 방법은 방화벽과 같은 보안 솔류선을 이용하는 것입니다. 네트워크 보안 솔루션에는 출발지 주소와 목적지 주소의 적절성을 검증하는 기능이 있습니다.





5. Smurf


Smurf(스머프) 공격은 웜이 네트워크를 공격하는 데 아직도 많이 쓰이는데, Ping of Dead처럼 ICMP 패킷을 이용합니다. 스머프를 이해하려면 우선 다이렉트 브로드캐스트(Direct Broadcast)를 이해해야 합니다.


스머프 공격은 다이렉트 브로드캐스트를 악용한 것으로, 공격 방법은 간단합니다.

공격자가 예를 들어 172.16.0.255로 다이렉트 브로드캐스트를 하면 172.16.0.0 네트워크는 ICMP Request 패킷의 위조된 출발지 IP 주소로 ICMP Reply를 다시 보내게 됩니다. 결국 그 출발지 IP주소의 컴퓨터(공격대상)는 수많은 ICMP Reply를 받게 되고 Ping of Death 처럼 수많은 패킷이 시스템을 과부하 상태로 만듭니다.



Smurf 공격에 대한 대응책은 아주 간단합니다. 라우터에서 다이렉트 브로드캐스트를 막는 것입니다. 그리고 처음부터 다이렉트 브로드캐스트를 지원하지 않는 라우터도 있습니다.



7. DDOS


DDOS(Distributed Denial Of Service)는 1999년 8월 17일 미네소타 대학에서 발생한 것으로 알려졌습니다.


야후, NBC, CNN 서버의 서비스를 중지 시켰습니다. 피해가 상당히 심각하며 이에 대한 확실한 대책 역시 없습니다.  또한 공격자의 위치와 구체적인 발원지를 파악하는 것도 어렵습니다.


DDOS는 특성상 대부분이 자동화된 툴을 이용합니다. 



1. 공격자 (Attacker) : 공격을 주도하는 해커의 컴퓨터


2. 마스터 (Master) : 공격자에게서 직접 명령을 받는 시스템으로, 여러 대의

에이전트를 관리한다.


3. 핸들러 프로그램 : 마스터 시스템의 역할을 수행하는 프로그램이다.


4. 에이전트 (Agent) : 공격 대상에 직접 공격을 가하는 시스템이다. 좀비PC...


5. 데몬 프로그램 : 에이전트 시스템의 역할을 수행하는 프로그램이다.




DDOS 공격에서는 마스터와 에이전트가 중간자로서의 역할을 하지만 피해자이기도 합니다. 때때로 대형 ISP 업체나 정부기관이 이런 역할을 하게 됐을 때는 폭력배에게 주먹을 빌려주는 꼴이 되기도 합니다.



+ Recent posts