hacktricks/src/network-services-pentesting/554-8554-pentesting-rtsp.md

86 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 554,8554 - Pentesting RTSP
{{#include ../banners/hacktricks-training.md}}
## Basic Information
From [wikipedia](https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol):
> The **Real Time Streaming Protocol** (**RTSP**) ni itifaki ya udhibiti wa mtandao iliyoundwa kwa matumizi katika mifumo ya burudani na mawasiliano kudhibiti seva za vyombo vya habari vinavyotiririka. Itifaki hii inatumika kwa kuanzisha na kudhibiti vikao vya vyombo vya habari kati ya sehemu za mwisho. Wateja wa seva za vyombo vya habari wanatoa amri za mtindo wa VHS, kama vile kucheza, kurekodi na kusimamisha, ili kuwezesha udhibiti wa wakati halisi wa vyombo vya habari vinavyotiririka kutoka kwa seva hadi mteja (Video On Demand) au kutoka kwa mteja hadi seva (Voice Recording).
>
> Uhamasishaji wa data inayotiririka yenyewe si kazi ya RTSP. Seva nyingi za RTSP hutumia Itifaki ya Usafirishaji wa Wakati Halisi (RTP) pamoja na Itifaki ya Udhibiti wa Wakati Halisi (RTCP) kwa ajili ya usambazaji wa mtiririko wa vyombo vya habari. Hata hivyo, wauzaji wengine wanafanya utekelezaji wa itifaki za usafirishaji za miliki. Programu ya seva ya RTSP kutoka RealNetworks, kwa mfano, pia ilitumia Usafirishaji wa Data wa Halisi wa RealNetworks (RDT).
**Default ports:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Maelezo Muhimu
**RTSP** ni sawa na HTTP lakini imeundwa mahsusi kwa ajili ya utiririshaji wa media. Imeelezwa katika spesifikesheni rahisi ambayo inaweza kupatikana hapa:
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
Vifaa vinaweza kuruhusu ufikiaji **usio na uthibitisho** au **ulio na uthibitisho**. Ili kuangalia, ombi la "DESCRIBE" litatumwa. Mfano wa msingi umeonyeshwa hapa chini:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2`
Kumbuka, muundo sahihi unajumuisha "\r\n" mara mbili kwa ajili ya majibu ya kawaida. Jibu la "200 OK" linaashiria **ufikiaji usio na uthibitisho**, wakati "401 Unauthorized" linaashiria hitaji la uthibitisho, likifunua kama **Basic** au **Digest authentication** inahitajika.
Kwa **Basic authentication**, unachakata jina la mtumiaji na nenosiri katika base64 na kuijumuisha katika ombi kama ifuatavyo:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==`
Mfano huu unatumia "admin" na "1234" kwa ajili ya taarifa za kuingia. Hapa kuna **Python script** ya kutuma ombi kama hilo:
```python
import socket
req = "DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.1", 554))
s.sendall(req)
data = s.recv(1024)
print(data)
```
**Msingi wa uthibitishaji** ni rahisi na unapendekezwa. **Uthibitishaji wa Digest** unahitaji kushughulikia kwa makini maelezo ya uthibitishaji yaliyotolewa katika jibu la "401 Unauthorized".
Muonekano huu unarahisisha mchakato wa kufikia mitiririko ya RTSP, ukizingatia **Msingi wa uthibitishaji** kwa urahisi na ufanisi wake katika majaribio ya awali.
## Uhesabu
Tuchukue taarifa kuhusu mbinu halali na URLs zinazoungwa mkono na kujaribu kulazimisha ufikiaji (ikiwa inahitajika) ili kupata ufikiaji wa maudhui.
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
#### Kuangalia Mstream wa RTSP kwa [ffplay](https://ffmpeg.org/ffplay.html)
Mara tu umepata njia halali ya RTSP (mfano, `/mpeg4`, `/live.sdp`) na kuthibitisha ufikiaji (bila uthibitisho au kwa kutumia hati), unaweza kutumia `ffplay` kuhamasisha mchakato:
```bash
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
```
- `-rtsp_transport tcp`: Tumia TCP badala ya UDP kwa ajili ya utiririshaji wa kuaminika zaidi
- `-x`, `-y`: Bendera za hiari kudhibiti azimio la video
- Badilisha `<IP>` na njia kama inavyohitajika
### [Brute Force](../generic-hacking/brute-force.md#rtsp)
### **Programu nyingine muhimu**
Ili kufanya bruteforce: [https://github.com/Tek-Security-Group/rtsp_authgrinder](https://github.com/Tek-Security-Group/rtsp_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
- Gundua wenyeji wa RTSP walio wazi kwenye lengo lolote linalopatikana
- Pata taarifa zao za umma (jina la mwenyeji, bandari, mfano wa kamera, n.k.)
- Anzisha mashambulizi ya kamusi ya kiotomatiki ili kupata njia yao ya utiririshaji (kwa mfano /live.sdp)
- Anzisha mashambulizi ya kamusi ya kiotomatiki ili kupata jina la mtumiaji na nenosiri la kamera
- Tengeneza picha ndogo kutoka kwao ili kuangalia kama utiririshaji ni halali na kuwa na muonekano wa haraka wa maudhui yao
- Jaribu kuunda pipeline ya Gstreamer ili kuangalia kama zimeandikwa vizuri
- Chapisha muhtasari wa taarifa zote ambazo Cameradar inaweza kupata
## References
- [https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol](https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol)
- [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
- [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
{{#include ../banners/hacktricks-training.md}}