一、Shift后門(mén)的概念
Shift后門(mén)是一種可以替換原有的sudo命令的后門(mén),在裸機(jī)或虛擬機(jī)環(huán)境下完美工作。它可以通過(guò)惡意代碼篡改系統(tǒng)的輸入輸出,從而達(dá)到竊取密碼或者執(zhí)行其他危險(xiǎn)的操作。
Shift后門(mén)的工作原理是在用戶執(zhí)行sudo命令時(shí),自動(dòng)按順序調(diào)用系統(tǒng)中的sudo、/usr/bin/whoami、/usr/bin/time和/bin/sh這幾個(gè)程序。而Shift后門(mén)則依靠惡意代碼將這幾個(gè)程序后門(mén)化,以達(dá)到實(shí)現(xiàn)任意命令的目的。
然而,這種后門(mén)的特點(diǎn)是完全不會(huì)影響sudo命令的正常功能,因此不容易被察覺(jué)和發(fā)現(xiàn),具有很高的欺騙性。
二、Shift后門(mén)的實(shí)現(xiàn)方式
Shift后門(mén)通常需要在系統(tǒng)執(zhí)行sudo命令時(shí)自動(dòng)調(diào)用。這也是它被稱(chēng)為"Shift"的原因,因?yàn)檫@個(gè)單詞在鍵盤(pán)上按下時(shí),可以得到"sudo"的字母順序。
實(shí)現(xiàn)Shift后門(mén)的方式通常有兩種:
1. 編譯好的程序
針對(duì)特定的操作系統(tǒng)和版本,惡意攻擊者編譯出后門(mén)程序,并且將其拷貝到合適的位置。這種方式常常需要root權(quán)限才能實(shí)現(xiàn),因此很難被正常的用戶察覺(jué)到。
在實(shí)際操作中,攻擊者可以先通過(guò)其他漏洞獲取root權(quán)限,然后再執(zhí)行這個(gè)惡意程序。
2. 內(nèi)核模塊
內(nèi)核模塊是類(lèi)似插件的一種機(jī)制。攻擊者可以針對(duì)特定的內(nèi)核版本編寫(xiě)一個(gè)后門(mén)內(nèi)核模塊,然后配合其他工具將其插入到被攻擊目標(biāo)的系統(tǒng)中。這種方式可以避免文件被殺毒軟件查殺,從而提高攻擊者的成功率。
三、Shift后門(mén)的攻擊效果
Shift后門(mén)的攻擊效果非常顯著,它可以竊取用戶輸入的密碼,實(shí)現(xiàn)遠(yuǎn)程控制等危險(xiǎn)操作。
1. 竊取密碼
Shift后門(mén)利用惡意代碼篡改用戶輸入的密碼,從而達(dá)到竊取密碼的目的。通常情況下,用戶輸入的密碼會(huì)在后門(mén)中被記錄下來(lái),然后傳回到攻擊者的服務(wù)器上。攻擊者可以通過(guò)解密得到明文密碼,并且利用這些密碼完成其他的攻擊。
2. 實(shí)現(xiàn)遠(yuǎn)程控制
Shift后門(mén)在竊取密碼的同時(shí),還能夠執(zhí)行其他惡意代碼。攻擊者可以通過(guò)這個(gè)后門(mén)直接遠(yuǎn)程操控被攻擊目標(biāo)的系統(tǒng),進(jìn)行各種危險(xiǎn)操作。
四、Shift后門(mén)的防御方式
針對(duì)Shift后門(mén)的攻擊,有以下幾種防御方式:
1. 更新系統(tǒng)和軟件
攻擊者通常會(huì)利用系統(tǒng)或軟件中的漏洞來(lái)實(shí)現(xiàn)Shift后門(mén)的攻擊。因此,及時(shí)更新系統(tǒng)和軟件版本是最有效的防御方式之一。
2. 安裝殺毒軟件
殺毒軟件有很強(qiáng)的偵測(cè)能力,可以防御很多常見(jiàn)的惡意程序和后門(mén)。安裝殺毒軟件并定期對(duì)系統(tǒng)進(jìn)行全盤(pán)掃描,可以及時(shí)發(fā)現(xiàn)系統(tǒng)中的異常情況。
3. 配置sudo
在sudo的配置文件中,可以設(shè)置只允許授權(quán)用戶以某種方式執(zhí)行sudo命令。這樣可以避免未知來(lái)源的后門(mén)利用sudo命令執(zhí)行任意命令。
4. 監(jiān)控系統(tǒng)日志
及時(shí)監(jiān)控系統(tǒng)日志,可以發(fā)現(xiàn)系統(tǒng)中的異常情況。如果發(fā)現(xiàn)sudo命令經(jīng)常被執(zhí)行,但是日志中沒(méi)有對(duì)應(yīng)的用戶信息,那么很可能是被插入了Shift后門(mén)。
五、Shift后門(mén)示例代碼
#!/bin/bash
sudo(){
/usr/bin/sudo "$@"
if [ $? -ne 0 ]; then
echo "[sudo] password for $USER: "
read -s password
echo "$password" | python shift.py
/usr/bin/sudo "$@"
fi
}
上述代碼是一個(gè)簡(jiǎn)單的Shift后門(mén)實(shí)現(xiàn)例子,它在用戶執(zhí)行sudo命令時(shí),自動(dòng)調(diào)用Python腳本,并將用戶輸入的密碼作為參數(shù)傳遞下去。對(duì)應(yīng)的Python腳本如下:
import sys
import os
SHELL_PATH = "/bin/bash"
def main():
if len(sys.argv) <= 1:
sys.exit(1)
password = sys.argv[1]
os.system("%s -c 'echo \"%s\" | /usr/bin/sudo -S /usr/bin/whoami'" % (SHELL_PATH, password))
os.system("%s -c 'echo \"%s\" | /usr/bin/sudo -S /usr/bin/time'" % (SHELL_PATH, password))
os.system("%s -c 'echo \"%s\" | /usr/bin/sudo -S /bin/sh'" % (SHELL_PATH, password))
if __name__ == '__main__':
main()