이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12729|회답: 1

[기술적 분석] 심도 있고 이해하기 쉬운 내용: 네트워크 공격과 방어 공격에 대한 소개

[링크 복사]
게시됨 2014. 10. 25. 오후 9:04:02 | | |
1. DDoS 공격 기본

DDoS(분산 서비스 거부) 공격은 가장 강력하고 방어하기 어려운 공격 중 하나인데, DDoS 공격의 주된 목적이 지정된 대상이 정상적인 서비스를 제공하거나 인터넷에서 사라지는 것을 막는 것이기 때문입니다.

DDoS는 시작되는 방식에 따라 간단히 세 가지 범주로 나눌 수 있습니다.

첫 번째 범주는 강제로 승리한다인터넷 전역에서 쏟아져 나오는 거대한 데이터 패킷들이 IDC 입구를 막고, 다양한 강력한 하드웨어 방어 시스템과 빠르고 효율적인 비상 절차가 무용지물로 만들어졌습니다. 이러한 유형의 공격의 전형적인 예로는 현재는 드문 ICMP 플러드와 UDP 플러드가 있습니다.

두 번째 범주는 영리함으로 승리합니다스마트하고 눈에 띄지 않으며, 몇 분마다 소포를 보내거나 소포만 있으면 고급스러운 구성 서버가 더 이상 응답하지 않을 수 있습니다. 이 유형의 공격은 주로 Slowloris 공격, 해시 충돌 공격 등 프로토콜이나 소프트웨어의 취약점을 악용하여 시작되며, 특정 환경적 우연이 필요합니다.

세 번째 범주는 위 두 가지가 혼합된 형태입니다이 공격은 프로토콜과 시스템의 결함을 이용할 뿐만 아니라, SYN 플러드 공격과 DNS 쿼리 플러드 공격 등 현재 주류 공격 방식인 DNS 쿼리 플러드 공격과 같은 방대한 트래픽을 포함하고 있습니다.

이 글에서는 이러한 가장 흔하고 대표적인 공격 방법을 하나씩 설명하고 그 방어 옵션을 소개할 것입니다.

1.1. SYN 플러드

SYN 플러드는 1999년경 처음 등장한 인터넷에서 가장 고전적인 DDoS 공격 중 하나로, 당시 가장 유명한 피해자였던 것은 야후였습니다. SYN 플러드 공격은 TCP의 트리플 핸드셰이크 결함을 악용하여 대상 서버를 반응하지 못하게 하고 추적을 어렵게 만들면서도 소액의 비용을 부담스럽게 만듭니다.

표준 TCP 3방향 핸드셰이크 프로세스는 다음과 같습니다:

  • 클라이언트는 SYN 플래그가 포함된 TCP 패킷을 보내고, SYN은 동기화되며, 동기화 패킷은 클라이언트가 사용하는 포트와 TCP 연결의 초기 일련번호를 나타냅니다.
  • 클라이언트로부터 SYN 패킷을 받은 후, 서버는 SYN+ACK(즉, 확인 확인) 패킷을 반환하여 클라이언트의 요청이 수락되었음을 알리고, TCP 초기 일련번호가 자동으로 1만큼 추가됩니다.
  • 클라이언트는 또한 서버에 확인 확인 메시지를 ACK(확인 응답)로 반환하며, TCP 일련번호도 1만큼 추가됩니다.

이 세 단계를 거치면 TCP 연결이 확립됩니다. 신뢰할 수 있는 전송을 위해 TCP 프로토콜은 세 번의 핸드셰이크 동안 예외 처리 메커니즘을 설정했습니다. 세 번째 단계에서는 서버가 클라이언트로부터 최종 ACK 확인 패킷을 받지 못하면 서버는 SYN_RECV 상태를 유지하며 클라이언트 IP 주소를 대기자 명단에 추가한 후 두 번째 단계에서 SYN+ACK 패킷을 재전송합니다. 재게시는 보통 3-5번 진행되며, 대기자 명단은 약 30초 간격으로 한 번 폴링되어 모든 클라이언트를 다시 시도합니다. 반면, 서버가 SYN+ACK 패킷을 전송한 후에는 다가오는 TCP 연결을 위한 정보를 저장할 자원을 미리 할당하며, 재시도를 기다리는 동안 이 정보를 유지합니다. 더 중요한 것은, 서버 자원이 제한되면 유지할 수 있는 SYN_RECV 상태가 제한을 초과하면 새로운 SYN 패킷을 더 이상 받지 않게 되어, 새로운 TCP 연결이 거부된다는 점입니다.

SYN 플러드는 위의 TCP 프로토콜 설정을 사용하여 공격의 목적을 달성합니다. 공격자들은 많은 IP 주소를 위장하여 SYN 패킷을 서버에 보내고, 위조된 IP 주소는 존재하기 거의 불가능하기 때문에 거의 모든 장치가 서버에 응답하지 않습니다. 그 결과 서버는 거대한 대기 명단을 유지하며 SYN+ACK 패킷을 계속 재전송해야 하며, 이는 많은 자원을 소모하고 해제할 수 없습니다. 더 중요한 것은, 공격받은 서버의 SYN_RECV 큐가 악성 패킷으로 가득 차 있으며, 새로운 SYN 요청이 더 이상 받아들여지지 않고, 합법적인 사용자는 TCP 연결을 위해 세 번의 핸드셰이크를 완료할 수 없다는 점입니다. 즉, 서버는 SYN Flood에 의해 서비스가 거부되었습니다.

SYN Flood에 관심이 있다면, 제가 2006년에 작성한 http://www.icylife.net/yunshu/show.php?id=367 을 살펴보실 수 있습니다. 이 은 이후 여러 변경, 버그 수정, 공격성을 줄였고, 순수하게 테스트용으로 사용되었습니다.

1.2. DNS 쿼리 플러드

인터넷의 가장 기본적이고 핵심적인 서비스인 DNS는 당연히 DDoS 공격의 중요한 표적 중 하나입니다. DNS 서비스를 다운시키면 간접적으로 기업 전체나 지역 내 네트워크 서비스가 다운될 수 있습니다. 얼마 전, 인기 해커 그룹 익명 단체도 전 세계 인터넷의 13개 DNS 서버를 공격하겠다고 발표했으나 결국 성공하지 못했습니다.

UDP 공격은 대규모 트래픽을 시작하는 가장 쉬운 공격 방법이며, 무작위 출처 IP 위조는 추적하기 어렵습니다. 하지만 대부분의 IP가 UDP 서비스를 제공하지 않기 때문에 필터링이 더 쉽습니다. 그래서 UDP 트래픽을 그냥 버릴 수 있습니다. 따라서 순수 UDP 트래픽 공격은 현재 상대적으로 드물며, UDP 프로토콜이 수행하는 DNS 쿼리 플러드 공격으로 대체되고 있습니다. 간단히 말해, DDoS 공격은 프로토콜 수준이 높을수록 방어가 더 어려워집니다. 프로토콜이 높을수록 비즈니스와 더 관련이 많고 방어 시스템이 더 복잡해집니다.

DNS 쿼리 플러드는 공격자가 다수의 소크퍼펫 머신을 조작하여 대상에 대해 대량의 도메인 이름 쿼리 요청을 실행하는 것을 말합니다. ACL 기반 필터링을 방지하기 위해서는 패킷 무작위성을 개선해야 합니다. 일반적인 관행은 UDP 계층에서 소스 IP 주소, 소스 포트 및 기타 매개변수를 무작위로 위조하는 것입니다. DNS 프로토콜 계층에서는 쿼리 ID와 해결할 도메인 이름이 무작위로 위조됩니다. 필터링을 방지하는 것 외에도, 해석해야 할 무작위 위조 도메인 이름은 DNS 캐시에 도달할 가능성을 줄이고 DNS 서버의 CPU 자원을 최대한 많이 소모할 수 있습니다.

DNS 쿼리 플러드 코드와 관련해서는, 2011년 7월에 서버 성능 테스트를 위해 코드를 작성했으며, 링크가 http://www.icylife.net/yunshu/show.php?id=832 있습니다. 마찬가지로, 이 코드는 인위적으로 덜 공격적이며 테스트 목적으로만 사용됩니다.

1.3. HTTP 플러드

위에서 설명한 SYN 플러드 및 DNS 쿼리 플러드는 이 단계에서 효과적으로 방어할 수 있으며, 주요 제조업체와 인터넷 기업들이 진짜로 골칫거리인 HTTP 플러드 공격입니다. HTTP 플러드는 7계층 프로토콜에 기반한 웹 서비스에 대한 공격입니다. 그 큰 해악은 주로 세 가지 측면에서 나타난다: 편리한 시작, 어려운 필터링, 그리고 광범위한 영향.

