2022년 2월 말, CDN과 인터넷 보안 전문 기업인 Akamai의 어느 보안 연구원은 Akamai 고객(은행, 여행, 게임, 미디어 및 웹 호스팅 산업 고객)에게 1.5Mpps에서 최고 11Gbps에 달하는 일련의 TCP 반사 공격을 탐지하고 분석했습니다.
TCP 미들박스 반사(TCP Middlebox Reflection)라는 기술로 증폭된 공격은 취약한 방화벽과 콘텐츠 필터링 시스템을 악용하여 피해자 시스템에 대한 TCP 트래픽을 반영 및 증폭하여 강력한 DDoS 공격을 수행하는 공격의 형태를 의미합니다.
이 공격 패턴의 발견은 2월이지만, 이론에 대한 연구는 2021년 8월 메릴랜드 대학과 콜로라도 대학의 연구원들에 의해 발표되었는데 6개월 후 실제 인터넷 환경에서 공격이 발견된 것입니다.
미들박스는 통신하는 두 종단(endpoint)의 호스트 사이 경로 중간에서 전송 중인 패킷 스트림을 모니터링, 필터링 또는 변환하는 장치를 의미합니다. 라우터 및 스위치와 같은 기존 네트워크 전송 중에 사용하는 장치와 달리 미들박스는 패킷의 헤더뿐만 아니라 DPI(Deep Packet Inspection)와 같은 기술을 사용하여 페이로드(payload)에서도 작동합니다.
미들박스는 방화벽을 포함한 수많은 네트워크 기능 응용 프로그램에 사용됩니다. 방화벽 관리자가 콘텐츠 확인하고 액세스 제어를 할 수도 있고 국가의 인터넷 콘텐츠 검열에도 사용됩니다. 검열 용도의 미들박스는 주로 ISP의 네트워크에 위치합니다. 중국 만리장성(Great Firewall of China)과 같은 국가 검열 장치에서 기업 엔터프라이즈 콘텐츠 필터링 시스템에 이르기까지 다양하며 전 세계 네트워크에 배포되어 있습니다.
반사 증폭이란 반사와 증폭 두 가지 성질을 이용하는 공격입니다.
반사: 공격자는 자신의 주소를 피해자 주소로 변조하여 개방형 서버에 요청을 보내면 서버는 변조된 소스 IP 값으로 인해 공격자가 아닌 피해자에게 응답합니다.
증폭: 서버의 응답은 공격자의 요청보다 수배에서 수십~수백 배에 이르는 패킷 크기로 증폭되어 전달되므로 이 성질을 이용해 피해자에게 DoS 공격과 같은 효과를 낼 수 있습니다.
두 개 호스트의 TCP 연결은 3way-handshake로 시작합니다. 클라이언트는 랜덤한 시퀀스 번호 - ISNclient가 포함된 SYN 패킷을 보내고 서버는 여기에 자신의 랜덤한 시퀀스 번호 - ISNserver와 lient가 ISNclient + 1을 모두 포함하여 SYN+ACK로 응답합니다.
마지막으로 클라이언트는 ACK 패킷을 통해 ISNserver+1 값을 전달합니다. 두 개 호스트는 서로의 ISN 번호에 +1값을 통해 상대가 내가 통신하는 대상이 맞는지를 지속적으로 확인하는 것입니다.
3way-handshake가 완료되면 클라이언트는 PSH+ACK 패킷과 함께 비로소 애플리케이션 계층 데이터(예: HTTP GET 요청)을 시작합니다.
수많은 미들박스는 TCP 표준을 따르지 않고 증폭 공격에 악용될 수 있음이 발견되었습니다. 검열 용도의 미들박스는 변조된 TCP SYN 요청 이후에도 즉각적인 HTTP 응답을 한다는 의미입니다. 어떤 미들박스는 정상적인 TCP 응답 없이 바로 라우팅 처리하도록 설계되어 있는 것이 발견되었고 이것이 미들박스 반사 증폭 공격의 근본적 원인입니다.
① 공격자가 변조된 IP가 담긴 TCP 패킷을 서버(미들박스)에 전달합니다.
② 미들박스는 패킷의 일부 내용(호스트, 경로 등)를 확인하고 변조된 IP에게 자체 설정된 차단 페이지를 전달합니다.
③ 피해자는 계속해서 미들박스를 통해 무수한 HTTP 응답을 누적하여 받게 됩니다.
공격자는 HTTP 요청 헤더를 포함하는 다양한 TCP 패킷 시퀀스를 만들 수 있습니다. 이러한 HTTP 헤더에서 차단된 사이트의 도메인 이름이 호스트 헤더로 사용됩니다. 이러한 패킷이 사이트에 대한 액세스를 허용하지 않도록 구성된 미들박스에서 수신되면 미들박스는 일반적으로 HTTP 헤더 및 때에 따라 HTML 페이지로 응답합니다.
분산 반사 서비스 거부(DRDoS: Distributed Reflexion DoS) 공격을 위해 공격자는 희생 대상들을 TCP 패킷의 소스 IP로 변조(spoofing) 하여 미들박스에서 희생 대상으로 응답 트래픽을 전달하도록 유도합니다. 이렇게 손상된 TCP 구현은 데이터 스트림을 포함한 TCP 트래픽을 공격자가 DDoS 피해자에게 반영하도록 악용될 수 있습니다.
위 그림에 나온 예제 트래픽에서 실제 공격에 활용되는 미들박스를 관찰할 수 있습니다. 33바이트 페이로드가 포함된 단일 SYN 패킷을 클라이언트가 서버 측에 전송하면, 네트워크 중간 경로에 있는 미들박스는 내용을 감지하고 2,156바이트 응답을 되돌려줍니다. 이것은 65배 증폭 계수입니다. 이와 같은 증폭은 공격자가 공격을 수행하는 데 적은 대역폭만으로도 충분하다는 위험을 뒷받침합니다.
미들박스 공격을 발표한 연구원들은 전 세계적으로 이 TCP 반사 남용에 취약한 미들박스 시스템이 수십만 개 있다는 점에 주목합니다. 테스트에서 그들은 널리 사용되고 자주 남용되는 UDP 반사 벡터를 능가하는 증폭 속도를 발견했습니다. 취약한 미들박스 시스템 일부는 NTP, RIPv1 및 현재 악명 높은 memcached와 같이 가장 강력한 일부 UDP 벡터보다 더 높은 증폭률을 제공하는 것을 발견하였습니다.
이론적인 연구 발표 이후 몇 달 만에 실제 공격 양상이 발견되었습니다. TCP 미들박스 반사 공격이 실제 네트워크에 대해 테스트 및 확인되었으므로 당분간 이 양상은 계속될 가능성이 높습니다. 또한 공격자가 공격의 능력과 전반적인 영향을 개선하고 확장하려고 시도할 가능성이 있습니다. 따라서 이에 대한 적절한 대처가 필요합니다.
일부 미들박스 구현을 통해 공격자는 볼륨 형태의 TCP 공격 외에 SYN, ACK 또는 PSH+ACK 플러딩을 공격에 추가할 수 있습니다. 현재 공격 트래픽은 상대적으로 적지만 공격자가 제공하는 상당한 증폭으로 인해 이러한 유형의 공격이 앞으로 증가할 것으로 예상합니다. 이러한 유형의 공격은 DDoS 공격에 대한 난이도를 매우 쉽게 만들어버립니다. 공격자는 체적 관점에서 경우에 따라 1/75만큼 적은 대역폭을 필요로 하기 때문입니다.
가장 근본적인 문제부터 해결한다면 미들박스 솔루션 자체가 TCP 표준을 준수해야 합니다. 미들박스는 TCP 3Way Handshake를 클라이언트와 먼저 정상적으로 수행 후 본연의 역할을 해야 한다는 의미입니다.
다른 방법으로는 첫 번째 SYN 패킷을 미들박스가 Drop 이후 클라이언트의 패턴을 감지하여 SYN/ACK를 받지 못한 클라이언트가 정상적인 SYN 재요청을 반복하는지를 살펴보는 것입니다. 다만 이런 로직을 미들박스 업체가 패치하는 것은 상당한 노력과 시간이 필요할 것입니다.
방화벽 ACL을 사용하여 알려진 잘못된 TCP SYN 패턴을 차단할 수 있습니다. 위와 같은 방화벽 규칙은 포트 80에서 오는 모든 SYN 패킷 중 크기가 100보다 큰 패킷을 삭제합니다. 그렇지만 방화벽만으로는 당연히 부족합니다. 여기에 일반적인 DDoS 방어책(방화벽, SeCaaS, 클린존, 대피소, 스크러빙 센터,..)을 활용합니다. 완벽한 방어는 없고 최선의 방어를 수행해야합니다.
좀 더 상세한 내용은 아래 링크와 첨부한 문서를 참고하시기 바랍니다.
https://www.akamai.com/blog/security/tcp-middlebox-reflection
https://geneva.cs.umd.edu/posts/usenix21-weaponizing-censors/
https://geneva.cs.umd.edu/papers/usenix-weaponizing-ddos.pdf