精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 计算机安全>>◇网络安全◇>>小技巧>>试一试从ip得出有用的信息。

主题:试一试从ip得出有用的信息。
发信人: qzy3()
整理人: starseacn(2001-09-21 21:24:48), 站内信件
如何追踪入侵者(一)  
◆黄力尧

入侵者的追踪(IntruderTracing) 
在区域网路上可能你听过所谓「广播模式」的资料发送方法,此种方法不指定收


信站,只要和此网路连结的所有网路设备皆为收信对象。但是这仅仅在区域网路


上能够实行,因为区域网路上的机器不多(和Internet比起来)。如果想是
Internet上有数千万的主机,根本就不可能实施资料广播(至於IPMulticast算是


一种限定式广播RestrictedBroadcast,唯有被指定的机器会收到,Internet上


其他电脑还是不会收到)。假设Internet上可以实施非限定广播,那随便一个人


发出广播讯息,全世界的电脑皆受其影响,岂不世界大乱?因此,任何区域网路


内的路由器或是类似网路设备都不会将自己区域网路内的广播讯息转送出去。万


一在WANPort收到广播讯息,也不会转进自己的LANPort中。 
而既然网路皆有发信站与收信站,用以标示资讯发送者与资讯接收者,除非对方


使用一些特殊的封包封装方式或是使用防火墙对外连线,那麽只要有人和你的主


机进行通讯(寄信或是telnet、ftp过来都算)你就应该会知道对方的位址,如果


对方用了防火墙来和你通讯,你最少也能够知道防火墙的位址。也正因为只要有


人和你连线,你就能知道对方的位址,那麽要不要知道对方位址只是要做不做的


问题而已。如果对方是透过一台UNIX主机和你连线,则你更可以透过ident查到


是谁和你连线的(ident在元月号专栏已经有作过讲解,不再赘述)。 
在实行TCP/IP通讯协定的电脑上,通常可以用netstat指令来看到目前连线的状


况。(各位读者可以在win95、Novell以及UNIX试试看(注一)),在下面的连线状


况中,netstat指令是在win95上实行的,可以看到目前自己机器(LocalAddress


处)的telnetport有一台主机workstation.variox.int由远端(ForeignAddress
处)连线进来并且配到1029号tcpport.而ccunix1主机也以ftpport连到
workstation.variox.int去。所有的连线状况看得一清二楚。(如A、B) 
A.在UNIX主机(ccunix1.variox.int)看netstat 
B.另一端在Windows95(workstation.variox.int)看netstat 
虽然是不同的作业系统,但netstat是不是长得很像呢? 
  
通信过程的纪录设定 
当然,如果你想要把网路连线纪录给记录下来,你可以用crontable定时去跑: 


netstat>>filename

但是UNIX系统早已考虑到这一个需求,因此在系统中有一个专职记录系统事件的


Daemon:syslogd,应该有很多读者都知道在UNIX系统的/var/adm下面有两个系统


纪录档案:syslog与messages,一个是一般系统的纪录,一个是核心的纪录。但


是这两个档案是从哪边来的,又要如何设定呢? 
系统的纪录基本上都是由syslogd(SystemKernelLogDaemon)来产生,而syslogd


的控制是由/etc/syslog.conf来做的。syslog.conf以两个栏位来决定要记录哪


些东西,以及记录到哪边去。下面是一个Linux系统所附上的syslog.conf档案,


这也是一个最标准的syslog.conf写法: 
格式就是这样子,第一栏写「在什麽情况下」以及「什麽程度」。然後用TAB键


跳下一栏继续写「符合条件以後要做什麽」。这个syslog.conf档案的作者很诚


实,告诉你只能用TAB来作各栏位之间的分隔(虽然看来好像他也不知道为什
麽)。 
第一栏包含了何种情况与程度,中间小数点分隔。另外,星号就代表了某一细项


中的所有选项。详细的设定方式如下: 
  
1.在什麽情况:各种不同的情况以下面的字串来决定。 
  
auth 关於系统安全与使用者认证方面 
cron 关於系统自动排程执行(CronTable)方面 
daemon 关於背景执行程式方面 
kern 关於系统核心方面 
lpr 关於印表机方面 
mail 关於电子邮件方面 
news 关於新闻讨论区方面 
syslog 关於系统纪录本身方面 
user 关於使用者方面 
uucp 关於UNIX互拷(UUCP)方面 

  
上面是大部份的UNIX系统都会有的情况,而有些UNIX系统可能会再分出不同的项


