T1570

Lateral Tool Transfer

Lateral Movement Last updated:

Adversaries may transfer tools or other files between systems in a compromised environment. Once initial access is established, tools are staged across multiple hosts to support lateral movement, ransomware deployment, data exfiltration, or persistence. Transfer mechanisms include SMB via Windows Admin Shares (\\host\ADMIN$, \\host\C$), RDP file sharing, and native utilities such as scp, rsync, sftp, ftp, and curl. Living-Off-The-Land Binaries (LOLBins) including certutil, bitsadmin, esentutl, and robocopy are frequently abused to perform transfers while blending with legitimate activity. PsExec is widely used to copy and remotely execute binaries on target hosts. Real-world threat actors including BlackCat ransomware (psexec-based propagation), Netwalker (psexec), INC Ransomware (push to multiple endpoints), Medusa Group (PDQ Deploy for binary distribution), Emotet (network self-replication via service.exe), and Volt Typhoon (web shell replication across servers) have leveraged these techniques to propagate tools during intrusions.

What is T1570 Lateral Tool Transfer?

Lateral Tool Transfer (T1570) maps to the Lateral Movement tactic — the adversary is trying to move through your environment in MITRE ATT&CK.

This page provides production-ready detection logic for Lateral Tool Transfer, covering the data sources and telemetry it touches: File: File Creation, Network Share: Network Share Access, Process: Process Creation, Command: Command Execution, Microsoft Defender for Endpoint. The queries below are rated high severity at high confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Lateral Movement
Technique
T1570 Lateral Tool Transfer
Canonical reference
https://attack.mitre.org/techniques/T1570/
Microsoft Sentinel / Defender
kusto
let ExecutableExtensions = dynamic([".exe", ".dll", ".ps1", ".bat", ".cmd", ".vbs", ".hta", ".js", ".msi", ".scr", ".cpl"]);
let LOLBins = dynamic(["certutil.exe", "bitsadmin.exe", "esentutl.exe", "robocopy.exe", "expand.exe", "makecab.exe"]);
let TransferTools = dynamic(["psexec.exe", "psexec64.exe", "paexec.exe", "scp.exe", "sftp.exe", "ftp.exe", "winscp.exe"]);
let SensitiveDirs = dynamic(["\\Windows\\Temp\\", "\\Windows\\System32\\", "\\Windows\\SysWOW64\\", "\\ProgramData\\", "\\Users\\Public\\"]);
// Branch A: LOLBins executing lateral file transfers
let LOLBinTransfers = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (LOLBins)
| where ProcessCommandLine has @"\\\\"
    or (FileName =~ "certutil.exe" and ProcessCommandLine has_any ("urlcache", "-f", "-split"))
    or (FileName =~ "bitsadmin.exe" and ProcessCommandLine has_any ("/transfer", "/addfile", "/upload"))
    or (FileName =~ "esentutl.exe" and ProcessCommandLine has_any ("/cp", "/y"))
    or (FileName =~ "robocopy.exe" and ProcessCommandLine matches regex @"\\\\[A-Za-z0-9\-\.]+\\")
| extend IsCertutil = FileName =~ "certutil.exe"
| extend IsBitsadmin = FileName =~ "bitsadmin.exe"
| extend IsEsentutl = FileName =~ "esentutl.exe"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
         InitiatingProcessFileName, InitiatingProcessCommandLine,
         IsCertutil, IsBitsadmin, IsEsentutl, DetectionBranch="LOLBin_Transfer";
// Branch B: Transfer tools referencing internal hosts or UNC paths
let ToolTransfers = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (TransferTools)
| where ProcessCommandLine has @"\\\\"
    or ProcessCommandLine matches regex @"(?:^|[\s\t@:])(?:10\.|172\.(?:1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
         InitiatingProcessFileName, InitiatingProcessCommandLine,
         DetectionBranch="Transfer_Tool";
// Branch C: Executables dropped via SMB (System process writing executables to sensitive directories)
let SMBExecutableDrops = DeviceFileEvents
| where Timestamp > ago(24h)
| where ActionType == "FileCreated"
| where FileName has_any (ExecutableExtensions)
| where FolderPath has_any (SensitiveDirs)
| where InitiatingProcessFileName =~ "System"
| project Timestamp, DeviceName,
         AccountName=InitiatingProcessAccountName,
         FileName, FolderPath, SHA256,
         InitiatingProcessFileName, InitiatingProcessCommandLine,
         DetectionBranch="SMB_Executable_Drop";
