Pentesting VoIP
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)
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権を昇格させるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告書に変えます。
VoIPの仕組みについて学ぶには、以下を確認してください:
Basic VoIP Protocols1xx—暫定レスポンス
2xx—成功したレスポンス
3xx—リダイレクションレスポンス
4xx—クライアントエラー応答
5xx—サーバー障害応答
6xx—グローバル失敗応答
Red Teamが最初に行うべきステップの一つは、OSINTツール、Google検索、またはウェブページのスクレイピングを使用して、会社に連絡するための利用可能な電話番号を検索することです。
電話番号がわかったら、オンラインサービスを使用してオペレーターを特定できます:
オペレーターがVoIPサービスを提供しているかどうかを知ることで、会社がVoIPを使用しているかどうかを特定できます... さらに、会社がVoIPサービスを契約していないが、PSTNカードを使用して独自のVoIP PBXを従来の電話ネットワークに接続している可能性もあります。
音楽の自動応答などは、通常VoIPが使用されていることを示しています。
VoIPソフトウェアを特定するのに役立つ他のOSINT列挙は、Red Teamにとって有益です。
nmap
はUDPサービスのスキャンが可能ですが、スキャンされるUDPサービスの数が多いため、非常に遅く、この種のサービスに対してあまり正確ではないかもしれません。
svmap
from SIPVicious (sudo apt install sipvicious
): 指定されたネットワーク内のSIPサービスを特定します。
svmap
は簡単にブロックできます。なぜなら、User-Agent friendly-scanner
を使用するからですが、/usr/share/sipvicious/sipvicious
のコードを変更して変更することができます。
SIPPTS scan
from sippts: SIPPTSスキャンは、UDP、TCP、またはTLS上のSIPサービス用の非常に高速なスキャナーです。マルチスレッドを使用し、大規模なネットワーク範囲をスキャンできます。ポート範囲を簡単に指定し、TCPとUDPの両方をスキャンし、別のメソッドを使用し(デフォルトではOPTIONSを使用)、異なるUser-Agentを指定することができます(その他も含む)。
metasploit:
PBXは、他のネットワークサービスも公開している可能性があります:
69/UDP (TFTP): ファームウェアの更新
80 (HTTP) / 443 (HTTPS): ウェブからデバイスを管理するため
389 (LDAP): ユーザー情報を保存するための代替手段
3306 (MySQL): MySQLデータベース
5038 (Manager): 他のプラットフォームからAsteriskを使用することを許可
5222 (XMPP): Jabberを使用したメッセージ
5432 (PostgreSQL): PostgreSQLデータベース
その他...
PBXで使用可能なメソッドを見つけることができます SIPPTS enumerate
を使用して、sipptsから
送信するメッセージの種類やヘッダーに応じて、サーバーが返すヘッダーを分析することは非常に重要です。 sippts の SIPPTS send
を使用すると、すべてのヘッダーを操作してパーソナライズされたメッセージを送信し、応答を分析できます。
サーバーがウェブソケットを使用している場合、データを取得することも可能です。sipptsのSIPPTS wssend
を使用すると、パーソナライズされたWSメッセージを送信できます。
PBX(プライベートブランチ交換)システムにおける拡張は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられたユニークな内部識別子を指します。拡張により、組織内での通話を効率的にルーティングすることが可能になり、各ユーザーやデバイスに対して個別の外部電話番号を必要としません。
svwar
from SIPVicious (sudo apt install sipvicious
): svwar
は無料のSIP PBX拡張ラインスキャナーです。概念的には、拡張の範囲や指定された拡張のリストを推測することによって、従来のウォーダイラーと同様に機能します。
SIPPTS exten
from sippts: SIPPTS extenはSIPサーバー上の拡張を特定します。Sipextenは大規模なネットワークとポート範囲をチェックできます。
metasploit: metasploitを使用して拡張機能/ユーザー名を列挙することもできます:
enumiax
(apt install enumiax
): enumIAX はインターアスタリスク交換プロトコルの ユーザー名ブルートフォース列挙ツール です。enumIAXは、2つの異なるモードで動作することができます。シーケンシャルユーザー名推測または辞書攻撃。
PBXといくつかの拡張子/ユーザー名を発見した場合、Red Teamは一般的なパスワードの辞書を使用して、拡張子への**REGISTER
メソッドを介して認証を試みる**ことができます。
ユーザー名は拡張子と同じである可能性がありますが、この慣行はPBXシステム、その設定、および組織の好みによって異なる場合があります...
ユーザー名が拡張子と異なる場合は、ブルートフォースするためのユーザー名を特定する必要があります。
svcrack
from SIPVicious (sudo apt install sipvicious
): SVCrackは、PBX上の特定のユーザー名/拡張子のパスワードをクラッキングすることを可能にします。
SIPPTS rcrack
from sippts: SIPPTS rcrackは、SIPサービス用のリモートパスワードクラッカーです。Rcrackは、異なるIPおよびポート範囲で複数のユーザーのパスワードをテストできます。
Metasploit:
オープンWifiネットワーク内にVoIP機器を見つけた場合、すべての情報をスニッフィングすることができます。さらに、より閉じたネットワーク(Ethernet経由または保護されたWifiに接続)内にいる場合、PBXとゲートウェイの間でMitM攻撃(例えば、ARPspoofing)を実行して情報をスニッフィングすることができます。
ネットワーク情報の中には、機器を管理するためのウェブ認証情報、ユーザーの内線番号、ユーザー名、IPアドレス、さらにはハッシュ化されたパスワードやRTPパケットが含まれており、これを再生して会話を聞くことができます。
この情報を取得するために、Wiresharkやtcpdumpなどのツールを使用できますが、VoIP会話をスニッフィングするために特別に作成されたツールはucsniffです。
SIP通信にTLSが使用されている場合、SIP通信をクリアで見ることはできません。 SRTPやZRTPが使用されている場合も同様で、RTPパケットはクリアテキストではありません。
SIP REGISTER通信をよりよく理解するためのこの例を確認してください 認証情報がどのように送信されるかを学ぶために。
sipdump
& sipcrack
, sipcrackの一部(apt-get install sipcrack
):これらのツールは、SIPプロトコル内のダイジェスト認証をpcapから抽出し、ブルートフォースすることができます。
SIPPTS dump
from sippts: SIPPTS dumpは、pcapファイルからダイジェスト認証を抽出できます。
SIPPTS dcrack
from sippts: SIPPTS dcrackは、SIPPTSダンプで取得したダイジェスト認証をクラッキングするためのツールです。
SIPPTS tshark
from sippts: SIPPTS tsharkはPCAPファイルからSIPプロトコルのデータを抽出します。
SIP 認証情報だけでなく、ボイスメールにアクセスするために使用される DTMF コードもネットワークトラフィック内で見つけることができます。 これらのコードは INFO SIP メッセージ、音声、または RTP パケット内で送信することが可能です。コードが RTP パケット内にある場合、その会話の部分を切り取り、ツール multimo を使用して抽出することができます:
Asteriskでは、特定のIPアドレスからの接続を許可することも、任意のIPアドレスからの接続を許可することも可能です:
IPアドレスが指定されている場合、ホストはREGISTERリクエストを定期的に送信する必要がなくなります(REGISTERパケットには生存時間が含まれており、通常は30分で、他のシナリオでは電話が30分ごとにREGISTERする必要があります)。ただし、VoIPサーバーからの接続を受け入れるためにオープンポートが必要です。
ユーザーを定義するには、次のように定義できます:
type=user
: ユーザーはユーザーとしてのみ通話を受けることができます。
type=friend
: ピアとして通話を行い、ユーザーとして受けることが可能です(拡張機能と共に使用されます)
type=peer
: ピアとして通話を送受信することが可能です(SIPトランク)
不正な変数を使用して信頼を確立することも可能です:
insecure=port
: IPによって検証されたピア接続を許可します。
insecure=invite
: INVITEメッセージの認証を必要としません
insecure=port,invite
: 両方
type=friend
が使用されると、host変数の値は使用されません。したがって、管理者がその値を使用してSIPトランクを誤設定すると、誰でも接続できるようになります。
例えば、この設定は脆弱です:
host=10.10.10.10
insecure=port,invite
type=friend
Asteriskにおいて、コンテキストはダイヤルプラン内の関連する拡張機能、アクション、およびルールをグループ化する名前付きコンテナまたはセクションです。ダイヤルプランはAsteriskシステムのコアコンポーネントであり、着信および発信通話がどのように処理され、ルーティングされるかを定義します。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分間の分離を提供するために使用されます。
各コンテキストは設定ファイル、通常は**extensions.conf
**ファイルで定義されます。コンテキストは角括弧で示され、その中にコンテキスト名が含まれます。例えば:
コンテキスト内では、拡張機能(ダイヤルされた番号のパターン)を定義し、それを一連のアクションまたはアプリケーションに関連付けます。これらのアクションは、通話がどのように処理されるかを決定します。例えば:
この例は、「my_context」というシンプルなコンテキストと「100」という拡張を示しています。誰かが100をダイヤルすると、通話が応答され、ウェルカムメッセージが再生され、その後通話が終了します。
これは、他の任意の番号に呼び出すことを許可する 別のコンテキストです:
もし管理者がデフォルトコンテキストを次のように定義した場合:
誰でもサーバーを使って他の番号に電話をかけることができる(サーバーの管理者が通話料金を支払うことになります)。
さらに、デフォルトで**sip.conf
ファイルにはallowguest=true
が含まれているため、認証なしの任意の**攻撃者が他の番号に電話をかけることができます。
SIPPTS invite
from sippts: SIPPTS inviteは、PBXサーバーが認証なしで通話を許可しているかどうかを確認します。SIPサーバーに不正な設定がある場合、外部番号に電話をかけることができます。また、通話を別の外部番号に転送することも可能です。
例えば、Asteriskサーバーに不適切なコンテキスト設定がある場合、認証なしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても通話をかけることができます。
IVRSはインタラクティブ音声応答システムを指し、ユーザーが音声またはトーン入力を通じてコンピュータ化されたシステムと対話することを可能にする電話技術です。IVRSは、情報提供、通話のルーティング、ユーザー入力の取得など、さまざまな機能を提供する自動通話処理システムを構築するために使用されます。
VoIPシステムにおけるIVRSは通常、以下で構成されています:
音声プロンプト:ユーザーをIVRメニューオプションや指示に導く事前録音された音声メッセージ。
DTMF(デュアルトーン多周波数)信号:電話のキーを押すことで生成されるトーン入力で、IVRメニューをナビゲートし、入力を提供するために使用されます。
通話ルーティング:ユーザー入力に基づいて、特定の部門、エージェント、または内線など、適切な宛先に通話を誘導します。
ユーザー入力の取得:呼び出し者からの情報を収集します。例えば、アカウント番号、ケースID、またはその他の関連データなどです。
外部システムとの統合:IVRシステムをデータベースや他のソフトウェアシステムに接続し、情報にアクセスまたは更新し、アクションを実行したり、イベントをトリガーしたりします。
Asterisk VoIPシステムでは、ダイヤルプラン(**extensions.conf
**ファイル)とBackground()
、Playback()
、Read()
などのさまざまなアプリケーションを使用してIVRを作成できます。これらのアプリケーションは、音声プロンプトを再生し、ユーザー入力を取得し、通話の流れを制御するのに役立ちます。
前の例では、ユーザーに1を押して部門に電話するように、2を押して別の部門に電話するように、または知っている場合は完全な内線番号を入力するように求められます。 脆弱性は、指定された内線番号の長さがチェックされないという事実であり、ユーザーは5秒のタイムアウトを持つ完全な番号を入力でき、それが呼び出される可能性があります。
次のような内線番号を使用して:
Where ${EXTEN}
は 呼び出される内線番号 であり、ext 101 が導入されると これが起こります:
しかし、もし ${EXTEN}
が 数字以外のもの(古いAsteriskバージョンのように)を受け入れる場合、攻撃者は 101&SIP123123123
を入力して電話番号123123123に電話をかけることができます。そして、これが結果になります:
したがって、101
および123123123
への呼び出しが送信され、最初のものだけが接続されます... しかし、攻撃者がマッチをバイパスする拡張子を使用し、存在しない場合、希望する番号にのみ呼び出しを注入することができます。
SIP Digest Leakは、多くのSIP電話、ハードウェアおよびソフトウェアのIP電話、電話アダプタ(VoIPからアナログ)を含む脆弱性です。この脆弱性は、パスワードから計算されるDigest認証応答の漏洩を可能にします。オフラインパスワード攻撃が可能であり、チャレンジ応答に基づいてほとんどのパスワードを回復できます。
IP電話(被害者)は任意のポート(例:5060)で電話を受け付けています
攻撃者はIP電話にINVITEを送信します
被害者の電話が鳴り、誰かが電話を取り、すぐに切ります(相手が応答しないため)
電話が切られると、被害者の電話は攻撃者にBYEを送信します
攻撃者は407応答を発行し、認証を要求し、認証チャレンジを発行します
被害者の電話は2回目のBYEで認証チャレンジに対する応答を提供します
攻撃者はローカルマシン(または分散ネットワークなど)でチャレンジ応答に対してブルートフォース攻撃を実行し、パスワードを推測できます
SIPPTS漏洩はsipptsから: SIPPTS漏洩は、多くのSIP電話に影響を与えるSIP Digest Leak脆弱性を悪用します。出力はSipCrack形式で保存でき、SIPPTS dcrackまたはSipCrackツールを使用してブルートフォース攻撃できます。
Click2Callは、ウェブユーザー(例えば、製品に興味があるかもしれない)が電話番号を入力して呼び出されることを可能にします。次に、商業用の電話がかかり、彼が電話に出ると、ユーザーはエージェントと接続されて呼び出されます。
これに一般的なAsteriskプロファイルは次のとおりです:
前のプロファイルは 任意のIPアドレスが接続することを許可しています(パスワードが知られている場合)。
前述のように 通話を組織するためには、読み取り権限は必要なく、書き込みの 発信のみが必要です。
これらの権限があれば、パスワードを知っている任意のIPが接続し、過剰な情報を抽出することができます。
さらなる情報やアクションが要求される場合があります。
Asteriskでは、ChanSpy
コマンドを使用して、監視する内線(またはすべての内線)を指定することで、行われている会話を聞くことができます。このコマンドは内線に割り当てる必要があります。
例えば、exten => 333,1,ChanSpy('all',qb)
は、内線 333 に電話をかけると、all
の内線を監視し、新しい会話が始まるときに聞き始め(b
)、静かなモード(q
)で聞くことを示します。私たちはそれに対してインタラクトしたくないからです。*
を押すか、内線番号を入力することで、行われている会話から別の会話に移動することができます。
特定の内線のみを監視するために、ExtenSpy
を使用することも可能です。
会話を聞く代わりに、次のような内線を使用してファイルに録音することもできます:
通話は /tmp
に保存されます。
Asterisk に 通話を漏洩させるスクリプトを実行させる こともできます。
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 rtcpbleed
from sippts: SIPPTS rtcpbleedは、RTCPストリームを送信することでRTP Bleed脆弱性を検出します。
SIPPTS rtpbleedflood
from sippts: SIPPTS rtpbleedfloodは、RTPストリームを送信することでRTP Bleed脆弱性を悪用します。
SIPPTS rtpbleedinject
from sippts: SIPPTS rtpbleedinjectは、音声ファイル(WAV形式)を注入してRTP Bleed脆弱性を悪用します。
Asteriskでは、拡張ルールを追加して再読み込みすることができる方法があり(例えば、脆弱なウェブマネージャーサーバーを侵害することによって)、**System
**コマンドを使用してRCEを取得することが可能です。
There is command called Shell
that could be used instead of System
to execute system commands if necessary.
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 スクリプト.
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.
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
).
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.
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.
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)