找回密碼
 註冊
搜索
查看: 6117|回復: 0

如何追蹤入侵者

[複製鏈接]
發表於 2005-8-24 02:46:34 | 顯示全部樓層 |閱讀模式
作者:反黑行動組
  在區域網路上可能你聽過所謂「廣播模式」的資料發送方法,此種方法不指定收信站,只要和此網路連結的所有網路設備皆為收信對象。但是這僅僅在區域網路上能夠實行,因為區域網路上的機器不多(和Internet比起來)。如果想是Internet上有數千萬的主機,根本就不可能實施資料廣播(至於IP
Multi cast算是一種限定式廣播Restricted
Broadcast,唯有被指定的機器會收到,Internet上其他電腦還是不會收到)。假設Internet上可以實施非限定廣播,那隨便一個人發出廣播訊息,全世界的電腦皆受其影響,豈不世界大亂?因此,任何區域網路內的路由器或是類似網路設備都不會將自己區域網路內的廣播訊息轉送出去。萬一在WAN
Port收到廣播訊息,也不會轉進自己的LAN Port中。

而既然網路皆有發信站與收信站,用以標示資訊發送者與資訊接收者,除非對方使用一些特殊的封包封裝方式或是使用防火牆對外連線,那麼只要有人和你的主機進行通訊(寄信或是telnet、ftp過來都算)你就應該會知道對方的麼,如果對方用了防火牆來和你通訊,你最少也能夠知道防火牆的位置。也正因為只要有人和你連線,你就能知道對方的位置,那麼要不要知道對方位置只是要做不做的問題而已。如果對方是透過一台UNIX主機和你連線,則你更可以透過ident查到是誰和你連線的。


在實行TCP/IP通訊協定的電腦上,通常可以用netstat指令來看到目前連線的狀況。(各位讀者可以在win95、Novell以及UNIX試試看(注一)),在下面的連線狀況中,netstat指令是在win95上實行的,可以看到目前自己機器(Local
Address處)的telnet port有一台主機workstation.variox.int由遠端(Foreign
Address處)連線進來並且配到1029號tcp port.而ccunix1主機也以ftp
port連到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(System Kernel Log
Daemon)來產生,而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的Manual
Page寫著「when you got mail,it’s already too late...」:-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的Caller
ID功能,會發現真是方便極了,對方的號碼馬上就顯示出來給你看。看到女朋友打電話來,馬上就接了起來;而雜誌社的打來催稿,就打開電話答錄機假裝不在家……:-P。但是Caller
ID依然有失效的時候。筆者這次特地和陳冠宇先生(本刊作者)做了下面的測試,看看Caller
ID可以顯示出哪些號碼(受測機種為Zyxel,終端機使用Windows NT的Hyper
Terminal):要顯示來話方號碼的前提是,對方必須是透過數位交換機打到你這邊,在台灣有某些地區仍然使用機械式交換機,如果你打電話的交換路徑中,有經過這些機械式的交換機,那麼依然無法顯示出號碼來。太電以及其他民營的行動電話因為筆者手邊沒有,所以無法測試。而國際電話因一時找不到國外的朋友可以配合作測試,因此也沒有辦法將結果向各位讀者報告(如果各位讀者手邊有太電,遠傳這些民營的行動電話,可以和筆者聯絡測試)。

 
如何靠IPAddress或DomainName找出入侵者位置?
雖然電話不一定查得出來,但是至少你會知道他的IP Address。IP Address的使用必須向Inter NIC登記,而Domain
Name要向當地直屬的網路管理中心登記。在Internet上的網路管理中心共有三個層級(單位性質一定為NET):
 
