본문 바로가기

Security/Network Hacking

스니핑(Sniffing) - Part 1

첨부파일



스니핑(Sniffing)

- Sniffing이란 단어의 사전적 의미는 ‘코를 킁킁거리다’, ‘냄새를 맡다’ 등의 뜻이 있다.

- 사전적인 의미와 같이 해킹 기법으로서 스니핑은 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 엿듣는 것을 의미한다.

- 간단히 말하여 네트워크 트래픽을 도청(eavesdropping)하는 과정을 스니핑이라고 할 수 있다.

- 이런 스니핑을 할 수 있도록 하는 도구를 스니퍼(Sniffer)라고 하며 스니퍼를 설치하는 과정은 전화기 도청 장치를 설치하는 과정에 비유될 수 있다.


- TCP/IP 프로토콜은 학술적인 용도로 인터넷이 시작되기 이전부터 설계된 프로토콜이기 때문에 보안은 크게 고려하지 않고 시작되었다.

- 대표적으로 패킷에 대한 암호화, 인증 등을 고려하지 않았기 때문에 데이터 통신의 보안의 기본 요소 중 기밀성, 무결성 등을 보장할 수 없었다.

- 특히 스니핑은 보안의 기본 요소 중 기밀성을 해치는 공격 방법이다.


- 이러한 스니핑 공격은 웹호스팅, 인터넷 데이터 센터(IDC) 등의 업체가 같은 네트워크를 공유하는 환경에서는 매우 위협적인 공격이 될 수 있다.

- 하나의 시스템이 공격당하게 되면 그 시스템을 이용하는 네트워크를 도청하게 되고, 다른 시스템의 User ID/Password를 알아내게 된다.

- 비록 스위칭 환경의 네트워크를 구축하여 스니핑을 어렵게 할 수는 있지만 이를 우회할 수 있는 많은 공격방법이 존재하고 있다.

 

※ 내용출처 : http://exerceo.egloos.com/

 

 

프러미스큐어스 모드(Promiscuous Mode)를 통한 스니핑

- 스니핑을 위해 랜카드의 모드를 변경하는 것으로서, 일단 프러미스큐어스 모드를 알기위해 일반적으니 랜 카드의 동작을 알아야 한다.

 

일반적인 랜카드의 동작과정

1) 일반적인 랜 카드는 모든 패킷은 2계층 정보인 MAC주소와 3계층 정보인 IP주소를 가지고 있다.

2) 패킷이 네트워크에 돌아다닐 때, 각 PC는 자신에게 제대로 전달된 것인지 여부를 패킷에 기록된 MAC주소 IP주소를 통해 확인한다.

3) 정상적인 경우라면 자신의 네트워크 카드로 흘려 들어온 패킷이 PC의 IP주소와 MAC주소와 일치하면 패킷을 분석하여 OS에 패킷을 전달한다.

4) 만약에 IP주소와 MAC주소가 일치하지 않는 경우에는 패킷을 폐기한다.

 

- 일반적인 랜카드의 동작과는 달리 프러미시큐어스 모드는 모든 패킷을 버리지 않는다.

- 스니핑에 있어서 버려지는 패킷까지도 모두 읽어야 하므로 이 모드는 스니퍼에 있어 매우 필요한 모드이다.

- 리눅스나 유닉스에서는 설정이 가능하나, 윈도우에서는 설정이 불가능하며, 사용하기 위해서 별도로 드라이버의 설치가 필요하다.

 

 

 [실습] 리눅스(페도라 12)를 사용하여, 랜 카드를 프러미스큐어스 모드로 전환하여 보시오.

- 라눅스의 root 계정으로 변경하여, ifconfig 명령어를 이용하여 랜카드를 지정하고 promisc 옵션을 사용하여 변경하도록 한다.

- 변경한 후의 차이점으로 RUNNING PROMISC로 변경되었음을 알 수 있다.

 

 

 

TCP DUMP

- TCP DUMP는 Lawrence Berkley Nation Lab의 Network Research Group에서 만든 것으로 네트워크의 패킷을 출력해주는 프로그램이다.

- 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들을 출력해 주는 프로그램이다.

- 주로 쓰임은 지정된 상대방 호스트로부터 들어오는 패킷을 체크하는 데 있다.

 

TCP Dump 사용법

1. 명령어 형식
#tcpdump [option] [expression]

 

2. 옵션
-c count  count 수만큼 패킷을 받음
-e  MAC 주소 형태로 출력
-F filename file에 expression을 입력
-i interface 특정 인터페이스 지정(기본: 가장 낮은 인터페이스)
-q  quickout (간결하게 표시)
-w filename Packet을 파일로 저장
-r filename 저장한 파일을 읽음
-t  timestamp 생략
-v  verbose (자세하게 표시)
-x  hex 값으로 표시
-X  hex와 ascii 값으로 표시

 

3. 표현
type: host, net, port
 ex) host ABC, net 192.168.10.0, port 80

direction: src, dst, src or dst, src and dst
protocol: ether, fddi, ip, ip6, arp, rarp, tcp, udp, icmp
 ex) ether src XXX
less size: size보다 작은 패킷만 검출
greater size: size보다 큰 패킷만 검출

 

 

 

[실습] 리눅스(페도라 12)를 이용하여 TCP DUMP를 설치하고, 텔넷에 접속하여 계정과 패스워드를 스니핑 하시오.

1. 먼저 tcpdump를 설치하고 tcp dump를 사용한다.

 

 2. 리눅스에서 텔넷이 가능하도록 텔넷 서버를 설치한다.

 

