La herramienta svwar, que forma parte de la suite SIPVicious ha tenido una serie de mejoras. Esta herramienta nos permite obtener usuarios de una PBX o servidor VoIP.
El funcionamiento es bastante sencillo y ahora svwar prueba con una serie de números por defecto, buscando en los siguientes rangos: 1000,2000... 9000, 1001, 2001..9001, 1111,2222... 9999, 11111,22222...99999, 100-999, 1234,2345 ..7890. Así es posible identificar extensiones en varias configuraciones del PBX. Adicionalmente ahora svwar envía una respuesta ACK a la respuestas SIP con código 200 porque varios PBX continúan enviando paquetes hasta que reciben una confirmación.
Podemos obtener SIPVicious utilizando un cliente subversion:
svn checkout http://sipvicious.googlecode.com/svn/trunk/ sipvicious-read-only
Esta hecho en Python y su funcionamiento es sencillo, no necesitamos compilar y se ejecuta pasando el hostname o IP del PBX que queremos analizar:
./svwar.py direccion_IP | Extension | Authentication | ------------------------------ | 203 | reqauth |
Aunque también es posible especificar los rangos que queremos analizar o utilizar un diccionario:
./svwar.py Usage: svwar.py [options] target examples: svwar.py -e100-999 10.0.0.1 svwar.py -d dictionary.txt 10.0.0.2
Cuando lo ejecutamos, svwar manda peticiones REGISTER al PBX especificado:
Internet Protocol, Src: 192.168.1.2 (192.168.1.2), Dst: 192.168.1.8 (192.168.1.8)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Request-Line: REGISTER sip:200@192.168.1.8 SIP/2.0
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-1896472302;rport
Content-Length: 0
From: "200"<sip:200@192.168.1.8>; tag=3230300131353839393338393336
Accept: application/sdp
User-Agent: friendly-scanner
To: "200"<sip:200@192.168.1.8>
Contact: sip:200@192.168.1.8
CSeq: 1 REGISTER
Call-ID: 1996629828
Max-Forwards: 70Internet Protocol, Src: 192.168.1.2 (192.168.1.2), Dst: 192.168.1.8 (192.168.1.8)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Request-Line: REGISTER sip:203@192.168.1.8 SIP/2.0
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2170107283;rport
Content-Length: 0
From: "203"<sip:203@192.168.1.8>; tag=3230330133303638383631363437
Accept: application/sdp
User-Agent: friendly-scanner
To: "203"<sip:203@192.168.1.8>
Contact: sip:203@192.168.1.8
CSeq: 1 REGISTER
Call-ID: 1932039182
Max-Forwards: 70El PBX responderá con un 404 (Not Found) en caso de que no se encuentre el usuario:
Internet Protocol, Src: 192.168.1.8 (192.168.1.8), Dst: 192.168.1.2 (192.168.1.2)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Status-Line: SIP/2.0 404 Not found
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-1896472302;received=192.168.1.2;rport=5060
From: "200"<sip:200@192.168.1.8>; tag=3230300131353839393338393336
To: "200"<sip:200@192.168.1.8>;tag=as5878360c
Call-ID: 1996629828
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0O bien un 401 (Unauthorized) en caso contrario:
Internet Protocol, Src: 192.168.1.8 (192.168.1.8), Dst: 192.168.1.2 (192.168.1.2)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Status-Line: SIP/2.0 100 Trying
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2170107283;received=192.168.1.2;rport=5060
From: "203"<sip:203@192.168.1.8>; tag=3230330133303638383631363437
To: "203"<sip:203@192.168.1.8>
Call-ID: 1932039182
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:203@192.168.1.8>
Content-Length: 0Internet Protocol, Src: 192.168.1.8 (192.168.1.8), Dst: 192.168.1.2 (192.168.1.2)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Status-Line: SIP/2.0 401 Unauthorized
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2170107283;received=192.168.1.2;rport=5060
From: "203"<sip:203@192.168.1.8>; tag=3230330133303638383631363437
To: "203"<sip:203@192.168.1.8>;tag=as116b027c
Call-ID: 1932039182
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="6109636f"
Content-Length: 0Una vez se obtiene la respuesta se manda un ACK:
Internet Protocol, Src: 192.168.1.2 (192.168.1.2), Dst: 192.168.1.8 (192.168.1.8)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Request-Line: ACK sip:200@192.168.1.8 SIP/2.0
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-4090165706;rport
Content-Length: 0
From: "200"<sip:200@192.168.1.8>; tag=3230300132353234393537343136
Accept: application/sdp
User-Agent: friendly-scanner
To: "200"<sip:200@192.168.1.8>
Contact: sip:200@192.168.1.8
CSeq: 1 REGISTER ACK
Call-ID: 1996629828
Max-Forwards: 70Internet Protocol, Src: 192.168.1.2 (192.168.1.2), Dst: 192.168.1.8 (192.168.1.8)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Request-Line: ACK sip:203@192.168.1.8 SIP/2.0
Message Header
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2294203812;rport
Content-Length: 0
From: "203"<sip:203@192.168.1.8>; tag=3230330131353539313933373732
Accept: application/sdp
User-Agent: friendly-scanner
To: "203"<sip:203@192.168.1.8>
Contact: sip:203@192.168.1.8
CSeq: 1 REGISTER ACK
Call-ID: 1932039182
Max-Forwards: 70Interesante, a la vez que efectiva herramienta. Para detectar un posible escaneo, puede resultar útil un analizador de tráfico como Wireshark con el cual podremos observar dicho comportamiento (señal que alguien puede estar haciendo algo feo en nuestra red).