目出来。 
  
2.什麽程度才记录:下面是各种不同的系统状况程度,依照轻重缓急排列。 
  
none 不要记录这一项 
debug 程式或系统本身除错讯息 
info 一般性资讯 
notice 提醒注意性 
err 发生错误 
warning 警告性 
crit 较严重的警告 
alert 再严重一点的警告 
emerg 已经非常严重了 

  
同样地,各种UNIX系统可能会有不同的程度表示方式。有些系统是不另外区分
crit与alert的差别,也有的系统会有更多种类的程度变化。在记录时,syslogd


会自动将你所设定程度以及其上的都一并记录下来。 
例如若你要系统去记录info等级的事件,则notice、err.warning、crit、
alert、emerg等在info等级以上的也会一并被记录下来。把上面所写的1、2项以


小数点组合起来就是完整的「要记录哪些东西」的写法。例如mail.info表示关


於电子邮件传送系统的一般性讯息。auth.emerg就是关於系统安全方面相当严重


的讯息。lpr.none表示不要记录关於列表机的讯息(通常用在有多个纪录条件时


组合使用)。另外有叁种特殊的符号可供应用: 
1.星号(*) 
星号代表某一细项中所有项目。例如mail.*表示只要有关mail的,不管什麽程度


都要记录下来。而*.info会把所有程度为info的事件给记录下来。 
2.等号(=) 
等号表示只记录目前这一等级,其上的等级不要记录。例如刚刚的例子,平常写


下info等级时,也会把位於info等级上面的notice、err.warning、crit、
alert、emerg等其他等级也记录下来。但若你写=info则就只有记录info这一等


级了。 
3.惊叹号(!) 
惊叹号表示不要记录目前这一等级以及其上的等级。 
  
记录到哪边去 
一般的syslogd都提供下列的管道以供您记录系统发生的什麽事: 
  
1.一般档案 
这是最普遍的方式。你可以指定好档案路径与档案名称,但是必须以目录符号
「/」开始,系统才会知道这是一个档案。例如/var/adm/maillog表示要记录
到/var/adm下面一个称为maillog的档案。如果之前没有这个档案,系统会自动


产生一个。 
  
2.指定的终端机或其他设备 
你也可以将系统纪录写到一个终端机或是设备上。若将系统纪录写到终端机,则


目前正在使用该终端机的使用者就会直接在萤幕上看到系统讯息(例
如/dev/console或是/dev/tty1.你可以拿一个萤幕专门来显示系统讯息)。若将


系统纪录写到印表机,则你会有一长条印满系统纪录的纸(例如/dev/lp0)。 
  
3.指定的使用者 
你也可以在这边列出一串使用者名称,则这些使用者如果正好上线的话,就会在


他的终端机上看到系统讯息(例如root,注意写的时候在使用者名称前面不要再


加上其他的字)。 
  
4.指定的远端主机 
这种写法不将系统讯息记录在连接本地机器上,而记录在其他主机上。有些情况


系统碰到的是硬碟错误,或是万一有人把主机推倒,硬碟摔坏了,那你要到哪边


去拿系统纪录来看呢?而网路卡只要你不把它折断,应该是比硬碟机耐摔得多
了。因此,如果你觉得某些情况下可能纪录没办法存进硬碟里,你可以把系统纪


录丢到其他的主机上。如果你要这样做,你可以写下主机名称,然後在主机名称


前面加上「@」符号(例如@ccunix1.variox.int,但被你指定的主机上必须要有


syslogd)。 
在以上各种纪录方式中,都没有电子邮件这项。因为电子信件要等收件者去收信


才看得到,有些情况可能是很紧急的,没办法等你去拿信来看(BSD的ManualPage


写着「whenyougotmail,it’salreadytoolate...」:-P)。 
以上就是syslog各项纪录程度以及纪录方式的写法,各位读者可以依照自己的需


求记录下自己所需要的内容。但是这些纪录都是一直堆上去的,除非您将档案自


行删除掉,否则这些档案就会越来越大。有的人可能会在syslogd.conf里面写:

 
*.*/var/log/everything 
要是这样的话,当然所有的情况都被你记录下来了。但是如果真的系统出事了,


