攻入linux系統(tǒng)后,很多入侵者往往就開(kāi)始得意忘形了。這其中還有一個(gè)原因,就是技術(shù)性也要求更高了。下面,我們來(lái)看看一些常用的經(jīng)典工具。
1、從這里延伸:后門(mén)和連接工具
?。?)Httptunnel
Tunnel的意思是隧道,通常HTTPTunnel被稱(chēng)之為HTTP暗道,它的原理就是將數(shù)據(jù)偽裝成HTTP的數(shù)據(jù)形式來(lái)穿過(guò)防火墻,實(shí)際上,它是在HTTP請(qǐng)求中創(chuàng)建了一個(gè)雙向的虛擬數(shù)據(jù)連接來(lái)穿透防火墻。說(shuō)得簡(jiǎn)單點(diǎn),就是說(shuō)在防火墻兩邊都設(shè)立一個(gè)轉(zhuǎn)換程序,將原來(lái)需要發(fā)送或接受的數(shù)據(jù)包封裝成HTTP請(qǐng)求的格式騙過(guò)防火墻,所以它不需要?jiǎng)e的代理服務(wù)器而直接穿透防火墻。
HTTPTunnel包括兩個(gè)程序:htc和hts,其中htc是客戶(hù)端,而hts是服務(wù)器端,我們現(xiàn)在來(lái)看看我是如何用它們的。比如開(kāi)了FTP的機(jī)器的ip是192.168.10.231,本地機(jī)器IP是192.168.10.226,因?yàn)榉阑饓Φ脑?,本地機(jī)器無(wú)法連接到FTP上。怎么辦?現(xiàn)在就可以考慮使用HTTPTunnel了。過(guò)程如下:
第一步:在本地機(jī)器上啟動(dòng)HTTPTunnel客戶(hù)端。用Netstat看一下本機(jī)現(xiàn)在開(kāi)放的端口,會(huì)發(fā)現(xiàn)8888端口已在偵聽(tīng)。
第二步:在對(duì)方機(jī)器上啟動(dòng)HTTPTunnel的服務(wù)器端,并執(zhí)行命令“hts -f localhost:21 80”,這個(gè)命令的意思是說(shuō),把本機(jī)的21端口發(fā)出去的數(shù)據(jù)全部通過(guò)80端口中轉(zhuǎn)一下,并且開(kāi)放80端口作為偵聽(tīng)端口,再用Neststat看一下他的機(jī)器,就會(huì)發(fā)現(xiàn)80端口現(xiàn)在也在偵聽(tīng)狀態(tài)。
第三步:在本地機(jī)器上用FTP連接本機(jī)的8888端口,會(huì)發(fā)現(xiàn)已經(jīng)連上對(duì)方的機(jī)器了。那么,為什么人家看到的是127.0.0.1,而不是192.168.10.231呢?因?yàn)槲覀儸F(xiàn)在是連接本機(jī)的8888端口,防火墻肯定不會(huì)有反應(yīng),如果沒(méi)往外發(fā)包,局域網(wǎng)的防火墻肯定就不知道了。現(xiàn)在連接上本機(jī)的8888端口以后,F(xiàn)TP的數(shù)據(jù)包不管是控制信息還是數(shù)據(jù)信息,都被htc偽裝成HTTP數(shù)據(jù)包然后發(fā)過(guò)去,在防火墻看來(lái),這都是正常數(shù)據(jù),相當(dāng)于欺騙了防火墻。
需要說(shuō)明的是,這一招的使用需要其他機(jī)器的配合,就是說(shuō)要在他的機(jī)器上啟動(dòng)一個(gè)hts,把他所提供的服務(wù),如FTP等重定向到防火墻所允許的80端口上,這樣才可以成功繞過(guò)防火墻!肯定有人會(huì)問(wèn),如果對(duì)方的機(jī)器上本身就有WWW服務(wù),也就是說(shuō)他的80端口在偵聽(tīng),這么做會(huì)不會(huì)沖突?HTTPTunnel的優(yōu)點(diǎn)就在于,即使他的機(jī)器以前80端口開(kāi)著,現(xiàn)在也不會(huì)出現(xiàn)什么問(wèn)題,重定向的隧道服務(wù)將暢通無(wú)阻!
(2)Tcp_wrapper
Tcp_wrapper是Wietse Venema開(kāi)發(fā)的一個(gè)免費(fèi)軟件。Tcp_wrapper的誕生有個(gè)小小的故事,大約1990年,作者所在大學(xué)的服務(wù)器屢屢受到一個(gè)外來(lái)黑客侵入,因?yàn)槭芎χ鳈C(jī)的硬盤(pán)數(shù)據(jù)屢次被rm -rf/命令整個(gè)抹掉,所以找尋線(xiàn)索極為困難,直到有一天晚上作者在工作的過(guò)程中無(wú)意中發(fā)現(xiàn)這個(gè)黑客在不斷的finger 受害主機(jī)、偷窺受害者的工作。于是,一個(gè)想法誕生了:設(shè)計(jì)一個(gè)軟件,使它可以截獲發(fā)起finger請(qǐng)求的IP,用戶(hù)名等資料。Venema很快投入了工作,而Tcp_wrapper也由此誕生!此后,Tcp_wrapper隨著廣泛的應(yīng)用逐漸成為一種標(biāo)準(zhǔn)的安全工具。通過(guò)它,管理員實(shí)現(xiàn)了對(duì)inetd提供的各種服務(wù)進(jìn)行監(jiān)控和過(guò)濾。
Tcp_wrapper編譯安裝成功后,會(huì)生成一個(gè)tcpd程序,它可以在inetd.conf這個(gè)控制文件中取代in.telnetd的位置,這樣,每當(dāng)有telnet的連接請(qǐng)求時(shí),tcpd即會(huì)截獲請(qǐng)求,先讀取管理員所設(shè)置的訪(fǎng)問(wèn)控制文件,合乎要求,則會(huì)把這次連接原封不動(dòng)的轉(zhuǎn)給真正的in.telnetd程序,由in.telnetd完成后續(xù)工作。如果這次連接發(fā)起的ip不符合訪(fǎng)問(wèn)控制文件中的設(shè)置,則會(huì)中斷連接請(qǐng)求,拒絕提供telnet服務(wù)。Tcp_wrapper訪(fǎng)問(wèn)控制的實(shí)現(xiàn)是依靠?jī)蓚€(gè)文件:hosts.allow,hosts.deny來(lái)實(shí)現(xiàn)的。如果我們編輯/etc/syslog.conf文件時(shí),加入了日志紀(jì)錄功能,即:
#tcp wrapper log
local3.info /var/log/tcplog
編輯結(jié)束后,保存文件,在/var/log下會(huì)生成tcplog文件,注意這個(gè)文件的讀寫(xiě)屬性, 應(yīng)該只對(duì)root有讀寫(xiě)權(quán)限。然后ps -ef | grep syslogd,找出syslogd的進(jìn)程號(hào),kill -HUP 重啟syslogd進(jìn)程使改動(dòng)生效。 在這里,我們可以預(yù)先看一看以后生成的tcplog文件內(nèi)容,如下:
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的主機(jī)上,系統(tǒng)的每一次連接,Tcp_wrapper都做了紀(jì)錄,它的內(nèi)容包括時(shí)間、服務(wù)、狀態(tài)、ip等,對(duì)攻擊這有很大的參考價(jià)值,不過(guò),一定要記得清除日志了。
?。?)rootkit工具:LRK
Rootkit出現(xiàn)于二十世紀(jì)90年代初,它是攻擊者用來(lái)隱藏自己的蹤跡和保留root訪(fǎng)問(wèn)權(quán)限的工具。通常,攻擊者通過(guò)遠(yuǎn)程攻擊或者密碼猜測(cè)獲得系統(tǒng)的訪(fǎng)問(wèn)權(quán)限。接著,攻擊者會(huì)在侵入的主機(jī)中安裝rootkit,然后他會(huì)通過(guò)rootkit的后門(mén)檢查系統(tǒng),看是否有其他的用戶(hù)登錄,如果只有自己,攻擊者就開(kāi)始著手清理日志中的有關(guān)信息。通過(guò)rootkit的嗅探器獲得其它系統(tǒng)的用戶(hù)和密碼之后,攻擊者就會(huì)利用這些信息侵入其它的系統(tǒng)。
如果攻擊者能夠正確地安裝rootkit并合理地清理了日志文件,系統(tǒng)管理員就會(huì)很難察覺(jué)系統(tǒng)已經(jīng)被侵入,直到某一天其它系統(tǒng)的管理員和他聯(lián)系或者嗅探器的日志把磁盤(pán)全部填滿(mǎn),他才會(huì)察覺(jué)已經(jīng)大禍臨頭了。不過(guò),在系統(tǒng)恢復(fù)和清理過(guò)程中,大多數(shù)常用的命令例如ps、df和ls已經(jīng)不可信了。許多rootkit中有一個(gè)叫做FIX的程序,在安裝rootkit之前,攻擊者可以首先使用這個(gè)程序做一個(gè)系統(tǒng)二進(jìn)制代碼的快照,然后再安裝替代程序。FIX能夠根據(jù)原來(lái)的程序偽造替代程序的三個(gè)時(shí)間戳(atime、ctime、mtime)、date、permission、所屬用戶(hù)和所屬用戶(hù)組。如果攻擊者能夠準(zhǔn)確地使用這些優(yōu)秀的應(yīng)用程序,并且在安裝rootkit時(shí)行為謹(jǐn)慎,就會(huì)讓系統(tǒng)管理員很難發(fā)現(xiàn)。
下面我們介紹一個(gè)非常典型的針對(duì)Linux系統(tǒng)的LRK版本6。Linux Rootkit 6是一個(gè)開(kāi)放源碼的rootkit,經(jīng)過(guò)多年的發(fā)展,Linux Rootkit的功能越來(lái)越完善,具有的特征也越來(lái)越多。下面我們簡(jiǎn)單地介紹一下Linux Rootkit包含的各種工具。
首先是隱藏入侵者行蹤的程序。為了隱藏入侵者的行蹤,Linux Rootkit IV的作者可謂煞費(fèi)心機(jī),編寫(xiě)了許多系統(tǒng)命令的替代程序,使用這些程序代替原由的系統(tǒng)命令,來(lái)隱藏入侵者的行蹤。這些程序包括:
ls、find、du 這些程序會(huì)阻止顯示入侵者的文件以及計(jì)算入侵者文件占用的空間。在編譯之前,入侵者可以通過(guò)ROOTKIT_FILES_FILE設(shè)置自己的文件所處的位置,默認(rèn)是/dev/ptyr。注意如果在編譯時(shí)使用了SHOWFLAG選項(xiàng),就可以使用ls -/命令列出所有的文件。這幾個(gè)程序還能夠自動(dòng)隱藏所有名字為:ptyr、hack.dir和W4r3z的文件。
ps、top、pidof 這幾個(gè)程序用來(lái)隱藏所有和入侵者相關(guān)的進(jìn)程。
netstat 隱藏出/入指定IP地址或者端口的網(wǎng)絡(luò)數(shù)據(jù)流量程。
killall 不會(huì)殺死被入侵者隱藏的進(jìn)程。
ifconfig 如果入侵者啟動(dòng)了嗅探器,這個(gè)程序就阻止PROMISC標(biāo)記的顯示,使系統(tǒng)管理員難以發(fā)現(xiàn)網(wǎng)絡(luò)接口已經(jīng)處于混雜模式下。
crontab 隱藏有關(guān)攻擊者的crontab條目。
tcpd 阻止向日志中記錄某些連接。
syslogd 過(guò)濾掉日志中的某些連接信息。
其次是后門(mén)程序。木馬程序可以為本地用戶(hù)提供后門(mén);木馬網(wǎng)絡(luò)監(jiān)控程序則可以為遠(yuǎn)程用戶(hù)提供inetd、rsh、ssh等后門(mén)服務(wù),具體因版本而異。隨著版本的升級(jí),Linux Rootkit IV的功能也越來(lái)越強(qiáng)大,特征也越來(lái)越豐富。一般包括如下網(wǎng)絡(luò)服務(wù)程序:
chfn 提升本地普通用戶(hù)權(quán)限的程序。運(yùn)行chfn,在它提示輸入新的用戶(hù)名時(shí),如果用戶(hù)輸入rookit密碼,他的權(quán)限就被提升為root。
chsh 提升本地用戶(hù)權(quán)限的程序。運(yùn)行chsh,在它提示輸入新的shell時(shí),如果用戶(hù)輸入rootkit密碼,他的權(quán)限就被提升為root。
passwd 和上面兩個(gè)程序的作用相同。在提示你輸入新密碼時(shí),如果輸入rookit密碼,權(quán)限就可以變成root。
login 允許使用任何帳戶(hù)通過(guò)rootkit密碼登錄。如果使用root帳戶(hù)登錄被拒絕,可以嘗試一下rewt。當(dāng)使用后門(mén)時(shí),這個(gè)程序還能夠禁止記錄命令的歷史記錄。
inetd 特洛伊inetd程序,為攻擊者提供遠(yuǎn)程訪(fǎng)問(wèn)服務(wù)。
rshd 為攻擊者提供遠(yuǎn)程shell服務(wù)。攻擊者使用rsh -l rootkitpassWord host command命令就可以啟動(dòng)一個(gè)遠(yuǎn)程root shell。
sshd 為攻擊者提供ssh服務(wù)的后門(mén)程序。
再就是工具程序。所有不屬于以上類(lèi)型的程序都可以歸如這個(gè)類(lèi)型,它們實(shí)現(xiàn)一些諸如:日志清理、報(bào)文嗅探以及遠(yuǎn)程shell的端口綁定等功能,包括:
fix 文件屬性偽造程序。
linsniffer 報(bào)文嗅探器程序。
sniffchk 一個(gè)簡(jiǎn)單的bash shell腳本,檢查系統(tǒng)中是否正有一個(gè)嗅探器在運(yùn)行。
login 允許使用任何帳戶(hù)通過(guò)rootkit密碼登錄。如果使用root帳戶(hù)登錄被拒絕,可以嘗試一下rewt。當(dāng)使用后門(mén)時(shí),這個(gè)程序還能夠禁止記錄命令的歷史記錄。
z2 utmp/wtmp/lastlog日志清理工具。可以刪除utmp/wtmp/lastlog日志文件中有關(guān)某個(gè)用戶(hù)名的所有條目。不過(guò),如果用于Linux系統(tǒng)需要手工修改其源代碼,設(shè)置日志文件的位置。
bindshell 在某個(gè)端口上綁定shell服務(wù),默認(rèn)端口是12497。為遠(yuǎn)程攻擊者提供shell服務(wù)。
(4)netcat
這是一個(gè)簡(jiǎn)單而有用的工具,能夠通過(guò)使用TCP或UDP協(xié)議的網(wǎng)絡(luò)連接去讀寫(xiě)數(shù)據(jù)。它被設(shè)計(jì)成一個(gè)穩(wěn)定的后門(mén)工具,能夠直接由其它程序和腳本輕松驅(qū)動(dòng)。同時(shí),它也是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)調(diào)試和探測(cè)工具,能夠建立你需要的幾乎所有類(lèi)型的網(wǎng)絡(luò)連接,還有幾個(gè)很有意思的內(nèi)置功能。
2、查找Linux下的蛛絲馬跡:日志工具
對(duì)于高明的攻擊者來(lái)說(shuō),進(jìn)入系統(tǒng)后,還應(yīng)了解自己的“蛛絲馬跡”并清除這些痕跡,自然就要了解一些日志工具了。
(1)logcheck
logchek 可以自動(dòng)地檢查日志文件,定期檢查日志文件以發(fā)現(xiàn)違反安全規(guī)則以及異常的活動(dòng)。它先把正常的日志信息剔除掉,把一些有問(wèn)題的日志保留下來(lái),然后把這些信息 email 給系統(tǒng)管理員。logcheck 用 logtail 程序記住上次已經(jīng)讀過(guò)的日志文件的位置,然后從這個(gè)位置開(kāi)始處理新的日志信息。logcheck 主要由下面幾個(gè)主要的文件:
logcheck.sh 可執(zhí)行的腳本文件,記錄logcheck檢查那些日志文件等,我們可以把它加入crontab中定時(shí)運(yùn)行。
logcheck.hacking 是logcheck 檢查的模式文件。和下面的文件一起,按從上到下的順序執(zhí)行。這個(gè)文件表明了入侵活動(dòng)的模式。
logcheck.violations 這個(gè)文件表示有問(wèn)題,違背常理的活動(dòng)的模式。優(yōu)先級(jí)小于上面的那個(gè)模式文件。
logcheck.violations
.ignore 這個(gè)文件和上面的logcheck.violations的優(yōu)先是相對(duì)的,是我們所不關(guān)心的問(wèn)題的模式文件。
logcheck.ignore 這是檢查的最后一個(gè)模式文件。如果沒(méi)有和前三個(gè)模式文件匹配,也沒(méi)有匹配這個(gè)模式文件的話(huà),則輸出到報(bào)告中。
Logtail 記錄日志文件信息。
Logcheck首次運(yùn)行時(shí)讀入相關(guān)的日志文件的所有內(nèi)容,Logtail會(huì)在日志文件的目錄下為每個(gè)關(guān)心的日志文件建立一個(gè)logfile.offset 的偏移量文件,以便于下次檢查時(shí)從這個(gè)偏移量開(kāi)始檢查。Logcheck執(zhí)行時(shí),將未被忽略的內(nèi)容通過(guò)郵件的形式發(fā)送給 logcheck.sh 中 系統(tǒng)管理員指定的用戶(hù)。
?。?)logrotate
一般Linux 發(fā)行版中都自帶這個(gè)工具。它可以自動(dòng)使日志循環(huán),刪除保存最久的日志,它的配置文件是 /etc/logrotate.conf,我們可以在這個(gè)文件中設(shè)置日志的循環(huán)周期、日志的備份數(shù)目以及如何備份日志等等。在/etc/logrotate.d目錄下,包括一些工具的日志循環(huán)設(shè)置文件,如syslog等,在這些文件中指定了如何根據(jù)/etc/logrotate.conf做日志循環(huán),也可以在這里面添加其他的文件以循環(huán)其他服務(wù)的日志。
?。?)swatch
swatch 是一個(gè)實(shí)時(shí)的日志監(jiān)控工具,我們可以設(shè)置感興趣的事件。Swatch 有兩種運(yùn)行方式:一種可以在檢查日志完畢退出,另一種可以連續(xù)監(jiān)視日志中的新信息。Swatch提供了許多通知方式,包括email、振鈴、終端輸出、多種顏色等等。安裝前,必須確保系統(tǒng)支持perl。swatch 軟件的重點(diǎn)是配置文件swatchmessage,這個(gè)文本文件告訴 swatch 需要監(jiān)視什么日志,需要尋找什么觸發(fā)器,和當(dāng)觸發(fā)時(shí)所要執(zhí)行的動(dòng)作。當(dāng)swatch發(fā)現(xiàn)與swatchmessage中定義的觸發(fā)器正則表達(dá)式相符時(shí),它將執(zhí)行在 swatchrc中定義的通知程序。
當(dāng)然,上面所介紹的軟件只是Linux大海中的幾只美麗的貝殼,隨著越來(lái)越多的用戶(hù)加入到Linux大軍中,我們相信,優(yōu)秀的Hack也將越來(lái)越多,這反過(guò)來(lái)也將促進(jìn)Linux操作系統(tǒng)逐步走向成熟,我們拭目以待。
新聞熱點(diǎn)
疑難解答
圖片精選