IP 주소는 "위조하기 쉬운"가요?


65

Google의 새로운 퍼블릭 DNS 서비스 에 대한 참고 사항을 읽고있었습니다 .

보안 섹션에서이 단락을 발견했습니다.

DNSSEC2 프로토콜과 같은 DNS 취약성에 대한 표준 시스템 전체 솔루션이 보편적으로 구현 될 때까지 공개 DNS 리졸버는 알려진 위협을 완화하기 위해 독립적으로 조치를 취해야합니다. 많은 기술들이 제안되었다; IETF RFC 4542 : 대부분의 개요에 대한 위조 된 응답대해 DNS의 복원력을 높이기위한 측정 값을 참조하십시오 . Google 퍼블릭 DNS에서는 다음과 같은 접근 방식을 구현했으며 권장합니다.

  • 리졸버 자체에 대한 직접적인 DoS 공격으로부터 보호하기 위해 머신 리소스초과 프로비저닝 합니다. IP 주소는 공격자가 위조하기 쉽지 않으므로 IP 주소 또는 서브넷을 기반으로 쿼리를 차단할 수 없습니다. 이러한 공격을 처리하는 유일한 효과적인 방법은 단순히 부하를 흡수하는 것입니다.

그것은 우울한 깨달음입니다. 스택 오버플로 / 서버 오류 / 수퍼 유저에서도 모든 종류의 차단 및 차단의 기초로 IP 주소를 자주 사용합니다.

"talented"공격자가 원하는 IP 주소를 사소하게 사용하고 원하는만큼 고유 한 가짜 IP 주소를 합성 할 수 있다고 생각하는 것은 정말 무섭습니다!

그래서 내 질문 :

  • 침입자가 실제로 IP 주소를 위조하는 것이 그렇게 쉬운가?
  • 그렇다면 어떤 완화가 가능합니까?

스푸핑 된 IP는 IP 기반 금지에 문제가되어서는 안됩니다. 궁극적 인 목표는 합법적 인 답장이 필요한 액세스 권한을 얻는 것이기 때문입니다. 그러나 더 큰 위험은 다음과 같습니다. 많은 사람들이 공유하는 IP (학교, 직장, 인터넷 카페 등)와 비 정적 DSL에서 모뎀을 재설정 한 후와 같이 변경 될 수있는 IP.
Halil Özgür

스푸핑 된 주소를 사용하는 많은 공격의 주요 목표는 액세스 권한을 얻는 것이 아닙니다. DNS를 사용한 다양한 증폭 공격이 더 자주 의심됩니다. DNS는 멋지다 (DNSSEC가 더 나쁘다)-스푸핑 된 소스 주소와 함께 작은 <100 바이트 패킷을 전송할 수 있으면 스푸핑 된 주소가 응답으로 7 배에서 40 배로 증폭됩니다.
마이클 그라프

답변:


50

다른 많은 사람들이 언급했듯이 IP 헤더는 응답 수신에 신경 쓰지 않는 한 간단합니다. TCP가 3 방향 핸드 셰이크를 요구하기 때문에 UDP에서 주로 볼 수 있습니다. 주목할만한 예외 중 하나 는 TCP를 사용하고 수신 호스트에서 리소스를 연결하려는 SYN 서비스 장애입니다 . 응답이 삭제 될 때 소스 주소는 중요하지 않습니다.

공격자가 소스 주소를 스푸핑 할 수있는 능력의 특히 부작용은 백스 캐터 공격입니다. 이 훌륭한 설명은 여기에 있지만, 간단하게, 그것은 기존의 DDoS 공격의 역이다 :

  1. 봇넷을 제어하십시오.
  2. 악성 패킷에 대해 동일한 소스 IP 주소 를 사용하도록 모든 노드를 구성하십시오 . 이 IP 주소는 최종 피해자가됩니다.
  3. 모든 제어 노드에서 인터넷을 통해 다양한 주소로 패킷을 보내거나 일반적으로 열려 있지 않은 포트를 대상으로하거나 이미 존재하는 트랜잭션의 일부라고 주장하는 유효한 포트 (TCP / 80)에 연결합니다.

(3)에 언급 된 경우 중 하나에서, 많은 호스트는 악의적 인 패킷소스 주소를 목표로하여 도달 할 수없는 ICMP 또는 TCP 재설정으로 응답 합니다. 공격자는 이제 스푸핑 된 소스 IP 주소를 사용하여 선택한 희생자에 대해 DDoS 공격을 수행하는 네트워크에 손상되지 않은 수천 대의 시스템을 보유하고 있습니다.

완화 측면에서이 위험은 실제로 ISP (특히 운송 대신 고객 액세스를 제공하는 ISP) 만 해결할 수있는 위험입니다. 이를 수행하는 두 가지 주요 방법이 있습니다.

  1. 수신 필터링 -네트워크로 들어오는 패킷이 들어오는 인터페이스의 반대쪽에있는 주소 범위에서 제공됩니다. 많은 라우터 공급 업체 는 라우터의 라우팅 및 전달 테이블을 사용하여 들어오는 패킷의 소스 주소의 다음 홉이 들어오는 인터페이스인지 확인하는 유니 캐스트 역방향 경로 전달 과 같은 기능을 구현합니다 . 이는 네트워크의 첫 번째 계층 3 홉 (예 : 기본 게이트웨이)에서 가장 잘 수행됩니다.

  2. 송신 필터링 -네트워크에서 나가는 패킷이 사용자가 소유 한 주소 범위에서만 소스를 확보하도록합니다. 이는 자연스럽게 필터링을 보완하는 것이며 보완 적으로 '좋은 이웃'의 일부입니다. 악의적 인 트래픽으로 인해 네트워크가 손상 되더라도 해당 트래픽은 동료 네트워크로 전달되지 않습니다.

이러한 기술은 클라이언트가 공급자와 인터페이스하는 '에지'또는 '액세스'네트워크에서 수행 할 때 가장 효과적이고 쉽게 구현됩니다. 다중 경로 및 비대칭 라우팅의 복잡성으로 인해 액세스 계층 위에서 수신 / 탈출 필터링을 구현하는 것이 더 어려워집니다.

이러한 기술 (특히 수신 필터링)이 엔터프라이즈 네트워크 내에서 큰 영향을 미치는 것으로 나타났습니다. 더 많은 서비스 제공 업체 경험이있는 사람은 인터넷에서 수신 / 탈출 필터링을 배포하는 문제에 대해 더 많은 통찰력을 제공 할 수 있습니다. 하드웨어 / 펌웨어 지원이 큰 과제 일뿐만 아니라 다른 국가의 업스트림 제공 업체가 유사한 정책을 시행하도록 강요 할 수 없다고 생각합니다 ...


불쾌하게 들린다. 관리자가 자신의 서버가 이와 같이 대상이되는 것을 발견하면 할 수있는 일이 있습니까? 모든 IP의 ICMP 패킷 및 TCP 재설정 메시지를 일시적으로 차단할 수 있습니까? 이처럼 반 정상적인 방식으로 작동 할 수 있습니까?
UpTheCreek

45

침입자가 실제로 IP 주소를 위조하는 것이 그렇게 쉬운가?

물론 실제로 응답을받는 것에 신경 쓰지 않으면 원하는 소스 주소를 사용하여 패킷을 쉽게 보낼 수 있습니다. 많은 ISP가 실제로 올바른 송신 규칙을 가지고 있지 않기 때문에 일반적으로 위조 한 모든 것이 제공됩니다.

공격자가 실제로 양방향 통신이 필요한 경우 매우 어려워집니다. 양방향 통신이 필요한 경우 일종의 프록시를 사용하는 것이 더 쉬운 경향이 있습니다. 당신이하고있는 일을 알고 있다면 설정하기가 매우 쉽습니다.

사이트에서 양방향 통신이 필요한 http / https를 사용하므로 IP 주소로 사람을 금지하는 것은 SF / SO / SU에서 적당히 효과적입니다.


16
여기서 핵심은 http입니다. DNS는 UDP를 사용하므로 모든 통신은 프로토콜에 대한 승인없이 단일 패킷을 통해 이루어집니다.
noah December

16
추측은 이메일과 같습니다. 당신이 응답을받을 싶지 않다면 당신은 당신이 원하는 어느 주소로 보낼 수 있습니다
호르헤 베르날에게

@ 조지 : 물론입니다. 전자 메일 / 우편 메일 비유는 최종 사용자에게이를 설명하는 데 사용하기에 좋습니다.
Evan Anderson

DNS에서는 TCP도 사용될 수 있지만 현재는 사람들을 두려워합니다. 그러나 응답은 ACK이므로 ACK 내장 기능이 없습니다.
Michael Graff

6
@noah-실제로 TCP 는 HTTP가 아닌 핵심입니다. TCP는 위조가 불가능하지는 않지만 UDP보다 100 배 더 어렵습니다.
Alnitak

22

Zordeche의 답변에 대한 개념 증명이 거의 없음 (우분투 포함) :

$ sudo apt-get install hping3
$ sudo hping3 -1 --spoof 11.10.10.20 www.google.com
HPING www.google.com (eth0 64.233.169.105): icmp mode set, 28 headers + 0 data bytes

그런 다음 다른 콘솔에서 :

$ sudo tcpdump -i eth0 'icmp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:19.439737 IP 11.10.10.20 > yo-in-f105.1e100.net: ICMP echo request, id 31297, seq 0, length 8

따라서 예, 사소하지만, 11.10.10.20에 액세스 할 수 없거나 www.google.com과 11.10.10.20 사이에 스니퍼가 없으면 이전에 언급 한 것처럼 답글을 얻지 못합니다 (그리고 바로 앞에 있어야합니다. 패킷 경로를 예측할 수 없으므로 또한 spoofer 's gateway (ISP)는 일종의 IP 검사가 진행 중이고 소스의 냄새가 나쁘다는 것을 알면 패킷을 내 보내지 못할 수 있습니다.


1
그러나 ISP는 일반적으로 패킷 검사에 신경을 쓰지 않습니까?
Pacerier 2016 년

13

단방향 UDP 트래픽을 위해 IP 주소를 쉽게 만들 수 있습니다. TCP 패킷의 경우 SYN 패킷으로 절반 개방 TCP 연결을 얻을 수 있습니다. 이것은 일종의 DOS 공격의 기초이기도합니다. 그러나 스푸핑 된 주소 (예 : 동일한 IP 주소를 사용하도록 세션을 필터링하는 경우)를 사용하여 HTTP 연결을 위조 할 수 없습니다. 예, 패킷에서 IP 주소를 스푸핑 할 수 있지만 특정 종류의 서비스 거부 공격에만 유용합니다.


당신은 그것의 의미합니까 하드 스푸핑 된 주소와 HTTP 연결을 위조, 또는하지의 것을 가능한이 이렇게하는?
Pacerier 2016 년

열린 인터넷에서는 불가능합니다. 동일한 LAN에있는 경우 다른 컴퓨터가 사용자에게 트래픽을 보내도록 속일 수있는 몇 가지 요령이 있습니다 ( web.eecs.umich.edu/~zhiyunq/pub/… ). 이런 식으로 생각할 수 있습니다. UDP는 엽서를 보내는 것과 같습니다. 원하는 반송 주소에 이름을 쓸 수 있습니다. TCP는 올바른 반송 주소를 입력하지 않으면 대화를 계속할 수없는 대화와 같습니다. 여기에있는 다른 답변 중 일부는 훨씬 더 잘 설명합니다.
FryGuy 2016 년

10

GOOG 기사는 DNS에 대해 명시 적으로 논의했습니다. DNS는 UDP 및 TCP 패킷을 모두 사용합니다. UDP는 위조 할 수 있지만 TCP는 위조 할 수 없습니다. TCP에는 3 방향 핸드 셰이크 가 필요합니다 . TCP 패킷의 IP 주소가 위조 된 경우 위조 컴퓨터가 응답을받지 않고 연결이 실패합니다. 다른 답변에서 언급했듯이 UDP는 '화재 및 잊어 버리기'이며 응답 통신이 필요하지 않습니다. 이러한 이유로 DoS 공격은 거의 독점적으로 UDP 패킷 형태로 발생합니다.

스택 오버플로 및 패밀리 사이트와 관련하여 Takaun Daikon이 제기 한 문제는 매우 유효합니다. ISP로부터 새로운 IP 주소를 얻는 방법에는 여러 가지가 있습니다. MAC 주소 변경은 가장 쉽고 가장 많은 ISP에서 작동합니다. 또한, 어리석은 행동을하는 많은 사람들이 공개 대리 나 TOR을 사용하고있을 수 있습니다. 해당 패킷의 발신 IP를 명확하게 차단하면 프록시 또는 TOR 종료 노드 만 차단됩니다.

IP 주소 차단이 유효합니까? 그렇습니다. 그러나 오류가 발생합니다. 실제로 문제의 원인이 아닌 일부 IP (예 : 프록시)를 차단하고 IP를 변경하여 차단을 피하는 사람들도 있습니다. 나중에 금지 된 IP를 얻을만큼 운이 좋지 않은 사람은 SO 사이트 제품군에 액세스 할 수 없습니다. 그러나 오류율 작아야합니다. 거대한 IP 세트를 차단하지 않는 한. 그러나 하루에 1-2 번을 막고 있다면 괜찮을 것입니다.

1 년과 같은 기간 동안 만 차단하는 좀 더 정교한 구성표를 도입 할 수 있습니다. 네트워크에서 대역폭 조절 또는 연결 제한이 가능한 경우 사이트에서 Apache Benchmarks를 실행하는 백서 백이 매우 제한된 대역폭의 케이지에 배치되는 방식을 고려할 수도 있습니다.


1
당신은 위조 될 수 있습니다. TCP 세션 하이재킹을 살펴보십시오. google.com/search?q=hijack+tcp+session
Dan

공격자가 먼저 트래픽 스트림에 액세스하지 않는 한 최신 운영 체제의 TCP 시퀀싱 공격은 비실용적입니다. 그들이 어쨌든 중간자라면 어쨌든 TCP 연결 하이재킹을 할 필요조차 없습니다.
Evan Anderson

10

ISP가 게으 르기 때문에 IP 스푸핑이 계속됩니다.

내 ISP는 내가 특정 주소 또는 적어도 내가있는 서브넷에 있다는 것을 잘 알고 있습니다. 그러나 모든 소스 주소를 사용할 수 있습니다. 왜 그런 겁니까? 간단히, 비용.

여기저기서 몇 개의 주소를 위조하면 ISP 비용이 들지 않습니다. ISP의 모든 사용자가 1시에서 2시 사이에 하나의 패킷을 위조 한 경우에도 여전히 레이더에 걸리기 어렵습니다. 그러나 봇넷이 많은 ISP의 많은 호스트에서 많은 스푸핑 된 패킷을 보내면 대상 컴퓨터 나 네트워크가 넘어집니다.

재정적 인 현실은 공격자가 아니라면 스푸핑에 아무런 비용이 들지 않는다는 것입니다. 고객 근처에서 필터링을 구현하는 데는 비용이 들며, 돈을 쓰는 사람은 자신이 훌륭한 네트워크 시민이라는 사실을 알고는 거의 다른 수익을 실현하지 못합니다.

UDP 및 ICMP가 가장 쉬운 가짜이지만 TCP도 가능합니다. 예측 가능한 시퀀스 번호를 사용하여 악용 할 수있는 안전하지 않은 원격 OS가 필요합니다. 때로는 시퀀스 번호를 변경하여 예측 가능한로드 밸런싱 시스템입니다. 따라서 TCP는 가능하지만 더 어렵습니다.

DNS 스푸핑은 주로 보안 측면에 중점을 두어 누군가가 재귀 해결 자에게 허위 답변을 제출하지 못하게합니다. UDP의 플러딩 측면은 하나의 작은 쿼리 (예 : '.') 이외의 DNS에 국한되지 않으며 응답이 다소 큽니다. 따라서 좋은 증폭 벡터를 만듭니다. 작동하는 많은 다른 UDP 프로토콜이 있지만 DNS는 어디에서나 사용되며 공격을 증폭하는 데 사용할 시스템을 쉽게 찾을 수 있습니다.

DNSSEC는 크기가 4k에 도달 할 수있는 UDP 패킷으로이 문제를 더욱 악화시킵니다.


6

IP 주소는 일반적으로 화재 및 잊어 버린 UDP 패킷의 경우와 같이 DNS 기반 (D) DOS 공격에 관한 한 간단합니다. HTTP 트래픽의 경우에는 해당되지 않으므로 웹 서버와 동일한 로컬 네트워크에 있거나 (물론 사이트가 호스팅되는 위치에 따라 가능해야 함) 중간 라우터를 제어해야합니다.


6

누구에게나 편지를 보낼 수 있으며 봉투에 반송 주소를 입력하지 않으면 (또는 잘못된 봉투를 넣으면) 세계의 모든 정크 메일 필터를 고용 할 수 있으며 메시지를 열지 않고도 메시지를 필터링 할 수 없습니다 (처리 중) ).

