www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 技術(shù)學院 > 技術(shù)前線
[導讀]反彈Shell是黑客(即Shell攻擊者)用于控制受害服務器的一種手段。Shell攻擊者指定服務端,并將需要受害服務器執(zhí)行的命令(標準輸入、標準輸出、標準錯誤等)重定向到該服務端。

使用 Shell 腳本在 Linux 服務器上能夠控制、毀壞或者獲取任何東西,通過一些巧妙的攻擊方法黑客可能會獲取巨大的價值,但大多數(shù)攻擊也留下蹤跡。當然,這些蹤跡也可通過 Shell 腳本等方法來隱藏。

尋找攻擊證據(jù)就從攻擊者留下的這些痕跡開始,如文件的修改日期。每一個 Linux 文件系統(tǒng)中的每個文件都保存著修改日期。系統(tǒng)管理員發(fā)現(xiàn)文件的最近修改時間,便提示他們系統(tǒng)受到攻擊,采取行動鎖定系統(tǒng)。然而幸運的是,修改時間不是絕對可靠的記錄,修改時間本身可以被欺騙或修改,通過編寫Shell 腳本,攻擊者可將備份和恢復修改時間的過程自動化。

操作步驟

第一步:查看和操作時間戳

多數(shù) Linux 系統(tǒng)中包含一些允許我們快速查看和修改時間戳的工具,其中最具影響的當數(shù) “Touch”,它允許我們創(chuàng)建新文件、更新文件 / 文件組最后一次被 “touched” 的時間。

touch file

若該文件不存在, 運行上面的命令將創(chuàng)建一個名為 “file” 的新文件;若它已經(jīng)存在,該命令將會更新修改日期為當前系統(tǒng)時間。我們也可以使用一個通配符,如下面的字符串。

touch*

這個命令將更新它運行的文件夾中的每個文件的時間戳。在創(chuàng)建和修改文件之后,有幾種方法可以查看它的詳細信息,第一個使用的為 “stat” 命令。

stat file

運行 stat 會返回一些關于文件的信息,包含訪問、修改或更新時間戳。針對一批文件可使用 ls 參數(shù)查看各文件的時間戳,使用 “-l” 或者 “l(fā)ong”,該命令會列出文件詳細信息,包含輸出時間戳。

ls–l

現(xiàn)在就可以設置當前時間戳并查看已經(jīng)設置的時間戳,也可使用 touch 來定義一個自定義時間戳,可使用 “d” 標志,用 yyyy-mm-dd 格式定義日期,緊隨其后設置時間的小時、分鐘及秒,如下:

touch -d"2001-01-01 20:00:00"file

通過 ls 命令來確認修改信息:

ls-lfile

這種方法適用于修改個別時間戳,對于隱藏服務器上的操作痕跡,這個方法不太奏效,可以使用 shell 腳本將該過程自動化。

步驟二:組織 Shell 腳本

在開始編寫腳本之前需要考慮清楚需要執(zhí)行哪些過程。為了在服務器上隱藏痕跡,攻擊者需要將文件夾的原始時間戳寫入一個文件,同時能夠在我們進行任何修改設置之后還能回到原始文件。

這兩個不同的功能會根據(jù)用戶的輸入或者參數(shù)的不同而觸發(fā),腳本會根據(jù)這些參數(shù)執(zhí)行相應的功能,同時我們需要有一種方法來處理錯誤。根據(jù)用戶的輸入將會進行三種可能的操作:

沒有參數(shù)——返回錯誤消息;

保存時間戳標記——將時間戳保存到文件中;

恢復時間戳標記——根據(jù)保存列表恢復文件的時間戳。

我們可以使用嵌套語句 if/or 語句來創(chuàng)建腳本,也可以根據(jù)條件將每個函數(shù)分配給自己的 “if” 語句,可選擇在文本編輯器或者 nano 中開始編寫腳本。

步驟三:開始腳本

從命令行啟動 nano 并創(chuàng)建一個名為 “timestamps.sh” 的腳本,命令如下:

nano timestamps.sh

然后進行下列命令:

#!/bin/bash

if[$#-eq 0];then

echo“Use asave (-s) or restore (-r) parameter.”

exit1

fi

在 nano 中按下 Ctrl + O 保存這個文件,通過 chmod 命令將它標記為可運行的腳本。

chmod +xtimestamps.sh

然后運行腳本,測試無參數(shù)時返回錯誤信息的功能。如果腳本返回我們的 echo 語句,我們就可以繼續(xù)下一個條件了。

./timestamps.sh

步驟四:將時間戳寫入文件

定義 if 語句的條件,“-s” 表示執(zhí)行保存功能:

if[$1="-s"] ; then

fi

當然,需要檢查計劃保存的時間戳文件是否存在,如果存在,我們可以刪除它(名為 timestamps 的文件),避免重復或錯誤的輸入,使用下面的命令:

rm-f timestamps;

然后使用 “l(fā)s” 命令列出所有文件和它的修改時間,可將其輸出到另一個程序,如 sed,以幫助我們稍后清理這個輸入。

ls–l

通常會出現(xiàn)下面的顯示結(jié)果:

-rw-r--r-- 1 user user 0 Jan 1 2017 file

為了保存時間戳,我們只需要年、月、日及文件名,下面命令可以清除 “Jan” 之前的信息:

ls-lfile| sed 's/^.*Jan/Jan/p'

這樣顯示的就是我們程序需要的信息,只是需要修改月份格式為數(shù)字格式:

ls-lfile| sed 's/^.*Jan/01/p'

將所有月份都替換為數(shù)字:

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;'

在一個文件夾中運行我們會看到如下圖所示的結(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

至此,腳本的前兩個操作就完成了,顯示結(jié)果如下圖:


下面可用 “-s” 標示測試腳本,用 cat 檢查保存的信息:

./timestamps.sh–s

cattimestamps

步驟五:恢復文件的時間戳

在保存好原始時間戳后,需要恢復時間戳讓別人覺察不到文件被修改過,可使用下面命令:

if$1= "-r"; thenfi

然后使用下面命令,轉(zhuǎn)發(fā)文本文件的內(nèi)容,并一行一行運行:

cattimestamps |whilereadlinedodone

然后再分配一些變量讓文件數(shù)據(jù)的使用更簡單:

MONTH=$(echo $line| cut -f1 -d );

DAY=$(echo $line| cut -f2 -d );

FILENAME=$(echo $line| cut -f4 -d );

YEAR=$(echo $line| cut -f3 -d )

雖然這四個變量在保存的時間戳文件中是一致的,但是如果時間戳是在過去一年中發(fā)生的,它只會顯示時間而不是年份。如果需要確定當前年份,我們可以分配為寫腳本的年份,也可以從系統(tǒng)中返回年份,使用 cal 命令可以查看日歷。

然后檢索第一行,只讓顯示想要得年份信息:

CURRENTYEAR=$(cal | head -1| cut -f6- -d | sed 's/ //g')

定義了所有變量之后可以使用 “if else” 語句,根據(jù)格式化的日期更新文件的時間戳,使用 touch 語法:

touch -d "2001-01-01 20:00:00"file

由于每個時間都包含冒號,因此可使用下面的 “ifelse” 語句完成操作,整體操作如下圖所示:

if[ $YEAR== *:* ]; then

touch -d $CURRENTYEAR-$MONTH-$DAY$YEAR:00 $FILENAME;

else

touch -d ""$YEAR-$MONTH-$DAY""$FILENAME;

步驟六:使用腳本

使用的命令主要有以下幾個:

./timestamps.sh–s 保存文件時間戳

touch -d “2050-10-1210:00:00″ * 修改目錄下的所有文件時間戳

ls–a確認修改的文件

./timestamps.sh–r 恢復文件原始時間戳

最后可以再次運行 “l(fā)s -a” 來查看文件的時間戳是否和之前備份的時間戳一致,整個的腳本就執(zhí)行完成了。

總結(jié)

該腳本只是用來清除攻擊服務器之后遺留的一些痕跡。為了隱藏痕跡,黑客在針對服務器實施具體的攻擊時,必須仔細考慮使用的每一個方法,以及入侵服務器之后如何隱藏自己的痕跡。

通過上面的介紹我們了解到,時間戳也是 “會撒謊的”,因此系統(tǒng)管理員必須意識到他們的許多日志和保護措施是可以被操縱的,雖然看起來好像沒有異常。

反彈Shell是黑客(即Shell攻擊者)用于控制受害服務器的一種手段。Shell攻擊者指定服務端,并將需要受害服務器執(zhí)行的命令(標準輸入、標準輸出、標準錯誤等)重定向到該服務端。受害服務器主動連接攻擊者的服務端程序,攻擊者的服務端通過監(jiān)聽來自受害服務器的請求,對目標服務器下發(fā)指令并獲取執(zhí)行結(jié)果,以達到攻擊者可以控制受害服務器的目的。

反彈Shell攻擊現(xiàn)狀

阿里云云安全中心通過分析歷史中云上環(huán)境的Linux服務器入侵事件,總結(jié)出了攻擊鏈路中實現(xiàn)反彈Shell的語言及工具使用率,詳情如下圖所示。

其中交互式Bash+/dev/tcp是使用最多的反彈Shell,/dev/tcp作為Bash的默認特性使得該反彈方式兼容絕大多數(shù)環(huán)境,因此使用率高。緊隨其后的是兼容性較好且靈活易用的Python。隨著Go語言的興起,云上入侵事件開始出現(xiàn)Go反彈Shell。從上圖可以看出彈Shell實現(xiàn)的方式靈活多樣,每種語言都可以進一步延伸和擴展。因此,為了保障最優(yōu)的檢出效果,反彈Shell的檢測方案需要綜合考慮多種場景因素。

常規(guī)檢測方法

常見的檢測方案是通過正則匹配的方式,提取反彈Shell命令的特征去匹配命令日志、流量日志。該方案具有以下不足:

命令日志采集不完整:例如通過Netlink等方式采集的日志,在碰到管道符、重定向時會無法采集完整的原始執(zhí)行命令。而通過Patch Bash的方式記錄命令日志,在遇到服務器使用Zsh、Ksh等其他Shell環(huán)境,或攻擊者上傳自己編譯的Bash時會失效。正則匹配無法覆蓋無窮無盡的文本對抗:攻擊者可以不斷挖掘出新的變形方式來繞過正則匹配。在實際業(yè)務場景中,過多復雜的正則匹配會帶來更大性能壓力,而通配性更廣的正則匹配會帶來更多誤報。特征匹配失效:在網(wǎng)絡流量被加密后,特征匹配會失效。

分類檢測思想

因為表層對抗是無窮無盡的,檢測需要由表及里,盡可能挖掘出更本質(zhì)的解決方法。從檢測的角度來看,反彈Shell的本質(zhì)可以理解為:網(wǎng)絡通信+命令執(zhí)行+重定向方式。

命令執(zhí)行和網(wǎng)絡通信借助重定向,可以構(gòu)建出一條流動的數(shù)據(jù)通道。攻擊者可以利用這條通道下發(fā)指令控制受害服務器。不同的實現(xiàn)方式組合在一起,就形成了多種多樣的反彈Shell。例如:

網(wǎng)絡通信可以使用TCP、UDP、ICMP等協(xié)議,TCP協(xié)議再細分又可以包含HTTP、HTTPS協(xié)議等,UDP包含DNS等。命令執(zhí)行可以通過調(diào)用Shell解釋器、Glibc庫、Syscall等方式實現(xiàn)。重定向可以通過管道、成對的偽終端、內(nèi)存文件等實現(xiàn)。

本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

CPU親和度通過限制進程或線程可以運行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關鍵字: Linux 嵌入式

在Linux系統(tǒng)性能優(yōu)化中,內(nèi)存管理與網(wǎng)絡連接處理是兩大核心領域。vm.swappiness與net.core.somaxconn作為關鍵內(nèi)核參數(shù),直接影響系統(tǒng)在高負載場景下的穩(wěn)定性與響應速度。本文通過實戰(zhàn)案例解析這兩個...

關鍵字: Linux 內(nèi)存管理

對于LLM,我使用b谷歌Gemini的免費層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開源的,您可以在自己的服務器上托管它,而...

關鍵字: 人工智能 n8n Linux

在Linux系統(tǒng)管理中,權(quán)限控制是安全運維的核心。本文通過解析/etc/sudoers文件配置與組策略的深度應用,結(jié)合某金融企業(yè)生產(chǎn)環(huán)境案例(成功攔截98.7%的非法提權(quán)嘗試),揭示精細化權(quán)限管理的關鍵技術(shù)點,包括命令別...

關鍵字: Linux 用戶權(quán)限 sudoers文件

Linux內(nèi)核中的信號量(Semaphore)是一種用于資源管理的同步原語,它允許多個進程或線程對共享資源進行訪問控制。信號量的主要作用是限制對共享資源的并發(fā)訪問數(shù)量,從而防止系統(tǒng)過載和數(shù)據(jù)不一致的問題。

關鍵字: Linux 嵌入式

在云計算與容器化技術(shù)蓬勃發(fā)展的今天,Linux網(wǎng)絡命名空間(Network Namespace)已成為構(gòu)建輕量級虛擬網(wǎng)絡的核心組件。某頭部互聯(lián)網(wǎng)企業(yè)通過命名空間技術(shù)將測試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關鍵字: Linux 云計算

在Linux內(nèi)核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉(zhuǎn)向nftables的背景下,某電商平臺通過遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實生產(chǎn)環(huán)境案例,詳解從ipt...

關鍵字: nftables Linux

在Linux設備驅(qū)動開發(fā)中,等待隊列(Wait Queue)是實現(xiàn)進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現(xiàn)原理,結(jié)合...

關鍵字: 驅(qū)動開發(fā) C語言 Linux

在Unix/Linux進程間通信中,管道(pipe)因其簡單高效被廣泛使用,但默認的半雙工特性和無同步機制容易導致數(shù)據(jù)競爭。本文通過父子進程雙向通信案例,深入分析互斥鎖與狀態(tài)機在管道同步中的應用,實現(xiàn)100%可靠的數(shù)據(jù)傳...

關鍵字: 管道通信 父子進程 Linux

RTOS :RTOS的核心優(yōu)勢在于其實時性。它采用搶占式調(diào)度策略,確保高優(yōu)先級任務能夠立即獲得CPU資源,從而在最短時間內(nèi)完成處理。RTOS的實時性是通過嚴格的時間管理和任務調(diào)度算法實現(xiàn)的,能夠滿足對時間敏感性要求極高的...

關鍵字: Linux RTOS
關閉