SYN 플러드와 DNS 쿼리 플러드 모두 공격자가 루트 권한을 가진 다수의 봇을 제어해야 합니다. 많은 수의 루트 권한을 수집하는 데는 시간과 노력이 필요하며, 공격 중에는 관리자가 발견한 비정상 트래픽으로 인해 공격자가 자원을 급격히 잃어 퍼펫 머신이 보급이 느려져 공격 강도가 크게 감소하고 장기간 지속할 수 없습니다. HTTP 플러드 공격은 다릅니다. 공격자는 다수의 봇을 통제할 필요가 없고, 대신 포트 스캐너를 사용해 인터넷에서 익명 HTTP 프록시 또는 SOCKS 프록시를 찾아내고, 이를 통해 공격자가 공격 대상에 HTTP 요청을 시작합니다. 익명 프록시는 비교적 풍부한 자원이며, 며칠 만에 프록시를 얻는 것이 어렵지 않아 공격이 쉽게 시작되고 오랜 기간 지속될 수 있습니다.

반면, HTTP 플러드 공격은 HTTP 계층에서 실행되는데, 이는 일반 사용자의 웹 페이지 요청 행동을 강력히 모방하여 웹사이트 비즈니스와 밀접하게 연관되어 있어 보안 업체들이 사용자 경험에 영향을 주지 않는 공통 솔루션을 제공하기 어렵게 만듭니다. 한 곳에서 잘 작동하는 규칙이 상황이 바뀌면 과실치사 사건이 많이 발생할 수 있습니다.

마지막으로, HTTP 플러드 공격은 심각한 연쇄 반응을 일으킬 수 있는데, 이는 공격받는 웹 프론트엔드의 느린 반응을 직접적으로 유발할 뿐만 아니라, 백엔드 Java 및 기타 비즈니스 계층 로직과 백엔드 데이터베이스 서비스를 간접적으로 공격해 압력을 증가시키고 로그 저장 서버에도 영향을 미칩니다.

흥미롭게도 HTTP Flood는 CC 공격이라는 역사적 별명도 가지고 있습니다. CC는 Challenge Collapsar의 약자로, 중국의 유명 보안 회사에서 개발한 DDoS 방어 장치입니다. 현재 상황을 보면, 콜랩사뿐만 아니라 모든 하드웨어 방어 장비도 여전히 도전받고 있으며, 위험이 해소되지 않았습니다.

1.4. 느린 연결 공격

공격에 관해서는 첫 반응이 막대한 트래픽과 패킷입니다. 하지만 반대로 느린 공격이 있는데, 이는 일부 공격 대상이 어떻게 죽는지 모른 채 죽는 것으로 알려져 있는데, 이것이 느린 연결 공격입니다. 가장 대표적인 것은 rsnake가 발명한 슬로우로리스입니다.

HTTP 프로토콜은 HTTP 요청이 \r\n\r\n으로 끝나도록 규정하며, 이는 클라이언트가 전송을 완료하고 서버가 처리를 시작했음을 나타냅니다. 그럼 \r\n\r\n을 보내지 않으면 어떻게 될까요? 슬로울로리스는 DDoS 공격에서 이를 유리하게 활용합니다. 공격자는 HTTP 요청 헤더에서 Connection을 Keep-Alive로 설정하고, 웹 서버에 TCP 연결이 끊기지 않도록 요청한 뒤, 몇 분마다 a:b\r\n과 같은 키-값 형식을 천천히 서버에 전송하여 서버가 HTTP 헤더를 받지 못했다고 인식하게 하여 대기하게 만듭니다. 공격자가 멀티스레딩이나 퍼펫을 사용해 같은 작업을 하면, 서버의 웹 컨테이너가 공격자에게 빠르게 압도되어 새로운 요청을 더 이상 받지 못하게 됩니다.

곧 다양한 슬로우로리스 변종들이 등장하기 시작했습니다. 예를 들어, POST 메서드는 웹 서버에 데이터를 제출하고, 긴 콘텐츠-길이이지만 바이트별로 느린 POST 실제 데이터 콘텐츠를 채우는 등 다양한 역할을 합니다. 슬로우로리스 공격과 관련해서는, rsnake가 테스트 코드도 제공합니다. 자세한 내용은 http://ha.ckers.org/slowloris/slowloris.pl 참조.

