Linux痕跡清除
在滲透的過程中,我們會經常遇到linux。由于linux日志非常詳細而且方便查看,導致我們的操作記錄很 有可能會在管理員前面暴露無遺,所以這次主要跟大家分享一下在linux下面如何隱藏我們的登陸日志和 操作日志。按照客戶端的情況,大概分為兩種,一種linux,一種windows。
此處的服務端測試系統為CentOS 7.9。
一、 當客戶端系統為linux時。
在linux下面相對簡單,可以采用以下命令登陸,不會在w、 last、 lastlog里面留下痕跡:
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash -i
或者:
ssh -o UserKnownHostsFile=/dev/null -luser host /bin/bash -i
如果目標更改了端口,在host后面加上 -p 端口就可以了。

登陸之后,記得先執行以下的命令,清除當前會話所有緩存:
unset HISTFILE;unset HISTSIZE;unset HISTORY;unset HISTSAVE;unset HISTFILESIZE

遇到需要交互的時候,可以用python模擬出一個pty:
python -c 'import pty;pty.spawn("/bin/sh")'

模擬pty之后再清除當前會話所有緩存:
unset HISTFILE;unset HISTSIZE;unset HISTORY;unset HISTSAVE;unset HISTFILESIZE

這樣子,在w、 last、 lastlog命令里面都無法查看到我們登陸。



不過依然會在/var/log/目錄下面的日志里留下登陸成功或者失敗的記錄。這個痕跡的刪除我們先把 windows下面隱藏登陸痕跡講完之后再詳細列出。
二、 當客戶端為windows時。
如果我們內網滲透的時候獲得了一臺windows機器,條件允許的情況下可以用frp或者nps做一個代理, 然后在linux里面用proxychains這個工具代理用第一種方法登陸。條件不允許的話,可以用xshell等工具 登陸:

登陸進去第一件事就是清除當前會話的所有緩存:
unset HISTFILE;unset HISTSIZE;unset HISTORY;unset HISTSAVE;unset HISTFILESIZE

并且一定要注意的是,我們要記住這個last login的時間和IP,到時候修改最后登陸時間有用。
現在這臺機器上次管理登陸的時間是2022年1月18日 17:56:32, IP是192.168.136.129
接著使用logtamper。這個工具是xi4oyu大牛在2008年的時候寫的,已經有十幾個年頭了,依然可以使 用。唯一有不好的地方在于,它不能指定刪除某條記錄。我在xi4oyu大牛的代碼基礎上修改了一下,增加了一個修改特定記錄的功能。
上傳到臨時目錄:

解壓后進入目錄make一下:

這里面一共有三個文件:

其中logtamper是我們剛剛編譯好的, logtamper-static-2.x是xi4oyu大牛之前編譯好的靜態執行文件, 但是我發現在一些3.x的內核里面會有一些小錯誤,所以在centos 7.9里面重新編譯了一個。建議如果有 gcc的話,最好還是在當前環境make一下,畢竟linux的機制不像windows一樣可以通用。
執行一下logtamper看幫助:

第一個參數-f是指定日志文件的位置,一般都是默認的,不需要指定。
-h是隱藏當前在線用戶,就是w命令顯示的。

執行以下代碼:(就是用戶和當前登陸的IP)
./logtamper -h root 192.168.136.129

可以看到當前用戶已經看不到了。
-w是隱藏last命令看到的日志,但是這里有個小缺陷,只能刪除指定IP和用戶名的登陸記錄。如果管理 員登陸的IP和我們當前登陸的IP一致,那么就會把管理之前的登陸記錄也一并刪除。所以我加了最后的 參數,一會再介紹。

假設我們要刪除從192.168.136.157登陸的root日志:
./logtamper -w root 192.168.136.157
可以看到執行后192.168.136.157這個登陸記錄已經刪除了:

-m 是設置最后一次登陸時間。

使用以下的命令將它設置成剛才我們登陸的時候記錄的時間(2022年1月18日 17:56:32)和IP 192.168.136.129:
./logtamper -m root 192.168.136.129 pts/0 2022:01:18:17:56:32
可以看到最后一次登陸時間已經被還原成之前的了:

-u 是我新增加的參數,它的作用是刪除從上往下第n條(n是接著-u之后的數字)用戶登陸記錄(reboot不計算在里面),為了防止我們登陸的IP和管理一致的時候可以單獨刪除我們自己的記錄。n留空的話默 認刪除最上面一條。
現在最后一次登陸是我們的:

執行下面的命令:
./logtamper -u

可以看到我們最近的登陸記錄沒有了。
三、 /var/log下面的日志刪除。
現在我們已經是可以在w、 last、 lastlog命令下都看不到了,但是由于linux系統的日志嚴謹性, 在/var/log下面還存在一些日志文件會記錄我們的登陸等敏感操作,對于這些文件也不能忽略。
當前系統是CentOS,需要注意的文件
有/var/log/secure、 /var/log/messages、 /var/log/audit/audit.log等等。這里以/var/log/secure為例介 紹一下方法。
首先看一下有多少行:
cat /var/log/secure | wc -l

可以cat一下看看自己登陸進來的日志在大概第幾行,然后將上面的內容導出到另外一個文件。如果行數 特別多無法cat的話,可以大概估算一下,取個70%差不多。
這里我們把前25行不屬于我們的日志導出到另一個文件,然后改變屬性,再替換掉原來的日志文件。為 什么要替換呢?因為linux的機制,如果你單純只是再把另外一個文件cat到日志里面,那么我們注銷的 時候,就會留下注銷的日志。如果替換掉,基于linux的機制,文件屬性被改變,會有一段時間無法寫 入。同時我們可以利用touch -r復制/var/log文件夾的時間,這樣,即使我們覆掉/var/log/secure,/var/log文件夾也不會讓管理察覺到被修改了:
cat /var/log/secure | head -n 25 > x chmod 0600 x touch -r /var/log log mv -f x /var/log/secure touch -r log /var/log rm -rf log

這樣,我們文件夾的時間還是跟原來的一致,而且/var/log/secure在一段時間內系統也無法往里面寫日 志了。
工具
文中自己改寫的logtamper工具關注公眾號后回復【logtamper】獲取下載地址