攻入Linux系統後,很多入侵者往往就開始得意忘形了。這其中還有一個原因,就是技術性也要求更高了。下面,我們來看看一些常用的經典工具。
1、從這裡延伸:後門和連接配接工具
(1)Httptunnel
Tunnel的意思是隧道,通常HTTPTunnel被稱之為HTTP暗道,它的原理就是将資料僞裝成HTTP的資料形式來穿過防火牆,實際上,它是在HTTP請求中建立了一個雙向的虛拟資料連接配接來穿透防火牆。說得簡單點,就是說在防火牆兩邊都設立一個轉換程式,将原來需要發送或接受的資料包封裝成HTTP請求的格式騙過防火牆,是以它不需要别的代理伺服器而直接穿透防火牆。HTTPTunnel包括兩個程式:htc和hts,其中htc是用戶端,而hts是伺服器端,我們現在來看看我是如何用它們的。比如開了 FTP的機器的IP是192.168.10.231,本地機器IP是192.168.10.226,因為防火牆的原因,本地機器無法連接配接到FTP上。怎麼辦?現在就可以考慮使用HTTPTunnel了。過程如下:
第一步:在本地機器上啟動HTTPTunnel用戶端。用Netstat看一下本機現在開放的端口,會發現8888端口已在偵聽。第二步:在對方機器上啟動HTTPTunnel的伺服器端,并執行指令“hts -f localhost:21 80”,這個指令的意思是說,把本機的21端口發出去的資料全部通過80端口中轉一下,并且開放80端口作為偵聽端口,再用Neststat看一下他的機器,就會發現80端口現在也在偵聽狀态。第三步:在本地機器上用FTP連接配接本機的8888端口,會發現已經連上對方的機器了。那麼,為什麼人家看到的是127.0.0.1,而不是 192.168.10.231呢?因為我們現在是連接配接本機的8888端口,防火牆肯定不會有反應,如果沒往外發包,區域網路的防火牆肯定就不知道了。現在連接配接上本機的8888端口以後,FTP的資料包不管是控制資訊還是資料資訊,都被htc僞裝成HTTP資料包然後發過去,在防火牆看來,這都是正常資料,相當于欺騙了防火牆。需要說明的是,這一招的使用需要其他機器的配合,就是說要在他的機器上啟動一個hts,把他所提供的服務,如FTP等重定向到防火牆所允許的 80端口上,這樣才可以成功繞過防火牆!肯定有人會問,如果對方的機器上本身就有WWW服務,也就是說他的80端口在偵聽,這麼做會不會沖突? HTTPTunnel的優點就在于,即使他的機器以前80端口開着,現在也不會出現什麼問題,重定向的隧道服務将暢通無阻!
(2)Tcp_wrapper
Tcp_wrapper是Wietse Venema開發的一個免費軟體。Tcp_wrapper的誕生有個小小的故事,大約1990年,作者所在大學的伺服器屢屢受到一個外來黑客侵入,因為受害主機的硬碟資料屢次被rm -rf/指令整個抹掉,是以找尋線索極為困難,直到有一天晚上作者在工作的過程中無意中發現這個黑客在不斷的finger 受害主機、偷窺受害者的工作。于是,一個想法誕生了:設計一個軟體,使它可以截獲發起finger請求的IP,使用者名等資料。Venema很快投入了工作,而Tcp_wrapper也由此誕生!此後,Tcp_wrapper随着廣泛的應用逐漸成為一種标準的安全工具。通過它,管理者實作了對inetd提供的各種服務進行監控和過濾。Tcp_wrapper編譯安裝成功後,會生成一個tcpd程式,它可以在inetd.conf這個控制檔案中取代in.telnetd的位置,這樣,每當有telnet的連接配接請求時,tcpd即會截獲請求,先讀取管理者所設定的通路控制檔案,合乎要求,則會把這次連接配接原封不動的轉給真正的 in.telnetd程式,由in.telnetd完成後續工作。如果這次連接配接發起的ip不符合通路控制檔案中的設定,則會中斷連接配接請求,拒絕提供 telnet服務。Tcp_wrapper通路控制的實作是依靠兩個檔案:hosts.allow,hosts.deny來實作的。如果我們編輯 /etc/syslog.conf檔案時,加入了日志紀錄功能,即:
#tcp wrapper log
local3.info /var/log/tcplog
編輯結束後,儲存檔案,在/var/log下會生成tcplog檔案,注意這個檔案的讀寫屬性, 應該隻對root有讀寫權限。然後ps -ef | grep syslogd,找出syslogd的程序号,kill -HUP 重新開機syslogd程序使改動生效。在這裡,我們可以預先看一看以後生成的tcplog檔案内容,如下:
Jul 31 22:00:52 www.test.org in.telnetd[4365]: connect from 10.68.32.1
Jul 31 22:02:10 www.test.org in.telnetd[4389]: connect from 10.68.32.5
Jul 31 22:04:58 www.test.org in.ftpd[4429]: connect from 10.68.32.3
Aug 2 02:11:07 www.test.org in.rshd[13660]: connect from 10.68.32.5
Aug 2 02:11:07 www.test.org in.rlogind[13659]: connect from 10.68.32.1
從上面我們可以看到,在安裝了Tcp_wrapper的主機上,系統的每一次連接配接,Tcp_wrapper都做了紀錄,它的内容包括時間、服務、狀态、ip等,對攻擊這有很大的參考價值,不過,一定要記得清除日志了。
(3)rootkit工具:LRK
Rootkit出現于二十世紀90年代初,它是攻擊者用來隐藏自己的蹤迹和保留root通路權限的工具。通常,攻擊者通過遠端攻擊或者密碼猜測獲得系統的通路權限。接着,攻擊者會在侵入的主機中安裝rootkit,然後他會通過rootkit的後門檢查系統,看是否有其他的使用者登入,如果隻有自己,攻擊者就開始着手清理日志中的有關資訊。通過rootkit的嗅探器獲得其它系統的使用者和密碼之後,攻擊者就會利用這些資訊侵入其它的系統。如果攻擊者能夠正确地安裝rootkit并合理地清理了日志檔案,系統管理者就會很難察覺系統已經被侵入,直到某一天其它系統的管理者和他聯系或者嗅探器的日志把磁盤全部填滿,他才會察覺已經大禍臨頭了。不過,在系統恢複和清理過程中,大多數常用的指令例如ps、df和ls已經不可信了。許多 rootkit中有一個叫做FIX的程式,在安裝rootkit之前,攻擊者可以首先使用這個程式做一個系統二進制代碼的快照,然後再安裝替代程式。 FIX能夠根據原來的程式僞造替代程式的三個時間戳(atime、ctime、mtime)、date、permission、所屬使用者和所屬使用者組。如果攻擊者能夠準确地使用這些優秀的應用程式,并且在安裝rootkit時行為謹慎,就會讓系統管理者很難發現。
下面我們介紹一個非常典型的針對Linux系統的LRK版本6。Linux Rootkit 6是一個開放源碼的rootkit,經過多年的發展,Linux Rootkit的功能越來越完善,具有的特征也越來越多。下面我們簡單地介紹一下Linux Rootkit包含的各種工具。
首先是隐藏入侵者行蹤的程式。為了隐藏入侵者的行蹤,Linux Rootkit IV的作者可謂煞費心機,編寫了許多系統指令的替代程式,使用這些程式代替原由的系統指令,來隐藏入侵者的行蹤。這些程式包括:ls、find、du 這些程式會阻止顯示入侵者的檔案以及計算入侵者檔案占用的空間。在編譯之前,入侵者可以通過ROOTKIT_FILES_FILE設定自己的檔案所處的位置,預設是/dev/ptyr。注意如果在編譯時使用了SHOWFLAG選項,就可以使用ls -/指令列出所有的檔案。這幾個程式還能夠自動隐藏所有名字為:ptyr、hack.dir和W4r3z的檔案。
ps、top、pidof 這幾個程式用來隐藏所有和入侵者相關的程序。
netstat 隐藏出/入指定IP位址或者端口的網絡資料流量程。
killall 不會殺死被入侵者隐藏的程序。
ifconfig 如果入侵者啟動了嗅探器,這個程式就阻止PROMISC标記的顯示,使系統管理者難以發現網絡接口已經處于混雜模式下。
crontab 隐藏有關攻擊者的crontab條目。
tcpd 阻止向日志中記錄某些連接配接。
syslogd 過濾掉日志中的某些連接配接資訊。
其次是後門程式。木馬程式可以為本地使用者提供後門;木馬網絡監控程式則可以為遠端使用者提供inetd、rsh、ssh等後門服務,具體因版本而異。随着版本的更新,Linux Rootkit IV的功能也越來越強大,特征也越來越豐富。一般包括如下網絡服務程式:
chfn 提升本地普通使用者權限的程式。運作chfn,在它提示輸入新的使用者名時,如果使用者輸入rookit密碼,他的權限就被提升為root。
chsh 提升本地使用者權限的程式。運作chsh,在它提示輸入新的shell時,如果使用者輸入rootkit密碼,他的權限就被提升為root。
passwd 和上面兩個程式的作用相同。在提示你輸入新密碼時,如果輸入rookit密碼,權限就可以變成root。
login 允許使用任何帳戶通過rootkit密碼登入。如果使用root帳戶登入被拒絕,可以嘗試一下rewt。當使用後門時,這個程式還能夠禁止記錄指令的曆史記錄。
inetd 特洛伊inetd程式,為攻擊者提供遠端通路服務。
rshd 為攻擊者提供遠端shell服務。攻擊者使用rsh -l rootkitpassword host command指令就可以啟動一個遠端root shell。
sshd 為攻擊者提供ssh服務的後門程式。
再就是工具程式。所有不屬于以上類型的程式都可以歸如這個類型,它們實作一些諸如:日志清理、封包嗅探以及遠端shell的端口綁定等功能,包括:
fix 檔案屬性僞造程式。
linsniffer 封包嗅探器程式。
sniffchk 一個簡單的bash shell腳本,檢查系統中是否正有一個嗅探器在運作。
z2 utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志檔案中有關某個使用者名的所有條目。不過,如果用于Linux系統需要手工修改其源代碼,設定日志檔案的位置。
bindshell 在某個端口上綁定shell服務,預設端口是12497。為遠端攻擊者提供shell服務。
(4)netcat
這是一個簡單而有用的工具,能夠通過使用TCP或UDP協定的網絡連接配接去讀寫資料。它被設計成一個穩定的後門工具,能夠直接由其它程式和腳本輕松驅動。同時,它也是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接配接,還有幾個很有意思的内置功能。
2、查找Linux下的蛛絲馬迹:日志工具
對于高明的攻擊者來說,進入系統後,還應了解自己的“蛛絲馬迹”并清除這些痕迹,自然就要了解一些日志工具了。
(1)logcheck
logchek 可以自動地檢查日志檔案,定期檢查日志檔案以發現違反安全規則以及異常的活動。它先把正常的日志資訊剔除掉,把一些有問題的日志保留下來,然後把這些資訊 email 給系統管理者。logcheck 用 logtail 程式記住上次已經讀過的日志檔案的位置,然後從這個位置開始處理新的日志資訊。logcheck 主要由下面幾個主要的檔案:
logcheck.sh 可執行的腳本檔案,記錄logcheck檢查那些日志檔案等,我們可以把它加入crontab中定時運作。
logcheck.hacking 是logcheck 檢查的模式檔案。和下面的檔案一起,按從上到下的順序執行。這個檔案表明了入侵活動的模式。
logcheck.violations 這個檔案表示有問題,違背常理的活動的模式。優先級小于上面的那個模式檔案。
logcheck.violations.ignore 這個檔案和上面的logcheck.violations的優先是相對的,是我們所不關心的問題的模式檔案。
logcheck.ignore 這是檢查的最後一個模式檔案。如果沒有和前三個模式檔案比對,也沒有比對這個模式檔案的話,則輸出到報告中。
Logtail 記錄日志檔案資訊。
Logcheck首次運作時讀入相關的日志檔案的所有内容,Logtail會在日志檔案的目錄下為每個關心的日志檔案建立一個 logfile.offset 的偏移量檔案,以便于下次檢查時從這個偏移量開始檢查。Logcheck執行時,将未被忽略的内容通過郵件的形式發送給 logcheck.sh 中 系統管理者指定的使用者。
(2)logrotate
一般Linux 發行版中都自帶這個工具。它可以自動使日志循環,删除儲存最久的日志,它的配置檔案是 /etc/logrotate.conf,我們可以在這個檔案中設定日志的循環周期、日志的備份數目以及如何備份日志等等。在 /etc/logrotate.d目錄下,包括一些工具的日志循環設定檔案,如syslog等,在這些檔案中指定了如何根據 /etc/logrotate.conf做日志循環,也可以在這裡面添加其他的檔案以循環其他服務的日志。
(3)swatch
swatch 是一個實時的日志監控工具,我們可以設定感興趣的事件。Swatch 有兩種運作方式:一種可以在檢查日志完畢退出,另一種可以連續監視日志中的新資訊。Swatch提供了許多通知方式,包括email、振鈴、終端輸出、多種顔色等等。安裝前,必須確定系統支援perl。swatch 軟體的重點是配置檔案swatchmessage,這個文本檔案告訴 swatch 需要監視什麼日志,需要尋找什麼觸發器,和當觸發時所要執行的動作。當swatch發現與swatchmessage中定義的觸發器正規表達式相符時,它将執行在 swatchrc中定義的通知程式。
當然,上面所介紹的軟體隻是Linux大海中的幾隻美麗的貝殼,随着越來越多的使用者加入到Linux大軍中,我們相信,優秀的Hack也将越來越多,這反過來也将促進Linux作業系統逐漸走向成熟,我們拭目以待。