Smbclient
The Server Message Block (SMB) protocol is a cornerstone of file and resource sharing in Windows networks. smbclient
, a command-line utility included with the Samba suite, enables users to interact with SMB/CIFS shares on both Windows and Linux systems. Whether you're a network administrator, penetration tester, or security professional, understanding smbclient
is essential for managing shares, transferring files, and auditing network security. This article explores smbclient
’s core functionalities, commands, and practical use cases.
What is SMBClient?
smbclient
is a versatile tool that allows users to:
List available shares on a remote SMB server
Connect to shares for file upload/download
Execute commands non-interactively (e.g., automated file transfers)
Test access permissions and identify misconfigurations (e.g., null sessions)
It is widely used for troubleshooting, penetration testing, and scripting interactions with SMB services.
Key SMBClient Commands
1. Listing Shares on a Remote Host
To list all available shares on a remote SMB server:
smbclient -L //<IP>/
Example output:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
SharedDocs Disk Public Documents
2. Null Session Enumeration
A null session is an unauthenticated connection to an SMB server, often used to gather information about shares, users, or groups. To test for null session vulnerabilities:
smbclient -L //<IP>/ -U '' -N
Null sessions are a legacy feature and a common security misconfiguration. They can expose sensitive information and are frequently exploited in penetration testing. Modern systems typically disable null sessions by default.
3. Connecting to a Share
To interactively connect to a specific share (e.g., a share named tmp
):
smbclient //<IP>/tmp
Once connected, use the help
command to see available actions. Example:
smbclient //192.168.1.100/SharedDocs -U john
Password: ********
smb: \> ls
. D 0 Wed Sep 1 10:00:00 2023
.. D 0 Wed Sep 1 10:00:00 2023
report.pdf A 1048576 Wed Sep 1 10:05:00 2023
smb: \> get report.pdf
4. Non-Interactive File Transfer
To send a file to a share without entering an interactive shell:
smbclient -c 'put myinstaller.msi' -U <USER> -W <DOMAIN> '//<SERVER>/<SHARE>' <PASSWORD>
Example:
smbclient -c 'put backup.zip' -U alice -W CORP '//fileserver/Data' P@ssw0rd
5. Mounting SMB Shares
Persistently mount SMB shares to a local directory (Linux):
sudo mount -t cifs //<IP>/SharedDocs /mnt/smb -o username=john,password=secret
6. Scripting with SMBClient
Automate tasks using shell scripts:
#!/bin/bash
smbclient -U admin -W CORP //192.168.1.100/Backup P@ssw0rd -c 'put nightly_backup.tar'
References
Penetration Testing with SMBClient
Last updated