File transfer cheatsheet
Complete File Transfer Guide: Windows & Kali Linux (or other linux distros based on debian)
This guide provides multiple methods for transferring files between Windows and Kali Linux virtual machines.
Whether you're working on penetration testing labs, CTF challenges (TryHackMe, HackTheBox), or learning cybersecurity, you'll find the right method for your situation.
Why is File Transfer Important?
During penetration testing and security assessments, you frequently need to:
Download files from a compromised system (victim) to your attack machine (Kali) for analysis
Upload exploitation tools, scripts, or payloads to the target system
Extract password hashes, configuration files, or sensitive data for offline cracking
Transfer enumeration scripts and post-exploitation tools
Move evidence and artifacts for documentation and reporting
Understanding multiple file transfer methods is essential because:
Different environments have different tools available
Some methods may be blocked by firewalls or security controls
You need alternatives when your primary method fails
Different methods have different stealth characteristics
Naming Conventions Used in This Guide
To maintain consistency and clarity, this guide uses the following placeholders:
WINDOWS_IP - The IP address of your Windows VM (e.g., 192.168.1.10)
KALI_IP - The IP address of your Kali Linux VM (e.g., 192.168.1.20)
WINDOWS_USER - Your Windows username (e.g., Admin, Student)
WINDOWS_PASSWORD - Your Windows user password
KALI_USER - Your Kali Linux username (default is usually "kali")
KALI_PASSWORD - Your Kali Linux user password
FILENAME - The name of the file you want to transfer
PORT - The network port number being used (e.g., 8000, 80, 443)
Replace these placeholders with your actual values when executing commands.
Prerequisites
Before you begin, ensure the following:
Network Connectivity: Both VMs must be on the same network (e.g., configured as "Share with my Mac" / NAT or Bridged). They should be able to
pingeach other.IP Addresses: You need to know the IP address of each VM.
Firewall Settings: Some methods may require adjusting firewall rules on Windows or Kali.
Required Tools: Depending on the method, certain tools must be installed (covered in each section).
Quick Method Comparison
1. SMB/CIFS Share
Both
Medium
Fast
Low
SMB enabled
2A. Python http.server
Download only
Easy
Fast
Low
Python (built-in)
2B. Python uploadserver
Both (upload+download)
Easy
Fast
Low
pipx install uploadserver
3. SCP/SSH
Both
Easy
Fast
Medium
SSH server
4. PowerShell Download
Kali→Win
Easy
Fast
Low
HTTP server on Kali
5. Certutil
Kali→Win
Easy
Medium
Medium
HTTP server on Kali
6. Curl
Both
Easy
Fast
Low
HTTP server on source
7. Wget (Windows)
Kali→Win
Easy
Fast
Low
HTTP server on Kali
8. Impacket SMB
Both
Medium
Fast
Medium
Impacket on Kali
9. Netcat
Both
Medium
Fast
High
Netcat on both
10. FTP
Both
Medium
Fast
Low
FTP server
11. Base64 Encoding
Both
Hard
Slow
High
None (manual)
Important Note: Methods 4-7 (PowerShell, Certutil, Curl, Wget) are download tools that require a Python HTTP server running on the source machine. See Method 2 for server setup.
Finding Your VM IP Addresses
You'll need the IP addresses for most of these methods. Here's how to find them.
On Your Windows VM
Open Command Prompt (cmd.exe) or PowerShell and run:
What to look for:
Find your active network adapter (usually "Ethernet adapter" or "Wi-Fi adapter")
Look for the line that says "IPv4 Address"
Example output:
IPv4 Address. . . . . . . . . . . : 192.168.1.10This is your WINDOWS_IP
Alternative method using PowerShell:
On Your Kali Linux VM
Open a terminal and run:
What to look for:
Find your primary network interface (usually
eth0,ens33, orens160)Look for the line starting with
inet(notinet6)Example output:
inet 192.168.1.20/24 brd 192.168.1.255 scope global dynamic eth0The IP address is
192.168.1.20- this is your KALI_IP
Alternative method:
This will display all IP addresses assigned to your Kali machine.
Testing Connectivity
Before attempting file transfers, verify that both VMs can communicate:
From Windows to Kali:
Example:
From Kali to Windows:
Example:
If ping fails, check:
Both VMs are on the same network (NAT or Bridged)
Windows Firewall is not blocking ICMP (ping) requests
Network adapters are properly configured in VMware
Method 1: SMB/CIFS Shared Folders
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Medium
Best for: Frequent file transfers, persistent access to files
This method mounts a Windows folder directly into the Kali filesystem, allowing seamless file access.
Step 1: On Windows VM - Create and Share the Folder
Create a folder you want to share, for example:
C:\SharedFilesRight-click the folder and select Properties
Navigate to the Sharing tab and click Advanced Sharing...
Check the box "Share this folder"
Note the Share name (default is the folder name, e.g., "SharedFiles")
Click Permissions and configure access:
For lab environments: Give "Everyone" Full Control
For more security: Add specific users and set appropriate permissions
Warning: Granting "Everyone" full control is insecure and should only be done in a trusted, isolated virtual lab environment.
Click OK on all windows to apply settings
(Optional) Disable password-protected sharing for easier access:
Open Control Panel → Network and Sharing Center
Click Change advanced sharing settings
Under All Networks, turn off password protected sharing
Click Save changes
Step 2: On Kali Linux VM - Mount the Windows Share
Install required packages (if not already installed):
Create a mount point:
Mount the shared folder:
Example:
If you disabled password-protected sharing:
Explanation of options:
-t cifs- Specifies the filesystem type (Common Internet File System)//WINDOWS_IP/SHARE_NAME- The network path to the Windows share~/windows-share- Local directory where the share will be mounted-o user=USERNAME,password=PASSWORD- Mount options for authenticationguest- Mount without authentication (if password protection is disabled)uid=1000,gid=1000- Set ownership to your user (runidto find your uid/gid)
Step 3: Access and Transfer Files
List files from the Windows share:
Copy file from Windows to Kali:
Copy file from Kali to Windows:
Work directly with files on the share:
Step 4: Unmount the Share
When finished, unmount the folder:
If you get "target is busy" error:
Method 2: Python HTTP Servers
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Very Easy
Best for: Quick file transfers, no configuration needed
Python provides two types of HTTP servers for file transfers. Understanding the difference is crucial for choosing the right tool.
Understanding Python HTTP Servers: http.server vs uploadserver
Python has TWO different HTTP server options: one-way (download only), two-ways (download and upload). Below you will fond both methods described.
Option A: http.server (Built-in, Download Only)
When to use:
Transferring files FROM the machine running the server TO another machine
Quick file sharing (one-way)
No installation wanted
Example use case:
Kali has exploit.py, Windows needs it
Run
python3 -m http.server 8000on KaliDownload from Windows
Option B: uploadserver (External Package, Bidirectional)
This method can upload files through browser (drag & drop or button) but requires installation: pipx install uploadserver
When to use:
Transferring files TO the machine running the server FROM another machine
Need GUI upload capability
Want drag & drop in browser
Bidirectional transfers
Example use case:
Need to exfiltrate data.zip from Windows to Kali
Run
uploadserver 8000on KaliOpen browser on Windows, drag & drop data.zip
Quick Comparison Table
Download files
Yes
Yes
Upload via browser
No
Yes
Installation
Built-in
Requires install
Drag & Drop
No
Yes
Direction
One-way (download)
Two-way (both)
Command
python3 -m http.server 8000
uploadserver 8000
Best for
Sharing files out
Receiving files in
Important: Which Server for Which Direction?
Scenario 1: Kali → Windows (Download from Kali)
Use either:
http.serverORuploadserver(both work)On Kali:
python3 -m http.server 8000On Windows: Open browser →
http://KALI_IP:8000→ Click files to download
Scenario 2: Windows → Kali (Upload to Kali)
Must use:
uploadserver(http.server won't work!)On Kali:
uploadserver 8000On Windows: Open browser →
http://KALI_IP:8000→ Click "Upload" or drag & drop
Scenario 3: Kali → Windows (Upload to Windows)
Must use:
uploadserveron WindowsOn Windows:
python -m uploadserver 8000On Kali: Open browser →
http://WINDOWS_IP:8000→ Upload files
Scenario 4: Windows → Kali (Download from Windows)
Use either:
http.serverORuploadserveron WindowsOn Windows:
python -m http.server 8000On Kali: Open browser →
http://WINDOWS_IP:8000→ Download files
Rule of Thumb:
Think about WHERE the files need to GO:
Files going OUT from server →
http.serverworks fineFiles coming IN to server → Need
uploadserver
Now let's see detailed examples for each scenario:
Detailed Examples (by Scenario)
Scenario A: Transfer FROM Windows TO Kali (Download from Windows)
What you need: Files on Windows that Kali needs to download
Which server: Either http.server or uploadserver (both work for downloads)
Step 1: On Windows VM - Start HTTP Server
Place files you want to transfer in a folder, for example:
C:\TransferFilesOpen Command Prompt and navigate to that directory:
Start the Python HTTP server:
For Python 3:
For Python 2 (older systems):
If python command is not found, try:
Explanation:
python -m http.server- Runs Python's built-in HTTP server module8000- The port number (you can use any port between 1024-65535)
Expected output:
The server is now running and will show access logs when files are downloaded.
Step 2: On Kali Linux VM - Download Files
Method A: Using wget
Download multiple files:
Download with a different name:
Method B: Using curl
Method C: Using a web browser
Open Firefox or any browser on Kali
Navigate to:
http://WINDOWS_IP:8000You'll see a directory listing of all files
Click on any file to download it
Step 3: Stop the Server
On Windows, press Ctrl + C in the Command Prompt to stop the server.
Scenario B: Transfer FROM Kali TO Windows (Download from Kali)
What you need: Files on Kali that Windows needs to download
Which server: Either http.server or uploadserver (both work for downloads)
Step 1: On Kali Linux VM - Start HTTP Server
Navigate to the directory containing files to share:
Start the Python HTTP server:
Use a different port if 8000 is busy:
Bind to a specific interface (more secure):
Expected output:
Step 2: On Windows VM - Download Files
Method A: Using a web browser
Open any web browser (Edge, Chrome, Firefox)
Navigate to:
http://KALI_IP:8000Click on files to download them
Method B: Using PowerShell (see Method 4 for more details)
Method C: Using curl (Windows 10+)
Method D: Using certutil (see Method 5 for more details)
Step 3: Stop the Server
On Kali, press Ctrl + C in the terminal to stop the server.
Scenario C: Transfer FROM Windows TO Kali (Upload to Kali)
What you need: Files on Windows that need to be uploaded to Kali
Which server: MUST use uploadserver (http.server cannot receive uploads!)
Step 1: On Kali Linux VM - Install and Start Upload Server
Install uploadserver (if not already installed):
Important notes:
Use
pipx installwithout sudo - this installs for your current user to~/.local/binDo NOT use
sudo pipx install- this would install for root user onlyOn Kali Linux,
pip3 installwill fail with "externally-managed-environment" errorAfter installation, the command
uploadserveris available directly from terminal
Navigate to the directory where you want to receive files:
Start the upload server:
Expected output:
Step 2: On Windows VM - Upload Files
Method A: Using a web browser (easiest)
Open any web browser (Edge, Chrome, Firefox)
Navigate to:
http://KALI_IP:8000You'll see the file listing AND an "Upload files" button
Click "Upload files" or drag & drop files into the browser window
Files are automatically uploaded to Kali
Method B: Using PowerShell (command line)
Method C: Using curl (Windows 10+)
Step 3: Stop the Server
On Kali, press Ctrl + C in the terminal to stop the server.
Step 4: Verify Files Received
Scenario D: Transfer FROM Kali TO Windows (Upload to Windows)
What you need: Files on Kali that need to be uploaded to Windows
Which server: MUST use uploadserver on Windows (http.server cannot receive uploads!)
Step 1: On Windows VM - Install and Start Upload Server
Install uploadserver (if not already installed):
Navigate to the directory where you want to receive files:
Start the upload server:
Or if uploadserver is in PATH:
Expected output:
Step 2: On Kali Linux VM - Upload Files
Method A: Using a web browser (easiest)
Open Firefox or any browser on Kali
Navigate to:
http://WINDOWS_IP:8000Click "Upload files" or drag & drop files
Files are uploaded to Windows
Method B: Using curl (command line)
Upload multiple files:
Step 3: Stop the Server
On Windows, press Ctrl + C in the Command Prompt to stop the server.
Advanced Python HTTP Server Options
Serve on a specific port:
Serve from a specific directory without changing to it:
Note: For upload capabilities, see Scenario C and D above which cover uploadserver in detail.
Method 3: SCP (Secure Copy Protocol)
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Easy
Best for: Secure file transfers, command-line users
SCP uses SSH to securely transfer files between systems. It's fast, encrypted, and built into most modern systems.
Step 1: On Kali Linux VM - Ensure SSH Server is Running
Check if SSH is running:
If SSH is not running, start it:
To start SSH automatically on boot (optional, not recommended for security):
Verify SSH is listening:
You should see output showing SSH listening on port 22.
Step 2: Transfer Files Using SCP
Scenario A: Transfer from Windows to Kali
On Windows VM (Command Prompt or PowerShell):
Syntax:
Example - Transfer a single file:
Example - Transfer to a specific directory:
Example - Transfer multiple files:
Example - Transfer an entire directory:
Explanation of options:
-r- Recursive (for directories)KALI_USER@KALI_IP- Username and IP of the destination:~/- Destination path (~ means home directory)
You will be prompted for the Kali user's password.
Scenario B: Transfer from Kali to Windows
Prerequisites on Windows:
OpenSSH Server must be installed and running (Windows 10/11)
Install OpenSSH Server on Windows (if not installed):
Open Settings → Apps → Optional Features
Click Add a feature
Find and install OpenSSH Server
Start the service:
On Kali Linux VM:
Syntax:
Example - Transfer a single file:
Example - Transfer a directory:
Note: Windows paths in SCP use forward slashes (/) not backslashes ()
Scenario C: Download from Kali to Windows
On Windows VM:
Syntax:
Example:
Download a directory:
Scenario D: Download from Windows to Kali
On Kali Linux VM:
Syntax:
Example:
Advanced SCP Options
Specify a different port (if SSH is not on port 22):
Preserve file timestamps and permissions:
Limit bandwidth (in Kbit/s):
Use SSH key authentication (no password prompt):
Verbose output (for troubleshooting):
Method 4: PowerShell Download Methods (Windows)
Direction: Kali → Windows (Download from Kali)
Difficulty: Easy
Best for: Downloading files to Windows, scripting, automation
Prerequisites: Python HTTP server running on Kali (either http.server or uploadserver)
PowerShell provides several built-in methods to download files from a web server. These methods work when you have a Python HTTP server running on Kali (see Method 2).
Before using these methods, start a server on Kali:
Method A: Invoke-WebRequest (PowerShell 3.0+)
Example:
Download to a specific location:
Short alias (iwr):
Explanation:
Invoke-WebRequest- PowerShell cmdlet for web requests-Uri- The URL of the file to download-OutFile- Where to save the downloaded file
Method B: Invoke-RestMethod
Example:
Method 4C: WebClient Class (Older PowerShell versions)
Download a file:
Example:
Download as string (for scripts):
Download and execute in memory (advanced):
Explanation:
IEX- Invoke-Expression (executes the downloaded script)DownloadString- Downloads content as a stringThis is commonly used in penetration testing for fileless attacks
Method 4D: Start-BitsTransfer (Background Intelligent Transfer)
Example:
Advantages:
Resumes interrupted downloads
Runs in the background
Good for large files
Method 5: Certutil (Windows Built-in)
Direction: Kali → Windows (Download from Kali)
Difficulty: Easy
Best for: Downloading files when PowerShell is restricted, works on older Windows
Prerequisites: Python HTTP server running on Kali (either http.server or uploadserver)
Certutil is a Windows built-in command-line tool originally designed for certificate management, but it can download files from a web server.
Before using this method, start a server on Kali:
Basic Usage
Example:
Download to a specific location:
Explanation:
certutil- Windows certificate utility-urlcache- URL cache operation-f- Force overwrite if file existsFirst URL is the source, second parameter is the destination filename
Why Use Certutil?
Built into Windows (no installation needed)
Works when PowerShell execution is restricted
Often used in penetration testing and CTFs
Less likely to be blocked than PowerShell in some environments
Method 6: Curl (Windows 10+ Built-in)
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Easy
Best for: Quick downloads, works on modern Windows
Prerequisites: Python HTTP server running on the source machine
Windows 10 (version 1803+) and Windows 11 include curl as a built-in command. Kali Linux has curl pre-installed.
Before using curl to download, start a server on the source machine:
Download Files with Curl on Windows
Example:
Download to a specific location:
Download and show progress:
Follow redirects:
Download with authentication:
Download Files with Curl on Kali
Curl is pre-installed on Kali Linux.
Example:
Download multiple files:
Curl Advanced Options
Silent mode (no progress bar):
Resume interrupted download:
Download only if newer:
Specify user agent:
Method 7: Wget on Windows
Direction: Kali → Windows (Download from Kali) Difficulty: Easy (requires installation) Best for: Advanced download features on Windows
Prerequisites: Python HTTP server running on Kali
Wget is not built into Windows but can be installed. It provides advanced download features.
Before using wget, start a server on Kali:
Install Wget on Windows
Option 1: Using Chocolatey
Option 2: Download binary
Download from: https://eternallybored.org/misc/wget/
Place
wget.exeinC:\Windows\System32\or add to PATH
Using Wget on Windows
Syntax:
Example:
Download to a specific location:
Download recursively (entire directory):
Method 8: Impacket SMB Server
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Medium
Best for: Penetration testing scenarios, when SMB is available
Prerequisites: Impacket installed on Kali
Impacket's smbserver.py creates a temporary SMB share on Kali that Windows can access without authentication. This is commonly used in penetration testing and CTF challenges.
Prerequisites
Install Impacket on Kali (if not already installed):
Important notes about pipx:
Use
pipx installwithout sudo - installs for current user to~/.local/binDo NOT use
sudo pipx install- this installs for root user only (not accessible to regular user)On Kali Linux,
pip3 installwill fail with "externally-managed-environment" error (PEP 668)Starting Kali Linux 2024.4, pipx is the recommended method for Python applications
After installation with pipx, commands like
impacket-smbserverare available directly from terminal
Scenario A: Transfer from Windows to Kali - WARNING - works only if SMB1 features are turned on on Windows
Step 1: On Kali Linux VM - Start SMB Server
Example:
With authentication (more secure):
Explanation:
impacket-smbserver- The Impacket SMB server toolshare- The share name (can be anything)~/smb-share- Local directory to share-smb2support- Enable SMB2 protocol (required for modern Windows)-username/-password- Optional authentication
Expected output:
The server is now running and waiting for connections.
Step 2: On Windows VM - Access the SMB Share
Method 9A: Using File Explorer
Open File Explorer
In the address bar, type:
\\KALI_IP\sharePress Enter
You can now drag and drop files to/from the share
Method 9B: Using Command Prompt
Copy file from Windows to Kali:
Example:
Copy file from Kali to Windows:
Example:
Method 9C: Using PowerShell
Method 9D: Using net use (map network drive)
If authentication is required:
Step 3: Stop the SMB Server
On Kali, press Ctrl + C to stop the server.
Scenario B: Transfer from Kali to Windows
The process is the same - once the SMB server is running on Kali, Windows can both upload and download files. WARNING - works only if SMB1 features are turned on on Windows
On Kali, place files in the shared directory:
On Windows, access and download:
Method 9: Netcat (nc)
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Medium
Best for: Simple file transfers, works in restricted environments
Prerequisites: Netcat installed on both machines
Netcat is a versatile networking tool that can transfer files over raw TCP connections. No HTTP server needed - it creates a direct connection between machines.
Prerequisites
On Kali: Netcat is pre-installed
On Windows: Download netcat for Windows
Download from: https://eternallybored.org/misc/netcat/
Or use
ncat(comes with Nmap)
Scenario A: Transfer from Kali to Windows
Step 1: On Windows VM - Set up listener to receive file
Example:
Explanation:
nc- Netcat command-l- Listen mode-v- Verbose output-p 4444- Listen on port 4444> received-file.txt- Redirect received data to file
Step 2: On Kali Linux VM - Send the file
Example:
Explanation:
< exploit.py- Read file and send its contents
The file transfer will complete automatically, and both netcat instances will close.
Scenario B: Transfer from Windows to Kali
Step 1: On Kali Linux VM - Set up listener
Step 2: On Windows VM - Send the file
Example:
Transfer Directories with Netcat
On the receiving end (Kali):
On the sending end (Windows with tar):
On Linux to Linux:
Receiver:
Sender:
Advanced Netcat Options
Show progress (using pv - pipe viewer):
On receiver:
Encrypt transfer (using openssl):
Receiver:
Sender:
Method 10: FTP Server
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Medium
Best for: Multiple file transfers, organized file management
Prerequisites: FTP server software installed
FTP provides a traditional file transfer protocol with directory browsing. Useful for organized file management and multiple transfers.
Scenario A: FTP Server on Kali
Step 1: Install and Configure FTP Server on Kali
Install vsftpd (Very Secure FTP Daemon):
Configure vsftpd:
Key settings to enable:
Start the FTP service:
Check status:
Step 2: On Windows VM - Connect to FTP
Method 11A: Using File Explorer
Open File Explorer
In address bar, type:
ftp://KALI_IPEnter Kali username and password
Browse and transfer files
Method 11B: Using Command Prompt
Example FTP session:
Method 11C: Using PowerShell
Scenario B: Python FTP Server (Quick and Easy)
On Kali Linux VM:
Install pyftpdlib:
Important notes:
Use
pipx installwithout sudo - installs for current user to~/.local/binDo NOT use
sudo pipx install- this installs for root user onlyOn Kali Linux,
pip3 installwill fail with "externally-managed-environment" error
Start anonymous FTP server:
Explanation:
-p 21- Port number (21 is standard FTP port)-w- Write permission (allows uploads)
Start FTP server with authentication:
Explanation:
-p 21- Port number-u kali- Username-P kali123- Password-w- Write permission (allows uploads)
Expected output:
On Windows, connect using any FTP client or File Explorer.
Scenario C: FTP Server on Windows
Enable IIS FTP Server:
Open Control Panel → Programs → Turn Windows features on or off
Expand Internet Information Services
Expand FTP Server and check all boxes
Click OK and wait for installation
Configure FTP site in IIS Manager (detailed steps omitted for brevity)
Alternative: Use Python on Windows:
Troubleshooting FTP
Error: "Connection refused"
FTP server is not running
Firewall blocking port 21
Check with:
sudo netstat -tlnp | grep :21
Error: "Login incorrect"
Verify username and password
Check vsftpd configuration allows local users
Passive mode issues:
Configure passive port range in vsftpd.conf
Or use active mode in FTP client
Method 11: Base64 Encoding (Manual Transfer)
Direction: Bidirectional (Windows ↔ Kali)
Difficulty: Hard
Best for: Small files, when no network transfer is possible, very restricted environments
Prerequisites: None - works without network connectivity
When you can't transfer files directly (no network, all other methods blocked), you can encode them as text, copy/paste manually, and decode. This is a last-resort method.
Scenario A: Transfer from Kali to Windows
Step 1: On Kali Linux VM - Encode the file
Or encode and display:
For binary files:
Step 2: Copy the base64 text
Select and copy all the output (use shared clipboard or type it manually if needed).
Step 3: On Windows VM - Decode the file
Using PowerShell:
For binary files:
Using certutil:
Scenario B: Transfer from Windows to Kali
Step 1: On Windows VM - Encode the file
Using PowerShell:
For binary files:
Using certutil:
Step 2: Copy the base64 text
Step 3: On Kali Linux VM - Decode the file
Or decode from clipboard:
When to Use Base64 Transfer
No network connectivity between VMs
All other transfer methods are blocked
Transferring very small files or scripts
Working in highly restricted environments
Need to transfer data through a text-only channel (e.g., clipboard, terminal output)
Limitations
Inefficient for large files (33% size increase)
Manual copy/paste is error-prone
Time-consuming for anything but small files
Not suitable for files larger than a few KB
Command Cheat Sheet
Python HTTP Server:
SMB Share (Kali to Windows):
SCP:
PowerShell Download:
Certutil Download:
Curl Download:
Netcat:
Additional Resources
Tools to Install
On Kali Linux:
Important notes about pipx on Kali Linux:
Starting Kali Linux 2024.4,
pip3 installis strongly discouraged and will fail with "externally-managed-environment" errorAlways use
pipx installwithout sudo - this installs for your current user to~/.local/binDo NOT use
sudo pipx install- this installs for root user only (commands won't be accessible to regular user)After installation, commands are available directly from terminal (e.g.,
uploadserver,impacket-smbserver)Always prefer apt packages first, use pipx only if package is not available via apt
On Windows:
Python: https://www.python.org/downloads/
Netcat: https://eternallybored.org/misc/netcat/
Wget: https://eternallybored.org/misc/wget/
Nmap (includes ncat): https://nmap.org/download.html
Learning Resources
Documentation:
Impacket GitHub: https://github.com/fortra/impacket
PowerShell Documentation: https://docs.microsoft.com/powershell/
SMB Protocol: https://docs.microsoft.com/windows-server/storage/file-server/
Common CTF/Lab Scenarios
Scenario 1: Upload exploit to Windows target
Best method: Python HTTP Server on Kali + PowerShell download on Windows
Alternative: Certutil, Curl
Scenario 2: Download files from compromised Windows
Best method: Impacket SMB Server on Kali + copy from Windows
Alternative: Python HTTP Server on Windows + wget on Kali
Scenario 3: Transfer tools during privilege escalation
Best method: Netcat (if available)
Alternative: Base64 encoding (if no network access)
Scenario 4: Exfiltrate data from restricted environment
Best method: Base64 encoding + manual copy
Alternative: DNS tunneling (advanced)
Happy hacking and always try harder!
Last updated
