상세 컨텐츠

본문 제목

어떠한 TCP/UDP 서비스도 접근 가능한 새로운 NAT/Firewall 우회 공격

국내외 보안동향

by 알약4 2020. 11. 3. 10:33

본문

New NAT/Firewall Bypass Attack Lets Hackers Access Any TCP/UDP Service

 

<이미지 출처: https://samy.pl/slipstream/>

 

 

공격자가 방화벽 보호 및 원격 접속을 우회해 원격으로 어떤 TCP/UDP 서비스에도 접근할 수 있도록 허용하는 새로운 기술이 발견되었습니다.

 

NAT Slipstreaming이라 명명된 이 기술은 타깃에 악성 사이트로(또는 악성 광고를 로드하는 정식 사이트) 연결되는 링크를 보냅니다. 해당 사이트는 방문 시 게이트웨이를 트리거해 피해자의 TCP/UDP 포트를 오픈하여 브라우저 기반 포트 제한을 우회합니다.

 

이 취약점은 지난 주말 보안 연구원인 Samy Kamkar가 공개했습니다.

 

“NAT Slipstreaming 공격은 사용자의 NAT, 라우터, 방화벽에 내장된 애플리케이션 수준 게이트웨이 (ALG) 연결 추적 메커니즘을 브라우저와 함께 악용합니다. 이는 타이밍 공격 또는 WebRTC, 자동화된 원격 MTUIP 단편화 발견, TCP 패킷 사이즈 메시징, TURN 인증 오용, 정확한 패킷 경계 제어, 브라우저 악용을 통한 프로토콜 혼동 등을 통해 내부IP 추출과 연결시킵니다.”

 

이 기술은 리눅스 커널 버전 2.6.36.4를 실행하는 NetGear Nighthawk R7000라우터를 통해 실행되었습니다.

 

패킷 경계 결정

 

NAT (Network Address Translation)은 방화벽과 같은 네트워크 장치에서 패킷 전송 중 패킷의 IP 헤더에 있는 네트워크 주소 정보를 수정하여 IP 주소 공간을 또 다른 공간으로 다시 매핑하는 프로세스입니다.

 

조직의 내부 네트워크에서 사용되는 공용 IP 주소의 수를 제한하고 단일 공용 IP 주소를 여러 시스템간에 공유해 보안을 향상시키는 것이 주요 목적입니다.

 

NAT SlipstreamingTCPIP 패킷 분할을 활용하여 원격으로 패킷 경계를 조정하고, 이를 사용하여 REGISTER / INVITE와 같은 SIP 메소드로 시작하는 TCP/UDP 패킷을 생성하는 방식으로 동작합니다.



<이미지 출처: https://samy.pl/slipstream/>

 

 

SIP(Session Initiation Protocol)은 음성, 영상, 메시징 애플리케이션에서 실시간 멀티미디어 세션을 시작, 유지, 종료하는데 사용하는 통신 프로토콜입니다.

 

HTTP에서 패킷 분할과 SIP 요청 스머글링(smuggling)을 통해 NAT ALG가 클라이언트로의 인바운드 연결을 위한 임의 포트를 열도록 속일 수 있습니다.

 

이를 달성하기 위해 ID와 패킷 스니퍼를 실행 중인 공격 서버를 가리키는 숨겨진 웹 양식을 포함한 대규모 HTTP POST 요청이 전송됩니다. 이는 MTU 사이즈, 데이터 패킷 사이즈, TCP IP 헤더 사이즈를 캡처하고 나중에 별도의 POST 메시지를 통해 사이즈 데이터를 피해자의 클라이언트로 다시 전송하는데 사용됩니다.

 

또한 이는 패킷 오버플로우를 수행하고 IP 패킷을 단편화 하기 위해 TURN (Traversal Using Relays around NAT)의 인증 기능을 악용합니다. TURNNAT과 함께 미디어를 피어에서 네트워크 내 다른 클라이언트로 릴레이하는데 사용되는 프로토콜입니다.

 

, "^” 문자를 이용한 패딩을 통해 TCP 또는 UDP 패킷에 오버플로우를 발생시키고, 이를 둘로 분할해 SIP 데이터 패킷이 두 번째 패킷 경계의 맨 처음에 위치하도록 하는 것입니다.

 

패킷 변경을 통해 TCP/UDP에 연결

 

다음 단계에서는 크롬, 파이어폭스와 같은 브라우저에 WebRTC ICE를 사용하거나 공통 게이트웨이에 (192.168.*.1, 10.0.0.1 및 로컬 네트워크) 타이밍 공격을 실행하여 피해자의 내부 IP 주소가 추출됩니다.

 

Kamkar는 아래와 같이 언급했습니다.

 

일단 클라이언트가 패킷 사이즈와 내부 IP 주소를 받으면, 패킷이 단편화 될 것으로 판단될 때까지 POST 데이터를 추가하는 특수 제작된 웹 양식을 구성합니다. 이때 내부 IP 주소를 포함하는 SIP REGISTER가 추가됩니다.”

 

이 양식은 피해자의 동의 없이 Javascipt를 통해 제출됩니다.”

 

패킷이 공격 서버에 도달하고, SIP 패킷이 공용 IP주소로 다시 작성되지 않은 것으로 확인될 경우 클라이언트로 자동 메시지가 다시 전송되어 이전에 스니퍼에서 수집한 데이터를 기반으로 패킷 사이즈를 새로운 경계로 조정하도록 요청합니다.

 

이로써 NAT을 속여 이것이 합법적인 SIP 등록이고, 피해자의 기기의 SIP 클라이언트에서 온 것이다라고 생각하도록 만들어 결국 피해자가 보낸 원래 패킷의 포트를 열도록 합니다.

 

NAT Slipstreaming에 대한 PoC 코드는 에서 확인하실 수 있습니다.

 

 

 

 

출처:

https://thehackernews.com/2020/11/new-natfirewall-bypass-attack-lets.html

https://samy.pl/slipstream/

https://github.com/samyk/slipstream


관련글 더보기

댓글 영역