// Union all branches
LOLBinTransfers
| union ToolTransfers
| union SMBExecutableDrops
| sort by Timestamp desc

Detects lateral tool transfer via three complementary branches using Microsoft Defender for Endpoint telemetry. Branch A identifies LOLBins (certutil, bitsadmin, esentutl, robocopy) executing file transfers with UNC paths or known transfer-specific flags. Branch B identifies dedicated transfer tools (psexec, scp, sftp, ftp, winscp) referencing internal IP ranges or UNC paths. Branch C detects executables written to sensitive directories via the Windows System process, the telemetry signature of an SMB file write from a remote host. Together these branches cover the primary T1570 transfer mechanisms without requiring a single monolithic query.

high severity high confidence

Data Sources

File: File Creation Network Share: Network Share Access Process: Process Creation Command: Command Execution Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents DeviceFileEvents

False Positives

  • SCCM/Microsoft Endpoint Configuration Manager pushes software to endpoints via SMB, causing the System process to create executables in ProgramData and Windows directories — generates Branch C alerts
  • IT automation tools (Ansible WinRM, Chef, Puppet, PDQ Deploy) legitimately use robocopy, bitsadmin, and psexec for software distribution across managed hosts
  • Backup agents (Veeam, Acronis, Commvault) use certutil and bitsadmin for scheduled transfer tasks, and robocopy for file replication jobs
  • Developer workflows using scp or sftp to deploy artifacts to internal build/staging servers from workstations
  • Security and vulnerability scanning tools that copy lightweight agents to remote hosts for assessment purposes

Sigma rule & cross-platform mapping

The detection logic for Lateral Tool Transfer (T1570) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: process_creation
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 5 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Copy Executable to Remote ADMIN$ Share via SMB

    Expected signal: Sysmon Event ID 1: cmd.exe with CommandLine containing '\\127.0.0.1\ADMIN$'. Sysmon Event ID 11 on the destination (localhost): FileCreated event for lateral_calc_test.exe in C:\Windows\Temp\ with Image=System (PID 4) — this is the SMB server process creating the file. Windows Security Event ID 5145 if object access auditing enabled: network share access to ADMIN$ from localhost.

  2. Test 2LOLBin Transfer via Certutil URL Cache to UNC Path Staging

    Expected signal: Sysmon Event ID 1: certutil.exe with CommandLine containing '-urlcache', '-split', '-f', and the destination path. Sysmon Event ID 3: outbound network connection to 127.0.0.1:8080 (connection refused, but the attempt is logged). Windows Security Event ID 4688 if process command line auditing is enabled.

  3. Test 3BITSAdmin SMB File Transfer Between Internal Hosts

    Expected signal: Sysmon Event ID 1: bitsadmin.exe with CommandLine containing '/transfer', 'LateralMoveJob', '/download', and the UNC source path '\\127.0.0.1\C$'. Sysmon Event ID 11: FileCreated for bits_lateral_test.exe in C:\Windows\Temp\. Sysmon Event ID 3: SMB connection to 127.0.0.1:445 from bitsadmin process. BITS Event ID 59 in Microsoft-Windows-Bits-Client/Operational log: job transfer started.

  4. Test 4Esentutl File Copy to Remote Share

    Expected signal: Sysmon Event ID 1: esentutl.exe with CommandLine containing '/cp' and the source/destination paths. Sysmon Event ID 11: FileCreated for esentutl_lateral_test.exe in C:\Windows\Temp\, with Image=esentutl.exe as the initiating process. Windows Security Event ID 4688 if process auditing enabled.

  5. Test 5SCP Lateral File Transfer to Internal Host

    Expected signal: Linux auditd EXECVE record: scp with arguments including the destination IP 192.168.1.100. Syslog entry from the SSH client showing connection attempt. On macOS: unified log entry from com.openssh.sshd. If Sysmon for Linux is deployed: ProcessCreate event for scp with CommandLine containing the internal IP.

Unlock Pro Content

Get the full detection package for T1570 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections