Security

為什麼使用者名沒有 UID?

  • November 16, 2020

我的伺服器遭到入侵,我嘗試獲取惡意使用者的打開文件,它說該使用者沒有 UID,因此找不到任何東西。我看到該使用者正在執行一些程序,但我無法獲取它打開的文件。

它說使用者沒有 UID

我當然可以同意這一點。由“在伺服器上執行東西的惡意使用者”定義的使用者沒有 UID,但那是因為該使用者可能(可能)在您的機器上以不同的 UID 執行東西(從現在開始我會堅持到術語“攻擊者”)。

因此,正確的路徑是嘗試找出攻擊者採取了什麼路徑來控制您機器上可以執行的程序,fork()並且exec(). 這是一個很好的起點,因為歸根結底,成功的攻擊始於獲得對可以做到這一點的程序的控制(可能以非常複雜的方式)。攻擊者如何設法達到這一點是攻擊的不同之處。

也就是說,關於如何處理受損伺服器的經典答案是從軌道上對其進行核攻擊。它不再是您的電腦,您無法確定攻擊者獲得了多少訪問權限。攻擊者是否獲得了 root 權限,那麼您也可能正在連接到曾經是您的伺服器上執行的虛擬機。或者你甚至可以對付一個rootkit。

(注:“nuke from orbit”對大多數人來說意味著“全新安裝”)


回到實際問題:

為什麼使用者名沒有 UID?

或者更好的是,問題文本所暗示的一個:

(沒有 UID 的程序如何執行?)

程序在沒有 UID 的情況下執行的想法是荒謬的。維持程序存在的核心結構(實際上是 KSE)包含一個必須填充的 UID 欄位(即使在核心錯誤的情況下填充了垃圾)。因此,每個程序總是有一個 UID。

您最有可能處理的是 UID 未列在/etc/passwd中,雖然對於程序來說很奇怪,但與這樣做沒有什麼不同touch leet; chown 1337 leet(假設您沒有具有該 UID 的使用者 leet,也就是說)。幾乎所有標準的 *nix 工具都可以像處理使用者名一樣處理 UID。IE

lsof -u username

相當於

lsof -u `id -u username`

find . -user username

也相當於

find . -user `id -u username`

因此回到第一句話(強調我的):

它說使用者沒有 UID

不管裡面有什麼,它都不是標準的 nix 工具。或者你真的比你想像的更糟,並且在攻擊者創造的一些相當奇怪的環境中執行。*

引用自:https://unix.stackexchange.com/questions/362531