前言
在Windows下繞過殺毒軟件的主動防御機制的常見思路。
Bypass
1.特殊符號、大小寫
常用符號: " ^ , ;
可以繞過一些常規的waf
2.環境變量
拿到一台機器時,可以先set
查看環境變量
這里我們拿Comspec=C:\WINDOWS\system32\cmd.exe
來舉例,%comspec:~3,1%
的意思就是comspec路徑中的第三位(從0開始)開始取1個字符,如果1不寫的話就從第三位輸出到最后一位
環境變量也可以配合我們的特殊符號大小寫混寫來組合,也是可以達到同樣的效果的。
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 %f
delims是以\分割,tokens是第幾次分割,第四次分割就是whoami設為變量f,然后打印。
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
常用的powershell混淆方法:
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情況