ARP 란 무엇입니까?
문제 설명:
좀 더 구체적으로 할 수 있을까요?
분석:
여기서는 사진이 보이지 않습니다. 보고 싶으면 여기 오세요:130/CMS/pub/neerk/neerk _ protocal/20201.
ARP 프로토콜 개요
IP 패킷은 일반적으로 이더넷을 통해 전송됩니다. 이더넷 디바이스는 32 비트 IP 주소를 인식하지 못합니다. 즉, 48 비트 이더넷 주소가 있는 이더넷 패킷을 전송합니다. 따라서 IP 드라이버는 IP 대상 주소를 이더넷 대상 주소로 변환해야 합니다. 이 두 주소 사이에는 정적 또는 알고리즘 매핑이 있으며 일반적으로 테이블을 찾아야 합니다. ARP (address resolution protocol) 는 이러한 이미지를 식별하는 데 사용되는 프로토콜입니다.
ARP 가 작동하면 필요한 IP 주소가 있는 이더넷 브로드캐스트 패킷을 보냅니다. 대상 호스트 또는 호스트를 나타내는 다른 시스템은 IP 및 이더넷 주소 쌍을 포함하는 패킷에 응답합니다. 발신자는 불필요한 ARP 통신을 피하기 위해 주소 쌍을 캐시합니다.
신뢰할 수 없는 노드가 로컬 네트워크에 대한 쓰기 액세스 권한을 가지고 있는 경우에도 몇 가지 위험이 있습니다. 이런 기계는 가짜 ARP 신문을 발행하여 모든 통신을 자신에게 분류한 다음, 어떤 기계처럼 작동하거나 그냥 데이터 스트림을 수정할 수 있다. ARP 메커니즘은 일반적으로 자동으로 작동합니다. 특히 안전한 네트워크에서 ARP 맵은 펌웨어를 사용할 수 있으며 간섭을 방지하기 위한 자동 억제 프로토콜을 갖추고 있습니다.
그림 1 이더넷의 ARP 메시지 형식
그림 1 은 IP-이더넷 주소 변환에 사용되는 ARP 메시지의 예입니다. 그림에서 각 행은 32 비트, 즉 4 개의 8 비트 바이트로 표시되며 다음 그림에서는 이 방법을 따릅니다.
하드웨어 유형 필드는 발신자가 알고 싶은 하드웨어 인터페이스의 유형을 나타내며 이더넷 값은 1 입니다. 프로토콜 유형 필드는 발신자가 제공한 상위 수준 프로토콜 유형을 나타내며 IP 는 0806( 16 16 진수) 입니다. 하드웨어 주소 길이와 프로토콜 길이는 하드웨어 주소와 상위 레벨 프로토콜 주소의 길이를 나타내므로 모든 하드웨어 및 모든 프로토콜의 네트워크에서 ARP 메시지를 사용할 수 있습니다. 작업 필드는 메시지의 목적을 나타내는 데 사용됩니다. ARP 요청은 1, ARP 응답은 2, RARP 요청은 3, RARP 응답은 4 입니다.
ARP 요청이 전송되면 발신자는 발신자 헤더와 발신자 IP 주소를 기입하고 대상 IP 주소를 입력합니다. 대상 시스템이 이 ARP 브로드캐스트 패킷을 수신하면 응답 메시지에 48 비트 호스트 주소를 채웁니다.
ARP 가 사용하는 두 가지 예
Linux 에서 ARP 명령을 살펴 보겠습니다. 초기 ARP 테이블의 내용이 비어 있는 경우 먼저 호스트를 연결해야 합니다 (예: 대상 호스트에 대해 ping 을 수행하여 ARP 항목을 생성하는 경우).
D2server:/home/kerberos# ARP
주소 HWtype 주소 플래그 마스크 I 인터페이스
211.161.17.254 이더넷 00: 04: 9a
주소: 호스트의 IP 주소입니다.
Hwtype: 호스트의 하드웨어 유형입니다.
Hwaddress: 호스트의 하드웨어 주소입니다.
Flags Mask: 레코드 플래그,' c' 는 ARP 캐시의 항목을 나타내고' m' 은 정적 ARP 항목을 나타냅니다.
Arp-a 명령을 사용하면 호스트 주소와 IP 주소에 해당하는 테이블, 즉 시스템에 저장된 ARP 캐시 정보를 표시할 수 있습니다. 이 캐시는 내부 주소와 하드웨어 주소 사이의 최근 매핑 레코드를 저장합니다. 캐시에 있는 각 항목의 수명은 일반적으로 20 분이며, 시작 시간은 생성 시점부터 계산됩니다.
D2server:/home/Kerberos # ARP-a.
(211.161.17.254) 00: 04 에 있습니다
캐시에 211.161..17.254 에 해당하는 ARP 캐시 항목이 있는 것을 볼 수 있습니다.
D2server:/home/kerberos# 전화 211.161./;
211.161.17.21을 시도하고 있습니다 ...
211.161.17.21에 연결합니다
도망가는 캐릭터는']' 입니다.
].
전화> 포기
Conion 이 닫힙니다.
위 Intel 명령을 실행할 때 tcpdump 를 사용하여 모니터링:
D2server:/home/Kerberos # tcpdump-e dst 호스트 211.16/kloc
Tcpdump: eth0 수신
우리는 많은 패킷을 들을 것이다. Arp 프로토콜과 관련된 두 개의 패킷을 살펴보겠습니다.
10.0 00: d0: F8: 0a: FB: 83ff: ff: ff: ff: ff arp60
누가 211.161.17.21을 가지고 있습니까
2 0.002344 (0.0021) 00: E0: 3c: 43: 0d: 2400: d0: F8: 0a: FB: 83 arp60
Arp 복구 211.161..17.2/kloc-0
1 행에서 소스 호스트 (d2server) 의 하드웨어 주소는 00:D0:F8:0A:FB:83 입니다. 대상 호스트의 하드웨어 주소는 이더넷 브로드캐스트 주소인 FF:FF:FF:FF:FF:FF:FF:FF 입니다. 케이블의 각 이더넷 인터페이스는 데이터 프레임을 수신하고 처리합니다.
1 행의 다음 출력 필드는 ARP 이고, 프레임 유형 필드의 값은 0x0806 이며, 이는 이 데이터 프레임이 ARP 요청 또는 응답임을 나타냅니다.
각 행에서 단어 뒤의 값 60 은 이더넷 데이터 프레임의 길이를 나타냅니다. ARP 요청 또는 응답의 데이터 프레임 길이는 42 바이트 (ARP 데이터 28 바이트, 이더넷 프레임 헤더 14 바이트) 이므로 이더넷의 최소 길이 요구 사항 (60 바이트) 을 충족하기 위해 각 프레임에 채우기 문자를 추가해야 합니다.
1 행의 다음 출력 필드인 ARP who-has 는 ARP 요청인 이 데이터 프레임에서 대상 I P 주소가 211.16 임을 나타냅니다 Tcpdump 는 호스트 이름에 해당하는 기본 I P 주소를 인쇄합니다.
두 번째 줄에서 알 수 있듯이 ARP 요청은 브로드캐스트되지만 ARP 응답의 대상 주소는 211..161../kloc 입니다 ARP 응답은 브로드캐스트가 아닌 요청 호스트로 직접 전송됩니다. Tcpdump 는 ARP 응답이라는 단어를 인쇄하고 응답자의 호스트 IP 와 하드웨어 주소를 인쇄합니다.
각 행에서 행 번호 뒤의 숫자는 tcpdump 가 패킷을 수신한 시간 (초) 을 나타냅니다. 각 행에는 1 줄 외에 괄호 안의 이전 줄과의 시차 (초) 도 포함되어 있습니다.
이제 시스템의 ARP 캐시를 살펴 보겠습니다.
D2server:/home/Kerberos # ARP-a.
(211.161.17.254) 00: 04 에 있습니다
(211.161.17.21
211.161.17.1정보
기타 ARP 관련 명령 보기:
D2server:/home/Kerberos # ARP-S211.161
D2server:/home/kerberos# ARP
주소 HWtype 주소 플래그 마스크 I 인터페이스
211.161.17.254 이더넷 00: 04: 9a
211.161.17.21b
D2server:/home/Kerberos # ARP-a.
(211.161.17.254) 00: 04 에 있습니다
(211.161.17.21
Arp -s 옵션을 사용하여 211.161.17 을 설정했음을 알 수 있습니다
수동으로 ARP 옵션 시간 초과를 설정하려면 temp 옵션을 추가할 수 있습니다.
D2server:/home/Kerberos # ARP-S211.161
D2server:/home/Kerberos # ARP-a.
(211.161.17.254) 00: 04 에 있습니다
(211.161.17.21
D2server:/home/kerberos# ARP
주소 HWtype 주소 플래그 마스크 I 인터페이스
211.161.17.254 이더넷 00: 04: 9a
211.161.17.21b
Flag 필드의 정적 ARP 플래그 "M" 이 제거된 것을 볼 수 있습니다. 동적 항목을 수동으로 추가했습니다.
Arp 정적 포털과 동적 포털의 차이점을 확인합니다.
수동으로 설정된 ARP 정적 항목은 시스템마다 다릅니다. Linux 및 win2000 에서는 위조된 ARP 응답 패킷으로 인해 정적 항목이 변경되지 않지만 동적 항목은 변경됩니다. Win98 에서 수동으로 설정된 정적 항목은 위조된 ARP 응답 패키지를 수신하면 변경됩니다.
정적 엔트리를 포함하여 ARP 엔트리를 삭제하려면 다음 명령을 사용할 수 있습니다.
D2server:/home/Kerberos # ARP-D211.161
D2server:/home/Kerberos # ARP-a.
(211.161.17.254) 00: 04 에 있습니다
(211.161.17.21
211.1.17.21을 볼 수 있는 ARP 항목은 더 이상 불완전합니다.
Linux 에서 man 설명서를 참조할 수 있는 몇 가지 추가 명령이 있습니다.
D2server:/home/kerberos# man ARP
ARP 스푸핑
위에서 언급 한 ARP 프로토콜의 원리를 살펴 보겠습니다. TCP/ip 프로토콜을 구현하는 네트워크 환경에서 IP 패킷이 어디로 가고 어디로 가는지는 라우팅 테이블의 정의에 따라 달라집니다. 그러나 IP 패킷이 네트워크에 도착했을 때 IP 패킷에 응답하는 시스템은 IP 패킷에 포함된 하드웨어 MAC 주소로 식별됩니다. 즉, 하드웨어 MAC 주소가 IP 패킷에 있는 것과 동일한 시스템만 IP 패킷에 응답합니다. 네트워크에서 호스트당 IP 패킷이 전송되는 경우가 있기 때문에 각 호스트의 메모리에는 ARP->; 하드웨어 MAC 변환 테이블 일반적으로 동적 변환 테이블입니다. 정적 항목은 이 ARP 테이블에 수동으로 추가할 수 있습니다. 즉, 해당 테이블이 일정한 시간 간격 후에 호스트에 의해 새로 고쳐집니다. 이 간격은 ARP 캐시 시간 초과입니다.
일반적으로 호스트는 IP 패킷을 보내기 전에 변환 테이블에서 IP 패킷에 해당하는 하드웨어 MAC 주소를 찾아야 합니다. 찾을 수 없는 경우 호스트는 ARP 브로드캐스트 패킷을 보내므로 호스트는 ARP 캐시를 플러시합니다. 그런 다음 IP 패킷을 보냅니다.
이러한 상식을 이해하면 이제 이더넷에서 ARP 스푸핑을 실현하는 방법에 대해 이야기할 수 있습니다. 우리는 이런 예를 볼 수 있다.
3. 1 같은 네트워크 세그먼트의 ARP 스푸핑
그림 2 동일한 네트워크 세그먼트의 ARP 스푸핑
그림 2 와 같이 호스트 3 개
A: IP 주소192.168.0.1하드웨어 주소 AA: AA: AA: AA: AA.
B: IP 주소 192. 168.0.2 하드웨어 주소 BB:BB:BB:BB:BB:BB: bb.
C: IP 주소 192. 168.0.3 하드웨어 주소 CC:CC:CC:CC:CC:CC:CC: cc: cc: cc:
호스트 B 의 침입자가 호스트 A 에 불법적으로 들어가려고 하지만 해당 호스트에 방화벽이 설치되어 있습니다. 정보 수집을 통해 그는 이 호스트 A 의 방화벽이 호스트 C 와 신뢰 관계 (오픈 포트 23 (tel)) 만 가지고 있다는 것을 알고 있다. 그리고 그는 인텔로 호스트 A 를 방문할 예정인데, 이때 어떻게 해야 합니까?
이런 식으로 침입자는 호스트 A 가 호스트 B 가 호스트 C 라고 믿게 해야 한다. 호스트 A 와 호스트 C 사이의 신뢰 관계가 IP 주소를 기반으로 하는 경우. 호스트 B 의 IP 주소만 호스트 C 의 IP 주소와 같다면 안 됩니다. 적어도 믿을 수 없는 작업입니다. 이더넷 카드 장치가 IP 를 192. 168.0.3 으로 구동하도록 알려주면 이는 순전히 경쟁관계일 뿐 목적을 달성하지 못한다. 우리는 먼저 기계 C 를 연구할 수 있다. 만약 잠시 이 기계를 전당잡을 수 있다면 경쟁 관계는 풀릴 수 있을 것이다. 이것은 여전히 가능하다. C 기계가 사망한 후 B 기의 IP 주소를 192. 168.0.3 으로 변경하여 포트 23 tel 을 통해 A 기계에 성공적으로 도달하여 방화벽 제한을 성공적으로 우회할 수 있습니다.
호스트 A 와 호스트 C 사이의 신뢰 관계가 하드웨어 주소를 기반으로 하는 경우 위의 아이디어는 다음과 같은 경우에는 쓸모가 없습니다. 이때 호스트 a 가 ARP 캐시에서 192. 168.0.3 매핑된 하드웨어 주소를 호스트 b 의 하드웨어 주소로 변경하도록 ARP 스푸핑을 사용해야 합니다.
Arp_reply 응답 패키지를 인위적으로 만들어 부정행위를 원하는 호스트로 보낼 수 있습니다. 이는 프로토콜이 arp_echo 를 받아야 응답 패키지를 보낼 수 있다는 규정이 없기 때문입니다. 이러한 도구는 매우 많으며 스니퍼 프로 (snifferpro) 를 사용하여 ARP 응답 패키지를 직접 잡고 수정할 수도 있습니다.
너는 이 가방을 수동으로 만들 수 있다. ARP 패킷에서 소스 IP, 대상 IP, 소스 MAC 주소 및 대상 MAC 주소를 지정할 수 있습니다.
이렇게 하면 잘못된 ARP 응답 패키지를 통해 호스트 A 의 동적 ARP 캐시를 수정하여 부정행위를 할 수 있습니다.
구체적인 단계는 다음과 같습니다.
그는 먼저 호스트 192.0.0.3 을 연구하여 이 호스트의 허점을 발견했다.
발견된 허점에 따르면 호스트 C 는 전당잡혀 잠시 일을 중단했다.
이 기간 동안 침입자는 IP 를 192.0.0.3 으로 변경했습니다.
그는 이 툴을 사용하여 소스 IP 주소가 192. 168.0.3 이고 소스 MAC 주소가 BB: BB: BB: BB: BB 인 패킷을 호스트 a 에 보내 호스트 a 업데이트를 요청했다
호스트가 ARP 테이블에서 호스트 c 의 IP->; Mac 통신.
방화벽이 고장나고 침입한 IP 가 합법적인 MAC 주소가 되어 tel 이 될 수 있습니다.
이것은 ARP 스푸핑 과정이며, 같은 네트워크 세그먼트에서 발생한다. 그러나 B 와 C 가 서로 다른 네트워크 세그먼트에 있을 때는 위의 방법이 작동하지 않는다는 점에 유의해야 합니다.
3.2 다른 네트워크 세그먼트의 ARP 스푸핑
그림 3 다른 네트워크 세그먼트 간의 ARP 스푸핑
그림 3 에서 볼 수 있듯이 A 와 C 는 같은 네트워크 세그먼트에 있고 호스트 B 는 다른 네트워크 세그먼트에 있습니다. 세 시스템의 IP 주소와 하드웨어 주소는 다음과 같습니다.
A: IP 주소192.168.0.1하드웨어 주소 AA: AA: AA: AA: AA.
B: IP 주소192.168.1.2 하드웨어 주소 BB:BB:BB:BB:BB:BB: bb.
C: IP 주소 192. 168.0.3 하드웨어 주소 CC:CC:CC:CC:CC:CC:CC: cc: cc: cc:
현재 192. 168. 1 네트워크 세그먼트의 호스트 B 가 호스트 C 로 가장하여 호스트 A 를 속이는 방법은 무엇입니까? 사기가 성공해도 호스트 B 와 호스트 A 사이에 인텔 세션을 설정할 수 없습니다. 라우터가 호스트 A 에서 보낸 패킷을 호스트 B 로 전달하지 않고 라우터가 192.6438+068.0 네트워크 세그먼트 내에 주소를 찾기 때문입니다.
이제 또 다른 사기인 ――ICMP 리디렉션이 포함됩니다. ARP 스푸핑과 ICMP 리디렉션을 결합하면 기본적으로 네트워크 세그먼트 간 스푸핑 목적을 달성할 수 있습니다.
ICMP 리디렉션이란 무엇입니까?
ICMP 재지정 메시지는 ICMP 제어 메시지입니다. 경우에 따라 라우터가 시스템에서 최적화되지 않은 경로를 사용하는 것을 감지하면 호스트에 ICMP 리디렉션 메시지를 보내 호스트에 경로 변경을 요청합니다. 라우터는 또한 초기 데이터그램을 대상으로 전달합니다.
우리는 ICMP 리디렉션 메시지를 사용하여 속일 수 있습니다.
다음 단계는 ARP 스푸핑 및 ICMP 리디렉션과 결합하여 공격합니다.
자신이 보낸 불법 IP 패킷이 인터넷에서 장기간 살아남도록 하기 위해, 우리는 IP 패킷의 TTL 을 수정하여 후속 과정에서 발생할 수 있는 문제를 준비하기 시작했다. Ttl 을 255 로 변경합니다. (TTL 은 IP 패킷이 네트워크의 호스트에 도달할 수 없을 때 네트워크에서 살아남을 수 있는 시간을 정의합니다. 이 경우 더 긴 시간으로 변경하면 전체 방송에 도움이 됩니다. ) 을 참조하십시오
다양한 패키지를 자유롭게 만들 수 있는 도구 (예: hping2) 를 다운로드하십시오.
그런 다음 위와 같이 호스트 C 의 허점을 찾아 이 허점에 따라 호스트 C 를 전당잡는다.
이 네트워크의 호스트가 원래 192.0.0.3 을 찾지 못하면 자신의 ARP 매핑 테이블이 업데이트됩니다. 그래서 그는 원래 IP 주소가 192. 168.0.3 이고 하드웨어 주소가 BB:BB:BB:BB:BB:BB: bb 인 ARP 응답 패키지를 보냈습니다
이제 각 호스트는 192.0.0.3 에 해당하는 새로운 MAC 주소를 알고 있으며 ARP 스푸핑이 완료됩니다. 그러나 각 호스트는 LAN 내에서만 이 주소를 찾고 192.0.0.3 으로 보낸 IP 패킷은 라우터에 전혀 던지지 않습니다. 그래서 그는 ICMP 리디렉션 방송을 만들어야 한다.
네트워크의 호스트에 "192.0.0.3 으로 가는 가장 짧은 경로는 LAN 이 아니라 라우팅" 이라고 알려주는 ICMP 리디렉션 패키지를 사용자 정의합니다. 라우트 경로를 리디렉션하고 192.0.0.3 으로 가는 모든 IP 패킷을 해당 라우트에 던져 주십시오. "
호스트 A 는 이러한 합리적인 ICMP 리디렉션을 수락하므로 자체 라우팅 경로를 수정하고 모든 통신을 라우터에 던집니다.
침입자는 결국 라우트 밖의 라우트에 있는 호스트에서 IP 패킷을 수신할 수 있으며 포트 23 부터 tel 을 호스트로 보낼 수 있습니다.
사실, 이 아이디어는 단지 이상적인 상황일 뿐이다. 실제로 호스트가 수신할 수 있는 ICMP 리디렉션 패킷에는 많은 제한이 있어 ICMP 리디렉션이 매우 어렵습니다.
TCP/IP 프로토콜 구현에서는 ICMP 리디렉션 메시지를 수신하는 호스트에 다음과 같은 제한이 있습니다.
새로운 노선은 반드시 직접적이어야 한다.
리디렉션된 패킷은 대상에 대한 현재 경로에서 가져와야 합니다.
리디렉션된 패킷은 호스트에 자신을 사용하여 라우팅하도록 지시할 수 없습니다.
변경된 선형은 간접 선형이어야 합니다.
이러한 제한으로 인해 ICMP 스푸핑은 실제로 달성하기 어렵다. 그러나 우리는 또한 위의 아이디어에 따라 다른 방법을 찾기 위해 주도권을 잡을 수 있습니다. 더 중요한 것은, 우리가 이러한 사기 수단의 위험성을 알 때, 우리는 그에 상응하는 방어 조치를 취할 수 있다는 것이다.
3.3 ARP 스푸핑 방어
ARP 스푸핑의 방법과 위험에 대해 알아보고, 우리는 몇 가지 초보적인 방어 방법을 제시했다.
인터넷 보안 신뢰 관계를 IP 주소나 하드웨어 MAC 주소에 두지 마세요 (rarp 도 부정행위 문제가 있음). 이상적인 관계는 ip+mac 을 기반으로해야합니다.
호스트가 설정한 변환 테이블을 새로 고치지 않도록 정적 MAC-> Ip 매핑 테이블을 설정합니다.
필요한 경우가 아니면 ARP 사용을 중지하고 ARP 를 해당 테이블에 영구 항목으로 저장합니다. Linux 에서는 Ifconfig -arp 를 사용하여 네트워크 카드 드라이버가 ARP 를 사용하지 못하도록 할 수 있습니다.
프록시 게이트웨이를 사용하여 송신 통신을 보냅니다.
시스템을 수정하여 ICMP 리디렉션 메시지를 거부합니다.
Linux 에서는 방화벽에서 ICMP 리디렉션 메시지를 거부하거나 커널 옵션을 수정하여 커널을 재컴파일하여 ICMP 리디렉션 메시지 수신을 거부할 수 있습니다.
Win2000 에서는 방화벽 및 IP 정책을 통해 ICMP 메시지 수신을 거부할 수 있습니다.
프록시 ARP 응용 프로그램
에이전트 ARP 에는 두 가지 주요 응용 프로그램이 있습니다. 하나는 방화벽 구현에서 흔히 말하는 투명 모드의 구현입니다. 다른 하나는 스위칭 환경에서 스니핑 목적을 달성할 수 있기 때문입니다. 따라서 같은 기술이 다른 목적에 적용되고 효과가 다르다.
먼저 스위칭 환경에서 LAN 의 스니핑을 살펴 보겠습니다.
보통 LAN 환경에서 우리는 모두 교환 환경의 게이트웨이를 통해 인터넷에 접속한다. 스위칭 환경에서 NetXray 또는 NAI Sniffer 와 같은 스니핑 툴을 사용하면 자체 패킷 외에 다른 호스트의 네트워크 통신이 보이지 않습니다.
그러나 우리는 ARP 스푸핑을 이용하여 스니핑 목적을 달성할 수 있다.
ARP 프로토콜은 IP 주소를 MAC 주소로 변환하는 프로토콜로, LAN 내 통신은 MAC 주소를 기반으로 합니다.
그림 4 스위칭 네트워크의 ARP 스푸핑
그림 4 에서 볼 수 있듯이 세 개의 호스트는 스위칭 네트워크 환경에 있습니다. 여기서 a 는 게이트웨이입니다.
A: IP 주소192.168.0.1하드웨어 주소 AA: AA: AA: AA.
B: IP 주소 192. 168.0.2 하드웨어 주소 BB:BB:BB:BB:BB:BB: bb.
C: IP 주소 192. 168.0.3 하드웨어 주소 CC:CC:CC:CC:CC:CC: cc: cc.
Lan 에서 192. 168.0.2 와 192. 168.0.3 모두
이 사기의 중심 원리는 ARP 에이전트의 적용입니다. 호스트 A 는 LAN 의 프록시 서버이며 LAN 의 각 노드에 대한 외부 통신이 모두 통과됩니다. 호스트 B 가 호스트 C 의 통신을 수신하려면 먼저 ARP 스푸핑을 사용하여 호스트 C 가 자신을 호스트 A 로 인식하도록 해야 합니다. 이때 IP 주소192.168.0.1을 보냅니다. 물리적 주소가 bb: bb: bb:bb:bb:bb 인 ARP 응답 패킷을 호스트 c 로 전송하여 호스트 c 가 호스트 a 에 주소 지정된 패킷을 호스트 b 로 전송하도록 합니다. 마찬가지로 게이트웨이 a 는 호스트 c 인지 확인하고 IP 주소192 ..
이전 단계의 조작은 ARP 스푸핑의 원리와 같지만 여전히 문제가 있다. 잠시 후 호스트 B 는 인터넷을 할 수 없다는 것을 알게 될 것이다. 그래서 한 단계 더, 호스트 B 에서 호스트 A 의 가방을 호스트 C 로, 호스트 C 의 가방을 호스트 A 로 전달하는데, 이제 우리는 호스트 B 가 실제로 호스트 A 와 호스트 C 의 통신에서 에이전트 역할을 하는 것을 볼 수 있습니다. 이것이 바로 그것이 ARP 에이전트라고 불리는 이유입니다.
두 가지 도구인 dsniff 와 fragrouter 는 ARP 스푸핑 및 fragroute 전달 패킷을 구현하는 데 사용됩니다.
먼저 dsniff 의 ARP 스푸핑을 이용하여 ARP 스푸핑을 실현한다. Dsniff 소프트웨어는 다음 웹 사이트에서 다운로드 할 수 있습니다.
Naughty.monkey/~dugsong/dsniff
이 패키지를 설치하기 전에 lib 를 다운로드하여 설치하십시오.
사기 192. 168.0.3, 네이티브 게이트웨이192.168.0./kloc.
[root @ sounddniff-2.3] #. /arpspof-ieth0-t 192.168.0.3168.0.1
[root @ sounddniff-2.3] #. /arpspoof-ieth0-t192.168.0.192.168 물론, 당신은 다른 도구를 사용할 수도 있고, 심지어 스스로 도급할 수도 있다. 이제 필요한 모든 작업이 호스트 A 와 호스트 C 의 ARP 목록에서 완료되었음을 알 수 있습니다. 우리는 나중에 투명 프록시에서 다른 개념을 사용할 것이다.
먼저 Linux 시스템에서 패킷을 전달하는 옵션을 켭니다.
[root @ sound/root] # echo "1"> /proc/sysipv4/ip_forward 다음으로 유명한 dugsong 의 또 다른 도구인 fragroute 를 다운로드할 수 있습니다. 이 도구는 이전에는 fragrouter 라고 불렸습니다 (1 단어의 차이일 뿐입니다). 주로 침입 감지 시스템 감지 조각 IP 및 TCP 패킷 기능 및 자체 패킷 전달 기능을 구현하는 데 사용됩니다. 다음 사이트에서 다운로드할 수 있습니다.
Monkey/~dugsong/fragroute/
이 패키지를 설치하기 전에 libpcap 과 libevent 를 다운로드하여 설치합니다.
물론, 우리는 또한 fragrouter 를 사용하여 다음을 수행할 수 있습니다.
Packets storm security/groups/w00w00/sectools/frag router/
[root @ sound fragrouter-1.6] #. /fragrouter -B 1
Fragrouter: 기본-1:일반 IP 전달
이제 스위치 LAN 에서 스니핑 목적을 달성할 수 있습니다. 물론 이것들은 이론적인 소개일 뿐, 실제 사용에는 게이트웨이 A 와 호스트 C 를 속이는 방법, 발생할 수 있는 방송 폭풍에 대처하는 방법 등 많은 문제가 발생할 수 있습니다. 이 기능을 쉽게 수행할 수 있는 arpsniff 라는 도구도 있습니다. 많은 웹사이트가 다운로드를 제공하고 인터페이스가 친숙합니다. 위와 같은 원리로 사용되는 도구만 다르기 때문입니다.
에이전트 ARP 의 또 다른 응용 프로그램은 방화벽 투명 에이전트의 구현입니다. 우리 모두는 초기 방화벽의 대부분이 라우팅 모드, 즉 방화벽이 라우팅을 완료하는 기능을 기반으로 한다는 것을 알고 있습니다. 이 액세스 방식을 사용하려면 LAN 내 호스트에 방화벽의 IP 를 에이전트로 설정하고 외부 라우터의 라우팅 테이블에 방화벽에 대한 경로를 추가해야 합니다. 이 방법의 단점은 불투명하고 필요한 설정이 너무 많다는 것이다. 기존의 네트워크 토폴로지를 파괴합니다. 따라서 현재 거의 모든 방화벽이 투명한 액세스 기능을 구현하고 있으며, 사용자의 라우터와 클라이언트는 어떠한 수정도 필요하지 않으며, 사용자는 투명한 액세스 방화벽의 존재조차 느끼지 못합니다. 이 투명한 액세스의 원리는 ARP 에이전트입니다.
이제 호스트를 투명 액세스 모드 방화벽으로 구성하는 방법을 살펴보겠습니다 (투명 액세스 방화벽에는 IP 가 필요하지 않음).
그림 5
그림 5 와 같이 방화벽은 내부 네트워크 세그먼트와 DMZ 네트워크 세그먼트를 외부 라우팅에 연결합니다. 이 호스트에서 Linux 운영 체제를 방화벽으로 사용하므로 iptables 방화벽을 쉽게 사용할 수 있습니다. 세 개의 네트워크 카드가 각각 eth0, eth 1 및 eth2, eth0 라우터, eth 1 내부 네트워크, eth2 외부 네트워크라고 가정합니다. DMZ 영역에 서버 두 대가 있다고 가정합니다.
인트라넷 주소:192.168.1.0/24.
DMZ 주소:192.168.1.2-192./kloc-0
라우터의 Ip 주소:192.168.1.1.
Eth0:AA:AA:AA:AA:AA:AA
Eth1:bb: bb: bb: bb: bb: bb: bb: bb
Eth 2:CC:CC:CC:CC:CC:CC:CC: cc
이전과 마찬가지로 첫 번째 단계는 ARP 스푸핑을 실현하는 것입니다. 이번에는 간단한 구현이 있습니다. 라우터의 IP 주소를 방화벽의 eth 1 및 eth2 의 네트워크 카드 물리적 주소에 바인딩하고 인트라넷 및 DMZ 세그먼트의 IP 주소를 eth0 의 네트워크 카드에 바인딩했습니다. Linux 시스템에서는 ARP 명령을 사용하여 다음과 같은 작업을 수행합니다.
Arp-s192.168.1.1bb: bb: bb: bb: bb
Arp-s192.168.1.1cc: cc: cc: cc
Arp-s192.168.1.0/24aa: aa: aa: aa: aa: aa
두 번째 부분은 Linux 기반 방화벽에 경로를 설정하고, 외부 경로가 있는 패킷을 eth0 으로 전달하고, 내부 네트워크 주소가 있는 패킷을 eth 1 으로 전달하고, DMZ 네트워크 세그먼트 서버가 있는 패킷을 eth2 로 전달해야 합니다. Linux 에서 route 명령을 사용하여 구현됩니다.
경로 주소192.168.1..1deveth0
경로 주소-192.168.1.0/24deveth1
경로 주소192.168.1.2 deveth2
경로 주소192.168.1.3deveth3
(DMZ 네트워크 세그먼트의 각 서버에 별도의 경로를 추가해야 함) 이제 ARP 에이전트에 대한 간단하고 투명한 액세스를 구현했습니다. 물론 방화벽의 해당 iptables 섹션은 별도로 구성해야 하며 iptables 구성은 이 문서에서 다루지 않습니다.
요약
이 기사에서는 ARP 프로토콜 및 관련 보안 문제에 대해 설명합니다. 중요한 보안 문제는 ARP 스푸핑입니다. 동일한 네트워크 세그먼트 내의 ARP 스푸핑과 네트워크 세그먼트 간 ARP 스푸핑과 ICMP 리디렉션을 결합하는 방법에 대해 설명했습니다. 이러한 보안 문제에 대해 우리는 몇 가지 기본적인 해결책을 제시했다. 마지막으로, 스위치 네트워크에서 프록시 ARP 를 사용하여 방화벽 스니핑 및 투명한 액세스를 구현하는 방법에 대해 설명합니다.