Sniffing
Sniffing
- 코를 킁킁거리면서 음식을 찾는 동물처럼 데이터 속에서 정보를 찾는 것을 의미
- 수동적 공격이라고도 함
- 예) 도청, 전기적 신호를 템페스트 장비로 분석하는 것 등
스니핑 공격의 원리
- 네트워크 카드에 인식된 데이터 링크 계층과 네트워크 계층의 정보가 자신의 것과 일치하지 않는 패킷은 무시
- 프러미스 큐어스 모드: 데이터 링크 계층과 네트워크 계층의 필터링을 해제해 스니핑이 가능한 상태(프러미스큐어스 모드 상태에서는 MAC 주소와 IP 주소에 관계없이 모든 패킷을 스니퍼에게 넘겨준다.)
스니핑 공격 툴
TCP Dump
- 네트워크 관찰 및 관제에도 사용하는 가장 일반적이며 강력한 스니핑 툴
- 불법적인 해킹 느낌보다는 관리자 느낌이 강함
- Snort라는 IDS의 기반
- TCP Dump로 획득한 증거 자료는 법적 효력이 있음
fragrouter
- 스니핑을 보조해주는 툴로, 스니핑한 패킷을 원래 주소지로 다시 보내줌
dsniff
- 계정 및 패스워드 스니핑을 위한 자동화 툴
- 해커들이 범죄 용의자 추적용인 카니보어에 맞서기 위해 개발한 알트보어와 함께 대표적인 스니핑 툴로 알려짐
- dsniff가 읽어낼 수 있는 패킷
-
ftp, telnet, http, pop, nntp, imap, snmp, ldap, rlogin, rip, ospf, pptp, ...
-
- dsniff에 포함된 툴
툴 | 기능 |
---|---|
filesnarf | NFS 트래픽에서 스니핑한 파일을 현재 디렉터리에 저장한다. |
macof | 스위치 환경에서 스위치를 허브와 같이 작동시키기 위해 임의의 MAC 주소로 스위치의 MAC 테이블을 오버플로시킨다. |
mailsnarf | SNMP와 POP트래픽을 스니핑해 이메일을 볼 수 있게 한다. 스니핑한 이메일은 mail 클라이언트로 볼 수 있다. |
msgsnarf | AOL메신저, ICQ 2000, IRC, Yahoo 메신저 등의 채팅 메시지를 선택해 스니핑한다. |
tcpkill | 특정 인터페이스를 통해 탐지할 수 있는 TCP 세션을 모두 끊는다. |
tcpnice | OCMP source quench 메시지를 보내 특정 TCP 연결을 느리게 만든다. 속도가 빠른 네트워크에서 스니핑을 할 때 유용하다. |
arpspoof | ARP 스푸핑 공격을 실행한다 |
dnsspoof | DNS 스푸핑 공격을 실행한다 |
urisnarf | CLF에서 HTTP프래픽을 스니핑하여 선택된 URL을 알려준다 |
dsniff | 여러 프로토콜에 대한 암호 스니퍼 |
sshmitm | SSH monkey-in-the-middle, 프록시 및 SSH 트래픽 스니핑 |
sshow | SSH 트래픽 분석기 |
webmitm | HTTP/HTTPS 중간자 공격 |
webspy | 클라이언트에서 스니핑된 URL을 로컬 브라우저로 보냄(libx 11-6 설치 필요) |
스위치 환경에서의 스니핑
스위치의 본래 명칭은 ‘포트 스위칭 허브’이며, 스위치 안에는 포트에 대한 MAC 주소 테이블이 존재
ARP(Address Resolution Protocol) 리다이렉트
- 데이터 링크 계층(2계층)에서 MAC 주소를 속여 패킷의 흐름을 바꿈
- 즉, 공격자가 자신을 라우터라고 속이는 것
- ARP 스푸핑과 아주 비슷
- ARP 리다이렉트 → 스니핑의 일종, 소극적 공격
- ARP 스푸핑 → 단순 도청이 아닌 거짓 패킷 전송 → 적극적 공격
ARP란?
시스템은 호스트들의 MAC주소를 모흠 -> 브로드 캐스트로 모든 호스트에 request를 보내 응답한 호스트의 MAC주소에 IP를 매핑하는 프로토콜
ARP 리다이렉트의 개념도
공격자가 다른 호스트에게 지속적으로 자신의 IP & 라우터의 MAC주소를 보내 ARP테이블에 자신이 라우터라고 착각하도록 유도.
타겟들은 공격자를 라우터로 인식하여 패킷을 공격자에게 보내게 됨.
공격자는 의심받지 않고 통신을 유지하기 위해 받은 패킷을 진짜 라우터로 리다이렉트함.
ICMP 리다이렉트
- 네트워크 계층(3계층)에서 스니핑 시스템이 네트워크에 존재하는 또 다른 라우터라고 알려 패킷의 흐름을 바꾸는 공격
- 보통 네트워크에는 라우터나 게이트웨이가 하나인데 이 하나로 감당할 수 없을 때는 라우터 게이트웨이를 두 개 이상 운영해 로드 밸런싱을 해야 함
ICMP 리다이렉트의 개념도
- 호스트 A에 라우터 A가 기본으로 설정되어 있기 때문에 호스트 A가 원격의 호스트 B로 데이터를 보낼 때 패킷을 라우터 A로 보냄
- 라우터 A는 호스트 B로 보내는 패킷을 수신한다. 그리고 라우팅 테이블을 검색해 호스트 A가 자신을 이용하는 것보다 라우터 B를 이용하는 것이 더 효율적이라고 판단해 해당 패킷을 라우터 B로 보냄
- 라우터 A는 호스트 B로 향하는 패킷을 호스트 A가 자신에게 다시 전달하지 않도록 호스트 A에 ICMP 리다이렉트 패킷을 보내어 호스트 A가 호스트 B로 보내는 패킷이 라우터 B로 바로 향하게 함
- 호스트 A는 라우팅 테이블에 호스트 B에 대한 값을 추가하고 호스트 B로 보내는 패킷은 라우터 B로 전달
💡현대 네트워크 환경에서는, OS 자체적으로 ICMP 리다이렉션을 차단하는 경우가 많아 공격이 어렵다.
스위치 재밍(Jamming)
- 스위치가 MAC 주소 테이블을 기반으로 패킷을 포트에 스위칭할 때 정상적인 스위칭 기능을 마비시키는 공격
- 스위치에 저장 용량 이상의 MAC 주소를 보내 스위치 기능을 잃고 더미 허브처럼 작동하게 만듦
- 스위치 재밍은 MAC 테이블을 위한 캐시 공간에 버퍼 오버플로 공격을 실시하는 것이라고 생각해도 무방
- 스위치에는 Fail Close 기능 없음
- Fail Open : 고장 시 열림. 장애 발생 시 특정 요소(트래픽, 권한, 서비스 등)를 허용하는 정책
- Fail Close : 고장 시 닫힘. 장애 발생 시 특정 요소(트래픽, 권한, 서비스 등)를 차단하는 정책
SPAN(Switch Port Analyzer)
- 스위치의 포트 미러링 기능을 이용하기 위해 특별히 설정하는 장치
- SPAN은 주로 시스코에서 사용하는 용어이며, 포트 로빙으로 부르기도 함
- SPAN은 상당히 많은 문제점이 있어 효과적인 모니터링에 어려움이 있음
- 이를 해결할 수 있는 방법이 바로 태핑
- SPAN은 기본적으로 네트워크 장비에서 간단한 설정으로 활성화되지만 포트 태핑은 하드웨어 장비를 이용
💡위 그림과 같이 스위치 회선의 대역폭이 똑같이 1Gb 인 경우, 확인해야하는 패킷 최대 대역폭 합은 2Gb인데 비해 SPAN에서는 같은 1Gb이므로 50%의 loss가 발생
SPAN vs TAP
- TAP장비를 활용하여 SPAN의 문제를 위 그림과 같이 해결할 수 있음.
스니핑 공격에 대한 대책
- 능동적 → 스니퍼 탐지, 수동적 → 패킷 암호화
- 스니퍼가 프러미스큐어스 모드에서 작동한다는 점을 이용한 능동적인 탐지를 통해서만 잡아낼 수 있음
능동적 보안 대책
Ping을 이용한 스니퍼 탐지
네트워크에 존재하지 않는 MAC 주소를 위장해서 보내 자신에게 해당하지 않는 ping에도 ICMP Echo Reply를 되돌려 보내는 경우, 스니핑을 하고 있다고 탐지할 수 있음
ARP를 이용한 스니퍼 탐지
ping 이용과 유사한 방법
위조된 ARP Request를 보냈을 때 ARP Response가 오면 프러미스큐어스 모드로 설정되어 있는 것
DNS를 이용한 스니퍼 탐지
테스트 대상 네트워크로 ping sweep을 보내고 들어오는 Reverse-DNS lookup을 감시해 스니퍼를 탐지
IP를 보내면, DNS서버가 아닌데도 불구하고 도메인 네임을 넘겨주는 개체가 있음, 그럼 스니핑 당하고 있다라고 추측(대부분의 DNS 서버는 Reverse-DNS lookup를 지원하지 않음)
유인을 이용한 스니퍼 탐지
보안 관리자는 가짜 아이디와 패스워드를 네트워크에 뿌린 후 공격자가 이 아이디와 패스워드로 접속을 시도하는 스니퍼를 탐지
ARP watch를 이용한 스니퍼 탐지
▪ ARP watch는 MAC 주소와 IP 주소의 매칭 값을 초기에 저장하고 ARP 트래픽을 모니터링해 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 툴
▪ nmap을 이용하면 특정 시스템이 스니퍼로 동작하고 있는지 확인 가능
수동적 보안 대책(암호화)
SSL(Secure Sockets Layer)
▪ 암호화된 웹 서핑을 가능하게 함
▪ SSL은 많은 웹 서버 브라우저에 구현되어 있음
▪ 예) 쇼핑몰 사이트에 접속해서 물건을 구매하기 위해 신용카드 정보 등을 보낼 때 사용
PGP, PEM, S/MIME
▪ PGP와 PEM, S/MIME 모두 이메일을 전송할 때 사용하는 암호화 방법
▪ PGP는 내용을 암호화하는데 IDEA 방법을 쓰고 IDEA 키와 전자 서명을 암호화하는 데 RSA 알고리즘을 씀 (IDEA: International Data Encryption Algorithm-대칭키 암호알고리즘) (RSA:Rivest, Shamir, Adleman-공개키암호알고리즘)
▪ PEM은 공개키 암호화 표준(PKCS)을 따르며 CA라는 공인된 인증기관에서 키를 관리, 데이터 암호화에 DES-EDE, 키 암호화에 RSA 사용
▪ S/MIME는 이메일 표준인 MIME 형식에 암호화 서비스만을 추가한 것이다, PKCS기반, 디지털 인증서 X.509 사용
SSH(Secure Shell)
▪ 텔넷 같은 서비스 암호화를 위해 사용하는 것으로, 이미 설치한 OpenSSL 라이브러리가 SSH를 지원
▪ dsniff를 이용해 공격을 하면 SSH를 이용하더라도 공격을 당할 수 있음
VPN
▪ 원래 사설 네트워크를 설치하는 데 많은 비용이 들기 때문에 한 회선을 여러 회사가 공유해 비용을 절감하려는 목적으로 개발된 것
▪ 전송되는 데이터들이 각 회사의 사내 정보이므로 기밀성 요구됨 → 기본적으로 암호화 수행
▪ VPN을 제공하는 시스템이 해킹을 당할 경우 암호화되기 이전에 데이터가 스니핑이 될 수 있음