i 3. /etc/xinetd.d/telnet 파일에서 "disable = no"를 설정하여 telnet을 이용가능하도록 하고, "service xinetd start"를 하여 서비스를 시작한다.

 

 4.XP 컴퓨터에서 텔넷에 접속하여 본다.

 

 

 5. 패킷들의 헤더들을 출력하여 준다.

 

 

 

 

Fragrouter

- 스니핑 과정에 있어 받은 패킷을 릴레이해주기 위한 툴이며, 보조 도구로서의 성격이 강하다.

- 스니핑을 하거나 세션을 가로채었을때 공격자에게 온 패킷을 정상적으로 전달해주려면 패킷 릴레이가 반드시 필요하다.

- 공격대상의 세션이 끊어지면 계속 사용할 수 없게 되므로 공격자 역시 스니핑을 계속할 수 없다

- 따라서 fragrouter는 스니핑한 세션을 마치 정상적인 것처럼 돌려주기 위해 필요한 것이다.

 

 

[실습] fragrouter를 설치하고, 실행하도록 하시오.

1. 준비 파일로서 "fragrouter-1.6.tar.gz"가 필요하고, yum명령어를 통해 libnet, libpcap, gcc가 필요하다.

 

2. tar 명령을 이용하여 압축을 풀도록 한다.

 

3. 설치과정에 있어 컴파일이 필요하므로 gcc를 설치하도록 한다.

 

4. 해당 파일의 디렉토리로 이동 후 "./configure"하여 configure를 실행한다.

 

5. 마지막으로 "make"를 입력하여 실행코드를 생성시키고 설치를 완료한다.

 

6. "./fragrouter"하여 fragrouter를 실행한다. 보통 실행가능한 옵션으로 "-B1"을 사용한다.

 

 

 

 

DSniff

- Dsniff는 스니핑을 위한 자동화 툴이다. 이것은 단순한 스니핑 툴이 아니라 스니핑을 위한 다양한 툴이 패키지처럼 묶어져 있다.

- SSL 과 같은 암호화를 쓰는 통신이 안전하다고 생각하나, Dsniff는 이렇게 암호화된 계정과 패스워드까지 읽어내는 능력을 하고 있다

 

Dsniff가 읽어낼 수 있는 패킷

ftp, telnet, http, pop, nntp, imap, snmp, idap, rlogin, rip, ospf, pptp,

ms-chap, nts, yp/nis+, socks , x11, cvs, IRC, ATM, ICQ, PostageSQL, MS SQL등

 

Dsniff에 포함되어 있는 도구들

기능

filesnarf

NFS 트래픽에서 스니핑한 파일을 현재 디렉토리에 저장한다.

macof

스위치 환경에서 스위치가 허브와 같이 작동하도록 위하여 임의의 MAC 주소로 스위치의 MAC 테이블을 오버플로우 시킨다.

mailsnarf

SNMP와 POP 트래픽을 스니핑하여 이메일을 볼 수 있게 해준다스니핑한 이메일은 mail 클라이언트에서 볼 수 있다.

msgsnatf

AOL 메신저, ICQ 2000, IRC, Yahoo 메신저 등의 채팅메시지를 선택해서 스니핑 한다.

tcpkill

특정 인터페이스를 통해 탐지할 수 있는 TCP 세션을 모두 끊는다.

tcpnice

ICMP source quench 메시지를 보내 특정 TCP 연결을 느리게 만든다.

속도가 빠른 네트워크에서 스니핑 할 때 유용하다.

arpspoof

ARP 스푸핑 공격을 실행한다.

dnsspoof

DNS 스푸핑 공격을 실행한다..

urlsnarf

CLF에서 HTTP 트래픽을 스니핑하여 선택된 URL을 알려준다.

 

 

 

[실습] DSniff를 설치하여 다양한 공격을 시도해보시오.

"yum install dsniff" 명령어를 사용하여 dsniff를 설치한다.

 

 

dsniff를 이용하여 텔넷 패스워드 스니핑하기

1. dsniff를 활성화 한다.

 

2. 다른 컴퓨터에서 텔넷에 접속한 후 끊어본다.

 

 

3. 계정과 패스워드가 명시되어 있음을 확인할 수 있다.

 

 

 

dsniff를 이용하여 웹 세션 스니핑하기

- dsniff의 도구 중 urlsnarf를 이용하면 인터넷 사용자가 접속한 서버와 접속하여 입력한 내용 등의 정보를 볼 수 있다.

 

1. 먼저 스니핑한 세션을 다시 보내기 위해 fragrouter를 활성화 시키도록 한다.

 

 

2. urlsnarf를 활성화 시켜 상대방이 인터넷 사용하는 정보를 볼 수 있다.

 

 

3. tcpkill 도구까지 사용하면 tcp를 사용못하게 하므로 공격지 컴퓨터가 TCP를 기반으로 사용하는 서비스를 사용할 수 없게 된다.

[출처] 스니핑(Sniffing) - Part 1|작성자 Stein

'Security > Network Hacking' 카테고리의 다른 글

스푸핑(Spoofing)  (0) 2012.07.13
스니핑(Sniffing) - Part 2  (0) 2012.07.13
목록화(Enumeration)  (0) 2012.07.13
풋프린팅(Footprinting)과 스캔(Scan)  (0) 2012.07.13
[무선해킹] 802.11 WPA 크랙  (0) 2012.07.12