PiumaLab

Idee, esperimenti, tentativi e molto altro

Hacking dei videotelefoni (3)

Verifica della configurazione

Apriamo l'interfaccia web del telefono e verifichiamo che il parametro TR069_Enable sia settato ad 1, se non lo fosse dovremmo abilitarlo, attenzione che telefoni con versioni molto vecchie del software, anche se hanno il parametro, non hanno implementato il protocollo.

Configurazione DNS nella nostra Linux box

Per iniziare a fare i primi test abbiamo bisogno di configuare la nostra distribuzione Linux. Come abbiamo già detto in precedenza avremmo bisogno di alcuni programmi, già abbiamo il dhcpd installato e funzionante. Ora procuriamoci un server DNS. Bind fa a al caso nostro.
yum install bind

Bene, abbiamo un server DNS, ora dovremmo configurarlo. Se mettiamo in ascolto un tcpdump sull'interfaccia del telefono ci accorgiamo che interroga il DNS cercando di risolvere alcuni indirizzi. Se ricordate bene abbiamo configurato il nostro dhcpd in modo da settare sul telefono che il DNS siamo noi con il parametro option domain-name-servers 192.168.1.1; # me.

Osserviamo che il telefono cerca di risolvere i nomi: time.windows.com, che potremmo tranquillamente ignorare visto che servirà al telefono per sincronizzare il suo orologio e acs-mp315.urmet.it per i telefoni della Germania oppure regman-tl.interbusiness.it per i telefoni venduti da telecom italia. Verificate quale sia il vostro e configuriamo il DNS affinchè li risolva con il nostro indirizzo IP 192.168.1.1 .

Supponiamo abbiamo davanti un telefono italiano, editiamo il file /etc/named.rfc1912.zones inserendo le seguenti linee

zone "interbusiness.it" {
       type master;
       file "interbusiness_it.db";
       allow-transfer { 192.168.1.1; };
};

Poi dovremmo creare il file /var/named/interbusiness_it.db con quanto segue

$TTL 86400
@  IN              SOA  interbusiness.it. root.interbusiness.it.  (
                               2008112400 ; Serial
                               28800      ; Refresh
                               7200       ; Retry
                               604800     ; Expire
                               86400 )    ; Minimum
                   NS  192.168.1.1.

regman-tl 10800 IN A 192.168.1.1 ; me on eth1

Bene, il DNS è configurato. Ora possiamo lanciarlo con
service named start

Configurazione server web

Il telefono al boot interroga il dhcp per ottenere il suo indirizzo IP e quello del DNS. L'indirizzo del DNS è ancora il nostro. Sul nostro computer abbiamo eseguito un server DNS per la risoluzione di regman-tl.interbusiness.it che sarà quello con cui il telefono scambierà informazioni. Abbiamo fatto in modo che anche questo indirizzo sia risolto con 192.168.1.1 tramite il DNS.

A questo punto il telefono effettua una richiesta, cerca di aprire una connessione all'indirizzo 192.168.1.1:443, è un tentativo di una connessione https. questo significa che la comunicazione tra il telefono e noi (in questo caso) sarà criptata. Non solo, se nell'apertura della connessione SSL viene richiesto che i certificati vengano firmati da una certification autority sarà un pò difficile far passare il nostro PC per il server che aggiorna i telefoni.

Mettiamo comunque un server web e configuriamolo con dei certificati ssl. Proviamo con certificati auto prodotti, senza nessuna CA che li valida. Ci sono molte guide on line che spiegano come configurare il tutto. Per questo non mi soffermerò molto su questa configurazione.

Generare la chiave privata
openssl genrsa -des3 -out server.key 1024
Generare la CRC (Certificate Signing Request)
openssl req -new -key server.key -out server.csr
Rimuovere la passfrase dalla chiave
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

Generazione di un certificato self-signed
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
installare la chiave privata e il certificato
cp server.crt /etc/httpd/conf/ssl.crt
cp server.key /etc/httpd/conf/ssl.key

Configurare ssl in Apache

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key

Vediamo il primo messaggio

Arrivati a questo punto con due righe di PHP possiamo vedere il primo messaggio che il telefono invia al server, che da adesso in poi chiameremo ACS, che si occuperà di comandare o meno il download della relase software.

Possiamo notare anche un'altra cosa. Il telefono si collega a noi chiedendo di essere autenticato tramite il metodo basic del protocollo http. Quindi ci invierà utente e password in chiaro che potremmo leggere rispettivamente nelle variabili $_SERVER['PHP_AUTH_USER'] e $_SERVER['PHP_AUTH_PW']. Nel mio caso sono 01UrmetTlc-MP-315-Test l'utente e U-a-tr069L19May03-049pdu la password. Non c'è bisogno di configurare il nostro web server per autenticare l'accesso del telefono che si presenti con quelle credenziali, basta abilitarlo a tutti, indipendentemente se chi si connette si autentica o meno.

Nella $HTTP_RAW_POST_DATA troviamo il messaggio XML che il telefono invia all'ACS. Posto il messaggio quì sotto.

