# 22 - SSH/SFTPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 * **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
もし、**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} ## 基本情報 **SSHまたはSecure ShellまたはSecure Socket Shell**は、ユーザーが**セキュリティのないネットワークを介してコンピュータに安全にアクセスする**ためのネットワークプロトコルです。 **デフォルトポート:** 22 ``` 22/tcp open ssh syn-ack ``` **SSHサーバー:** * [openSSH](http://www.openssh.org) – OpenBSD SSH、BSD、Linuxディストリビューション、およびWindows 10以降に搭載されています。 * [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – 低メモリとプロセッサリソースの環境向けのSSH実装で、OpenWrtに搭載されています。 * [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Windows向けのSSH実装で、クライアントは一般的に使用されますが、サーバーの使用は稀です。 * [CopSSH](https://www.itefix.net/copssh) – Windows向けのOpenSSHの実装です。 **SSHライブラリ(サーバーサイドの実装):** * [libssh](https://www.libssh.org) – SSHv2プロトコルを実装したマルチプラットフォームのCライブラリで、[Python](https://github.com/ParallelSSH/ssh-python)、[Perl](https://github.com/garnier-quentin/perl-libssh/)、および[R](https://github.com/ropensci/ssh)にバインディングがあります。KDEではsftpに、GitHubではgit SSHインフラストラクチャに使用されています。 * [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI Cで書かれたSSHv2サーバーライブラリで、組み込み、RTOS、リソース制約のある環境を対象としています。 * [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD javaライブラリはApache MINAに基づいています。 * [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2プロトコルライブラリ ## 列挙 ### バナーの取得 ```bash nc -vn 22 ``` ### 自動化されたssh-audit ssh-auditは、sshサーバーおよびクライアントの設定監査のためのツールです。 [https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit)は、[https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)から更新されたフォークです。 **特徴:** * SSH1およびSSH2プロトコルサーバーサポート * SSHクライアントの設定を分析 * バナーを取得し、デバイスまたはソフトウェアとオペレーティングシステムを認識し、圧縮を検出 * キーエクスチェンジ、ホストキー、暗号化、メッセージ認証コードのアルゴリズムを収集 * アルゴリズム情報を出力(利用可能な期間、削除/無効化、安全でない/弱い/レガシーなど) * アルゴリズムの推奨事項を出力(認識されたソフトウェアバージョンに基づいて追加または削除) * セキュリティ情報を出力(関連する問題、割り当てられたCVEリストなど) * アルゴリズム情報に基づいたSSHバージョンの互換性を分析 * OpenSSH、Dropbear SSH、libsshからの過去の情報 * LinuxとWindowsで実行可能 * 依存関係なし ```bash usage: ssh-audit.py [-1246pbcnjvlt] -1, --ssh1 force ssh version 1 only -2, --ssh2 force ssh version 2 only -4, --ipv4 enable IPv4 (order of precedence) -6, --ipv6 enable IPv6 (order of precedence) -p, --port= port to connect -b, --batch batch output -c, --client-audit starts a server on port 2222 to audit client software config (use -p to change port; use -t to change timeout) -n, --no-colors disable colors -j, --json JSON output -v, --verbose verbose output -l, --level= minimum output level (info|warn|fail) -t, --timeout= timeout (in seconds) for connection and reading (default: 5) $ python3 ssh-audit ``` ### サーバーの公開SSHキー ```plaintext ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6Xz6X ```bash ssh-keyscan -t rsa -p ``` ### 弱い暗号アルゴリズム これはデフォルトで **nmap** によって発見されます。ただし、**sslscan** または **sslyze** を使用することもできます。 ### Nmapスクリプト ```bash nmap -p22 -sC # Send default nmap scripts for SSH nmap -p22 -sV # Retrieve version nmap -p22 --script ssh2-enum-algos # Retrieve supported algorythms nmap -p22 --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods ``` ### Shodan * `ssh` ## ユーザー名、パスワード、および秘密鍵のブルートフォース攻撃 ### ユーザー名の列挙 OpenSSHの一部のバージョンでは、タイミング攻撃を使用してユーザーを列挙することができます。この脆弱性を悪用するために、Metasploitモジュールを使用することができます。 ``` msf> use scanner/ssh/ssh_enumusers ``` ### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#ssh) 一般的なsshの資格情報は[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)にあります。 ### プライベートキーのブルートフォース 使用可能なsshのプライベートキーがわかっている場合は、試してみましょう。nmapスクリプトを使用できます。 ``` https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html ``` または、MSF補助モジュール: ``` msf> use scanner/ssh/ssh_identify_pubkeys ``` または、`ssh-keybrute.py`(ネイティブのPython3で、軽量でレガシーアルゴリズムが有効になっています)を使用することもできます:[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)。 #### ここで悪名高い鍵を見つけることができます: {% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %} #### 弱いSSH鍵/Debianの予測可能なPRNG 一部のシステムでは、暗号資材を生成するために使用されるランダムシードに既知の欠陥があります。これにより、ブルートフォース攻撃が可能な鍵スペースが劇的に減少する場合があります。弱いPRNGによって影響を受けたDebianシステムで生成された事前生成された鍵セットは、ここで入手できます:[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)。 被害者のマシンの有効な鍵を検索するためにここを調べるべきです。 ### Kerberos `ssh`プロトコルを使用する**crackmapexec**は、`--kerberos`オプションを使用して**Kerberosを介して認証**することができます。詳細については、`crackmapexec ssh --help`を実行してください。 ## デフォルトの資格情報 | **ベンダー** | **ユーザー名** | **パスワード** | | ------------ | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | APC | apc、device | apc | | Brocade | admin | admin123、password、brocade、fibranne | | Cisco | admin、cisco、enable、hsa、pix、pnadmin、ripeop、root、shelladmin | admin、Admin123、default、password、secur4u、cisco、Cisco、\_Cisco、cisco123、C1sco!23、Cisco123、Cisco1234、TANDBERG、change\_it、12345、ipics、pnadmin、diamond、hsadb、c、cc、attack、blender、changeme | | Citrix | root、nsroot、nsmaint、vdiadmin、kvm、cli、admin | C1trix321、nsroot、nsmaint、kaviza、kaviza123、freebsd、public、rootadmin、wanscaler | | D-Link | admin、user | private、admin、user | | Dell | root、user1、admin、vkernel、cli | calvin、123456、password、vkernel、Stor@ge!、admin | | EMC | admin、root、sysadmin | EMCPMAdm7n、Password#1、Password123#、sysadmin、changeme、emc | | HP/3Com | admin、root、vcx、app、spvar、manage、hpsupport、opc\_op | admin、password、hpinvent、iMC123、pvadmin、passw0rd、besgroup、vcx、nice、access、config、3V@rpar、3V#rpar、procurve、badg3r5、OpC\_op、!manage、!admin | | Huawei | admin、root | 123456、admin、root、Admin123、Admin@storage、Huawei12#$、HwDec@01、hwosta2.0、HuaWei123、fsp200@HW、huawei123 | | IBM | USERID、admin、manager、mqm、db2inst1、db2fenc1、dausr1、db2admin、iadmin、system、device、ufmcli、customer | PASSW0RD、passw0rd、admin、password、Passw8rd、iadmin、apc、123456、cust0mer | | Juniper | netscreen | netscreen | | NetApp | admin | netapp123 | | Oracle | root、oracle、oravis、applvis、ilom-admin、ilom-operator、nm2user | changeme、ilom-admin、ilom-operator、welcome1、oracle | | VMware | vi-admin、root、hqadmin、vmware、admin | vmware、vmw@re、hqadmin、default | ## SSH-MitM もし、被害者がユーザー名とパスワードを使用してSSHサーバーに接続するためにローカルネットワークにいる場合、**MitM攻撃を行って認証情報を盗む**ことができます。 **攻撃経路:** - ユーザートラフィックは攻撃マシンにリダイレクトされます - 攻撃者はSSHサーバーへの接続試行を監視し、それらを自身のSSHサーバーにリダイレクトします - 攻撃者のSSHサーバーは、まず、ユーザーのパスワードを含む入力データをすべてログに記録し、次に、ユーザーが接続したい正規のSSHサーバーにコマンドを送信して実行し、結果を正規のユーザーに返します \*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\*は、上記で説明したことを正確に行います。 実際のMitMを実行するために、ARPスプーフィング、DNSスプーフィングなどの技術を使用することができます。詳細については、[**ネットワークスプーフィング攻撃**](../generic-methodologies-and-resources/pentesting-network/#spoofing)で説明されています。 ## 設定の誤構成 ### rootログイン デフォルトでは、ほとんどのSSHサーバーの実装ではrootログインが許可されていますが、これを無効にすることが推奨されています。なぜなら、このアカウントの資格情報が漏洩した場合、攻撃者は直接管理者特権を取得することができ、また、このアカウントへのブルートフォース攻撃を行うことも可能になるためです。 **openSSHでrootログインを無効にする方法:** 1. SSHサーバーの設定を編集します `sudoedit /etc/ssh/sshd_config` 2. `#PermitRootLogin yes` を `PermitRootLogin no` に変更します 3. 設定の変更を反映させます `sudo systemctl daemon-reload` 4. SSHサーバーを再起動します `sudo systemctl restart sshd` ### SFTPコマンドの実行 もう1つの一般的なSSHの誤構成は、SFTPの設定でよく見られます。ほとんどの場合、SFTPサーバーを作成する際に、管理者はユーザーがファイルを共有するためのSFTPアクセスを持つことを望んでいますが、マシン上でリモートシェルを取得することは望んでいません。そのため、ユーザーにプレースホルダーシェル(`/usr/bin/nologin`や`/usr/bin/false`など)を割り当て、彼をジェイルにチュートリングするだけで、シェルアクセスや全体のファイルシステムへの乱用を防ぐことができると考えています。しかし、彼らは間違っています。**ユーザーは、デフォルトのコマンドやシェルが実行される前に、認証後すぐにコマンドを実行するように要求することができます**。したがって、シェルアクセスを拒否するプレースホルダーシェルをバイパスするには、単に事前にコマンド(例:`/bin/bash`)を実行するように要求するだけです。 ``` $ ssh -v noraj@192.168.1.94 id ... Password: debug1: Authentication succeeded (keyboard-interactive). Authenticated to 192.168.1.94 ([192.168.1.94]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0 debug1: Sending command: id debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 uid=1000(noraj) gid=100(users) groups=100(users) debug1: channel 0: free: client-session, nchannels 1 Transferred: sent 2412, received 2480 bytes, in 0.1 seconds Bytes per second: sent 43133.4, received 44349.5 debug1: Exit status 0 $ ssh noraj@192.168.1.94 /bin/bash ``` 以下は、ユーザー`noraj`のセキュアなSFTP設定の例です(`/etc/ssh/sshd_config` - openSSH): ```plaintext # SFTP configuration for noraj Subsystem sftp internal-sftp Match User noraj ChrootDirectory /home/noraj ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no PasswordAuthentication yes PermitTunnel no PermitTTY no PermitUserEnvironment no AllowAgentForwarding no AllowStreamLocalForwarding no ClientAliveInterval 300 ClientAliveCountMax 2 UsePAM yes ``` この設定では、ユーザー`noraj`に対してSFTPのみを許可し、その他のSSH機能を制限しています。ユーザーは自分のホームディレクトリ`/home/noraj`内でのみ操作できます。パスワード認証が有効になっており、TCPフォワーディングやX11フォワーディングなどの機能は無効化されています。また、セッションのタイムアウトも設定されています。 ``` Match User noraj ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no PermitTunnel no X11Forwarding no PermitTTY no ``` この設定では、SFTPのみを許可します。シェルアクセスを無効にするために、startコマンドを強制し、TTYアクセスも無効にします。また、ポートフォワーディングやトンネリングもすべて無効にします。 ### SFTPトンネリング SFTPサーバーへのアクセスがある場合、一般的なポートフォワーディングを使用してトラフィックをトンネリングすることもできます。 ``` sudo ssh -L :: -N -f @ ``` ### SFTPシンボリックリンク **sftp**には「**symlink**」というコマンドがあります。そのため、あるフォルダに**書き込み権限**がある場合、**他のフォルダ/ファイル**の**シンボリックリンク**を作成することができます。おそらく、chroot内に**閉じ込められている**ため、これは特に役に立たないかもしれませんが、作成した**シンボリックリンク**に**no-chrootサービス**(たとえば、ウェブからシンボリックリンクにアクセスできる場合)から**アクセス**できる場合、**ウェブを介してシンボリックリンクされたファイルを開く**ことができます。 たとえば、新しいファイル「**_froot_**」から「**_/**_」への**シンボリックリンク**を作成するには、以下のようにします: ``` sftp> symlink / froot ``` もしウェブ経由でファイル "_froot_" にアクセスできる場合、システムのルート ("/") フォルダをリストすることができます。 ### 認証方法 高セキュリティ環境では、単純なパスワードベースの認証ではなく、キーベースまたは二要素認証のみを有効にすることが一般的な慣行です。しかし、しばしばより強力な認証方法が無効にされずに有効にされています。よくあるケースは、openSSHの設定で `publickey` を有効にし、デフォルトの認証方法に設定するが、`password` を無効にしないことです。したがって、SSHクライアントの詳細モードを使用することで、攻撃者はより弱い認証方法が有効になっていることを確認できます。 ``` $ ssh -v 192.168.1.94 OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019 ... debug1: Authentications that can continue: publickey,password,keyboard-interactive ``` たとえば、認証の失敗制限が設定されており、パスワードのメソッドに到達する機会がない場合、`PreferredAuthentications`オプションを使用して、このメソッドを強制的に使用することができます。 ``` $ ssh -v 192.168.1.94 -o PreferredAuthentications=password ... debug1: Next authentication method: password ``` 設定ファイルのレビューは、予期されるメソッドのみが承認されているかを確認するために必要です。クライアントで詳細モードを使用すると、設定の効果を確認するのに役立ちます。 ### 設定ファイル ``` ssh_config sshd_config authorized_keys ssh_known_hosts known_hosts id_rsa ``` ## ファジング * [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt) * [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2) ## 参考文献 * [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)には、SSHを強化するための興味深いガイドがあります。 * [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide) もしあなたが**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_). {% embed url="https://www.stmcyber.com/careers" %} ## HackTricks自動コマンド ``` Protocol_Name: SSH Port_Number: 22 Protocol_Description: Secure Shell Hardening Entry_1: Name: Hydra Brute Force Description: Need Username Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 -u {IP} ssh Entry_2: Name: consolesless mfs enumeration Description: SSH enumeration without the need to run msfconsole Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit' ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**