在討論這部分知識前,讀者需要知道——入侵網站是非法的;但是在網路上找到網站的入侵漏洞並通知該網站是受到歡迎的。為什麼要這樣尋找入侵漏洞或入侵哪,著名的駭客H ackalot說過"入侵網站是利用所學的知識來學習新的知識的一種辦法",這也就是中國人所常說的"溫故而知新"。
儘管為伺服器設計軟體的軟體工程師們想方設法提高系統的安全性,然而由於系統管理員的水平參差不齊或安全意識底下,往往給駭客提供了入侵的機會。
其實每一個駭客都有自己獨到的方法。筆者對於入侵網站伺服器的資料收集了很多,但是因為實際情況的不同,往往造成許多方法的失效;由此可見,每一個網站的情況都不同,需要入侵者區分對待。假設深圳的線路比北京的線路要好的多,從而給了詞典窮舉很大的方便,深圳使用者就可以依靠這個優勢線上攻擊口令,作為北京的使用者就需要優先考慮其它辦法了。針對這麼多的入侵手段,筆者參考H ackalot先生這位駭客界名人的一篇文章給大家介紹一下入侵網站的基本步驟。
分析一部分的首頁被黑的案例可以發現使用入侵者最熱衷於入侵Web伺服器和FTP伺服器,因為相對來說這是最簡單的兩種途徑。在假設讀者對U NIX系統和WEB SERVER的知識不曾瞭解的情況下,筆者給出下面的步驟。
一、瞭解要入侵的系統
現在網路上用作伺服器的作業系統以UNIX和Linux為主流,如果要入侵這些系統則必須對它們有一個瞭解。
大部份在 DOS 上使用的指令在 UNIX 及 Linux 上都有對應的指令(因為早期的dos開發借鑒了UNIX),以下列出在使用 SHELL帳號 (shell account)時最主要的一些指令對應的dos指令:
HELP=HELP
CP=COPY
MV= MOVE
LS= DIR
RM =DEL
CD=CD
要看誰同 r也在該系 y上使用者可以鍵入 WHO 指令,要知道系 y上某一位使用者的資料, 可以 I入 FINGER。這些基本的 UNIX 指令可以讓你得到你正使用系 y的資訊。
二、破解密碼
在UNIX作業系統中, 所有系統使用者的密碼都存放在一個檔案中,這個檔案存放在 /etc這個目錄下面, 它的檔案名稱就叫做passwd。如果讀者認為所要做的工作就是拿到這個檔案按照上面的密碼登陸系統的話那就大錯特錯了。UNIX和Linux下的p asswd檔案是特殊的,在它裡面所有帳號的密碼都已經經過重新編譯的(也就是前面說過的DES加密方法),而且這些密碼所進行的都是單向編譯( one-way encrypted),也就是說沒有辦法可以反編譯它的(decrypt)。
但是還是有些程式可以得到這些原始的密碼。筆者向大家推薦一個破解密碼的程式"Cracker Jack",它也是一個使用字典來對字典檔案進行窮舉的軟體。首先"Cracker Jack"會把字典檔案裡的每一個值進行編譯,然後將編譯過的值與密碼檔案中的內容進行比較,得到相同的結果就會報告對應的未經編譯密碼。這個軟體巧妙的繞過密碼無法反編譯的限制,使用窮舉比較獲得密碼。使用這種原理獲得密碼的工具有許多,讀者可以到網路上去搜尋一下。
三、獲得密碼檔案
這是最困難的一部分。很明顯,如果管理員有那麼一個密碼檔案的話他當然不會放在那裡讓其它人舒舒服服的拿到的。入侵者必須找到好方法以不進入系統的方式拿到密碼檔案。這裡筆者向大家介紹兩種方法,大家可以試試,有可能會成功。
1.tc目錄在FTP服務上不會被鎖住,入侵可以用FTP client程式使用anoymously匿名帳號登陸,然後檢查一下/etc/passwd是否為匿名設定了被讀取的許可權,如果有馬上備份下來使用軟體解碼。
2.些系統中,/cgi-bin目錄下會有個叫PHF的檔案,如果準備入侵的伺服器上有的話那就要方便的多了。因為PHF允許使用者對網站系統裡的檔案作遠端讀取,以此為據,使用者可以使用瀏覽器抓取p asswd檔案,只要在瀏覽器地址欄中鍵入URL:http://xxx.xxx.xxx/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd,其中xxx.xxx.xxx 是要入侵的網站名。
如果這兩種方法都行不通的話,那入侵者必須實施其它的辦法了。
在有些情況下入侵者找到的密碼檔案的第二部分是X、!或者*,那麼說明該密碼檔案已經被鎖死,這是系統管理員使用的加強安全的手段之一。但是將密碼檔案完全隱藏起來的情況是不太有的。通常情況下都會有未經鎖死的密碼檔案備份在系統中,這樣入侵者就可以加以利用,比如:入侵者通常會尋找/ etc/shadow目錄或類似的目錄,看能否找到密碼檔案的備份。
經過二、三兩個關鍵的步驟入侵者終於拿到了關鍵的密碼檔案,並且破解出了密碼。現在可以運行TELNET程式,登陸主機了。當連上伺服器時伺服器會向你顯示自己的一些資訊,通常是U NIX、linux、 aix、 irix、 ultrix、 bsd 甚至是 DOS 和VAX/Vms;然後是Login提示符出現在螢幕上,這時鍵入得來的帳號和密碼即可登陸系統。此時入侵者就可以利用自己的UNIX知識做自己喜歡做的事了。
最後對一份密碼檔案做一個分析,該檔案內容如下:
root:1234aaab:0:1:Operator:/:/bin/csh
nobody:*:12345:12345::/:
daemon:*:1:1::/:
sys:*:2:2::/:/bin/csh
sun:123456hhh:0:1:Operator:/:/bin/csh
bin:*:3:3::/bin:
uucp:*:4:8::/var/spool/uucppublic:
news:*:6:6::/var/spool/news:/bin/csh
audit:*:9:9::/etc/security/audit:/bin/csh
sync::1:1::/:/bin/sync
sysdiag:*:0:1:Old System
Diagnostic:/usr/diag/sysdiag:/usr/diag/sysdiag/sysdiag
sundiag:*:0:1:System
Diagnostic:/usr/diag/sundiag:/usr/diag/sundiag/sundiag
tom:456lll45uu:100:20::/home/tom:/bin/csh
john:456fff76Sl:101:20:john:/home/john:/bin/csh
henry:AusTs45Yus:102:20:henry:/home/henry:/bin/csh
harry:SyduSrd5sY:103:20:harry:/home/harry:/bin/csh
steven:GEs45Yds5Ry:104:20:steven:/home/steven:/bin/csh
+::0:0:::
其中以":"分成幾個欄位,比如: tom:456lll45uu:100:20:tomchang:/home/tom:/bin/csh的含義是:
User Name: tom
Password: 456lll45uu
User No: 100
Group No: 20
Real Name: tom chang
Home Dir: /home/tom
Shell: /bin/csh
讀者可以發現以上諸如nobody、 daemon、 sys、 bin、 uucp、 news、 audit、 sysdiag、sundiag 等的密碼欄位都是*,也就是說這些帳號的密碼都已鎖死,無法直接利用。
值得注意的是,許多系統在首次安裝後會有一些預設帳號和密碼,這給投機主義的駭客帶來方便,以下就是一些UNIX下預設的帳號和密碼。
ACCOUNT PASSWORD
----------- ----------------
root root
sys sys / system / bin
bin sys / bin
mountfsys mountfsys
adm adm
uucp uucp
nuucp anon
anon anon
user user
games games
install install
reboot 供"command login"使用
demo demo
umountfsys umountfsys
sync sync
admin admin
guest guest
daemon daemon
其中 root mountfsys umountfsys install (有 r候 sync也是) 等都是root層級的帳號, 也就是擁有了sysop (系統管理員)的許可權。
最後有必要介紹一下UNIX的記錄檔。很多入侵者不希望侵入的電腦追蹤他們,那到底如何做那。
系統管理員主要依靠系統的LOG,即我們時常所說的記錄檔來獲得入侵的痕迹及入侵者進來的IP和其他資訊。當然也有些管理員使用第三方工具來記錄侵入電腦的資訊,這裡主要講的是一般U NIX系統裡記錄入侵蹤跡的檔案。
UNIX系統有多個版本,各個系統有不同的LOG檔案,但大多數都應該有差不多的存放位置,最普通的位置就是下面的這幾個:
/usr/adm,早期版本的UNIX;
/var/adm,新一點的版本使用這個位置;
/var/log,一些版本的Solaris,Linux BSD,Free BSD使用這個位置;
/etc,大多數UNIX版本把utmp放在此處,一些也把wtmp放在這裡,這也是 syslog.conf的位置。
下面列舉一些檔案的功能,當然他們也根據入侵的系統不同而不同。
acct 或 pacct,記錄每個使用者使用的命令記錄;
access_log,主要使用來伺服器運行了NCSA HTTPD,這個記錄檔案會有什麼網站串連過你的伺服器;
aculog,儲存著你撥出去的MODEMS記錄;
lastlog,記錄了使用者最近的登陸記錄和每個使用者的最初目的地,有時是最後不成功登陸的記錄;
loginlog,記錄一些不正常的登陸記錄;
messages,記錄輸出到系統控制台的記錄,另外的資訊由syslog來產生;
security,記錄一些使用UUCP系統企圖進入限制範圍的案例;
sulog,記錄使用su命令的記錄;
utmp,記錄當前登入到系統中的所有使用者,這個檔案伴隨著使用者進入和離開系統而不斷變化;
utmpx,UTMP的擴充;
wtmp,記錄使用者登入和退出事件;
syslog,最重要的記錄檔,使用syslogd精靈來獲得。
日誌資訊:
/dev/log,一個UNIX域通訊端,接受在本地機器上啟動並執行進程所產生的訊息;
/dev/klog,一個從UNIX核心接受訊息的裝置;
514連接埠,一個INTERNET通訊端,接受其他機器通過UDP產生的syslog訊息;
Uucp,記錄的UUCP的資訊,可以被本地UUCP活動更新,也可有遠端站台發起的動作修改,資訊包括髮出和接受的呼叫,發出的請求,寄件者,發送時間和發送主機;
lpd-errs,處理印表機故障資訊的日誌;
ftp日誌,執行帶-l選項的ftpd能夠獲得記錄功能;
httpd日誌,HTTPD伺服器在日誌中記錄每一個WEB訪問記錄;
history日誌,這個檔案儲存了使用者最近輸入命令的記錄;
vold.log,記錄使用外接媒介時遇到的錯誤記錄。
以上介紹了一下入侵伺服器的主要步驟,讀者現在應該對它有一些基礎的認識了。需要再次強調的是如果讀者對UNIX系統缺乏瞭解的話那是絕對不可能掌握它的。
eNet矽谷動力