400 likes | 677 Views
스니핑. 스니핑 스니핑 공격 툴 스위칭 환경에서의 스니핑 스니핑 공격의 대응책. 스니핑이란 ‘ sniff’ 는 사전에서 찾아보면 ’코를 킁킁거리다‘라는 의미다 . 코를 킁킁거리듯이 정보를 데이터 속에서 찾는 것이라고 생각하면 쉽다 . 스니핑 공격은 막는 것도 어려우며 , 탐지 역시 쉽지 않다 . 스니핑 공격을 수동적 (Passive) 공격이라고도 말하는데 , 그 이유는 공격 시 툴을 설치해놓은 상태로 충분하기 때문이다 .
E N D
스니핑 • 스니핑 • 스니핑 공격 툴 • 스위칭 환경에서의 스니핑 • 스니핑 공격의 대응책 한빛미디어(주)
스니핑이란 • ‘sniff’는 사전에서 찾아보면 ’코를 킁킁거리다‘라는 의미다. 코를 킁킁거리듯이 정보를 데이터 속에서 찾는 것이라고 생각하면 쉽다. • 스니핑 공격은 막는 것도 어려우며, 탐지 역시 쉽지 않다. 스니핑 공격을 수동적(Passive) 공격이라고도 말하는데, 그 이유는 공격 시 툴을 설치해놓은 상태로 충분하기 때문이다. • 랜에서의 스니핑은 프러미스큐어스(Promiscuous) 모드에서 작동한다. 랜 카드는 설정된 IP 주소 값과 고유한 MAC(Media Access Control) 주소 값을 가지고 있으며 자신의 랜 카드에 들어오는 프로토콜 형식에 따른 전기적 신호의 헤더 부분, 즉 주소 값을 인식하고 자신의 버퍼에 저장할지를 결정한다. 그러나 스니핑은 자신이 가지지 말아야 할 정보까지 모두 받아들이는 것이다. 이렇듯 자신의 주소 값을 무시하고 모든 패킷을 받아들이는 상태를 프러미스큐어스 모드라고 한다.
인터페이스를 프러미스큐어스 모드로 전환하기 Root# ifconfig eth0 promisc [그림 14-2] 프러미스큐어스 모드의 설정
TCP Dump • 가장 일반적으로 쓰이는 스니핑 도구다. 불법적인 느낌, 해킹이라는 느낌보다는 관리자적인 느낌이 강한 스니퍼다. 처음부터 스니핑을 위한 도구로 개발된 것이 아니라 네트워크 관리를 위해 개발된 툴이다. Snort라는 IDS의 기반 프로그램이기도 하다. • TCP Dump는 법적 효력이 있다. 법적 효력을 발휘하려면 법원에서 인정하는 규약에 따라야 한다. 하지만 대부분의 컴퓨터로 취득한 자료는 재판 과정에서 직접적인 증거로 인정 받지 못한다는 사실을 알아둬야 한다. 그 이유는 위조나 변조는 매우 쉽고, 그 위조와 변조 여부를 알아내는 것이 너무 어렵기 때문이다.
TCP Dump를 이용해서 계정과 패스워드 스니핑하기 • TCP Dump의 설치 • Root# ./configure • Root# make • Root# make install [그림 14-5] TCP Dump make install
Telnet Login 시 TCP Dump 결과 • 계정 : wishfree의 경우 [그림 14-7] 원격 텔넷 로그인 시 계정 Dump
Telnet Login 시 TCP Dump 결과 • 패스워드 : qwer1234의 경우 [그림 14-8] 원격 텔넷 로그인 시 패스워드 Dump
Fragrouter • 받은 패킷을 릴레이해주기 위한 도구다. 스니핑을 하거나 세션을 가로채었을 때 공격자에게 온 패킷을 정상적으로 전달해주려면 패킷 릴레이가 반드시 필요하다. 공격대상의 세션이 끊어지면 계속 사용할 수 없게 되므로 공격자 역시 스니핑을 계속할 수는 없다. • Fragrouter 설치하기 • Root# ./configure • Root# make [그림 14-10] Fragrouter make
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를 이용하여 여러 가지 공격해보기 • Dsniff의 설치 • Root# ./confiugre • Root# make • Root# make install [그림 14-13] DSniff make instal
Dsniff를 이용한 패스워드 스니핑 Root# dsniff [그림 14-14] Dsniff의 실행
Tcpkill을 이용한 세션 끊기 • R(eset) 패킷을 보내 tcp 세션을 끊는다 Root# tcpkill [그림 14-15] tcpkill 실행
Tcpnice를 이용한 트래픽 속도 느리게 만들기 • 탐지된 연결에 수신 버퍼의 크기를 8로 알려 송신자의 송신 속도를 느리게 만든다. Root# tcpnice [그림 14-16] tcpnice 실행
URLSNARF를 이용한 웹 서핑 감시 • 인터넷 사용자가 접속한 서버와 시간 등의 정보를 볼 수 있다 Root# urlsnarf [그림 14-17] urlsnarf 실행
MAILSNARF를 메일 스니핑 • sendmail 등으로 메일을 보내면 그 메일을 가로채서 내용을 읽을 수 있다. Root# mailsnarf [그림 14-20] mailsnarf 실행
MSGSNARF를 이용한 메신저 통신 내용 스니핑 • MSN 메신저로 얘기하는 내용를 가로채서 스니핑한다. Root# msgsnarf [그림 14-21] magsnarf 실행
Sniffer Pro (Window) • 윈도우에서는 프러미스큐어스 모드가 지원되지 않는다. 따라서 기본적으로 스니핑이 지원되지 않으나, WinPCAP과 같은 라이브러리를 이용해서 스니핑이 가능하다. 윈도우 스니퍼는 뛰어난 GUI(Graphic User Interface)를 이용한 네트워크 상태를 점검하거나 패킷의 통계를 내기 위한 목적으로 많이 쓰인다. [그림 14-22] Sniffer Pro를 이용한 프로토콜 분석
스위칭 환경에서의 스니핑 • 스위칭 환경에서는 기본적으로 스니핑이 어렵다. 스위치는 2계층 장비다. 2계층 네트워크에서는 원래 허브가 쓰였다. 허브는 랜에서 들어오는 모든 신호를 복사해서 모든 포트에 다시 뿌려주는 역할을 한다. 따라서 브로드캐스트(Broadcast) 패킷인지 유니캐스트(Unicast) 패킷인지에 상관없이 모든 포트에 보내주므로 스니퍼에게 스니핑을 이용한 공격은 간단하다. • 그러나 스위치는 포트별로 MAC 주소 값이 기록하여 브로드캐스트 패킷을 제외한 모든 패킷은 그 패킷이 목적하는 장비에만 보낸다. 스위치는 스니핑을 막기 위해 만들어진 장비는 아니지만 결과적으로 스니퍼를 저지하는 치명적인 장비가 되었다.
ARP 스푸핑, ARP/ICMP 리다이렉트 • ARP 리다이렉트 • ARP 리다이렉트 공격은 기본적으로 2계층에서 실시된다. 공격은 위조된 ARP reply 패킷을 보내는 방법을 사용한다. 자신의 MAC 주소가 라우터라며 브로드캐스트를 주기적으로 하는 것이다. • ARP 스푸핑는 호스트 대 호스트 공격이며, ARP 리다이렉트는 랜의 모든 호스트 대 라우터라는 것 말고는 큰 차이점이 없다. ARP 스푸핑에서와 마찬가지로 공격자 자신만은 원래 라우터의 MAC 주소를 알고 있어야 하며 받은 모든 패킷은 다시 라우터로 릴레이해 주어야만 한다.
ICMP 리다이렉트 • 보통의 네트워크는 라우터나 게이트웨이가 하나다. 하지만 하나의 라우터로 이를 감당할 수 없을 때는 어떻게 해야 할까 ? 라우터나 게이트웨이를 두 개 이상 운영해서 로드밸런싱(Load balancing)을 해야 할 것이다. 로드밸런싱을 하는 방법은 다양하다. 시스템의 라우팅 테이블에 라우팅 엔트리를 하나 더 넣어주는 방법도 있으나 ICMP 리다이렉트를 사용하기도 한다. • ICMP 공격은 이러한 경우를 강제적으로 만들어주게 된다. 공격자가 네트워크에 존재하는 또다른 라우터임을 각 호스트에게 알리게 된다. ARP 스푸핑과 다른 점은 ARP 스푸핑은 모든 트래픽에 대한 리다이렉트를 가능하게 하지만, ICMP 리다이렉트는 특정한 목적지 주소를 가진 패킷만을 리다이렉트하게 된다.
ICMP 리다이렉트 동작 원리 1/2 [그림 14-27] ICMP Redirect 개념도
ICMP 리다이렉트 동작 원리 1/2 • 호스트 A가 원격의 호스트 B로 데이터를 보낼 때 라우터 A가 디폴트(Default) 라우터로 설정되어 있기 때문에 호스트 A는 원격으로 보내는 모든 패킷을 라우터 A로 보낸다. • 라우터 A는 호스트 B로 보내는 패킷을 수신하고 라우팅 테이블을 검색하여 라우터 B가 호스트 B에 도달하는데, 좀더 효율적으로 호스트 A가 보낸 패킷을 라우터 B로 보낸다. • 라우터 A는 다시 호스트 A가 호스트 B로 향하는 패킷을 자신에게 전달하지 않도록 호스트 A에게 ICMP 리다이렉트 패킷을 보내 호스트 A가 호스트 B로 보내는 패킷이 라우터 B로 바로 향하도록 한다 • 호스트 A는 라우팅 테이블에 호스트 B에 대한 값을 추가하고, 호스트 B로 보내는 패킷은 라우터 B로 전달한다.
ICMP 리다이렉트를 이용해서 스니핑 해보기 • 공격 예제 그림 [그림 14-28] ICMP Redirect 공격도
ICMP Redirect 공격도구 컴파일 • Root# gcc –o icmp_redir icmp_redir.c • 패킷 릴레이 툴 실행 • fragrouter -B1 [그림 14-29] ICMP Redirect 툴의 컴파일과 실행 [그림 14-30] 패킷 릴레이 툴 실행
ICMP 공격의 실행 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 [그림 14-31] ICMP Redirect 공격 [그림 14-32] 공격 대상의 TCP Dump
ICMP Redirect로 변환된 라우팅 테이블을 확인 Root# route -C [그림 14-33] 공격 대상의 라우팅 테이블
스위치 재밍(MACOF) • 스위치 재밍(Switch Jamming)은 스위치를 직접 공격한다. • 해킹 공격 중에 버퍼 오버플로우(Buffer Overflow) 공격이 있다. 버퍼 오버플로우 공격은 버퍼를 공격해서 시스템을 다운시키기거나 오작동을 유발하기도 하며, 루트(Root) 권한을 얻어내는 데 쓰이기도 한다. 스위치 역시 하나의 시스템으로 생각할 수 있다. CPU와 같은 연산자가 있으며 MAC 테이블을 저장하기 위한 저장 공간이 있다. • 스위치 재밍은 MAC 테이블을 위한 캐시 공간에 버퍼 오버플로우 공격을 실시하는 것이라고 생각해도 무리가 없다. MAC 테이블이 저장 용량을 넘으면 스위치는 원래의 기능을 잃게 되어 더미 허브와 똑같이 작동한다
macof로 스위치 재밍시키기 • Root# macof • 공격 시 tcpdump [그림 14-35] macof의 TCP Dump
SPAN 포트 태핑(Tapping)) • SPAN(Switch Port Analyzer)은 포트 미러링(Port Mirroring)을 이용한 것이다. 포트 미러링이란 각 포트에 전송되는 데이터를 미러링하고 있는 포트에도 똑같이 보내주는 것이다. 주로 IDS를 설치할 때 많이 사용한다. • SPAN은 주로 시스코에서 쓰는 용어이며, 다른 벤더들은 ‘Port Roving’이라 부르기도 한다. • SPAN은 상당히 많은 문제점을 가지고 있어 효과적인 모니터링을 하는 데 많은 어려움이 있다. 이를 해결할 수 있는 방법이 태핑이다. 허브와 같이 포트를 모니터링하기 위한 장비로서 ‘Splitter’라고 부르기도 한다. • SPAN 포트와 태핑 장비의 구입에 어려움이 있다면 IDS를 설치하고자 하는 곳에 허브를 설치하는 것도 하나의 방법일 수 있다. 그러나 중간에 허브를 설치함으로써 네트워크가 느려지는 것은 감수해야 할 것이다.
스니퍼 탐지 • 스니핑 공격은 스니퍼를 설치한 이후에는 매우 쉬우며 네트워크에 별다른 이상 현상을 만들지 않기 때문에 사용자가 이를 인지하는 것이 어렵다. 따라서 네트워크 관리자나 보안 관리자라면 주기적으로 네트워크에 스니퍼가 있는지 탐색해 봐야 한다. • 스니퍼에 대한 탐색은 기본적으로 스니퍼가 프러미스큐어스 모드에서 작동한다는 것에서 시작한다.
스니퍼 탐지 • Ping을 이용한 방법 • 대부분의 스니퍼는 일반 TCP/IP에서 동작하기 때문에 request를 받으면 response를 전달한다. 이를 이용한 방법은 의심이 가는 호스트에 ping을 보내는데, 네트워크에 존재하지 않는 MAC 주소를 위장하여 보낸다. 만약 ICMP Echo reply를 받으면 해당 호스트가 스니핑을 하고 있는 것이다. 왜냐하면 존재하지 않는 MAC 주소를 사용했기 때문에 스니핑을 하지 않는 호스트는 누구도 ping request를 볼 수 없는 것이 정상이다. • ARP를 이용하는 방법 • ping과 유사한 방법으로 위조된 ARP request를 보냈을 때 ARP response가 오면 프러미스큐어스 모드로 설정되어 있는 것이다. • DNS 방법 • 일반적으로 스니핑 프로그램은 사용자의 편의를 위하여 스니핑한 시스템의 IP 주소를 Inverse-DNS lookup을 수행한다. 이 방법은 원격과 로컬에서 모두 사용할 수 있는 방법으로 테스트 대상 네트워크로 Ping Sweep을 보내고 들어오는 Inverse-DNS lookup을 감시하여 스니퍼를 탐지한다.
스니퍼 탐지 • 유인(Decoy)방법 • 스니핑 공격을 하는 공격자의 주요 목적은 계정과 패스워드의 획득에 있다. 보안 관리자는 이점을 이용하여 계속적으로 가짜 계정과 패스워드를 네트워크에 뿌린다. 공격자는 이 계정과 패스워드를 이용하여 접속을 시도하고 이 접속을 시도하는 시스템을 탐지함으로써 스니퍼를 탐지할 수 있다. • ARP watch • 초기에 MAC 주소와 IP 주소의 매칭 값을 저장하고 ARP 트래픽을 모니터링하여 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 도구다.
스니퍼를 찾아보기 • Sentinel를 이용하여 스니퍼를 탐지한다. ./sentinel -e -t 192.168.1.144 [그림 14-37] ping을 이용한 스니퍼 탐지
스니퍼가 설치되어 있는 경우, tcpdump의 결과 • 스니퍼가 설치되어 있지 않은 경우, tcpdump의 결과 [그림 14-38] 스니퍼가 설치된 시스템의 TCP Dump [그림 14-39] 스니퍼가 설치되지 않은 시스템의 TCP Dump
암호화 • SSL(Security Sockets Layer) • 암호화된 웹 서핑을 가능하게 해준다. SSL은 많은 웹 서버 브라우저에 구현되어 있으며 전자상거래 사이트에 접속하여 물건을 구매할 때, 신용카드 정보 등을 보낼 때 사용한다. • SSL은 40비트와 128비트 두 가지 암호화 키가 있으며 현재 대부분의 우리나라 금융거래 사이트는 40비트 암호화 방법을 쓰고 있다. • SSH(Secure Shell) • SSH는 telnet과 같은 서비스의 암호화를 위해서 사용된다. 그러나 DSniff를 이용하여 공격하면 SSH를 이용한다고 할지라도 공격당할 수 있다.
암호화 • VPN (Virtual Private Network) • VPN은 원래 T1과 같은 사설 네트워크를 설치하는데, 고가의 비용이 들기 때문에 하나의 라인을 여러 회사가 공유하여 비용을 절감하고자 개발되었다. 그러나 전송되는 데이터들이 각 회사의 사내 정보이며 기밀성이 요구되어 VPN은 자연스레 암호화된 트래픽을 제공한다.
암호화 • PGP(Pretty Good Privacy)와 PEM(Pricacy Enhanced Mail), S/MIME • PGP와 PEM, S/MIME는 모두 이메일을 전송할 때의 암호화 방법이다. • PGP는 내용에 대한 암호화 방법은 IDEA를 쓰며 IDEA 키와 전자서명을 암호화하는데, RSA(Rivest, Shamir, Addleman) 알고리즘을 쓴다. • 기본적으로 PGP는 'Web of Trust'의 개념을 쓴다. 각각의 PGP 사용자가 서로에 대한 신뢰도를 가지며 서로가 서로에 대한 인증을 해주는 제 3자가 되는 것이다 • PEM은 PGP와는 달리 공개키 암호화 표준(PKCS:Public Key Cryptography Standards)을 따르며, CA(Certificate Authority)라는 공인된 인증기관에서 키를 관리한다. • 데이터 암호화에는 DES-EDE, 키를 위한 암호화 알고리즘은 RSA, 전자인증을 위한 해시 함수는 MD2, MD5를 쓴다. • S/MIME은 이메일 표준인 MIME 형식에 암호화 서비스만을 추가한 것이다. 역시 PKCS를 기반으로 만들어져 있으며, 디지털 인증에 X.509를 쓴다.