1. ARP Spoofing이란?
Spoof란 사전적으로 '속이다'라는 뜻을 갖고 있습니다. arp 스푸핑이란 공격자가 공격 대상이 통신하고자 하는 대상으로 가장하여 패킷을 가로챌 수 있는 방법으로 arp 스푸핑을 이용해 다양한 공격이 가능합니다. 공격 대상이 통신하고자 하는 대상의 IP에 해당하는 MAC 주소를 공격자의 MAC 주소로 알고 있도록 arp reply 패킷을 지속적으로 보내서 공격 대상을 속이는 방법을 사용합니다. 이번 실습에서는 같은 네트워크 내에 있는 두 대상 모두에게 arp 스푸핑 공격을 하여 두 대상의 통신을 중간에 가로채서 스니핑 하도록 합니다.
2. 실습 환경
공격 대상 1(사용자) - IP : 192.168.10.189, MAC : BC:5F:F4:34:14:f7
공격 대상 2(웹서버) - IP : 192.168.10.151, MAC : 00:0C:29:79:ㅠ8:54
공격자 - IP : 192.168.10.150, MAC : 00:0 C:29:9 B:94:96
3 실습 준비
3.1 공격자 - fake 설치
(1) yum 레파지토리에 rpmforge 추가
# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/dag/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm(32 bits)
# rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/dag/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm(64 bits)
위 명령어를 복사하여 실행하면 레파지토리에 rpmforge가 추가되고 yum을 이용하여 fake 프로그램을 다운로드할 수 있습니다.
(2) fake 설치 # yum install -y fake
(3) 쉘 스크립트를 작성하여 send_arp 실행
# send_arp (공격 대상이 접속하려는 IP) (공격자의 MAC) (공격 대상 IP) (공격 대상 MAC)
4 실습
(1) 공격자 PC에서 fragrouter와 tcpdump 실행
(2) 쉘 스크립트를 이용해 arp 스푸핑 공격 시작
(3) 스푸핑 공격 확인
5 실습 결과 분석
(1) arp 패킷 분석
첫 번째 arp 패킷 캡처
BC 5F F4 34 14 F7 00 0C 29 9B 94 96 08 06 00 01 08 00 06 04 00 02 00 0C 29 9B 94 96 C0 A8 0A 97 BC 5F F4 34 14 F7 C0 A8 0A BD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
Ethernet header 분석
Destination MAC address |
bc:5f:f4:34:14:f7 |
Source MAC address |
00:0c:29:9b:94:96 |
Type |
08 06 (ARP) |
ARP 패킷 분석
Hardware type |
Protocol type |
|
00 01 (Ethernet) |
08 00 (IP) |
|
H/W addr length |
Protocol addr length |
Operation code |
06 (6 bytes) |
04 (4 bytes) |
00 02 (ARP reply) |
Source MAC address |
Source protocol address |
|
00:0c:29:9B:94:96 |
c0 a8 0a 97 (192.168.10.151) |
|
Destination MAC address |
Destination protocol address |
|
bc:5f:f4:34:14:f7 |
c0 a8 0a bd (192.168.10.189) |
분석 결과
00:0c:29:9b:94:96(공격자)에서 bc:5f:f4:34:14:f7(공격 대상 사용자)에게 192.168.10.151(웹서버)의 MAC 주소가 00:0c:29:9B:94:96(공격자)이라고 속이고 있습니다.
두 번째 arp 패킷 캡처
00 0C 29 79 B8 54 00 0C 29 9B 94 96 08 06 00 01 08 00 06 04 00 02 00 0C 29 9B 94 96 C0 A8 0A BD 00 0C 29 79 B8 54 C0 A8 0A 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
Ethernet header 분석
Destination MAC address |
00:0c:29:79:b8:54 |
Source MAC address |
00:0c:29:9B:94:96 |
Type |
08 06 (ARP) |
ARP 패킷 분석
Hardware type |
Protocol type |
|
00 01 (Ethernet) |
08 00 (IP) |
|
H/W addr length |
Protocol addr length |
Operation code |
06 (6 bytes) |
04 (4 bytes) |
00 02 (ARP reply) |
Source MAC address |
Source protocol address |
|
00:0c:29:9B:94:96 |
c0 a8 0a bd (192.168.10.189) |
|
Destination MAC address |
Destination protocol address |
|
00:0c:29:79:b8:54 |
c0 a8 0a 97 (192.168.10.151) |
분석 결과
00:0c:29:9b:94:96(공격자)에서 00:0c:29:79:b8:54(공격 대상 웹서버)에게 192.168.10.189(사용자)의 MAC 주소가 00:0c:29:9B:94:96(공격자)이라고 속이고 있습니다.
(2) http 패킷 분석
첫 번째 http 패킷 캡처
00 0C 29 9B 94 96 BC 5F F4 34 14 F7 08 00 45 00 00 34 53 DA 40 00 80 06 10 45 C0 A8 0A BD C0 A8 0A 97 E9 30 00 50 66 3C 6B 58 00 00 00 00 80 02 20 00 FD 5B 00 00 02 04 05 B4 01 03 03 02 01 01 04 02 |
Ethernet header 분석
Destination MAC address |
00:0c:29:9B:94:96 |
Source MAC address |
bc:5f:f4:34:14:f7 |
Type |
08 00 (IP) |
IP header 분석
Version |
Header len | TOS |
Total length |
0100 (IPv4) |
0101 (5words) | 00000000(사용안함) |
0000000000110100 (52 bytes) |
Identification |
Flag |
Fragment offset |
|
0101001111011010 |
010(분할되지 않음) |
00000 00000000 |
|
TTL |
Protocol type |
header checksum |
|
10000000 (128) |
00000110(6:TCP) |
0001000001000101 |
|
Source IP address |
|||
11000000 10101000 00001010 10111101 (192.168.10.189) |
|||
Destination IP address |
|||
11000000 10101000 00001010 10010111 (192.168.10.151) |
분석 결과
192.168.10.189(공격 대상 사용자)에서 192.168.10.151(공격 대상 서버)로 패킷을 보내고 있지만 실제 패킷은 bc:5f:f4:34:14:f7(공격 대상 사용자)에서 00:0c:29:9B:94:96(공격자)으로 전송되고 있습니다.
두 번째 http 패킷 캡처
00 0C 29 79 D8 54 00 0C 29 9B 94 96 08 00 45 00 00 34 53 DA 40 00 80 06 10 45 C0 A8 0A BD C0 A8 0A 97 E9 30 00 50 66 3C 6B 58 00 00 00 00 80 02 20 00 FD 5B 00 00 02 04 05 B4 01 03 03 02 01 01 04 02 |
Ethernet header 분석
Destination MAC address |
00:0c:29:79:d8:54 |
Source MAC address |
00:0c:29:9B:94:96 |
Type |
08 00 (IP) |
IP header 분석
Version |
Header len | TOS |
Total length |
0100 (IPv4) |
0101 (5words) | 00000000(사용안함) |
0000000000110100 (52bytes) |
Identification |
Flag |
Fragment offset |
|
0101001111011010 |
010(분할되지 않음) |
00000 00000000 |
|
TTL |
Protocol type |
header checksum |
|
10000000 (128) |
00000110(6:TCP) |
0001000001000101 |
|
Source IP address |
|||
11000000 10101000 00001010 10111101 (192.168.10.189) |
|||
Destination IP address |
|||
11000000 10101000 00001010 10010111 (192.168.10.151) |
분석 결과
첫 번째 패킷을 00:0c:29:9B:94:96(공격자)에서 받아 00:0c:29:79:d8:54(공격 대상 웹서버)로 전송하는 패킷으로 datagram은 첫 번째 패킷과 동일합니다.
6 ARP spoofing 대응 방안
6.1 고정 ARP 사용
6.1.1 Linux에서 고정 ARP
- # arp -s [IP주소] [MAC 주소]
-s 옵션을 주고 뒤에 IP주소와 그에 해당하는 MAC 주소를 입력하면 고정 ARP를 등록할 수 있습니다.
6.1.2 Windows에서 고정 ARP
> arp -s [IP주소] [MAC 주소]
리눅스와 명령어가 같습니다. 192.168.10.1 주소가 동적으로만 등록되어 있다가 고정 arp 명령어 이후 정적으로 등록되었습니다.
6.1.3 Windows 7 이상에서의 arp 고정 방법
> netsh -c "interface ipv4" set neighbors "(인터페이스)" "(고정시킬 IP 주소)" "(고정시킬 MAC 주소)"
windows 7 이전 버전과 달리 netsh라는 프로그램을 이용해 고정 arp를 등록합니다.
6.2 arpwatch 프로그램 사용
arpwatch는 네트워크 상의 IP와 MAC 주소 변경을 감시하는 프로그램으로 arp 스푸핑을 감지하기 위해 사용하기도 합니다. 네트워크상에 IP나 MAC 주소 변경이 있으면 arpwatch가 감지하여 사용자에게 메일로 전송해줍니다.
6.2.1 arpwatch 설치 및 사용
new station : 처음 arp 정보가 등록된 경우
flip flop : MAC 주소가 중복된 경우
changed ethernet address : 기존 정보가 변경된 경우
'CERTIFICATE' 카테고리의 다른 글
[모의해킹] EP.06 : 터널링(Tunneling) (0) | 2019.10.01 |
---|---|
[모의해킹] EP.05 : DNS Spoofing (0) | 2019.09.24 |
[모의해킹] EP.04 ICMP Redirect (0) | 2019.09.23 |
[모의해킹] EP.02 : ARP Redirect (0) | 2019.09.18 |
[모의해킹] EP.01 : 스니핑- telnet (0) | 2019.09.17 |