<?xml version="1.0" encoding="UTF-8"?>
<soap-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
          xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
    <soap-ENV:Header>
        <cwmp:ID SOAP-ENV:mustUnderstand="1">111111</cwmp:ID>
    </soap-ENV:Header>
    <soap-ENV:Body>
        <cwmp:Inform>
            <deviceId>
                <manufacturer>Urmet</manufacturer>
                <oui>00D01A</oui>
                <productClass>MediaPhone_315</productClass>
                <serialNumber>0001188900010900000aa</serialNumber>
            </deviceId>
            <event SOAP-ENC:arrayType="cwmp:EventStruct[1]">
                <eventStruct>
                    <eventCode>1BOOT</eventCode>
                    <commandKey></commandKey>
                </eventStruct>
            </event>
            <maxEnvelopes>1</maxEnvelopes>
            <currentTime>2000-01-01T03:12:01Z</currentTime>
            <retryCount>0</retryCount>
            <parameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[11]">
                <parameterValueStruct>
                    <name>Device.DeviceInfo.SpecVersion</name>
                    <value>1.0</value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.DeviceInfo.HardwareVersion</name>
                    <value>2.0.0</value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.DeviceInfo.SoftwareVersion</name>
                    <value>3.10.10</value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.DeviceInfo.ProvisioningCode</name>
                    <value></value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.ManagementServer.ConnectionRequestURL</name>
                    <value>http://192.168.1.2:8082/acscall/</value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.ManagementServer.ParameterKey</name>
                    <value></value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.LAN.IPAddress</name>
                    <value>192.168.1.2</value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.GatewayInfo.ManufacturerOUI</name>
                    <value></value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.GatewayInfo.ProductClass</name>
                    <value></value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.GatewayInfo.SerialNumber</name>
                    <value></value>
                </parameterValueStruct>
                <parameterValueStruct>
                    <name>Device.ManagementServer.UDPConnectionRequestAddress</name>
                    <value></value>
                </parameterValueStruct>
            </parameterList>
        </cwmp:Inform>
    </soap-ENV:Body>
</soap-ENV:Envelope>

7 Responses to Hacking dei videotelefoni (3)

  1. giogio says:

    Sai che comando Unix dare per copiare il firmare completo del Urmet V 315 in formato tgz su una SD/MMC

    Grazie

  2. Piuma says:

    La cosa piu` semplice da fare dovrebbe essere questa: Ti colleghi al telefono via telnet (se hai seguito le mie spiegazioni dovresti esserci gia` riuscito senza troppi problemi), avvii un server ftp, dal tuo Unix ti collegli al telefono in ftp, scarichi tutto in locale, ed il gioco e` fatto, fai il tgz e lo copi sulla SD/MMC.

    Non ti scrivo nel dettaglio i comandi da eseguire perche' non ho piu` quel telefono quindi non ho la possibilita` di provarli, ma credo dovresti riuscirci. Il telefono ha un set ristretto di comandi shell, credo usi BusyBox, in quel caso il server ftp si chiama ftpd.

    Una volta che hai fatto puoi postare qui` in dettaglio i passi da eseguire 😉

  3. giogio says:

    Grazie per la tua celere risposta.
    Il mio obiettivo è salvare il firmware del V 315 alias Maxi sirio By Alice e ripristinare il firmware su un videotelefono LG Nortel (LVP-1850) via seriale.
    Ti preciso che non sono un grande esperto come te.
    Vedendo su vari forum sono riuscito a fare il backup e il ripristino del firmware del videotelefono con questi comandi:
    backup:

    mount -t vfat /dev/mmcda1 /mnt
    tar cvzf /mnt/lvp1900_usr.tgz --exclude='*.LO$' usr
    umount /mnt

    ripristino:

    rfs_tools
    mknod /dev/mmcda b 241 0
    mknod /dev/mmcda1 b 241 1
    mount -t vfat /dev/mmcda1 /mnt
    cd /mnt
    busybox tar xvzf lvp1900_usr.tgz -C /

    Per il V315 non va bene! penso che sia per un problema di accesso su telnet bisogna avere una password di amministratore e fare il login e non conosco id utente e pw.
    Cerco di fare delle prove.
    Ma se mi sai dare maggiori dettagli mi sentiro più sicuro.
    grazie a presto.
    Ps come sistema operativo del mio computer uso windows xp e non linux

  4. 0815-user says:

    Ciao,
    Ho bisogno del firmware più recente del MP 315i Il mio telefono è in un "loop" e vuole fare una produzione di software Weider. Tuttavia, il telefono smette di rispondere. Purtroppo, la MP315 non è più rispondente alle LAN o Telnet. Chiedere aiuto o sostegno.

    Ci dispiace per la mia lingua

  5. GIOGIO says:

    Ti vorrei aiutare ma ancora non sono riuscito a fare il backup del firmware del MP 315. se voii ti posso dare il firmware del videotelefono LG Nortel (LVP-1850.
    ciao pg

    • Davide says:

      Ciao, sto facendo pure io prove sul suddetto telefono (anche se dal tuo ultimo posto sono passati ben 3 anni..) ad ogni modo ti chiedo comunque se hai possibilità di passarmi il famoso firmware...

  6. marco says:

    Interesserebbe a me il firmware del LVP-1850 hai modo di passarmelo in qualche modo?

Leave a Reply

Your email address will not be published. Required fields are marked *