Windows OS에는 RRA("Routing and Remote Access") 서비스라는 것이 있습니다. 이 서비스는 자신과 관련되지 않은 IP packet이 자신의 NIC에서 수신이 되는 경우 이를 원래 가야 할 곳으로 보내어 주는 기능(forwarding)을 가지고 있습니다.




ARP spoofing을 구현할 때에는 이 서비스가 굉장히 골치 아픈 존재입니다. 왜냐 하면 Victim의 IP packet을 Attacker가 받아서 자기 마음대로(forwarding, relay, drop)을 할 수 있어야 하는데, RRA 서비스가 자기 임의(?)대로 packet을 forwarding시켜 주기 때문입니다. 이 때문에 Attacker에서 packet을 잡아 보면, 하나의 Victim IP packet에 대해 여러개의 IP packet이 잡히기도 합니다(Forwarding IP packet은 원래 IP packet과 비교하여 TTL 값이 하나 감소하게 됩니다).


이를 방지하기 위해서는 RRA 서비스를 중지시켜야 합니다. 중지시키는 방법은 인터넷에 여러 나와 있습니다.


http://pubs.vmware.com/workstation-10/index.jsp?topic=%2Fcom.vmware.ws.using.doc%2FGUID-8F17C54A-92E6-45B2-A7A7-1B8F4E3BDE6E.html




그런데 문제는 어댑터를 다시 여는 경우, "ipconfig /renew" 명령어를 통해서 다시 IP를 할당받는 경우 등에서 해당 서비스가 활성화되어 있지 않음에도 불구하고 계속해서 해당 서비스가 작동한다는 데 문제가 있습니다. ARP spoofing을 구동과 RRA 서비스가 충돌하는 경우는 다음과 같습니다.


1. RRA 서비스를 "사용 안함"으로 설정을 해 놓아도, 작동을 한다.

2. RRA 서비스를 수동 이나 자동으로 설정을 해 놓고, 시작을 해 놓지 않아도 작동을 한다.

3. "ipconfig /renew"와 같은 명령어로 시스템의 IP Layer 모듈이 재가동될 때에도 RRA서비스가 자동으로 작동한다.




이를 위해서 ARP spoofing 모듈을 구동시킬 때마다, 다음과 같이 설정을 합니다.


1. 서비스 메뉴로 들어 가서 "Routing and Remote Access" 서비스를 "사용 안 함"으로 두지 말고 "시작"이나 "수동"으로 설정해 둔다("수동"으로 설정하는 것을 권장. 한번만 설정하면 됨).


2. ARP spoofing 모듈을 가동시킬 때마다 아래의 명령어를 통해서 RRA 서비스를 확실하게 종료시켜 줄 수 있도록 한다(매번 실행시킬 수 있도록 함).

  • sc start RemoteAccess
  • sc stop RemoteAccess




이상 ARP spoofing을 만들다가 알아낸 허접 팁이었습니다.