你可能要从好几十MB甚至几百MB的文字中找出到底是哪边出问题,这样可能对你


一点帮助都没有。因此,以下两点可以帮助你快速找到重要的纪录内容: 
  
1.定期检查纪录 
养成每周(或是更短的时间,如果你有空的话)看一次纪录档的习惯。如果有需要


将旧的纪录档备份,可以cploglog.1,cploglog.2...或是
cploglog.971013,cploglog.980101...等,将过期的纪录档依照流水号或是日期


存起来,未来考察时也比较容易。 
  
2.只记录有用的东西 
千万不要像前面的例子一样,记录下*.*然後放在一个档案中。这样的结果会导


致档案太大,要找资料时根本无法马上找出来。有人在记录网路通讯时,连谁去


ping他的主机都记录。除非是系统已经遭到很大的威胁,没事就有人喜欢尝试进


入你的系统,否则这种鸡毛蒜皮的小事可以不用记录。可以提升些许系统效率以


及降低磁碟用量(当然也节省你的时间)。 
  
地理位置的追踪 
如何查出入侵者的地理位置?光看IPAddress可能看不出来,但是你常看的话,


会发现140.xxx的很多都是台湾学术网路的主机,而168.95.xxx.xxx的一定是
HiNet的主机(168.95.0为HiNetClassB网路)。 
在固接式的网路环境中,入侵者一定和网路提供单位有着密切的关系。因为假设


是区域网路,那麽距离绝对不出几公里。就算是拨接好了,也很少人会花大笔钱


去拨外县市甚至国外的拨接伺服器。因此,只要查出连线的单位,入侵者必然离


连线单位不远。 
拨接式的网路就比较令人头疼了。以前笔者申请HiNet的hntp2.hinet.net帐号
时,拿了自己的身分证和印章,跑到电信局去签了一堆文件,看完网路规范以後


才有HiNet网路可以用。时隔多年,现在hntp2早没了,冒出一大堆
msxx.hinet.net以及民营ISP,有许多ISP为了吸引客户,卖了很多的所谓小时
卡、记点卡……等等不需申请,帐号密码就直接附在上面的卡片。User这边只要


买了固定的小时数,不需须另外向ISP那边提出申请,就可以按照卡片上的说明


自行拨接上网。这样当然可以吸引客户,但是ISP就根本无从得知是谁在用他们


的网路。 
也就是说,虽然以小时卡提供拨接服务给拨接使用者带来相当大的便利,但却是


系统安全的大敌,网路管理员的恶梦。如果入侵你的人是使用小时卡来上网,
那……,要从拨号的地点查吗?笔者在前几期的系统安全专栏就讲过了,入侵者


可以不要用自己家里的电话上网。管它是偷是抢,或是盗打090王八机,反正查


到的发话来源绝不是入侵者自己的电话。 
  
来话者电话侦测(CallerID) 
各位读者家中有ISDN吗?如果你用过ISDN的CallerID功能,会发现真是方便极
了,对方的号码马上就显示出来给你看。看到女朋友打电话来,马上就接了起
来;而杂志社的打来催稿,就打开电话答录机假装不在家……:-P但是CallerID


依然有失效的时候。笔者这次特地和陈冠宇先生(本刊作者)做了下面的测试,看


看CallerID可以显示出哪些号码(受测机种为Zyxel,终端机使用WindowsNT的
HyperTerminal):要显示来话方号码的前提是,对方必须是透过数位交换机打到


你这边,在台湾有某些地区仍然使用机械式交换机,如果你打电话的交换路径
中,有经过这些机械式的交换机,那麽依然无法显示出号码来。太电以及其他民


营的行动电话因为笔者手边没有,所以无法测试。而国际电话因一时找不到国外


的朋友可以配合作测试,因此也没有办法将结果向各位读者报告(如果各位读者


手边有太电,远传这些民营的行动电话,可以和笔者联络测试)。 
  
如何靠IPAddress或DomainName找出入侵者位置? 
虽然电话不一定查得出来,但是至少你会知道他的IPAddress。IPAddress的使用


必须向InterNIC登记,而DomainName要向当地直属的网路管理中心登记。在
Internet上的网路管理中心共有叁个层级(单位性质一定为NET): 
  
