NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
查看: 6820|回復: 9

[問題] 請問如何防止系統建立資源回收桶

[複製鏈接]
發表於 2019-2-8 20:40:13 | 顯示全部樓層 |閱讀模式
本帖最後由 makimaki2 於 2019-2-8 21:48 編輯

回收桶是個很好用的東西,尤是誤刪的那刻真是充分感謝
但是SSD上,回收桶,PageFile這類系統隨意的寫入,就是我們所不願意的了
最重要的是,病毒木馬喜歡利用這些系統自建區域來隱藏自身

我試著尋找,有找到讓回收桶預設容量0的方式如下
並且在PE上實證可用
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{9596C81A-BF34-42A7-A6B2-59C42B810B55}User\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"RecycleBinSize"=dword:00000000
"NoRecycleFiles"=dword:00000001


[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"RecycleBinSize"=dword:00000000
"NoRecycleFiles"=dword:00000001

雖然如此系統還是會在SSD,或是P牌RAMDISK-SCSI NTFS上建立容量為0的$RECYCLE.BIN圖標
系統不能按自己喜好支配真是滿滿不愉快的感覺

然而我發現,Sun大的PE中,ImDisk的RAMDISK中沒有回收桶
另外被識別為USB盤的硬碟也沒有回收桶

微軟的產品除了體積龐大,模塊粒度非常粗之外,另外的問題就是各種說明文件非常不齊全

不知道各位前輩,是否知道有什麼方法可以完全去除回收桶的圖標
發表於 2019-2-9 06:11:50 | 顯示全部樓層
本帖最後由 阿達金田一 於 2019-2-9 06:31 編輯

感覺無解...除非完全停用或刪除 Recycle 功能...不過這可能有難點

如果是本機電腦上...還好一點
設定 "RecycleBinSize" "NoRecycleFiles" 後...
只要沒去用到 Recycle (指打開 Recycle 的介面或設定)
也就是沒觸發到 Recycle ... 是不會建立 $RECYCLE.BIN

例如
rd /q/s D:\$RECYCLE.BIN
可以砍了 D:\$RECYCLE.BIN
若去開 資源回收筒 或 資源回收筒設定(那怕只是單純開一下沒改設定)
或是 有 刪除到資源回收筒 動作...那怕不是 D:\ 的檔案
D:\$RECYCLE.BIN 都會重建

也就是除非系統完全停用(或刪除) Recycle 功能
不然只要有觸發到 Recycle ... 好像都會自動重建所有磁碟的 $RECYCLE.BIN

所以單純本機Win的話
"NoRecycleFiles" 這個應該是直接砍檔 ... 算是回避觸發 Recycle

但像 usb ...在不同Win/PE上...就不可能完全回避

然後 win 的 Recycle 功能...基本上好像都是在 shell32.dll
你可以用 regedit 搜索 Recycle ...就可以看到一堆 Recycle Bin 的 CLSID 關聯
至於把這些東東砍了...win 是否能停用 Recycle  我沒試過就不知道了

另外...如果先不管 Recycle
如果目的是 "病毒木馬喜歡利用這些系統自建區域來隱藏自身" 這問題
那是否有其它的方法呢 ... 也就是不要糾結 Recycle 這個方向

老實說我想的比較簡單的就是...當初 autorun.inf 的方法
說穿了...只是防寫而以... autorun.inf 防寫 原本是 檔案 搞成 目錄...就沒法檔案寫入
$RECYCLE.BIN 則是反過來... 目錄 搞成 檔案 ...讓其無法建立 $RECYCLE.BIN 目錄
rd /q/s D:\$RECYCLE.BIN
echo.>D:\$RECYCLE.BIN (或用 mklink 搞一個失敗的Link)
之後... D:\ 的 Recycle 就會失效
但這要破除...其實也不難 ... 把檔案砍了就好
所以可能要在加工一下...例如 加上權限什麼的防砍 (像 autorun.inf 目錄有的也是有做加工)
 樓主| 發表於 2019-2-9 06:57:23 | 顯示全部樓層
本帖最後由 makimaki2 於 2019-2-9 07:52 編輯

因為在回收桶上可以實現指定特定ID的硬碟不使用回收桶,
前後比對註冊表,就能得到這組配置
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\{         GUID         }]
"MaxCapacity"=dword:00000000
"NukeOnDelete"=dword:00000001
但是別台電腦的硬碟ID不同,每台輸入的話不實際