그러나 보낸 사람이 응답을 원하면 반송 주소가 정확하거나 올바른 주소를 얻기위한 응용 프로그램 계층 메커니즘이 있어야합니다. 따라서 Nana에서 편지를 개설했다고 생각할 수는 있지만 편지 내용을 속이더라도 Nana가 나이지리아의 일부 주소로 CASH에 대한 수표를 보내지 않을 것입니다 (Nana가 나이지리아가 아닌 한) ). 따라서 도전 / 응답은 미들 인 맨이 아닌 한 효과적인 방어입니다.


5

데이터 그램에서 원하는 소스 IP 주소를 설정할 수 있습니다.
ISP가 그러한 패킷을 와일드하게 보낼지 여부는 또 다른 질문입니다.


ISP 필터를 우회 할 수 있습니까?
Pacerier 2016 년

5

이것은 분명히 다루어야 할 현실이지만 근본적인 문제는 실제로 기술이 아닙니다. 악의적 인 의도를 가진 사람들은 악의적 인 일을 시도합니다. 따라서 실제 솔루션은 비 기술적이어야합니다.

Stackoverflow가 수행 한 작업은 두 번째 방어선을 처리하기위한 올바른 솔루션이라고 생각합니다. 잠재적 인 스팸 사용자를 제한하여 여러 수준의 '신뢰성'을 달성하기 전에 플랫폼과 상호 작용하는 능력을 제한하는 다양한 방법을 통해 기술합니다.

