14 KiB
macOSネットワークサービスとプロトコル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
リモートアクセスサービス
これらはmacOSのリモートアクセスに使用される一般的なサービスです。
これらのサービスは「システム環境設定」→「共有」で有効/無効にできます。
- VNC(tcp:5900)として知られる「スクリーン共有」
- SSH(tcp:22)として呼ばれる「リモートログイン」
- Apple Remote Desktop(ARD)または「リモート管理」(tcp:3283、tcp:5900)
- AppleEvent(tcp:3031)として知られる「リモートAppleイベント」
有効になっているかどうかを確認するには、次を実行してください:
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\*.88|\*.445|\*.548" | wc -l);
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";
Pentesting ARD
(この部分はこのブログ記事から引用されました)
ARDは、いくつかの追加のmacOS固有の機能を備えた、実質的には改変されたVNCです。
ただし、Screen Sharingオプションは単なる基本的なVNCサーバーです。また、高度なARDまたはリモート管理オプションもあり、ARDをVNCクライアントと互換性のあるものにするために制御画面のパスワードを設定することができます。ただし、この認証方法には弱点があり、このパスワードは8文字の認証バッファに制限されているため、HydraやGoRedShellなどのツールを使用して非常に簡単にブルートフォース攻撃を行うことができます(デフォルトではレート制限はありません)。
Screen Sharingまたはリモート管理の脆弱なインスタンスを特定するには、vnc-info
スクリプトを使用してnmapを実行し、サービスがVNC Authentication (2)
をサポートしている場合、おそらくブルートフォース攻撃の脆弱性があります。サービスは、ワイヤ上で送信されるすべてのパスワードを8文字に切り詰めるため、VNC認証を「password」と設定した場合、「passwords」と「password123」の両方が認証されます。
特権のエスカレーション(TCCプロンプトの受け入れ)、GUIでのアクセス、ユーザーの監視を有効にするには、次のコマンドを使用して有効にすることができます:
{% code overflow="wrap" %}
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
{% endcode %}
ユーザーの監視からデスクトップの完全な制御まで、観察モード、共有制御、フル制御の間を切り替えることができます。さらに、ARDセッションにアクセスできた場合、そのセッションはセッションが終了するまで開いたままになります。セッション中にユーザーのパスワードが変更されても同様です。
また、ARDを介して直接UNIXコマンドを送信することもできます。管理者ユーザーの場合、rootユーザーを指定してrootとして実行することもできます。さらに、このUNIXコマンドの方法を使用して、特定の時間にリモートタスクをスケジュールすることもできますが、これは指定された時間にネットワーク接続として発生します(対象サーバーに保存され、実行されるのではなく)。最後に、リモートスポットライトは私のお気に入りの機能の1つです。これは本当に素晴らしいもので、低負荷でインデックス付けされた検索を迅速かつリモートで実行できます。これは、クイックで、複数のマシンで同時に検索を実行できるため、機密ファイルの検索には最適であり、CPUの使用率が急上昇することはありません。
Bonjourプロトコル
Bonjourは、同じネットワークにあるコンピュータやデバイスが他のコンピュータやデバイスが提供するサービスについて学ぶことができるようにする、Appleが設計した技術です。Bonjour対応のデバイスは、TCP/IPネットワークに接続されると、IPアドレスを選択し、そのネットワーク上の他のコンピュータに提供するサービスを知らせることができます。Bonjourは、Rendezvous、Zero Configuration、またはZeroconfとも呼ばれることがあります。
BonjourなどのZero Configuration Networkingは、次の機能を提供します。
- DHCPサーバーがなくてもIPアドレスを取得できる必要があります。
- DNSサーバーがなくても名前からアドレスへの変換を行う必要があります。
- ネットワーク上のサービスを検出できる必要があります。
デバイスは、169.254/16の範囲のIPアドレスを取得し、他のデバイスがそのIPアドレスを使用していないかどうかを確認します。使用されていない場合、IPアドレスを保持します。Macは、このサブネットのルーティングテーブルにエントリを保持します:netstat -rn | grep 169
DNSでは、マルチキャストDNS(mDNS)プロトコルが使用されます。mDNS servicesはポート5353/UDPでリッスンします。通常のDNSクエリを使用し、リクエストを単一のIPアドレスに送信する代わりに、マルチキャストアドレス224.0.0.251に送信します。これらのリクエストを受信する任意のマシンは応答し、通常はマルチキャストアドレスに応答するため、すべてのデバイスがテーブルを更新できます。
各デバイスは、ネットワークにアクセスする際に独自の名前を選択します。デバイスは、ホスト名または完全にランダムな名前に基づく名前を**.localで終わる名前**を選択します。
**サービスの検出にはDNS Service Discovery(DNS-SD)**が使用されます。
Zero Configuration Networkingの最後の要件は、DNS Service Discovery(DNS-SD)によって満たされます。DNS Service Discoveryは、DNS SRVレコードの構文を使用しますが、特定のサービスを提供する複数のホストがある場合に複数の結果を返すためにDNS PTRレコードを使用します。クライアントは、<Service>.<Domain>
の名前のPTRルックアップを要求し、<Instance>.<Service>.<Domain>
の形式のゼロ個以上のPTRレコードのリストを受け取ります。
dns-sd
バイナリを使用して、サービスの広告を表示し、サービスの検索を実行できます。
#Search ssh services
dns-sd -B _ssh._tcp
Browsing for _ssh._tcp
DATE: ---Tue 27 Jul 2021---
12:23:20.361 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
12:23:20.362 Add 3 1 local. _ssh._tcp. M-C02C934RMD6R
12:23:20.362 Add 3 10 local. _ssh._tcp. M-C02C934RMD6R
12:23:20.362 Add 2 16 local. _ssh._tcp. M-C02C934RMD6R
#Announce HTTP service
dns-sd -R "Index" _http._tcp . 80 path=/index.html
#Search HTTP services
dns-sd -B _http._tcp
新しいサービスが開始されると、新しいサービスはサブネット上のすべての人にその存在をマルチキャストします。リスナーは尋ねる必要はありませんでした。ただリスニングするだけでした。
このツールを使用して、現在のローカルネットワークで提供されているサービスを確認できます。
または、python-zeroconfを使用して、Pythonで独自のスクリプトを作成することもできます。
from zeroconf import ServiceBrowser, Zeroconf
class MyListener:
def remove_service(self, zeroconf, type, name):
print("Service %s removed" % (name,))
def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added, service info: %s" % (name, info))
zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()
もしBonjourがより安全であると感じるなら、無効化することもできます。以下の手順で行います:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
参考文献
- The Mac Hacker's Handbook
- https://taomm.org/vol1/analysis.html
- https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。