TCP/IP 프로토콜이 설계 될때 datagram 자체가 전혀 암호화 하지 않고 전송되게 되어 있었습니다. 따라서, 네트웍 상을 이동하는 패킷들을 모아서 순서에 맞게 재조합을 하면 원래의 데이타를 얻을 수가 있죠.. 이러한 방법을 sniffing이라고 합니다. 킁킁거리다.. 라는 뜻을 가지구요..
이렇게 되면, 원격 호스트에서 접속시 아이디랑, 비번을 가로챌 수가 있겠죠? 이것은 이더넷 상에서 데이타를 여러호스트를 대상으로 소스 호스트에서 뿌려버립니다. 그럼.. 각 호스트들은 자신의 데이타가 아니면 그냥 흘려보내고, 자신의 데이타면 그것을 받아서 어떤 일을 하게 됩니다.
원래 시스템은 기본으로 자기것만 받도록 설정되어 있습니다. 그런데, 이 스니퍼를 돌리게 되면 자신의 시스템의 인터페이스가 열리고, 아무거나 받아들이게 되죠.. 이러한 모드를 promiscuous mode 라고 합니다. 만약 자신의 시스템이 promiscuous mode로 돌아간다면 스니퍼가 돌아가고 있다고 의심하심이....
보통 인터넷에서 많이 볼수 있는 스니퍼의 경우 telnet, ftp, rlogin, email 등의 처음 128byte를 잡아서 log 파일로 남김니다.
이런 스니퍼를 사용한 해킹의 경우 치사하지만 이것만큼 편하고 좋은 해킹툴 또한 구하기 힘들죠. 스니퍼를 해킹에 이용하지 말고 시스템 보안에 이용한다면 더 큰 행복이~
실제로 시스템에 스니터를 설치해 두었다가 제 홈디렉토리를 해킹한 사람을 잡은 적이 있습니다.
<방어는...> promiscuous mode인지 아닌지 검사하는 유틸이 있습니다. cpm(check promiscuous mode) 이라는 건데.. ftp://cert.org/pub/tools 에 가시면 구하실수 있습니다.
또한 rlogin이나, rsh 대신에 사용할 수 있는 ssh, slogin 이 있습니다. 이것은 패킷을 암호화 해서 전송하므로 sniffer에 잡혔다 하더라도 안전하겠죠.. 100% 안전하다고 할 수는 없습니다... 똑똑한 사람들 한테는...
그리고, S/Key라는 것이 있습니다. 이것은 원격 호스트로의 접속에 있어서 one time password를 생성해 줍니다. 때문에, sniffing에도 어느정도 대응할 수 있습니다. 로긴할 때마다 패스워드가 변경되고, 새로운 패스워드를 보여줍니다. 따라서 자신의 비번을 sniffing당했다 하더라고 바뀐 비번이니깐.. 상관없죠.. 문제는 매번 비번이 바뀜으로 자신의 비번을 잊어버릴 위험이...
마지막으로 sniffing 한 결과를 조금 보여드리죠.. 호스트명은 보여드릴수가 없네요..
참고로 이 제어는 오직 root 만이 할 수 있으며 promisc 설정은 ifconfig eth0 promisc 를 하면 되고 이 설정을 해제하는 방법은 ifconfig eth0 -promisc 입니다. 따라서 스니핑이 돌고 있다면 이미 관리자 권한을 빼앗긴 것이라 생각하셔도 무방합니다..
-- TCP/IP LOG -- TM: Thu Feb 15 11:21:16 --
PATH: xxxxx.xxxxx.ac.kr(1023) => xxxxx.xxxxx.ac.kr(rlogin)
STAT: Thu Feb 15 11:22:41, 163 pkts, 128 bytes [DATA LIMIT]
DATA: guest
: duck
: xterm/9600/7
: (255)(255)ss
: ^X
: P
: dhlfldkssud
: duck
: dhfldkssud
:
: tlen^H^H^H^H^Hsetenv d^H^Id^H^HDISPLAY ^[[D143.248.x.x:.^H0.0
:
:
: han&
: han&
--
-- TCP/IP LOG -- TM: Tue Feb 15 12:20:58 --
PATH: xxxxx.xxxxx.ac.kr(2857) => xxxx(telnet)
STAT: Tue Mar 5 10:21:13, 52 pkts, 65 bytes [TH_FIN]
DATA: (255)(253)^C(255)(251)^X(255)(250)^X
: VT100(255)(240)(255)(253)^A(255)(252)^Asljdflsdkjfl
: wlfjddl>
: exit(127)(127)(127)(127)(127)(127)(127)(127)exit
:
--
-- TCP/IP LOG -- TM: Tue Feb 15 13:01:36 --
PATH: xxxx.xxxxx.ac.kr(1953) => 143.248.x.x(ftp)
STAT: Sun Apr 14 17:02:13, 14 pkts, 49 bytes [TH_FIN]
DATA: USER mile
:
: PASS ladysun
:
: CWD backup
:
: NLST
:
: QUIT
:
--
이것이 바로 스니핑이 가능한 이유이지요...
결론적으로 가장 중요한 핵심 포인트는 "ARP" 와 "Broadcasting" 입니다. 이외 더 많은 내용들은 관련 서적이나 관련 사이트를 참고하시기 바랍니다..
펌d. From.
http://superuser.co.kr/superuserboard/view.html?id=547&code=security&start=210&position=
관련사이트에서 퍼옴