이러한 기술은 사이트의 전반적인 품질을 향상시키는 데 도움이 될뿐만 아니라 실제로 사용자가 더 참여하고 더 신뢰할 수 있고 신뢰할 수있는 답변을 제공하도록 장려합니다.

기술적 인 관점에서 볼 때 Google이 제안한대로 수행하는 가장 좋은 방법은 추가로드를 흡수 / 처리하는 데 효율적입니다.

잘하고 계속 개선!


3

UDP는 이것이 쉬운 이유의 주요 부분입니다. 실제로 Skype와 Slingbox는 UDP에서 IP 주소를 쉽게 위조 하여 NAT를 통해 ' 펀칭 '하고 쉽게 피어 투 피어를 허용 하는 기능을 이용합니다 .

TCP는 전체 SYN / ACK주기를 필요로하기 때문에 더 어렵지만, 여전히 많은 홉의 IP 주소로 이동하는 SYN 패킷이 걸려 서버에 플러딩 될 수 있으며 프로세스에서 수많은 라우터를 본질적으로 묶을 수 있습니다.


1
라우터는 패킷 만 라우팅합니다. 그들은 TCP 상태를 유지하지 않으므로 패킷은 패킷입니다.
Michael Graff

좋은 지적. 따라서 ACK를 기다리는 서버 (또는 프런트 엔드 장치가 SYN / ACK 협상을 수행하는 모든 장치)를 묶을 것입니다. 이미 열려있는 연결이므로 큰 경우에 도움이됩니다.
Justin

2

위에서 언급했듯이 프록시 사용은 사소한 것이며 사용 가능한 수많은 익명의 공개 프록시가 있습니다.

프록시를 사용하지 않아도 방화벽의 MAC 주소를 새로운 임의의 값으로 설정하고 케이블 모뎀을 재설정하면 ISP에서 새로운 반짝이는 IP 주소를 할당합니다.

그리고 그것은 초보자를위한 것입니다. IP 금지를 피하는 다른 많은 방법이 있습니다.


이것은 문제가되지 않습니다. 여기서 실제 "문제"는 IP 프로토콜의 설계입니다. IP 프로토콜은 IP 패킷을 생성하는 IP 주소가 자신의 소유인지 여부를 확인할 규정이 없습니다. 따라서 다른 소스 (목적지) 주소를 가진 패킷을 생성 할 수 있으며 패킷 전송을 막을 수있는 것은 없습니다.
monomyth

3
뭔가 당신을 막을 수 있습니다. ISP는 소스 IP 주소가 실제로 해당 네트워크에 속하지 않는 한 패킷이 전달되지 않도록 라우터에 송신 필터를 설정할 수 있습니다.
Zoredache

2

그렇다면 어떤 완화가 가능합니까?

받는 쪽에서 할 수있는 일은 많지 않습니다.

위조 된 ISP는 아웃 바운드 트래픽을 필터링하여 고객이 다른 네트워크의 IP를 스푸핑 할 수 없도록해야합니다.

라우터 구성에는 몇 줄 밖에 없으므로 그렇게하지 않는 것에 대한 좋은 변명이 없습니다.

공격자를 추적 할 수있는 방법이 있지만 다음과 같은 업스트림 공급자의 협조가 필요합니다. http://www.cymru.com/Documents/dos-and-vip.html


2

다른 사람들이 지적했듯이 UDP는 위조하기에는 쉽지 않으며 TCP는 그리 많지 않습니다.

선호되는 방어는 유감스럽게도 널리 배포되지는 않지만 송신 필터입니다.

DSL 등 서비스를 실행하는 ISP의 경우, 각 가상 회선은 ip verify unicast reverse-path소스 IP 주소가 해당 회선으로 라우팅되는 범위에 있지 않은 패킷을 차단하는 모든 (또는 비 Cisco 등가) 구성해야합니다.


1

90 년대 후반에 Visual Basic이었던 소켓 프로그래밍을 기억할 수 있으며 연결에서 소스 IP를 설정할 수 있습니다. netstat -an은 실제 소스 IP를 보여 주었지만 Apache 로그는 스푸핑 된 IP를 보여주었습니다. 아파치가 스푸핑 된 IP를 펄 모듈 등에 전달하고 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.