1. 스니핑 ‘sniff’:코를 킁킁거리다‘ 의미 코를 킁킁거리듯이 정보를 데이터 속에서 찾는 것 스니핑 공격은 방어 및 탐지 매우 힘듬. 수동적(Passive) 공격 LAN의 스니핑은 프러미스큐어스(Promiscuous) 모드에서 작동 랜 카드는 고유한 MAC(Media Access Control) 주소 값을 가지고 있으며 자신의 랜 카드에 주소 값을 인식하고 자신의 버퍼에 저장할지를 결정 그러나 스니핑은 타른 목적지의 프레임까지 모두 획득 (허브의 성질 및 다른 공격 tool 사용) : 프러미스큐어스 모드
인터페이스를 프러미스큐어스 모드로 전환하기 Root# ifconfig eth0 promisc
2. 스니핑 공격 도구 1. TCP Dump 가장 일반적 스니핑 도구 네트워크 관리를 위해 개발된 툴 Snort라는 IDS의 기반 프로그램이기도 함 TCP Dump는 수사 규약을 따르면 법적 효력 있음
TCP Dump를 이용해서 계정과 패스워드 스니핑하기 Root# ./configure Root# make Root# make install
TCPDUMP Usage To print all packets arriving at or departing from sundown: tcpdump host sundown To print traffic between helios and either hot or ace: tcpdump host helios and \( hot or ace \) To print all IP packets between ace and any host except helios: tcpdump ip host ace and not helios To print all traffic between local hosts and hosts at Berkeley: tcpdump net ucb-ether To print all ftp traffic through internet gateway snup: (note that the expression is quoted to prevent the shell from (mis-)interpreting the parentheses): tcpdump 'gateway snup and (port ftp or ftp-data)' To print traffic neither sourced from nor destined for local hosts (if you gateway to one other net, this stuff should never make it onto your local net). tcpdump ip and not net localnet To print the start and end packets (the SYN and FIN packets) of each TCP conversation that involves a non-local host. tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet' To print all IPv4 HTTP packets to and from port 80, i.e. print only packets that contain data, not, for example, SYN and FIN packets and ACK-only packets. (IPv6 is left as an exercise for the reader.) tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' To print IP packets longer than 576 bytes sent through gateway snup: tcpdump 'gateway snup and ip[2:2] > 576' To print IP broadcast or multicast packets that were not sent via Ethernet broadcast or multicast: tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' To print all ICMP packets that are not echo requests/replies (i.e., not ping packets): tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
Telnet Login 시 TCPDump 결과 계정 : wishfree의 경우
Telnet Login 시 TCPDump 결과 패스워드 : qwer1234의 경우
2. Fragrouter 받은 패킷을 릴레이해주기 위한 도구다. 스니핑을 하거나 세션을 가로채었을 때 공격자에게 온 패킷을 정상적으로 전달해주려면 패킷 릴레이가 반드시 필요하다. 공격대상의 세션이 끊어지면 계속 사용할 수 없게 되므로 공격자 역시 스니핑을 계속할 수는 없다. Fragrouter 설치하기 Root# ./configure Root# make
3. DSniff DSniff는 스니핑을 위한 자동화 도구 스니핑을 위한 다양한 툴이 패키지화 됨 SSL과 같은 암호화를 쓰는 통신이 안전하다고 생각하나, DSniff는 이렇게 암호화된 계정과 패스워드까지 읽어내는 능력이 있음 DSniff가 읽어낼 수 있는 패킷: ftp, telnet, http, pop, nntp, imap, snmp, ldap, rlogin, rip, ospf, pptp, ms-chap, nfs, yp/nis+, socks, x11, cvs, IRC, ATM, ICQ, PostageSQL, Citrix ICA, Symantec pcAnywhere, M.S. SQL, auth, info
DSniff 설치 시 설치되는 툴 툴 기 능 filesnarf NFS 트래픽에서 스니프한 파일을 현재 디렉토리에 저장한다. 기 능 filesnarf NFS 트래픽에서 스니프한 파일을 현재 디렉토리에 저장한다. macof 스위치를 허브와 같이 작동하게 하기 위하여 임의의 MAC 주소로 스위치의 MAC 테이블을 오버플로우(Overflow)시킨다. mailsnarf SNMP와 POP 을 스니프하여 이메일을 볼 수 있게 해준다. msgsnarf 채팅 메시지를 스니핑한다. tcpkill 탐지할 수 있는 TCP 세션을 모두 끊는다. tcpnice ICMP source quench 메시지를 보내 특정 TCP 연결을 느리게 만든다. 속도가 빠른 네트워크에서 스니프할 때 arpspoof ARP 스푸핑 공격을 실행한다. dnsspoof DNS 스푸핑 공격을 실행한다. urlsnarf CLF(Common Log Format)에서 HTTP 트래픽을 스니핑하여 선택된 URL을 알려준다.
DSniff를 이용하여 여러 가지 공격해보기 Root# ./confiugre Root# make Root# make install
Dsniff를 이용한 패스워드 스니핑 Root# dsniff
Tcpkill을 이용한 세션 끊기 R(eset) 패킷을 보내 tcp 세션을 끊는다 Root# tcpkill
Tcpnice를 이용한 트래픽 속도 느리게 만들기 탐지된 연결에 수신 버퍼의 크기가 8임을 송신자에게 알려, 송신자의 패킷전송속도를 느리게 만든다. Root# tcpnice
URLSNARF를 이용한 웹 서핑 감시 인터넷 사용자가 접속한 서버와 시간 등의 정보를 볼 수 있다. Root# urlsnarf
MAILSNARF를 메일 스니핑 sendmail 등으로 메일을 보내면 그 메일을 가로채서 내용을 읽을 수 있다. Root# mailsnarf
MSGSNARF를 이용한 메신저 통신 내용 스니핑 MSN 메신저로 얘기하는 내용를 가로채서 스니핑한다. Root# msgsnarf
4. Sniffer Pro (Window) 윈도우에서는 프러미스큐어스 모드가 지원되지 않음 WinPCAP과 같은 라이브러리를 이용해서 스니핑이 가능 윈도우 스니퍼는 뛰어난 GUI(Graphic User Interface)를 이용한 네트워크 상태를 점검하거나 패킷의 통계를 내기 위한 목적으로 많이 활용.
4. 스위칭 환경에서의 스니핑 Switch : store frames, check the port, and forward to only destination, while Hub copies them to all ports. 스니퍼를 저지하는 치명적인 장비 ARP Spoofing 을 통한 Sniffing ICMP redirect 를 이용한 Sniffing
1. ARP 스푸핑, ARP/ICMP 리다이렉트 ARP 리다이렉트 ARP 리다이렉트 공격은 2계층에서 실시 공격은 위조된 ARP reply 패킷을 보내는 방법 자신의 MAC 주소가 라우터라며 브로드캐스트를 주기적으로 하는 것 ARP 스푸핑는 호스트 대 호스트 공격 ARP 리다이렉트는 랜의 모든 호스트 대 라우터라는 것 말고는 큰 차이점이 없음 ARP 스푸핑에서와 마찬가지로 공격자 자신만은 원래 라우터의 MAC 주소를 알고 있어야 하며 받은 모든 패킷은 다시 라우터로 릴레이해 주어야만 함.
ICMP 리다이렉트 배경 : 보통의 네트워크는 라우터나 게이트웨이가 하나다. 하나의 라우터로 네트워크 트래픽을 감당할 수 없을 때? 라우터나 게이트웨이를 두 개 이상 운영해서 로드밸런싱(Load balancing)을 유지 방법: 시스템의 라우팅 테이블에 라우팅 엔트리를 하나 더 넣어주는 방법도 있으나 ICMP 리다이렉트를 사용. ICMP 공격은 이러한 경우를 강제적으로 만들어주게 되어 발생 공격자가 네트워크에 존재하는 또 다른 라우터 임을 각 호스트에게 알리게 함 ARP 스푸핑과 다른 점은 ARP 스푸핑은 모든 트래픽에 대한 리다이렉트를 가능하게 하지만, ICMP 리다이렉트는 특정한 목적지 주소를 가진 패킷만을 리다이렉트 함.
ICMP 리다이렉트 동작 원리 1/2
ICMP 리다이렉트 동작 원리 2/2 1. 호스트 A가 원격의 호스트 B로 데이터를 보낼 때 라우터 A가 디폴트(Default) 라우터로 설정되어 있기 때문에 호스트 A는 원격으로 보내는 모든 패킷을 라우터 A로 보낸다. 2. 라우터 A는 호스트 B로 보내는 패킷을 수신하고 라우팅 테이블을 검색하여 라우터 B가 호스트 B에 도달하는데, 좀더 효율적으로 호스트 A가 보낸 패킷을 라우터 B로 보낸다. 3. 라우터 A는 다시 호스트 A가 호스트 B로 향하는 패킷을 자신에게 전달하지 않도록 호스트 A에게 ICMP 리다이렉트 패킷을 보내 호스트 A가 호스트 B로 보내는 패킷이 라우터 B로 바로 향하도록 한다. 4. 호스트 A는 라우팅 테이블에 호스트 B에 대한 값을 추가하고, 호스트 B로 보내는 패킷은 라우터 B로 전달한다.
ICMP 리다이렉트를 이용해서 스니핑 해보기 공격 예제 그림
ICMP Redirect 공격도구 컴파일 패킷 릴레이 툴 실행 Root# gcc –o icmp_redir icmp_redir.c 패킷 릴레이 툴 실행 fragrouter -B1
ICMP 공격의 실행 ICMP 리다이렉트 공격 시 TCP Dump Root# ./icmp_redir 192.168.1.1 192.168.1.143 216.239.37.99 192.168.1.142 ICMP 리다이렉트 공격 시 TCP Dump Root# tcpdump -vvv host 192.168.1.143
ICMP Redirect로 변환된 라우팅 테이블을 확인 Root# route -C
5. 스니핑 공격의 대응책 1. 스니퍼 탐지 스니핑 공격은 네트워크에 별다른 이상 현상을 만들지 않기 때문에 사용자가 이를 인지하는 것이 어렵다. 네트워크 관리자나 보안 관리자라면 주기적으로 네트워크에 스니퍼가 있는지 탐색이 필요함 스니퍼에 대한 탐색은 기본적으로 스니퍼가 프러미스큐어스 모드에서 작동한다는 것에서 시작. 방법: Ping, ARP
■ Ping을 이용한 방법 대부분의 스니퍼는 일반 TCP/IP에서 동작하기 때문에 request를 받으면 response를 전달한다. 의심이 가는 호스트에 ping을 보내고 , 네트워크에 존재하지 않는 MAC 주소를 위장하여 보냄. 만약 ICMP Echo reply를 받으면 해당 호스트가 스니핑을 하고 있는 것임 왜냐하면 존재하지 않는 MAC 주소를 사용했기 때문에 스니핑을 하지 않는 호스트는 누구도 ping request를 볼 수 없는 것이 정상. ■ ARP를 이용하는 방법 ping과 유사한 방법으로 위조된 ARP request를 보냈을 때 ARP response가 오면 프러미스큐어스 모드로 설정되어 있는 것임.
■ 유인(Decoy)방법 스니핑 공격을 하는 공격자의 주요 목적은 계정과 패스워드의 획득 보안 관리자는 이점을 이용하여 계속적으로 가짜 계정과 패스워드를 네트워크에 뿌림. 공격자는 이 계정과 패스워드를 이용하여 접속을 시도하고 이 접속을 시도하는 시스템을 탐지함으로써 스니퍼를 탐지할 수 있다. ■ ARP watch 초기에 MAC 주소와 IP 주소의 매칭 값을 저장하고 ARP 트래픽을 모니터링하여 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 도구다.
스니퍼를 찾아보기 Sentinel를 이용하여 스니퍼를 탐지한다. ./sentinel -e -t 192.168.1.144
스니퍼가 설치되어 있는 경우, tcpdump의 결과