2. DDoS 공격이 진행 중입니다2.1. 하이브리드 공격

위에서는 네트워크를 공격하거나 알리바바, 바이두, 텐센트 같은 거대 웹사이트를 무력화하는 데 사용할 수 있는 여러 기본 공격 방법을 소개합니다. 하지만 그게 전부가 아닙니다. 공격 수준에 따라 전혀 다른 DDoS 공격을 할 수 있으며, 그 사용법은 동일합니다.

고급 공격자는 단일 벡터만 공격하지 않고, 목표 환경에 따라 유연하게 조합합니다. 일반 SYN 플러드는 역검출, SYN 쿠키 및 기타 기술적 수단을 통해 트래픽 정제 장치에 의해 쉽게 필터링될 수 있지만, SYN+ACK 패킷이 SYN 플러드에 섞여 각 위조된 SYN 패킷에 대응하는 위조 클라이언트 확인 패킷이 존재한다면, 여기서 대응하는 패킷은 출처 IP 주소, 출발 포트, 목적지 IP, 목적지 포트, TCP 윈도우 크기, TTL 등을 모두 동일 호스트와 동일한 TCP 흐름의 특성과 일치합니다. 역방향 감지 및 SYN 쿠키 유량 청소 장비의 성능에 대한 부담이 크게 증가할 것입니다. 실제로 SYN 데이터 패킷과 기타 플래그 비트는 특수 공격 효과를 가지고 있는데, 여기서는 도입되지 않습니다. DNS 쿼리 플러드에는 고유한 기법도 있습니다.

우선, DNS는 일반 DNS와 권한 도메인 DNS로 나눌 수 있으며, 일반 DNS를 공격합니다. IP 주소는 무작위로 위조되어야 하고, 서버는 재귀적 해석이 필요합니다; 하지만 허가된 도메인 DNS를 공격할 때, 위조된 출처 IP 주소는 순전히 무작위가 아니라 전 세계 ISP의 DNS 주소를 미리 수집하여 최대 공격 효과를 내야 하며, 트래픽 청소 장치가 IP 블랙리스트를 추가하거나 하지 않는 곤란한 상황에 처하게 만듭니다. 추가하면 과실치사 건수가 많이 발생하고, 블랙리스트를 추가하지 않으면 각 패킷을 역프로브해야 하므로 성능 부담이 커집니다.

반면, 앞서 언급했듯이, 기기 청소 압박을 높이기 위해서는 캐시에 닿지 않고 요청된 도메인 이름을 무작위로 지정해야 하지만, 해결할 도메인 이름은 위조 과정에서 일정한 규칙성을 가져야 하며, 예를 들어 도메인 이름의 일부만 위조하고 청소 장치가 설정한 화이트리스트를 뚫기 위해 특정 부분을 고체화하는 식이어야 합니다. 이유는 간단합니다. 텐센트 서버는 텐센트 도메인 이름만 해석할 수 있고, 완전히 무작위로 폐기될 수 있어 고정이 필요합니다. 하지만 완전히 고정된 경우에는 쉽게 버려지기 때문에 위조가 필요합니다.

둘째, DNS 공격은 UDP 포트에만 국한되어서는 안 되며, UDP 포트도 DNS 프로토콜에 따라 표준 서비스입니다. 공격이 발생했을 때 UDP와 TCP 공격이 동시에 수행될 수 있습니다.

HTTP 플러드의 초점은 프론트엔드의 캐시를 뚫고 HTTP 헤더의 필드 설정을 통해 웹 서버 자체에 직접 도달하는 데 있습니다. 또한 HTTP 플러드는 표적 선정에 매우 중요하며, 일반 공격자들은 검색과 같은 많은 데이터 쿼리가 필요한 페이지를 공격 대상으로 선택합니다. 이는 매우 정확한 방식이며 서버의 가능한 한 많은 자원을 소모할 수 있습니다. 하지만 이 공격은 장비를 청소하면 인간-기계 식별을 통해 쉽게 식별할 수 있는데, 이 문제를 어떻게 해결할 수 있을까요? 아주 간단합니다. 일반 사용자도 앱, 즉 다양한 웹 API를 통해서도 접근할 수 있는 페이지를 선택하세요. 일반 사용자와 악성 트래픽은 앱에서 나오며, 인간과 기계의 차이는 매우 작아 기본적인 통합을 구분하기 어렵습니다.

