TCP 재설정 공격

TCP reset attack

"포용 TCP 재설정", "스푸핑된 TCP 재설정 패킷" 또는 "TCP 재설정 공격"이라고도 알려진 TCP 재설정 공격은 위조 TCP 재설정 패킷을 전송하여 인터넷 연결을 변조하고 종료하는 방법이다. 이 변조 기술은 방화벽에 의해 사용되거나 악의적인 공격자가 인터넷 연결을 방해하기 위해 악용할 수 있다.

중국의 그레이트 방화벽과 이란의 인터넷 검열관은 인터넷 검열을 수행하는 주요 방법으로 TCP 재설정 공격을 이용해 연결을 방해하고 차단하는 것으로 알려져 있다.

배경

인터넷은 본질적으로 개별 컴퓨터가 전자 메시지, 즉 IP 데이터의 패킷을 교환하는 시스템이다. 이 시스템은 메시지를 운반하는 하드웨어(동 및 광섬유 케이블 등)와 "프로토콜"이라고 하는 메시지를 포맷하기 위한 정형화된 시스템을 포함한다. 인터넷에서 사용되는 기본 프로토콜은 IP(Internet Protocol)로, 통상 TCP(Transmission Control Protocol[1])나 UDP(User Datagram Protocol)와 같은 추가 프로토콜과 결합된다. TCP/IP는 전자 메일과 웹 브라우징에 사용되는 프로토콜 세트다. 각 프로토콜은 헤더라고 불리는 정보의 블록을 각 패킷의 전면 가까이에 포함시킨다. 헤더에는 어떤 컴퓨터가 패킷을 보냈는지, 어떤 컴퓨터가 패킷을 받아야 하는지, 패킷 크기 등에 대한 정보가 담겨 있다.

TCP는 두 컴퓨터 사이에 양방향 가상 연결이 필요할 때 IP와 함께 사용된다. (반면 UDP는 무연결 IP 프로토콜이다.) 패킷 스트림을 교환하여 통신할 두 컴퓨터의 TCP 소프트웨어(예: 브라우저와 웹 서버가 있는 워크스테이션) TCP 연결을 사용하면 컴퓨터는 비디오 클립, 이메일 첨부 파일 또는 음악 파일과 같은 단일 패킷에 비해 너무 큰 데이터 항목을 쉽게 교환할 수 있다. 비록 어떤 웹 페이지는 하나의 패킷을 위해 충분히 작지만, 그것들은 편의를 위해 TCP 연결을 통해 전송된다.

TCP 재설정

TCP 연결의 패킷 스트림에서, 각 패킷은 TCP 헤더를 포함한다. 이러한 각 헤더에는 "재설정"(RST) 플래그로 알려진 부분이 포함되어 있다.[2] 대부분의 패킷에서 이 비트는 0으로 설정되고 아무런 영향도 없다. 그러나 이 비트가 1로 설정되면 컴퓨터가 TCP 연결 사용을 즉시 중지해야 한다는 것을 수신 컴퓨터에 알린다. 컴퓨터는 연결의 식별 번호인 포트(호스트 포트)를 사용하여 더 이상 패킷을 전송하지 않아야 하며 헤더 i와 함께 수신되는 패킷을 삭제해야 한다.그들이 그 연결에 속한다는 걸 증명하는 거지 TCP 재설정은 기본적으로 TCP 연결을 즉시 소멸시킨다.

설계대로 사용할 경우 유용한 도구가 될 수 있다. 한 가지 일반적인 응용 프로그램은 TCP 연결이 진행되는 동안 컴퓨터(컴퓨터 A)가 충돌하는 시나리오다. 다른 쪽(컴퓨터 B)의 컴퓨터는 A 컴퓨터가 추락한 것을 모르기 때문에 TCP 패킷을 계속 송신할 것이다. A 컴퓨터가 재부팅되면 이전 충돌 전 연결에서 패킷을 수신한다. 컴퓨터 A는 이러한 패킷에 대한 컨텍스트가 없고 패킷으로 무엇을 해야 할지 알 수 없기 때문에 TCP 재설정을 컴퓨터 B로 보낼 수 있다. 이 재설정을 통해 시스템 B는 연결이 더 이상 작동하지 않음을 알 수 있다. 컴퓨터 B의 사용자는 이제 다른 연결을 시도하거나 다른 조치를 취할 수 있다.

