Windows下cmd/powershell命令混淆繞過


前言

在Windows下繞過殺毒軟件的主動防御機制的常見思路。

Bypass

1.特殊符號、大小寫

常用符號: " ^ , ; 可以繞過一些常規的waf

image

2.環境變量

拿到一台機器時,可以先set查看環境變量

image

這里我們拿Comspec=C:\WINDOWS\system32\cmd.exe來舉例,%comspec:~3,1%的意思就是comspec路徑中的第三位(從0開始)開始取1個字符,如果1不寫的話就從第三位輸出到最后一位

image

環境變量也可以配合我們的特殊符號大小寫混寫來組合,也是可以達到同樣的效果的。

cmd /c “ set a1=ser&& set a2=ne&& set a3=t u&&call echo %a2%%a3%%a1%” 等同於 net user
^c^M^D, , , , /^c", ,(, , , , , (s^et ^ w^3=i^pco) , )&& (S^Et ^ eH^P=n^fig)& , , C^aLl, sE^t GyHE=%w^3%%eH^P%& , , %LoCaLAPpdata:~ -3,+1%%pRoGramw6432:~9,1%d, ,/^R, , %Gy^HE%" 等同於ipconfig

3.for循環

for /f "tokens=4 delims=\" %f in ("c:\windows\system32\whoami\") do %fdelims是以\分割,tokens是第幾次分割,第四次分割就是whoami設為變量f,然后打印。

image

4.powershell base64

powershell.exe -Encodedcommand base64string 完全形式
powershell.exe -eNco base64string 大寫截斷形式

兩種形式都調用了Encodedcommand參數,將base64字符串解碼並執行。這里的base64字符串與常規的不太一樣,只能通過powershell自帶的base64加密方式獲取。

$command = "whoami"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
echo encodedCommand
powershell.exe -EncodedCommand $encodedCommand

image

常用的powershell混淆方法:

image

Windows內網信息收集常用命令:

whoami /all #查當前用戶在目標系統中的具體權限
quser #查當前機器中正在線的用戶,注意管理員此時在不在
query user #qwinsta 查看當前在線用戶
systeminfo #查看主機詳細信息 安裝了哪些補丁
net user & net localgroup & net localgroup "groupname" #用戶名、組名、指定組成員
(Get-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.149.135").UsernameHint #本機哪個用戶登陸了此IP
cacls c:\ #查看c盤的權限配額
cacls c:\windows\*.exe #查看*.exe的權限配置
icacls C:\Windows #查看文件的ACL情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM