[네트워크 해킹] 03. 스니핑(Sniffing)
스니핑(Sniffing) : 네트워크 상에서 송수신되는 트래픽을 도청하는 행위. 보안의 3요소 중 '기밀성'을 해친다.
영어 단어 'Sniff'의 뜻은 '코를 킁킁거리다.', '냄새를 맡다.' → 네트워크 상에서 다른 사람들의 패킷을 엿듣는다를 의미.
스니핑은 어려운 개념이 아니라 네트워크에서 도청(evaesdropping)하는 것이라고 생각하면 쉽다.
이때 사용하는 도구는 스니퍼(sniffer)라고 한다.
스니핑 공격의 종류
스니핑 공격은 공격 대상의 근거리 네트워크(LAN)를 promiscuous mode를 통해 조작한 후 필터링을 해제하고 패킷을 훔치는 방식으로 수행한다.
* promiscuous라는 영어단어의 뜻은 '무차별의'라는 뜻을 가지고 있다.
- 일반적인 랜 카드의 역할 :
네트워크 상에서 패킷이 지나갈 때 MAC주소와 IP주소를 확인하고, 자신의 것과 일치하면 패킷을 갖고, 아니면 버리는 것이다.
- promiscuous mode를 설정한 랜 카드 :
네트워크 패킷이 자신의 것도 아니여도 가져오게 된다.
- 리눅스에서 Promiscuous mode 설정하는 방법 :
명령어 : ifconfig 설정할인터페이스명 promisc
Promiscuous mode를 설정하게 되면, MAC 주소와 IP주소와 관계없이 모든 패킷을 스니퍼에게 넘겨주게 된다.
(스위치 환경에서) 스니핑 공격의 종류
(스위치 환경에서)
1. ARP Spoofing(ARP Redirect)
2. Switch Jamming
3. Port Mirroring(Tab 장비 해킹)
4. ICMP Redirect
1. ARP Spoofing (ARP Redirect)
1) 공격 방법 :
각 호스트의 ARP Cache를 공격하여 잘못된 MAC Address를 학습(Learning) 하도록 하여 위조된 IP로 패킷을 보내도록 한다.
2) 공격 원리 :
ARP 프로토콜이 ARP Request이 없어도 ARP Response 패킷이 오게되면 무조건 MAC Address Table을 업데이트하는 취약점을 이용하여 공격
정상적인 통신인 경우
arpspoofing으로 스니핑이 당한 경우
3) 실습하기
- 공격자 : Kali (192.168.239.131)
- 희생자 : Windows(192.168.239.130), Ubuntu(192.168.239.129)
- 공격 방법
1] arpspoof 이용 arp cache table 위조 : arpspoof [내가 가장할 IP] -t [공격 대상]
# arpspoof 192.168.239.130 -t 192.168.239.129
# arpspoof 192.168.239.129 -t 192.168.239.130
target(129)에서 192.168.239.130를 내 MAC 주소로 조작
target(130)에서 192.168.239.129를 내 MAC 주소로 조작
2] 패킷을 원래 목적지로 포워딩 : fragrouter -B1
양 피해지에서 공격자에게 오는 패킷을 포워딩 해준다.
3] 감염 여부 확인 :
- 희생자 : Windows(192.168.239.130)
윈도우는 arp -a 명령어를 입력해서 동일한 물리적 주소를 가지는 IP가 있으면 위조된 것.
129와 131의 MAC Address주소가 같다. 129로 패킷을 보내면 131가 받는다.
- 희생자 : Ubuntu(192.168.239.129)
리눅스에서는 arp 명령어를 입력하여 arp table을 확인해서 HWaddress 주소가 동일한 게 있으면, 위조된 것
130과 131의 MAC Address주소가 같다. 130으로 패킷을 보내면 131가 받는다.
4] 공격 결과 : 공격자 PC에서각 피해자 간의 패킷을 볼 수 있다.
nc.exe라는 프로그램을 활용해서, 피해자끼리 데이터를 주고받는다.
tcpdump를 통해 두 피해자가 주고받는 패킷 내용 확인 가능
tcpdump -xX host IP주소
2. Switch Jamming (스위치 재밍)
(1) 공격 원리 :
특정 포트에서 아주 많은 패킷을 발생하도록 MAC Address를 계속 바꿔서 보내 스위치에 버퍼를 오버플로우 시키는 장애를 일으킨다.
그렇게 되면 스위치가 더미 허브처럼 동작(Flooding)하여 모든 패킷을 브로드캐스팅(Broadcasting)한다.
그러면 공격자는 모든 패킷을 받을 수 있게 된다.
(2) 참고 사항 : 스위치의 종류에 따라서 이 공격이 통할 수도 있고 통하지 않을 수도 있다.
(3) 공격 명령어 : macof
* 그냥 macof 명령어만 치면 된다.
3. ICMP Redirect
(1) 공격 방법 :
ICMP Redirect(5)를 통해 특정 호스트와 통신을 위해 다른 경로로 패킷을 전송하도록 라우팅 테이블을 변경.
(2) 공격 원리 :
로드 밸런싱(Load Balancing)을 위해서 하나 이상의 라우터가 필요한 경우,
ICMP 리다이렉트를 통해 기존 라우터 말고 더 효율적인 다른 라우터 경로를 알려준다.
이때 다른 라우터의 주소를 조작하여 공격자의 주소를 넣으면 스니핑이 가능하다.
(3) 실습
- 목적 : 스위치 쓰는 환경에서 다른 사람이 쓰는 것을 훔쳐보고 싶을 때 사용. 특정 목적으로 이동하는 것을 별도의 라우터로 지정해서 전송한다.
- 이용 도구 : icmp_redirec.c를 컴파일하여 사용
- 사용 방법 : ./icmp_redir [실제GW] [공격 대상] [라우팅 테이블에 추가할 주소] [공격자 주소]
* 게이트웨이를 공격자의 IP로 바꾼다.
- 공격하기
[공격자]
1] ./icmp_redir [실제GW] [공격대상 - XP의 IP] [라우팅 테이블에 추가할 주소 - 123.123.123.123] [공격자 주소-Kali IP]
[피해자 XP]
1] route print로 확인
- icmp redirect 전 :
[ 공격자에서 ICMP Redirect 시도]
- icmp redirect 후 :
123.123.123.123로 향하는 게이트웨이가 192.168.10.132가 됐다.
참고 : 현재는 XP 이외의 시스템에서 실행이 되지 않는다.
4. Port Mirroring (포트 미러링)
(1) 공격 방법 :
스위치의 포트 미러링 기능을 이용한 공격 방식.
포트 미러링은 스위치를 통과하는 모든 트래픽을 다른 스위치 포트로 복사하는 방식으로 관리적 목적으로 사용되지만,
공격자가 해당 포트를 탈취하게 되면 모든 트래픽을 볼 수 있기에 스니핑이 가능하다.
* 포트 미러링은 IDS 또는 IPS와 같은 보안장비에서 사용이 된다.
탐지방법
1. 해당 의심 대상에게 패킷을 날려본다.
- 아이피 주소는 그대로, MAC 주소는 변형시킨다. (ping, arp, dns 이용)
- 정상적인 경우 : 위조된 패킷이 잘못되어 응답하지 않는다.
- 스니핑 된 경우 : 위조된 패킷에 응답을 준다.
1) ping : 위조된 ping을 보내도 ICMP ECHO Reply가 온다.
2) ARP : 위조된 ARP Request를 보냈을 때 ARP Response가 온다.
3) DNS : 존재하지 않는 IP주소로 ping을 보내고, 해당 IP에 대한 도메인 이름을 물어보는 요청이 존재
2. 유인(Decoy) 이용
1) 존재하지 않는 ID와 패스워드 유출시켜 공격자가 사용하도록 한다.
2) 이후에 유출된 ID가 사용되는지 분석
3. Promiscuous Mode 탐지 도구 사용 : hunt
- 다운로드 : wget https://dl.packetstormsecurity.net/sniffers/hunt/hunt-1.5bin.tgz
- 압축 해제 : tar zxf hunt-1.5bin.tgz
- 실행 : cd hunt-1.5
./hunt -i eth1
4. ARP Watch 이용 : 초기 MAC 주소와 IP 주소를 매칭 한 값을 저장하고 ARP 트래픽을 모니터링하여 이를 변하게 하는 ARP 패킷을 탐지
방어방법
1) MAC Address를 정적으로 등록한다. (Win7 이상부터는 netsh 명령어 사용)
2) 암호화 : 가장 강력한 방법 ★
- 스니핑이 되더라도 암호화가 되어 있으면 내용을 확인할 수 없다.
- SSL, SSH, VPN, PGP, PEN, S/MIME