TCP 재설정 위조

위의 시나리오에서 TCP 재설정 비트는 연결 끝점 중 하나였던 컴퓨터에 의해 전송되었다. 세 번째 시스템이 연결의 TCP 패킷을 모니터링한 다음 TCP 재설정을 포함하는 "포함된" 패킷을 하나 또는 두 개의 엔드포인트로 전송할 수 있다. 위조된 패킷의 헤더는 위조자가 아닌 엔드포인트에서 왔다는 것을 거짓으로 표시해야 한다. 이 정보에는 끝점 IP 주소와 포트 번호가 포함된다. IP와 TCP 헤더의 모든 필드는 가짜 재설정을 위한 설득력 있는 위조 값으로 설정되어야 하며, 이는 엔드포인트를 속여서 TCP 연결을 닫게 한다. 적절한 형식의 위조 TCP 재설정은 포저가 감시할 수 있는 TCP 연결을 중단시키는 매우 효과적인 방법이 될 수 있다.

TCP 재설정 주입의 합법적 사용

위조 TCP 재설정의 분명한 적용은 엔드포인트를 소유한 양 당사자의 동의 없이 악의적으로 TCP 연결을 중단시키는 것이다. 그러나 위조 TCP 리셋을 사용하는 네트워크 보안 시스템도 설계되었다. 1995년에 "버스터" 소프트웨어 패키지의 프로토타입이 짧은 목록에 포트 번호를 사용한 TCP 연결에 위조 리셋을 보낼 수 있는 것으로 입증되었다. 리눅스 자원봉사자들은 2000년에 리눅스 방화벽과 유사한 일을 할 것을 제안했고,[2] 오픈 소스 Snort는 TCP 리셋을 사용하여 빠르면 2003년에 의심스러운 연결을 중단시켰다.[3]

IETF는 방화벽, 로드 밸런싱 장치 및 웹서버에 의한 TCP 재설정을 RFC3360에서 유해한 것으로 간주했다.[4]

컴캐스트 파문

2007년 말, 컴캐스트는 고객 컴퓨터의 피어투피어 및 특정 그룹웨어 애플리케이션을 무력화하기 위해 위조 TCP 리셋을 사용하기 시작했다.[5] 이것은 논란을 일으켰고, 로렌 와인스타인, 빈트 세르프, 데이비드 파버, 크레이그 뉴마크 등 인터넷 개방의 저명한 설립자 및 챔피언들에 의해 네트워크 중립성 위원회(NNSquad)[6]가 창설되었다. 2008년에 NNSquad는 John Bartas가 작성한 Windows 소프트웨어 프로그램인 NNSquad Network Measurement Agent를 출시했는데, 이 프로그램은 Comcast의 위조 TCP 리셋을 감지하여 실제 Endpoint에서 생성된 리셋과 구별할 수 있다. 리셋을 감지하는 기술은 웹페이지의 악성코드와 광고를 차단하기 위해 위조 리셋을 사용한 이전의 오픈소스 "버스터" 소프트웨어에서 개발되었다.

2008년 1월 FCC는 컴캐스트의 위조 리셋 사용 현황을 조사하겠다고 발표했고, 2008년 8월 21일 컴캐스트에 이 관행을 종료하도록 명령했다.[7]

예방

VPN을 사용하여 연결을 암호화함으로써 공격자는 모든 암호화된 연결에 대해 부수적인 손상을 일으키는 TCP 재설정 공격을 해야 한다.[citation needed]

참고 항목

참조

  1. ^ "TCP specification".
  2. ^ a b "May 2000 Linux discussion archives".
  3. ^ "'[Snort-users] TCP Resets' - MARC". marc.info.
  4. ^ Floyd, Sally (August 1, 2002). "Inappropriate TCP Resets Considered Harmful" – via IETF.
  5. ^ "Comcast blocks some Internet traffic". NBC News.
  6. ^ NNS쿼드 홈 페이지
  7. ^ "Commission Orders Comcast To End Discriminatory Network Management Practices" (PDF).

외부 링크