1.國際等級
國際等級只有Inter NIC一個,全球各國的NIC以及洲際NIC均由其管理。(http://www.internic.net)。
 
2.洲際等級
InterNIC並不直接管理整個Internet,其下的網路資源會再做分區。例如台灣、日本、香港等亞太地區國家,由亞太洲際網路管理中心(Asian-Pacific
NIC,APNIC,位於日本)來管理,並不直接由Inter NIC管理(http://www.apnic.net)。
 
3.國家等級
Domain Name後面不掛國碼的不是由Inter
NIC管理就是由洲際的NIC管理,但是有掛國碼的由當地國家之NIC管理,慣例是兩位國碼加上NIC就是該國NIC之名稱。例如台灣之國碼為TW,則台灣網路管理中心為TWNIC(http://www.twnic.net),但由於Inter
NIC位於美國,因此美國的Domain Name由Inter
NIC直轄。有一個特別的例外是掛.mil的美國軍方網路的資料是由ddn.mil(美國軍事防衛網路)來管理,不由Inter NIC管理,當您得到某個Domain
Name或是IP Address後,可以使用whois來查出資料,語法如下:
 

whois-h<whois伺服器><查詢對像>

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

whois也可能使用下列語法:
 
whois<查詢對像>@<whois伺服器>

例如向whois.twnic.net查詢ntu.edu.tw需輸入:
 


目前在SlackwareLinux附上的為後者。
 
DomainName命名的三種情況
雖然同樣是DomainName,可能你會遇到三種命名的不同情況。在許多國家*.edu.*是由NIC以外的單位所管理(如教育部),而屬性也不一定是三個字母,甚至沒有屬性。在判斷單位性質時讀者宜多加注意,以免找不到資料。

 
1.標準國碼+三碼屬性碼(或沒有國碼,僅有屬性碼)
普遍使用於歐洲,美洲國家以及部份東南亞國家。如台灣常見*.edu.tw、*.com.tw,美國的*.com、*.edu。
 
2.標準國碼+二碼屬性碼
以離我國最近的日本、中華人民共和國為例,公司屬性為co,社團屬性為or,和三碼定義的com、org略有不同。如日本萬代公司之Homepage為www.bandai.co.jp,如果讀者要使用公?...jp就會發生錯誤(註:在國際通信範例中,無論是無線電通信、國際越洋電話、乃至於網際網路等,均將台灣與中國大陸劃分為兩個不同國家。筆者在此特稱中華人民共和國除突顯此一特性外,並無其他涵義,讀者勿需自行揣測其他意義)。

 
3.僅有標準國碼,未有任何屬性碼
如澳洲的主機均為僅有*.au之主機名稱,未有任何其他的com、co、或任何單位屬性碼後面直接接上單位名稱。
 
由Domain Name查出連線單位資料
在Internet上慣例由whois服務來查詢連線單位的登記資料,whois本來應該是用來查某人的電話或是其他資料的(有點像是finger或是現在很流行的尋人服務,像是whowhere、bigfoot之類的,請上www.whowhere.com一探究竟),但是在NIC方面是用來查出連線單位的電話以及住址,技術聯絡人等。符合該NIC管理權限的單位資料會存放於該單位的whois主機中,慣例是whois+NIC名稱+net。例如亞太地區網路管理中心whoisserver為whois.apnic.net,台灣網路中心whoisserver為whois.twnic.net。

當你知道某台主機的Domain
Name以後,可以依照下面順序查出連線單位的電話住址等資料。第一步,瓤從忻揮洩@搿C揮洩@氳模茴\hois.internic.net問;有國碼的,向whois.國碼nic.net問(ex.whois.twnic.net)。

另外,如果你要查美國軍事單位的聯絡明細(假如某天你發現有人利用美國海軍的網路來入侵你的電腦)則你需要向nic.ddn.mil查詢,方可查到資料。例如查出美國陸軍的資料:但FBI等調查機構屬政府單位,非軍事單位,查詢時需注意:

 
由Domain Name查出資料
如您能從nslookup查出某一IPAddress之FQDN,則可以直接向當地NIC查出入侵者網路之資料:
 
1.由美國入侵的例子:
由xxx.aol.com入侵由主機名稱發現未有國碼,因此直接向Inter NIC查詢。由此我們可以查到America
Online的技術負責人以及電話、傳真等資料,把你的系統紀錄檔準備好,發封傳真去告洋狀吧!
 
2.由台灣入侵的例子:
由Hope
Net入侵(cded1.hope.com.tw)由於TWNIC目前whois資料庫不知怎麼的不見了,故請改由dbms.seed.net.tw查出hope.com.tw之中文名稱,再打104詢問該公司的電話!(圖一)現在如果直接由whois.twnic.net查詢會這樣:

 
只有IPAddress的查法
若某天您發現由168.95.109.222有人入侵,假設您不知道這是HiNet的網路,而這個IP Address也沒有Domain
Name的話,則須先將IPAddress分等級,再向InterNIC查詢:
(以下作為範例之位置均為虛構,如有雷同,純屬巧合)。
 
1.由15.4.75.2入侵的例子:
此IPAddress是15開頭,為一個ClassA網路,故向InterNIC查詢15.0:查出此IP Address為惠普公司所有
 
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:
出來一大堆,怎麼辦?有的情況只好再追問Class B。由於Inter NIC將部份ClassC交給洲際管理機構來負責配給,因此有些Class
C的資料會在洲際管理機構,此時先向Inter NIC查出所屬洲際管理機構(用Class
B問)。問到203.66為亞太地區洲際網路,於是向whois.apnic.net詢問203.66.35.0:查了三次以後,終於查到203.66.35.0為:
在一堆資料中查到203.66.35.1,此一IP Address為Forwardness Technology
Co.Ltd.所有,電話地址也一併附在上面(這是筆者朋友開的網路公司)。
由以上的查法,可以由任一主機名稱或IP
Address查到連線者網路單位的資料,如果您發現該網路單位下屬主機對您的網路有攻擊行為,請檢具資料告訴對方的系統管理員(對方不一定接受,筆者就碰過很惡劣的系統管理員!)。

下面是Windows 95的hosts檔案:當您沒有DNS的時候,您可以拿這個來將Domain Name<->IP
Address的對應工作做好。寫法就和UNIX一樣。Microsoft的這個hosts檔案寫的是給chicago用的,這是windows
95的開發代號,看見沒?(看來Microsoft出windows95時太趕,忘了修正這些小東西),不過各位讀者要注意的是,原先的hosts檔案檔名是hosts.sam,您要自己將檔名改成hosts才能用。(作者E-Mail:variox01@ms1.hinet.net)

 
注一:
幾乎所有使用TCP/IP通訊協定的機器都會有hosts、network等檔案。這是所有TCP/IP系統的共通習慣(但只有Microsoft的軟體會有lmhosts來配合Microsoft自己的wins域名解譯系統)。如果讀者有注意到的話,可以發現NovellNetware伺服器也有一個etc目錄,還有hosts等檔案!

 
注二:
長途台號碼為108,轉發國內長途電話用,並可要求對方付費(就像國際台一樣),因為台灣早期交換機無法讓用戶直撥外縣市電話,故需由長途台人工轉接。現在有了長途直撥,除非您有需要對方付費,否則不需要用長途台了,因為人工轉接還要另外支付人工轉接費用。當您在打國內長途電話而有對方付費的需求時,就可以打108然後要求值機人員替您轉接,然後由受話者來付電話費。這在您手邊沒有錢,但想使用公共電話來打長途電話時非常好用(當然受話方也可以拒絕您的對方付費要求)。國內其他的人工轉接台還有103船舶台(轉發船舶無線電話,NAVTEX航務情報電訊等)以及100國際台。

作者:[email="jiangshaoye@163.com"]鷹派宣傳組[/email]     日期:2002-09-06 1932
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|彩色筆小沛的知識庫

GMT+8, 2024-12-22 16:14 , Processed in 0.019326 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表