22 - Pentesting SSH/SFTP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
SSH (セキュアシェルまたはセキュアソケットシェル) は、未保護のネットワークを介してコンピュータに安全に接続するためのネットワークプロトコルです。リモートシステムにアクセスする際のデータの機密性と完全性を維持するために不可欠です。
デフォルトポート: 22
SSHサーバー:
openSSH – OpenBSD SSH、BSD、LinuxディストリビューションおよびWindows 10以降のWindowsに搭載
Dropbear – 低メモリおよびプロセッサリソースの環境向けのSSH実装、OpenWrtに搭載
PuTTY – Windows用のSSH実装、クライアントは一般的に使用されるが、サーバーの使用はまれ
CopSSH – Windows用のOpenSSHの実装
SSHライブラリ(サーバーサイドの実装):
wolfSSH – ANSI Cで書かれたSSHv2サーバーライブラリ、組み込み、RTOS、およびリソース制約のある環境を対象
Apache MINA SSHD – Apache SSHD JavaライブラリはApache MINAに基づいている
paramiko – Python SSHv2プロトコルライブラリ
ssh-auditは、sshサーバーとクライアントの設定監査のためのツールです。
https://github.com/jtesta/ssh-auditは、https://github.com/arthepsy/ssh-audit/からの更新されたフォークです。
特徴:
SSH1およびSSH2プロトコルサーバーのサポート;
SSHクライアント設定の分析;
バナーを取得し、デバイスまたはソフトウェアとオペレーティングシステムを認識し、圧縮を検出;
キー交換、ホストキー、暗号化およびメッセージ認証コードアルゴリズムを収集;
アルゴリズム情報を出力(利用可能な時期、削除/無効、危険/弱い/古いなど);
アルゴリズムの推奨事項を出力(認識されたソフトウェアバージョンに基づいて追加または削除);
セキュリティ情報を出力(関連する問題、割り当てられたCVEリストなど);
アルゴリズム情報に基づいてSSHバージョンの互換性を分析;
OpenSSH、Dropbear SSHおよびlibsshからの履歴情報;
LinuxおよびWindowsで実行;
依存関係なし
これはデフォルトでnmapによって発見されます。しかし、sslcanやsslyzeを使用することもできます。
ssh
OpenSSHのいくつかのバージョンでは、タイミング攻撃を行ってユーザーを列挙することができます。これを利用するためにmetasploitモジュールを使用できます:
一般的なssh認証情報はこちらとこちらおよび以下にあります。
使用できるsshプライベートキーを知っている場合... 試してみましょう。nmapスクリプトを使用できます:
またはMSF補助モジュール:
Or use ssh-keybrute.py
(ネイティブPython3、軽量でレガシーアルゴリズムが有効): snowdroppe/ssh-keybrute.
一部のシステムには、暗号材料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、劇的に減少した鍵空間が生じ、ブルートフォース攻撃が可能になります。弱いPRNGの影響を受けたDebianシステムで生成された事前生成された鍵のセットはここで入手できます: g0tmi1k/debian-ssh.
被害者のマシンの有効な鍵を検索するためにここを確認する必要があります。
crackmapexecは、ssh
プロトコルを使用して--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サーバーへの接続試行を傍受します。
傍受とログ記録: 攻撃者のマシンはプロキシとして機能し、正当なSSHサーバーを装ってユーザーのログイン情報をキャプチャします。
コマンド実行と中継: 最後に、攻撃者のサーバーはユーザーの資格情報をログ記録し、コマンドを実際のSSHサーバーに転送し、実行し、結果をユーザーに返送します。このプロセスはシームレスで正当なものに見えます。
SSH MITMは、上記の説明通りに動作します。
実際のMitMをキャプチャするために、ARPスプーフィング、DNSスプーフィング、またはネットワークスプーフィング攻撃で説明されている他の技術を使用できます。
発見されたSSHプライベートキーを使用してネットワークを横断し、各システムの各プライベートキーを新しいホストに利用する場合、SSH-Snakeが必要です。
SSH-Snakeは以下のタスクを自動的かつ再帰的に実行します:
現在のシステムで、任意のSSHプライベートキーを見つける。
現在のシステムで、プライベートキーが受け入れられる可能性のあるホストまたは宛先(user@host)を見つける。
発見されたすべてのプライベートキーを使用して、すべての宛先にSSH接続を試みる。
宛先に正常に接続できた場合、接続したシステムでステップ#1 - #4を繰り返す。
完全に自己複製し、自己伝播します -- そして完全にファイルレスです。
SSHサーバーがデフォルトでルートユーザーのログインを許可することは一般的であり、これは重大なセキュリティリスクをもたらします。ルートログインを無効にすることは、サーバーを保護するための重要なステップです。この変更を行うことで、管理者権限を持つ不正アクセスやブルートフォース攻撃を軽減できます。
OpenSSHでルートログインを無効にする方法:
sudoedit /etc/ssh/sshd_config
でSSH設定ファイルを編集します。
設定を#PermitRootLogin yes
から**PermitRootLogin no
**に変更します。
sudo systemctl daemon-reload
を使用して設定を再読み込みします。
変更を適用するためにSSHサーバーを再起動します: sudo systemctl restart sshd
SFTPセットアップにおいて一般的な見落としが発生します。管理者はユーザーがリモートシェルアクセスを有効にせずにファイルを交換できるように意図しています。ユーザーを非対話型シェル(例: /usr/bin/nologin
)に設定し、特定のディレクトリに制限しても、セキュリティの抜け穴が残ります。ユーザーはログイン後すぐにコマンド(例: /bin/bash
)の実行を要求することで、これらの制限を回避できます。これにより、不正なコマンド実行が可能になり、意図されたセキュリティ対策が損なわれます。
以下は、ユーザー noraj
のための安全な SFTP 構成の例です(/etc/ssh/sshd_config
– openSSH):
この設定は、SFTPのみを許可します:開始コマンドを強制することでシェルアクセスを無効にし、TTYアクセスを無効にするだけでなく、すべての種類のポートフォワーディングやトンネリングも無効にします。
SFTPサーバーにアクセスできる場合、一般的なポートフォワーディングを使用して、トラフィックをこの経由でトンネルすることもできます:
sftp には "symlink" コマンドがあります。したがって、特定のフォルダに 書き込み権限 がある場合、他のフォルダ/ファイル の シンボリックリンク を作成できます。おそらく chroot 内に 閉じ込められている ため、これはあなたにとって特に役に立たないでしょうが、作成した シンボリックリンク に no-chroot サービス からアクセスできる場合(たとえば、ウェブからシンボリックリンクにアクセスできる場合)、ウェブを通じてシンボリックリンクされたファイルを開く ことができます。
たとえば、新しいファイル "froot" から "/" への シンボリックリンク を作成するには:
If you can access the file "froot" via web, you will be able to list the root ("/") folder of the system.
高セキュリティ環境では、単純なパスワードベースの認証の代わりに、キーベースまたは二要素認証のみを有効にすることが一般的な慣行です。しかし、しばしば強力な認証方法が有効になっていても、弱い方法が無効になっていないことがあります。よくあるケースは、openSSHの設定でpublickey
を有効にし、デフォルトの方法として設定するが、password
を無効にしないことです。そのため、SSHクライアントの詳細モードを使用することで、攻撃者は弱い方法が有効になっていることを確認できます:
例えば、認証失敗の制限が設定されていて、パスワードメソッドに到達する機会がない場合、PreferredAuthentications
オプションを使用してこのメソッドを強制的に使用することができます。
SSHサーバーの設定を確認することは、予期される方法のみが承認されていることを確認するために必要です。クライアントで詳細モードを使用すると、設定の効果を確認するのに役立ちます。
SSHを強化する方法に関する興味深いガイドはhttps://www.ssh-audit.com/hardening_guides.htmlで見つけることができます。
バグバウンティのヒント: Intigritiにサインアップしてください。これはハッカーによって、ハッカーのために作られたプレミアムバグバウンティプラットフォームです!今日https://go.intigriti.com/hacktricksで私たちに参加し、最大**$100,000**のバウンティを獲得し始めましょう!
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)