另外使用explorer開啟硬碟也會觸發重建,第三方同步軟體則不會

我是在想是否能找到特定的Group Policy來關閉系統自動建立$RECYCLE.BIN
或是另外一種思路,讓系統將硬碟,錯誤的識別為USB隨身碟,來避免產生$RECYCLE.BIN

遇到這狀況就能體現,缺乏自有作業系統原始碼所帶來的困難
若能改改代碼處理問題,或是查看他是怎麼寫,很多問題就不用埋頭去找還不保證有結果
發表於 2019-2-9 09:06:03 | 顯示全部樓層
makimaki2 發表於 2019-2-9 06:57
因為在回收桶上可以實現指定特定ID的硬碟不使用回收桶,
前後比對註冊表,就能得到這組配置
[HKEY_CURRENT_US ...

USB 好像也是會產生 $RECYCLE.BIN 吧
 樓主| 發表於 2019-2-9 16:04:08 | 顯示全部樓層
本帖最後由 makimaki2 於 2019-2-9 17:36 編輯

sun大的PE裡面USB不會產生 $RECYCLE.BIN
另外p牌RAMDISK NTFS若設為Direct IO也不會產生 $RECYCLE.BIN

關於你提到的預建文件法,我這邊還想到一個方法,之前我們討論到hard link
而最新版本的hard link,兼容了資料夾版本junctionPoint,並改名叫ntfs symbolic link

可以嘗試看看,建立指向X:\$RECYCLE.BIN的符號鏈結
這樣一方面不會在SSD寫入,二來還保持了RecycleBin功能,三來在關機時清空
或許可以說是更為理想的RecycleBin改良

實際做法是首先使用同步軟體刪除Z:\$RECYCLE.BIN,及回收桶內容
接著建立硬鏈結Z:\$RECYCLE.BIN指向X:\$RECYCLE.BIN,若成功便可以備份後整合進PE
指令為mklink /d Z:\$RECYCLE.BIN\ X:\$RECYCLE2.BIN

測試條件是<Junction>
Z:\ 的目錄
2019/02/09  下午 04:42    <JUNCTION>     $RECYCLE.BIN [\??\X:\$RECYCLE2.BIN\]

測試條件是<SYMLINKD>
Z:\ 的目錄
2019/02/09  下午 05:17    <SYMLINKD>     $RECYCLE.BIN [X:\$RECYCLE2.BIN\]
               0 個檔案               0 位元組

關於RecycleBin有人做了些實驗,似乎與權限有關,結果很有趣
https://superuser.com/questions/369900/windows-7-cross-volume-symlinks-affecting-recycle-bin

另外,我在P牌RAMDISK Z上似乎回收完全沒起作用,跟符號鏈結似乎無關
發表於 2019-2-9 18:04:39 | 顯示全部樓層
本帖最後由 阿達金田一 於 2019-2-9 18:07 編輯
makimaki2 發表於 2019-2-9 16:04
sun大的PE裡面USB不會產生 $RECYCLE.BIN
另外p牌RAMDISK NTFS若設為Direct IO也不會產生 $RECYCLE.BIN

NTFS Junction 和 Symbolic Link 都算是 SoftLink...沒改名
https://www.techbang.com/posts/1 ... ives-does-not-fashu

HardLink 其實就是指 檔案系統 本身在用...最底層的Link
所叫 HardLink ...因為這是直接磁區
概念上...就是如果將 檔案系統 ...分成2個部份
一個是 檔案結構資料(也就是檔案和目錄樹狀結構資料)
一個是 磁區使用的資料...
將2者 Link 起來...就是 HardLink

而 SoftLink 更多的是指向另一個檔案或目錄

另外之前我自己 win7測...就有測過你想的
不過把 $RECYCLE.BIN 導向另一個磁碟的 $RECYCLE.BIN
再砍檔案時...Win 要把檔案丟向 $RECYCLE.BIN 都會顯示失敗...然後詢是否直接刪除
所以我猜 Win RECYCLE 大概不能用 SoftLink
然後你主要也是要 RECYCLE 失效 ...所以就沒多提

然後你那篇英文資料..我看沒懂...
不過看上去好像是測... 跨區 SoftLink 目錄中的檔案在刪除時...RECYCLE 是否有做用
發表於 2019-2-9 18:20:28 | 顯示全部樓層
補一下剛加測的
mklink 如果是指向同磁碟 ...  Recycle 還是可以正常用
但是跨磁碟...就會和我上面說的一樣... win 在丟向 Recycle 時會出錯...然後詢問是否直接刪除

也就是
mklink /d D:\$RECYCLE.BIN D:\R
(這是 Symbolic Link )

mklink /J D:\$RECYCLE.BIN D:\R
(Junction)

砍 D: 的東東...會丟到 D:\R

但不能跨磁碟
mklink /d D:\$RECYCLE.BIN E:\R
mklink /J D:\$RECYCLE.BIN E:\R
Win RECYCLE 會失敗
 樓主| 發表於 2019-2-9 19:44:23 | 顯示全部樓層
本帖最後由 makimaki2 於 2019-2-9 20:29 編輯

>關於RecycleBin有人做了些實驗,似乎與權限有關,結果很有趣
>https://superuser.com/questions/369900/windows-7-cross-volume-symlinks-affecting-recycle-bin
這篇討論的似乎是RecycleBin跨Vol

HardLink確實是不能跨盤,原理上如此,但是 事在人為沒有的功能寫出來就好了 ,因此有了第2代的Symbolic Link
理論上Symbolic Link是可以跨盤的,甚至是跨到SMB的網路硬盤 如\\192.168.123.456\
mklink /d Z:\$RECYCLE.BIN\ X:\$RECYCLE2.BIN
我直接建立空檔案,從X:或是Z:用剪貼或是拖曳到X:\$RECYCLE.BIN以及到Z:\$RECYCLE.BIN
都可以成功,最後檔案都在X:\$RECYCLE.BIN
也就是Symbolic Link跨盤是成功的

RecycleBin底下還有一層X:\$RECYCLE.BIN\S-1-5-18,此盤似乎不是一般資料夾,行為特殊,在沒做任何處理下
我直接建立空檔案,從X:或是Z:用剪貼或是拖曳到X:\$RECYCLE.BIN\S-1-5-18以及到Z:\$RECYCLE.BIN\S-1-5-18
檔案就沒反應的消失了

但是mklink可以成功
mklink /d Z:\$RECYCLE.BIN\S-1-5-18 X:\$RECYCLE.BIN\S-1-5-18
在Z盤刪除檔案,剪貼或拖曳到到Z:\$RECYCLE.BIN\S-1-5-18
會報錯表示資源回收桶已損毀,然後會有移動檔案的窗口,最後檔案消失

或許與RecycleBin的內部程序業務邏輯有關
在沒有原始代碼的情況很多難行之處,但是終究Windows只是一個大型UI

根據以上的研究,我們仍可以建立右鍵功能表"My刪除",來取代原本的刪除
將檔案從任意盤符Move到X:\$RECYCLE.BIN\
當然原本的Recycle就用我之前提出的註冊表禁用掉
實現了不寫入SSD,保持Recycle功能,重啟後清除的功能
感覺不是很完美就是了
發表於 2019-2-9 22:15:58 | 顯示全部樓層
makimaki2 發表於 2019-2-9 19:44
>關於RecycleBin有人做了些實驗,似乎與權限有關,結果很有趣
>https://superuser.com/questions/369900/wind ...

我前面說過了
NTFS Junction 和 Symbolic Link 都是 SoftLink
SoftLink 本來就可以跨區...

而我最一開始在提到替換 $RECYCLE.BIN 時
也說過可以用 mklink
$RECYCLE.BIN 是一個目錄...本身可以 mklink

但我說的 Win RECYCLE 會失敗
是指 Win RECYCLE 的功能會失敗...不是指不能 mklink
我從頭到尾也沒說不能 mklink ...
而且我前面說的...都是 $RECYCLE.BIN 怎麼 mklink 的吧

$RECYCLE.BIN mklink 本來就是可以成功的...
不能成功的話...我一開始就不會說可以 mklink

但這只是 $RECYCLE.BIN 本身 可以 mklink
但和 Win RECYCLE 功能是2回事
$RECYCLE.BIN 還可以是檔案咧...
但當 $RECYCLE.BIN 是檔案時...Win RECYCLE 功能就會失效

要注意...mklink 做出來的是 檔案系統層面 的 SoftLink 或 HardLink
也就是可以是一個 檔案SoftLink 也可以是 目錄的SoftLink
SoftLink 本身只是 Link 不是 檔案 也不是 目錄...
在正常情況下... 檔案系統 不會出現 同名 的 檔案 和 目錄 (即不會出現 完整路徑 相同的檔案和目錄)
即 D:\a.txt 這可以是 檔名 也可以是 目錄名 ... 但如果是檔案...就不會有同名目錄...反之亦然
mklink 只是做一個 File SoftLink 或 Dir SoftLink

例如
md 1.txt
mklink 2.txt 1.txt

這樣 1.txt 是 目錄
但 2.txt 是 File SoftLink
SoftLink 導向的可以是 不正確 甚至 不存在

md 1.txt
mklink 2.txt 1.txt
type 2.txt (這會出錯...因為 2.txt 導向 1.txt  但 1.txt 不是 檔案)
rd 1.txt
echo 1 >1.txt (把 1.txt 變成檔案)
type 2.txt ... (正常顯示 1)

在 SoftLink 不變情況下...
因為 2.txt 這個 File SoftLink 只是指向 1.txt
而 1.txt 是檔案時...就是正常

SoftLink 就只是 Link ... Link 本身不是 檔案 或 目錄
例如
D:\abcd ... 這也可以 檔案 也可以是 目錄
對 檔案系統 來說... D:\abcd 就是一個路徑名稱
不管是
md D:\abcd

echo.>D:\abcd
差別只是在 D:\abcd 在建立時是 檔案 或 目錄
而 md D:\abcd 或 echo.>D:\abcd 搞出來的是 HardLink
D:\abcd -> HardLink -> 磁區

簡單說對檔案系統來說大概可以分為
1. 建立 路徑 d:\abcd
2. 設定 d:\abcd 的類型 (檔案 或 目錄)
3. 設定 HardLink

而 mklink 建立時...也是一樣
1. 建立 路徑 d:\abcd
2. 設定 d:\abcd 的類型 (檔案 或 目錄)
3. 複制目標的 HardLink 或 建立一個SoftLink 導向目標路徑

SoftLink 更貼近只是一個 路徑 ... 而目標是可以不存在
例如
E:\abc 不存在 (不管是檔案或目錄...因為不存在)

一樣可以先 mklink
mklink D:\a E:\abc
mklink /d D:\b E:\abc
mklink /j D:\c E:\abc
以上指令都會成功
只是 D:\a , D:\b , D:\c  都不能用而以
如果後面接
md e:\abc
D:\b , D:\c 就可以用了
如果是建立一個檔案 E:\abc  ... 那 d:\a 就可以用

SoftLink 沒什麼就是指向一個路徑而以

發表於 2019-2-9 22:27:41 | 顯示全部樓層
本帖最後由 阿達金田一 於 2019-2-9 22:41 編輯

再補充一下 S-1-5-18 是 SID
https://support.microsoft.com/zh ... s-operating-systems

PE 看你是用什麼帳號登入...推測 S-1-5-18 大概是 system 之類的
regedit HKEY_USERS 可以看到

簡單說 Win Recycle 在丟向 Recycle 時會依不同的帳號丟向相對的目錄

還有...Win Recycle 在丟東西到 Recycle 時...不是把東西移過去而以
Win Recycle 有自己的管理方式和儲存方式
例如

rd /q/s E:\$RECYCLE.BIN
然後建一個檔案 E:\1.txt
再用檔案總管刪除...(丟向 Recycle)

dir /a/s/b E:\$RECYCLE.BIN
不會看到 1.txt ...只會看到 Win Recycle 自動產生的管理檔案
例如  $IQXGMXD.txt $RQXGMXD.txt
Win Recycle 的取名原則我不知道是隨機還是固定...我是一個 $Ixxxxxx 對一個 $Rxxxxxxx
我的情況是 $IQXGMXD.txt 是記錄 1.txt 原來的路徑...還一些有的沒有的 (bin資料我也看不懂)
$RQXGMXD.txt 則是1.txt 原來的內容



您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

小黑屋|手機版|NoName Team 電腦資訊討論區 |網站地圖

GMT+8, 2024-11-25 23:08 , Processed in 0.696338 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表