使用 Shell 腳本在 Linux 服務(wù)器上能夠控制、毀壞或者獲取任何東西,通過一些巧妙的攻擊方法黑客可能會(huì)獲取巨大的價(jià)值,但大多數(shù)攻擊也留下蹤跡。當(dāng)然,這些蹤跡也可通過 Shell 腳本等方法來隱藏。
尋找攻擊證據(jù)就從攻擊者留下的這些痕跡開始,如文件的修改日期。每一個(gè) Linux 文件系統(tǒng)中的每個(gè)文件都保存著修改日期。系統(tǒng)管理員發(fā)現(xiàn)文件的最近修改時(shí)間,便提示他們系統(tǒng)受到攻擊,采取行動(dòng)鎖定系統(tǒng)。然而幸運(yùn)的是,修改時(shí)間不是絕對(duì)可靠的記錄,修改時(shí)間本身可以被欺騙或修改,通過編寫 Shell 腳本,攻擊者可將備份和恢復(fù)修改時(shí)間的過程自動(dòng)化。
操作步驟
第一步:查看和操作時(shí)間戳
多數(shù) Linux 系統(tǒng)中包含一些允許我們快速查看和修改時(shí)間戳的工具,其中最具影響的當(dāng)數(shù) “Touch”,它允許我們創(chuàng)建新文件、更新文件 / 文件組最后一次被 “touched” 的時(shí)間。
若該文件不存在, 運(yùn)行上面的命令將創(chuàng)建一個(gè)名為 “file” 的新文件;若它已經(jīng)存在,該命令將會(huì)更新修改日期為當(dāng)前系統(tǒng)時(shí)間。我們也可以使用一個(gè)通配符,如下面的字符串。
這個(gè)命令將更新它運(yùn)行的文件夾中的每個(gè)文件的時(shí)間戳。在創(chuàng)建和修改文件之后,有幾種方法可以查看它的詳細(xì)信息,第一個(gè)使用的為 “stat” 命令。
運(yùn)行 stat 會(huì)返回一些關(guān)于文件的信息,包含訪問、修改或更新時(shí)間戳。針對(duì)一批文件可使用 ls 參數(shù)查看各文件的時(shí)間戳,使用 “ -l” 或者 “l(fā)ong”,該命令會(huì)列出文件詳細(xì)信息,包含輸出時(shí)間戳。
現(xiàn)在就可以設(shè)置當(dāng)前時(shí)間戳并查看已經(jīng)設(shè)置的時(shí)間戳,也可使用 touch 來定義一個(gè)自定義時(shí)間戳,可使用 “d” 標(biāo)志,用 yyyy-mm-dd 格式定義日期,緊隨其后設(shè)置時(shí)間的小時(shí)、分鐘及秒,如下:
通過 ls 命令來確認(rèn)修改信息:
這種方法適用于修改個(gè)別時(shí)間戳,對(duì)于隱藏服務(wù)器上的操作痕跡,這個(gè)方法不太奏效,可以使用 shell 腳本將該過程自動(dòng)化。
步驟二:組織 Shell 腳本
在開始編寫腳本之前需要考慮清楚需要執(zhí)行哪些過程。為了在服務(wù)器上隱藏痕跡,攻擊者需要將文件夾的原始時(shí)間戳寫入一個(gè)文件,同時(shí)能夠在我們進(jìn)行任何修改設(shè)置之后還能回到原始文件。
這兩個(gè)不同的功能會(huì)根據(jù)用戶的輸入或者參數(shù)的不同而觸發(fā),腳本會(huì)根據(jù)這些參數(shù)執(zhí)行相應(yīng)的功能,同時(shí)我們需要有一種方法來處理錯(cuò)誤。根據(jù)用戶的輸入將會(huì)進(jìn)行三種可能的操作:
沒有參數(shù)——返回錯(cuò)誤消息;
保存時(shí)間戳標(biāo)記——將時(shí)間戳保存到文件中;
恢復(fù)時(shí)間戳標(biāo)記——根據(jù)保存列表恢復(fù)文件的時(shí)間戳。
我們可以使用嵌套語句 if/or 語句來創(chuàng)建腳本,也可以根據(jù)條件將每個(gè)函數(shù)分配給自己的 “if” 語句,可選擇在文本編輯器或者 nano 中開始編寫腳本。
步驟三:開始腳本
從命令行啟動(dòng) nano 并創(chuàng)建一個(gè)名為 “timestamps.sh” 的腳本,命令如下:
在 nano 中按下 Ctrl + O 保存這個(gè)文件,通過 chmod 命令將它標(biāo)記為可運(yùn)行的腳本。
然后運(yùn)行腳本,測(cè)試無參數(shù)時(shí)返回錯(cuò)誤信息的功能。如果腳本返回我們的 echo 語句,我們就可以繼續(xù)下一個(gè)條件了。
步驟四:將時(shí)間戳寫入文件
這樣顯示的就是我們程序需要的信息,只是需要修改月份格式為數(shù)字格式:
在一個(gè)文件夾中運(yùn)行我們會(huì)看到如下圖所示的結(jié)果:
然后將輸出結(jié)果通過 “》》” 發(fā)送到名為 “timestamps” 的文件中:
doecho$x|ls-l|sed-n's/^.*Jan/01/p;s/^.*Feb/02/p;s/^.*Mar/03/p;s/^.*Apr/04/p;s/^.*May/05/p;s/^.*Jun/06/p;s/^.*Jul/07/p;s/^.*Aug/08/p;s/^.*Sep/09/p;s/^.*Oct/10/p;s/^.*Nov/11/p;s/^.*Dec/12/p;'>>timestamps
至此,腳本的前兩個(gè)操作就完成了,顯示結(jié)果如下圖:
下面可用 “-s” 標(biāo)示測(cè)試腳本,用 cat 檢查保存的信息:
步驟五:恢復(fù)文件的時(shí)間戳
在保存好原始時(shí)間戳后,需要恢復(fù)時(shí)間戳讓別人覺察不到文件被修改過,可使用下面命令:
雖然這四個(gè)變量在保存的時(shí)間戳文件中是一致的,但是如果時(shí)間戳是在過去一年中發(fā)生的,它只會(huì)顯示時(shí)間而不是年份。如果需要確定當(dāng)前年份,我們可以分配為寫腳本的年份,也可以從系統(tǒng)中返回年份,使用 cal 命令可以查看日歷。
然后檢索第一行,只讓顯示想要得年份信息:
定義了所有變量之后可以使用 “if else” 語句,根據(jù)格式化的日期更新文件的時(shí)間戳,使用 touch 語法:
由于每個(gè)時(shí)間都包含冒號(hào),因此可使用下面的 “ifelse” 語句完成操作,整體操作如下圖所示:
步驟六:使用腳本
使用的命令主要有以下幾個(gè):
。/timestamps.sh –s 保存文件時(shí)間戳
touch -d “2050-10-12 10:00:00″ * 修改目錄下的所有文件時(shí)間戳
ls –a 確認(rèn)修改的文件
。/timestamps.sh –r 恢復(fù)文件原始時(shí)間戳
最后可以再次運(yùn)行 “l(fā)s -a” 來查看文件的時(shí)間戳是否和之前備份的時(shí)間戳一致,整個(gè)的腳本就執(zhí)行完成了,如下圖所示:
總結(jié)
該腳本只是用來清除攻擊服務(wù)器之后遺留的一些痕跡。為了隱藏痕跡,黑客在針對(duì)服務(wù)器實(shí)施具體的攻擊時(shí),必須仔細(xì)考慮使用的每一個(gè)方法,以及入侵服務(wù)器之后如何隱藏自己的痕跡。
通過上面的介紹我們了解到,時(shí)間戳也是 “會(huì)撒謊的”,因此系統(tǒng)管理員必須意識(shí)到他們的許多日志和保護(hù)措施是可以被操縱的,雖然看起來好像沒有異常。
-
Shell腳本
+關(guān)注
關(guān)注
0文章
36瀏覽量
7960
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論