각 TCP 연결은 서버 측과 자체 쪽에 존재하며, TCP 상태를 유지하기 위해 자원을 소비해야 하므로 연결을 너무 오래 유지할 수 없습니다. 이 문제를 해결하면 공격성이 크게 향상될 것입니다. 즉, Slowloris는 상태 없는 방식으로 공격을 개시하고, TCP 일련번호를 캡처하며, 스니핑을 통해 클라이언트에서 TCP 연결 유지 상태를 확인할 수 있고, 시스템 커널은 TCP의 다양한 상태 변화에 신경 쓸 필요가 없으며, 노트북은 최대 65,535개의 TCP 연결을 생성할 수 있습니다.

앞서 설명한 내용은 모두 기술적 공격 강화입니다. 인간 측면에서는 다른 방법들이 있습니다. SYN Flood가 많은 패킷을 보내고 Slowloris의 느린 연결이 동반된다면, 몇 명이 이 비밀을 발견할까요? 서버가 다운되더라도 TCP 계층 청소를 강화하고 애플리케이션 계층의 동작을 무시하려는 SYN 공격만 발견될 수 있습니다. 모든 종류의 공격이 함께 작용해 최대 효과를 낼 수 있습니다. 공격 시간 선택도 중요한 요소로, 점심 식사 중, 퇴근 후 도로에 갇힌 유지보수 인력, 지하철 무선 네트워크 카드에 신호가 없을 때, 대상 기업이 대규모 행사를 진행 중 교통량이 급증할 때 등을 선택하는 것이 중요합니다.

이 공격은 순수한 공격이므로 코드나 상세한 설명은 제공되지 않습니다.

2.2. P2P 네트워크로부터의 공격

이전 공격 방법들은 대체로 봇이 필요하며, HTTP 플러드조차도 많은 수의 익명 프록시를 검색해야 합니다. 공격이 발생하면 몇 가지 명령어만 내보내면 기계가 자동으로 실행하는데, 이것이 완벽한 해결책입니다. 이 공격은 이미 P2P 네트워크에서 나온 것입니다.

우리 모두 알다시피, 인터넷상의 P2P 이용자와 트래픽은 매우 많은 수입니다. 만약 모두가 지정된 장소에 가서 데이터를 다운로드하고 수천 개의 실제 IP 주소를 연결한다면, 어떤 기기도 이를 지원할 수 없습니다. BT 다운로드를 예로 들자면, 인기 동영상의 토렌트를 위조해 검색 엔진에 올리는 것만으로도 많은 사용자와 트래픽을 속이기에 충분하지만, 이는 기본적인 공격에 불과합니다.

고급 P2P 공격은 자원 관리 서버를 직접 스푸핑하는 행위입니다. 예를 들어, Thunder 클라이언트는 찾은 자원을 리소스 관리 서버에 업로드한 후, 같은 리소스를 다운로드해야 하는 다른 사용자에게 이를 푸시하여 링크가 게시됩니다. 프로토콜 역전을 통해 공격자들은 대중적인 자원 정보를 위조하여 자원 관리 센터를 통해 배포하며, 이는 즉시 전체 P2P 네트워크 전체에 퍼질 수 있습니다. 더 무서운 점은 이 공격을 공격자 본인조차도 막을 수 없으며, P2P 관계자가 문제를 발견해 서버를 업데이트하고 다운로드 사용자가 다운로드한 소프트웨어를 재시작할 때까지 공격이 계속된다는 점입니다.

3. 요약

DDoS 공격에 대한 소개는 이게 전부이며, 더 이상 말하고 싶지 않습니다—방어가 많으면 충분하다는 것을 이해하는 것만으로도 충분합니다.

일반적으로 DDoS 공격은 민첩하고 우아할 수 있습니다. 응용의 아름다움은 마음의 통일에 있습니다.





이전의:무료 인터넷 접속, QQWifi 사용으로 CMCC 무료 접속 등도 포함됩니다
다음:체중을 줄이고 궁극의 비법을 찾아보세요
게시됨 2014. 10. 25. 오후 9:46:21 |
잘 요약하셨네요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com