DOS ATTACK이 무엇인지 한번 알아봅시다.
DOS란, Denial of Service의 약자로, 한국말로 하면 서비스 거부 공격이다.
서비스를 거부한다? 영어에서 한글로 번역하는 과정에서 일어난 대표적인 오역이라고 생각은 들지만..
이미 서비스 거부 공격이라는 말은 표준어처럼 널리 퍼졌음
말 그대로 서비스를 못하게, 사용자가 해당 시스템을 의도대로 사용할 수 없도록 만드는 공격이다.
네트워크 해킹 공격의 대표적인 공격이라고 할 수 있고.. 일반 사람들이 가장 잘 알고 있는 공격이기도 하다.
( e.g. 디도스)
US CERT에서는 다음과 같은 항목을 DOS 공격을 받았다고 의심할 수 있다고 했다.
* 비정상적으로 네트워크 성능 저하
* 모든/특정 웹사이트 접근 불가
* 비정상적으로 급증하는 전자우편 수신량
DOS공격은 여러가지 종류가 있다.
UDP Bombing
UDP Bombing은 UDP에서 서버를 점검하기 위해 사용하는 Chargen 과 Echo 서비스를 악용한 DOS공격이다.
Chargen은 대상을 점검하기 위해서 Random한 값을 생성하여 날리는 것이다. 통상 19번 포트를 사용한다.
ehco는 우리가 잘 알다시피, 어떤 메세지가 수신되든 그 메세지를 그대로 되돌려 보내는 것이다. 통상 7번 포트를 사용한다.
1. 공격자 => server1 : 공격자는 송신자ip / 포트를 Server2의 IP / echo(7) 로 속이고 chargen 포트(19)로 많은 양의 연결을 시도함.
2. server1 => server2 : server1의 chargen은 요청하는 족족 다 받아주어 server2의 echo 포트로 엄청나게 많은 랜덤값을 보낸다.
3. server2 => server1 : 많은 양의 랜던값을 echo 포트로 받았으니 받은 그대로 다시 server1로 돌려준다.
4. server1, server2 둘다 뻗음
보시다시피 굉장히 간단한 공격이다. 그럼 UDP Bombing의 대처방안에는 어떤 것이 있을까?
- echo와 chargen 뿐 아니라 그 외 자주 사용하지 않는 서비스는 disable 시킨다.
- 방화벽에 화이트리스트를 적용하여 필요한 패킷만 들어오도록 막는 방법이 있다.
Smurf Attack
Smurf Attack 이란, 같은 네트워크 상의 사용자들에게 송신지를 Target Ip로 속인 뒤 ICMP echo Request 메시지를
broadcast로 날린다. 그러면 메시지를 받은 호스트들은 Target IP로 ICMP echo Reply 메시지를 보내게 되는데,
(공격자는 수신지 ip를 Network ID로 하거나 broadcast 주소로해서 보낸다.)
이 과정을 여러 번 반복하여 공격 대상의 서비스를 다운시키는 공격이다.
Smurf Attack은 아직도 Worm이 시스템을 공격할 때 여전히 사용되고 있고,
단일로 사용할 때 보다 다른 개념들과 복합적으로 사용될 때 그 효과가 증폭하게 된다.
스머프 어택을 막기위한 방법으로,
라우터 단에서 Direct Broadcast를 차단하는 방법이 있다.
Broadcast로 들어오는 icmp echo message들에게 직접 응답을 하지 않겠다는 의미이다.
ICMP가 Broadcast로 들어오는 경우는 90%이상은 Smurf Attack이라고 간주하면 된다.
그리고 라우터의 ingress/egress 필터를 구성하여 IP spoof를 방지한다.
Ping of Death
Ping of Death 란, Ping 패킷에 대용량의 data를 실어 Fragment 단위로 분할시켜 송신하여
공격 대상이 data를 수신하고 fragment를 재조합 할 때 CPU에 어마어마한 부하를 주도록 하여
서비스를 다운시키는 공격을 말한다.
TCP/IP 에서 패킷의 Maximum 사이즈를 64KB로 정해놓았다. 그래서 Ping(ICMP 프로토콜 사용함)에
엄청난 양의 데이터를 주어 전송하면 크래쉬, 프리징, 재부팅 등의 서비스 거부 공격 형태가 나타나게 된다.
예를 들어 하나 보자면 위에 패킷 캡쳐화면과 같이 핑오브데스를 하면 저렇게 나온다.
ping의 사이즈가 커서 fragment로 조각조각 나서 전송되는 모습이 나옴.
이 공격의 보안 대책은 그냥 ping을 방화벽에서 차단해버리면 된다.
ICMP, Ping 같은 경우는 특정 host 단위로 Health check 용도로만 사용하므로 주로 차단해놓는 경우가 많음
SYN Flooding
SYN Flooding이란, TCP "Half Open" attack 이라고도 불린다.
공격 대상에게 출발지 주소를 존재하지 않는 IP로 속여서 대량의 SYN 패킷을 보낸다
그러면 공격 대상은 SYN ACK 응답을 해도 ACK 응답이 오지 않으니
SYN_RCVD 상태가 되어 서비스가 마비되는 공격이다.
TCP에서 SYN ACK를 보내고 나면 SYN_RCVD 상태가 되는 것은 알고 있을 것이다.
이 상태를 Half-open 이라고도 하는데, 요건 커널에서 유지시키는 상태이다.
지가 보낸거에 대한 ACK가 올 때 까지 이 SYN_RCVD 상태를 유지시킨다.
그 상태를 Backlog Queue 라는 곳에서 유지시키는데..
하여튼 ACK가 올때까지 계속해서 메모리에 상주하며 리소스를 갉아 먹는 상태가 되는 것이다.
게다가 이런 공격 패킷을 여러개 보내면.. TCP도 세션을 맺는 갯수가 제한되어 있다.
이 갯수를 넘어가버릴게 당연하니.. 서비스가 마비될 수 밖에 없다.
그렇다면 SYN Flooding을 막는 방법엔 어떤게 있을까.. 어차피 안먹히긴 하지만
여러가지 방법이 있지만 가장 대표적인 방법이 방화벽의 SYN Cookie를 활용하는 것이다.
디도스에 대해서 알아보자. 사실 지금까지 알아본 도스공격들을 활용하는 것이다.
DDOS (Distributed Denial of Service)
분산 서비스 거부 공격으로 해석된다.
인터넷 망에서 수천 수만 수십만대의 pc를 좀비로 감염시켜 하나의 타겟에 DOS공격을 퍼붓는 것이다.
공격자가 좀비PC( = bot 봇이라함)를 만들기 위해 Bot Master를 찾아 이놈을 뚫어 bot Network에 침입하면
거기 물려있는 수많은 pc들을 봇으로 만들 수 있다. 이렇게 해서 계속해서 봇을 늘려나가서
공격자는 DDOS 공격을 할 수 있는 초석을 마련한다. 요런 매커니즘을 C&C (Command & Control)이라 한다.
봇 마스터를 C&C 서버 라고도 부른다.
IRC를 이용해서 C&C를 구축한 사례도 있고, HTTP, P2P 프로토콜을 이용한 사례도 있고 다양하다.
우리나라에선 2009년에 일어난 7.7. DDOS로 인해 사람들에게 DDOS가 많이 알려져 있다.
사실상 DDOS가 터지면 막을 방법은 거의 없다고 보면 된다.
그냥 타겟에 안잡히게 착하게 살면 된다.(?)
갖가지 DDOS 방어 장비들이 나오고 있고하지만.. 여전히 웹서비스(80포트)는 가용성에 침해되면 아니되므로
24시간 오픈되어 있는 상태이다. DDOS는 80번 포트로 많이 일어난다.
아무리 비싼 보안장비를 쓰고 잘 해놓는다 한들 몇십만 몇백만 좀비가 보내는 트래픽을 감당할 수 있는 서버는 없다.
미리미리 사전에 탐지하고 대비하는게 최고다.
참고 URL : https://www.bpak.org/blog/2009/07/ddos-란-무엇인가-파헤쳐보자-작성중/
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
Switch Jamming (스위치 재밍) (0) | 2021.04.19 |
---|---|
DS (Dual Signature) / SET (Secure Electronic Transactions) (0) | 2021.04.19 |
iptables 에서의 TCP 응답 (0) | 2021.04.19 |
iptables 을 이용한 SSH Brute force 방어 (0) | 2021.04.19 |
iptables을 이용한 UDP Flood 방어 (0) | 2021.04.19 |