IP 추적은 간단하게 말해서 흔적을 찾는 겁니다. 인터넷에서 어떤 일을 할 경우엔 서로 쌍방향으로 신호를 보내게 됩니다. 보내는 쪽이 있으면 받는 쪽이 있겠죠. 서로 무얼 주고 받았다면 그 결과물이 남게 되겠지요. 이런 흔적으로 상대편의 위치를 찾아내는게 IP 추적입니다.
간단한 예로 게시판에 글을 적으면 우리 IP가 찍히는게 그 예입니다. 이 IP가 어느 위치에 있는 지 알아내는 건 그다지 어렵지 않습니다. IP 주소는 오직 하나이기 때문이죠. 이 IP 주소로 네트워크들의 컴퓨터들이 서로 구별이 되지요.
가장 간단한 방법은 hackerslab.org 의 service에 있는 IP추적을 이용하는 겁니다.
그 다음에 리눅스 콘솔에서 IP로 컴퓨터가 어디에 있는지 쉽게 알아내는 방법으로 whois가 있습니다. 만약 상대방이 게시판에 글을 적었는데 211.32.117.10 이라는 IP가 남겨졌다고 하면
간단하게 리눅스 박스에서 whois 211.32.117.10 를 쳐보지요.
$ whois 211.32.117.10
[whois.internic.net]
Whois Server Version 1.3
Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
Server Name: NS.DAUM.NET
IP Address: 211.32.117.10
Registrar: NETWORK SOLUTIONS, INC.
Whois Server: whois.networksolutions.com
Referral URL: www.networksolutions.com
>>> Last update of whois database: Fri, 2 Feb 2001 11:00:56 EST <<<
The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars.
whois 는 IP랑 도메인과 연관을 시켜주는 서비스 입니다. 211.32.117.10 이라는 IP가 ns.daum.net이라는 도메인이라는 걸 알려주죠. ns.daum.net이라는 곳에서 접속했다는 걸 알 수 있습니다.
사실 이렇게 자체적으로 도메인을 가진 IP는 얼마 되지 않습니다.
예로 IP 211.218.150.200 어디에 있는 서버일까요?
$ whois 211.218.150.200
[whois.internic.net]
Whois Server Version 1.3
Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
No match for "211.218.150.200".
>>> Last update of whois database: Fri, 2 Feb 2001 11:00:56 EST <<<
The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars.
whois 로는 별 도움을 얻을 수 없군요. 웹에서 이 IP를 치면 어디인지 쉽게 알 수 있겠지만 말이죠. ^^ 그리고 whois를 전문으로 하는 사이트 (예로 whois.nic.or.kr) 에서 더 많은 정보를 얻을 수 있습니다.
이 방법으로 IP가 어디인지 알 수가 없다면 traceroute 를 사용해 추측해 보면 됩니다.
$ /usr/sbin/traceroute 211.218.150.200
traceroute to 211.218.150.200 (211.218.150.200), 30 hops max, 38 byte packets
1 x.x.x.x (x.x.x.x) 8.799 ms 9.960 ms 10.858 ms
2 211.58.175.225 (211.58.175.225) 11.842 ms 23.641 ms 19.892 ms
3 211.117.192.34 (211.117.192.34) 12.809 ms 10.921 ms 9.078 ms
4 211.117.1.25 (211.117.1.25) 14.385 ms 15.058 ms 13.909 ms
5 211.117.39.142 (211.117.39.142) 32.019 ms 14.136 ms 13.756 ms
6 203.229.222.1 (203.229.222.1) 93.073 ms 107.784 ms 93.972 ms
7 gr-c1-ge5.kornet.net (211.219.91.65) 94.768 ms 87.626 ms 92.096 ms
8 211.196.155.2 (211.196.155.2) 89.505 ms 96.384 ms 105.102 ms
9 hh-idc1-ge6.kornet.net (211.217.32.221) 103.219 ms 95.641 ms 86.260 ms
10 168.126.109.182 (168.126.109.182) 88.619 ms 92.663 ms 92.674 ms
11 211.106.67.83 (211.106.67.83) 108.078 ms 85.741 ms 92.508 ms
12 * * *
13 * * *
중간에 무언가 걸러내는 가 보군요. -I 옵션을 사용해 봅니다.
$ /usr/sbin/traceroute -I 211.218.150.200
traceroute to 211.218.150.200 (211.218.150.200), 30 hops max, 38 byte packets
1 x.x.x.x (x.x.x.x) 12.765 ms 30.683 ms 9.534 ms
2 211.58.175.225 (211.58.175.225) 10.065 ms 8.946 ms 8.925 ms
3 211.117.192.34 (211.117.192.34) 10.364 ms 22.245 ms 9.269 ms
4 211.117.1.25 (211.117.1.25) 20.328 ms 15.228 ms 14.472 ms
5 211.117.39.142 (211.117.39.142) 14.790 ms 13.198 ms 15.038 ms
6 203.229.222.1 (203.229.222.1) 91.061 ms 93.605 ms 95.193 ms
7 gr-c1-ge5.kornet.net (211.219.91.65) 96.458 ms 95.254 ms 93.781 ms
8 211.196.155.2 (211.196.155.2) 95.133 ms 119.990 ms 97.555 ms
9 hh-idc1-ge6.kornet.net (211.217.32.221) 97.435 ms 112.716 ms 96.825 ms
10 168.126.109.182 (168.126.109.182) 96.314 ms 96.677 ms 96.645 ms
11 211.106.67.83 (211.106.67.83) 95.758 ms 99.449 ms 94.678 ms
12 211.218.150.200 (211.218.150.200) 120.251 ms 106.319 ms 107.516 ms
traceroute는 우리 서버에서 211.218.150.200 IP를 가진 서버까지 가는 경로 중간에 있는 라우터들의 IP를 출력해 줍니다. 이 IP를 차례로 분석해 보면 대략 어느 위치 쯤에 있는지 알 수 있겠지요.
visualroute 나 neotrace도 이런 기능에 각 IP들의 위치 정보들을 기억하고 있어서 그래픽 화면으로 보여주는 기능을 합니다. 기본 내용은 같습니다.
다른 방법의 IP 추적으로는 메일을 이용한 방법이 있습니다. 텍스트 형식으로 하는 곳에는 안 먹히겠지만 웹 메일을 읽고 있는 사람이 지금 어디에 있는지 알아내는 방법이 있습니다.
이건 조건이 있습니다. log를 볼 수 있는 서버가 있어야 됩니다. 즉 root 계정을 가지고 있어야 겠지요. 웹 데몬도 설치 되어 있어야 되구요. 그럼 준비가 끝납니다.
1)먼저 HTML 형식으로 작성한 메일 이건 자신의 서버에 있는 파일 하나를 링크하고 있어야 합니다. 그림 파일이면 충분하겠지요. 이 메일을 IP 추적하려는 사용자에게 보냅니다.
예로 이런 내용이
들어가겠지요.
2)사용자가 읽으면 그 위치의 IP가 log에 남습니다. 웹 로그는 양이 엄청나기 때문에 쉽게 검색할 수 있는 긴 파일 명을 쓰는게 찾기 가 쉽겠지요.