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 (Secure Shell or Secure Socket Shell) は、未保護のネットワークを介してコンピュータに安全に接続するためのネットワークプロトコルです。リモートシステムにアクセスする際のデータの機密性と完全性を維持するために不可欠です。
デフォルトポート: 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
を実行してください。
Vendor | Usernames | Passwords |
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サーバーがデフォルトでrootユーザーのログインを許可することは一般的であり、これは重大なセキュリティリスクをもたらします。rootログインを無効にすることは、サーバーを保護するための重要なステップです。この変更を行うことで、管理者権限を持つ不正アクセスやブルートフォース攻撃を軽減できます。
OpenSSHでRoot Loginを無効にする方法:
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)