1.国际等级 
国际等级只有InterNIC一个,全球各国的NIC以及洲际NIC均由其管理。
(http://www.internic.net)。 
  
2.洲际等级 
InterNIC并不直接管理整个Internet,其下的网路资源会再做分区。例如台湾、


日本、香港等亚太地区国家,由亚太洲际网路管理中心(Asian-
PacificNIC,APNIC,位於日本)来管理,并不直接由InterNIC管理
(http://www.apnic.net)。 
  
3.国家等级 
DomainName後面不挂国码的不是由InterNIC管理就是由洲际的NIC管理,但是有


挂国码的由当地国家之NIC管理,惯例是两位国码加上NIC就是该国NIC之名称。


例如台湾之国码为TW,则台湾网路管理中心为TWNIC(http://www.twnic.net),


但由於InterNIC位於美国,因此美国的DomainName由InterNIC直辖。有一个特别


的例外是挂.mil的美国军方网路的资料是由ddn.mil(美国军事防卫网路)来管
理,不由InterNIC管理,当您得到某个DomainName或是IPAddress後,可以使用


whois来查出资料,语法如下: 
 

whois-h<whois伺服器><查询对象>

例如向whois.internic.net查询hp.com,需输入: 
  
whois-hwhois.internic.nethp.com

whois也可能使用下列语法: 
  
whois<查询对象>@<whois伺服器>

例如向whois.twnic.net查询ntu.edu.tw需输入: 
  
[email protected]

目前在SlackwareLinux附上的为後者。 
  
DomainName命名的叁种情况 
虽然同样是DomainName,可能你会遇到叁种命名的不同情况。在许多国家
*.edu.*是由NIC以外的单位所管理(如教育部),而属性也不一定是叁个字母,甚


至没有属性。在判断单位性质时读者宜多加注意,以免找不到资料。 
  
1.标准国码+叁码属性码(或没有国码,仅有属性码) 
普遍使用於欧洲,美洲国家以及部份东南亚国家。如台湾常见*.edu.tw、
*.com.tw,美国的*.com、*.edu。 
  
2.标准国码+二码属性码 
以离我国最近的日本、中华人民共和国为例,公司属性为co,社团属性为or,和


叁码定义的com、org略有不同。如日本万代公司之Homepage为
www.bandai.co.jp,如果读者要使用公司名称拼凑出完整主机名称时,需注意日


本为仅有两码属性码之地区,否则若猜测其为www.bandai.com.jp就会发生错误


(注:在国际通信范例中,无论是无线电通信、国际越洋电话、乃至於网际网路


等,均将台湾与中国大陆划分为两个不同国家。笔者在此特称中华人民共和国除


突显此一特性外,并无其他涵义,读者勿需自行揣测其他意义)。 
  
3.仅有标准国码,未有任何属性码 
如澳洲的主机均为仅有*.au之主机名称,未有任何其他的com、co、或任何单位


属性码後面直接接上单位名称。 
  
由DomainName查出连线单位资料 
在Internet上惯例由whois服务来查询连线单位的登记资料,whois本来应该是用


来查某人的电话或是其他资料的(有点像是finger或是现在很流行的寻人服务,


像是whowhere、bigfoot之类的,请上www.whowhere.com一探究竟),但是在NIC


方面是用来查出连线单位的电话以及住址,技术联络人等。符合该NIC管理权限


的单位资料会存放於该单位的whois主机中,惯例是whois+NIC名称+net。例如


亚太地区网路管理中心whoisserver为whois.apnic.net,台湾网路中心
whoisserver为whois.twnic.net。 
当你知道某台主机的DomainName以後,可以依照下面顺序查出连线单位的电话住


址等资料。第一步,先看有没有国码。没有国码的,向whois.internic.net问;


有国码的,向whois.国码nic.net问(ex.whois.twnic.net)。 
另外,如果你要查美国军事单位的联络明细(假如某天你发现有人利用美国海军


的网路来入侵你的电脑)则你需要向nic.ddn.mil查询,方可查到资料。例如查出


美国陆军的资料:但FBI等调查机构属政府单位,非军事单位,查询时需注意: 


  
由DomainName查出资料 
如您能从nslookup查出某一IPAddress之FQDN,则可以直接向当地NIC查出入侵者


网路之资料: 
  
1.由美国入侵的例子: 
由xxx.aol.com入侵由主机名称发现未有国码,因此直接向InterNIC查询。由此


我们可以查到AmericaOnline的技术负责人以及电话、传真等资料,把你的系统


纪录档准备好,发封传真去告洋状吧! 
  
2.由台湾入侵的例子: 
由HopeNet入侵(cded1.hope.com.tw)由於TWNIC目前whois资料库不知怎麽的不见


了,故请改由dbms.seed.net.tw查出hope.com.tw之中文名称,再打104询问该公


司的电话!(图一)现在如果直接由whois.twnic.net查询会这样: 
  
只有IPAddress的查法 
若某天您发现由168.95.109.222有人入侵,假设您不知道这是HiNet的网路,而


这个IPAddress也没有DomainName的话,则须先将IPAddress分等级,再向
InterNIC查询: 
(以下作为范例之位址均为虚构,如有雷同,纯属巧合)。 
  
1.由15.4.75.2入侵的例子: 
此IPAddress是15开头,为一个ClassA网路,故向InterNIC查询15.0:查出此
IPAddress为惠普公司所有 
  
2.由140.111.32.53入侵的例子: 
此IPAddress为ClassB,需查询两次。先向InterNIC查询140.111.0:查出为中华


民国教育部所有。再向whois.twnic.net查询140.111.32.0:很可惜的,由於
TWNIC资料库不见了,因此您无法知道这是哪个学术单位。劳驾您打个电话去
TWNIC问吧! 
  
3.由203.66.35.1入侵的例子 
这是一个ClassCIP,因此必须查询至少二次,一般是叁次。顺序为国际->洲际


->所属国家。先查203.0: 
出来一大堆,怎麽办?有的情况只好再追问ClassB。由於InterNIC将部份ClassC


交给洲际管理机构来负责配给,因此有些ClassC的资料会在洲际管理机构,此时


先向InterNIC查出所属洲际管理机构(用ClassB问)。问到203.66为亚太地区洲际


网路,於是向whois.apnic.net询问203.66.35.0:查了叁次以後,终於查到
203.66.35.0为: 
在一堆资料中查到203.66.35.1,此一IPAddress为
ForwardnessTechnologyCo.Ltd.所有,电话地址也一并附在上面(这是笔者朋友


开的网路公司)。 
由以上的查法,可以由任一主机名称或IPAddress查到连线者网路单位的资料,


如果您发现该网路单位下属主机对您的网路有攻击行为,请检具资料告诉对方的


系统管理员(对方不一定接受,笔者就碰过很恶劣的系统管理员!)。 
下面是Windows95的hosts档案:当您没有DNS的时候,您可以拿这个来将
DomainName<->IPAddress的对应工作做好。写法就和UNIX一样。Microsoft的


这个hosts档案写的是给chicago用的,这是windows95的开发代号,看见没?(看


来Microsoft出windows95时太赶,忘了修正这些小东西),不过各位读者要注意


的是,原先的hosts档案档名是hosts.sam,您要自己将档名改成hosts才能用。


(作者E-Mail:[email protected]
  
注一: 
几乎所有使用TCP/IP通讯协定的机器都会有hosts、network等档案。这是所有
TCP/IP系统的共通习惯(但只有Microsoft的软体会有lmhosts来配合Microsoft自


己的wins域名解译系统)。如果读者有注意到的话,可以发现NovellNetware伺服


器也有一个etc目录,还有hosts等档案! 
  
注二: 
长途台号码为108,转发国内长途电话用,并可要求对方付费(就像国际台一
样),因为台湾早期交换机无法让用户直拨外县市电话,故需由长途台人工转
接。现在有了长途直拨,除非您有需要对方付费,否则不需要用长途台了,因为


人工转接还要另外支付人工转接费用。当您在打国内长途电话而有对方付费的需


求时,就可以打108然後要求值机人员替您转接,然後由受话者来付电话费。这


在您手边没有钱,但想使用公共电话来打长途电话时非常好用(当然受话方也可


以拒绝您的对方付费要求)。国内其他的人工转接台还有103船舶台(转发船舶无


线电话,NAVTEX航务情报电讯等)以及100国际台。 


--
LIVE IS LIKE A BOX OF CHOCOLATE,
YOU WILL NEVER KNOW 
WHICH ONE YOU WILL GET IT.

※ 修改:.qzy3 于 Jul  9 17:34:36 修改本文.[FROM: 202.103.56.9]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.56.16]

[关闭][返回]