Inhoud:
Etappe 0: De kabel werkt nauwelijks meer
Etappe 1: Installeer de hardware
Etappe 2: De software kant bij Linux (1) - het modem geeft de geest
Etappe 3: De software kant bij de iMac
Etappe 4: Een beetje spelen
Etappe 5: De software kant bij Linux (2)
Snelheid
Veiligheid
Postscript: Een ISA kaart

Etappe 0: De kabel werkt nauwelijks meer

De UPC kabel service gaat zo snel bergafwaarts dat er nauwelijks meer mee te werken valt. ADSL / Mxstream aangevraagd en twee weken later het pakket ontvangen.

Etappe 1: Installeer de hardware

De KPN heeft zeer veel informatie bijgesloten, allemaal van het wollige, waardeloze soort. Eigenlijk zegt al die informatie alleen: "de telefoonleiding die het huis binnenkomt mag geen aftakkingen hebben voor het punt waar de splitter gemonteerd wordt; monteer de splitter bij het eerste telefoonstopcontact, of als dat er niet is knip de kabel door voor het eerste contact". Helaas woon ik in een oud huis, en in de meterkast tref ik een wirwar van draden aan. Kabel doorgeknipt, splitter gemonteerd, in de Primafoonwinkel een verlengsnoer gekocht en van meterkast naar computerkamer gelegd, modem verbonden met computer en verlengsnoer. Klaar.

Twee opmerkingen:

1A. Het pakket bevat een tang om RJ11 stekkertjes te verbinden met een telefoonsnoer. Helaas werkt die tang alleen met een plat snoer, en het snoer in mijn meterkast is rond. Het lijkt erop dat de isolatie van de aders iets te dik is, en deze aders daarom niet in het stekkertje passen. Twee pogingen een stekkertje te bevestigen mislukken, en dit kost twee stekkertjes. Maar de aders ontdaan van isolatie passen wel, en de laatste twee stekkertjes worden succesvol geinstalleerd. (Controle: na monteren van de splitter doet de telefoon het weer.)

1B. In de Primafoonwinkel vraag ik om snoer van splitter naar modem, en krijg een plat snoer (met RJ11 stekkertjes aan de uiteinden). Er was ook ISDN snoer met RJ45 stekkers, kennelijk niet van toepassing. Later, nadat dit snoer allang is gelegd, zegt iemand van een helpdesk: "kabel tussen splitter en modem moet rond zijn, minstens CAT3", en www.mxstream.nl/support zegt dat alleen een CAT5 kabel gebruikt kan worden. Het lijkt erop dat de Primafoonwinkel een verkeerd snoer geleverd heeft (en dat de KPN verzuimd heeft de aan dit snoer te stellen eisen in de meegeleverde documentatie te vermelden). Overigens werkt alles goed.

Etappe 2: De software kant bij Linux (1) - het modem geeft de geest

De KPN levert instructies voor Windows en Mac maar niet voor Linux. Jammer, want ik gebruik Linux. (Zou Linux in Nederland ondertussen niet meer gebruikers hebben dan MacOS?) Gelukkig heeft Xs4all een configuratie pagina met goede informatie.

2A. pppd - was al geinstalleerd.

2B. pptp - installeer ik.

(pptp-linux-1.0.3.tar.gz opgehaald, uitgepakt, vertaald; pptp gecopieerd naar /usr/sbin.)

2C. Met ifconfig het modem via ethernet benaderbaar gemaakt. Het interface is bij mij eth1, bij anderen zal dit vaak eth0 zijn.

ifconfig eth1 down
ifconfig eth1 10.0.0.150 netmask 255.255.255.0 broadcast 10.0.0.255
ifconfig eth1 up
(De 10.0.0.150 moet vooraan staan, niet achteraan zoals de Xs4all instructies aangeven. Onder Linux 2.0 maakt dit niets uit, onder Linux 2.2 en 2.4 werkt het alleen als het adres eerst gegeven wordt.)

2D. Nu de instellingen van het modem veranderen zoals aangegeven in de KPN documentatie. Het blijkt dat het modem een ingebouwde webserver heeft. Grappig. Instellingen veranderd. Ik kopieer alle web paginas vanaf het modem naar mijn harde schijf (wget -r http:10.0.0.138 -- DOE DIT NIET!). Halverwege het kopieren blijft het modem hangen, reageert niet meer op ping, lampjes zijn niet langer groen. Wat nu weer? Modem uitgezet en aangezet, maar dat helpt niet, het modem komt niet door de POST (Power On Self-Test), en het Power/Alarm lampje blijft oranje branden. De bijgeleverde documentatie zegt niets over de mogelijkheid van een oranje brandend Power lampje. Achterop het modem zit een knop voor "reset to defaults" maar die helpt niet. De KPN helpdesk zegt me het modem terug te sturen.

Ondertussen op het net gezocht naar meer informatie. Op security.sdsc.edu/self-help/alcatel wordt verteld over fouten van dit Alcatel SpeedTouch Home ethernet ADSL modem. Meer in het bijzonder schrijft recover-speedtouch:

If the Power light turns orange, and stays that way, even after a forced restore to defaults, the flash file system may have become corrupted and the device will no longer boot.

Onderzoek van de al door wget gekopieerde paginas suggereert dat de crash optrad na het opvragen van de "Upgrade" pagina. Misschien verwachtte het modem een firmware upgrade? Slordig. Van een apparaat met de mogelijkheid de firmware te vervangen zou je verwachten dat het nieuwe firmware controleert: de eerste 16 bytes een afgesproken code, de laatste 16 bytes een checksum, een time-out tijdens het laden, en pas wegschrijven naar flash als alles in orde is.

Drie dagen later een nieuw modem ontvangen.

Etappe 3: De software kant bij de iMac

Eerst maar eens Mxstream op de iMac van mijn vrouw geinstalleerd. Dat ging tamelijk probleemloos. De handleiding (sectie 10.1) praat over een bestand TUNNELBU.SEA maar dat bestaat niet. Installeer "Install TunnelBuilder Intl 509a". Onervaren als ik ben met de iMac kon ik eerst het Tunnelbuilder icoon in de taakbalk niet vinden, maar het blijkt dat de pijltjes in die taakbalk horizontaal scrollen en het gezochte icoon zichtbaar maken. (Overigens kunnen de benodigde menus ook via het Apple menu en Regelpanelen en Appletalk of TCP/IP benaderd worden, terwijl LAN TunnelBuilder Settings onder MacintoshHD in NTS TunnelBuilder blijkt te leven.)

Het is een beetje onhandig dat eerst (Afb. 62) wordt vertoond hoe TCP/IP (PPTP) moet staan, en daarna (Afb. 65) het weer veranderd wordt om met het modem te praten. Het is makkelijker om voor het modem een nieuw stel instellingen te maken: TCP/IP (ethernet naar modem). Tenslotte wordt helemaal geen PPTP gebruikt om met het modem te praten.

Bij "service provider username" blijkt niet "naam" maar "naam@xs4all-basic-adsl" te moeten staan, natuurlijk alleen als de service provider Xs4all is.

Dit werkt.

Etappe 4: Een beetje spelen

Onder Linux eerst nog wat spelen. Ik durf niet meer in de buurt van de Upgrade pagina te komen met een browser. Probeer een telnet verbinding. Zonder loginnaam wordt ook niet om een password gevraagd. Beschikbare commando's:
=>help
Following command groups are available :

config          system          software        ip              phonebook
pptp            bridge          td              dns             dhcp
=>help config
Following commands are available :

save            erase           load            flush           reset
help            exit
=>help system
Following commands are available :

setpassword     clearpassword   reboot          save            load
help            exit
=>help software
Following commands are available :

version         setpassive      deletepassive   cleanup         switch
help            exit
=>help ip
Following commands are available :

apadd           apdelete        aplist          ping            sendto
iflist          ifconfig        rtadd           rtdelete        rtlist
arpadd          arpdelete       arplist         config          save
flush           load            help            exit
=>help phonebook
Following commands are available :

list            add             delete          save            flush
load            autolist        help            exit
=>help pptp
Following commands are available :

iflist          ifconfig        ifadd           ifdelete        save
flush           load            help            exit
=>help bridge
Following commands are available :

portadd         portlist        portdelete      portconfig      macadd
maclist         macdelete       config          save            flush
load            help            exit
=>help td
Following commands are available :

call            help            exit
=>help dns
Following commands are available :

start           stop            status          list            add
rem             delete          clear           stats           clrstats
fwdtable        toutfwd         nslookup        domain          save
flush           load            fwdadd          fwddelete       fwdlist
tron            troff           help            exit            
=>help dhcp
Following commands are available :

start           stop            config          policy          spoof
status          list            add             delete          stats
clrstats        tron            troff           client          save
flush           load            help            exit
=>ping 10.0.0.150
Unknown command.
=>ip
[ip]=>ping 10.0.0.150
Invalid option => 10.0.0.150
[ip]=>help
Following commands are available :

apadd           apdelete        aplist          ping            sendto
iflist          ifconfig        rtadd           rtdelete        rtlist
arpadd          arpdelete       arplist         config          save
flush           load            help            exit
[ip]=>help ping
ping : Sends ICMP ECHO_REQUEST packets 

   addr= 
   [count=] 
   [size=] 
   [interval=] 
   [listen={off|on}] 
[ip]=>ping addr=10.0.0.150 count=3
9 bytes from 10.0.0.150: icmp_seq=0
9 bytes from 10.0.0.150: icmp_seq=1
9 bytes from 10.0.0.150: icmp_seq=2
[ip]=>exit
=>exit
=>quit
Unknown command.
=>
telnet> quit 
Connection closed.
Ja, het bestand Home.pdf zegt ook dat de verbinding verbroken wordt hetzij door timeout, hetzij door het telnet programma te sluiten. Hier typte ik Ctrl-] gevolgd door quit.

OK, dus telnet werkt.

Wat voor poorten zijn er nog meer open?

# nmap -sS -sU -O -v 10.0.0.138

Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Host  (10.0.0.138) appears to be up ... good.
Initiating SYN half-open stealth scan against  (10.0.0.138)
Adding TCP port 21 (state open).
Adding TCP port 23 (state open).
Adding TCP port 1723 (state open).
Adding TCP port 80 (state open).
The SYN scan took 1 second to scan 1541 ports.
Initiating FIN,NULL, UDP, or Xmas stealth scan against  (10.0.0.138)
The UDP or stealth FIN/NULL/XMAS scan took 4 seconds to scan 1541 ports.
For OSScan assuming that port 21 is open and port 1 is closed and neither are firewalled
Insufficient responses for TCP sequencing (0), OS detection will be MUCH less reliable
Interesting ports on  (10.0.0.138):
(The 3073 ports scanned but not shown below are in state: closed)
Port       State       Service
7/udp      open        echo                    
9/udp      open        discard                 
19/udp     open        chargen                 
21/tcp     open        ftp                     
23/tcp     open        telnet                  
53/udp     open        domain                  
69/udp     open        tftp                    
80/tcp     open        http                    
1723/tcp   open        pptp                    

Remote operating system guess: Alcatel 1000 ADSL (modem)

Nmap run completed -- 1 IP address (1 host up) scanned in 32 seconds
#
Hier schrok ik weer: de groene lampjes waren uitgegaan, en het modem knipperde rood, toen oranje, tenslotte weer groen. Het lijkt op een reboot sequence. Misschien crasht het modem onder deze scan, en herstart het automatisch.

Met ftp ingelogd en filesysteem bekeken.

ftp> ls
drwxrwxrwx   1 0        0             176 Jun 29  1971 active
drwxrwxrwx   1 0        0              64 Jun 29  1971 dl
-rwxrwxrwx   1 0        0              16 Jun 29  1971 startup.cmd
-rwxrwxrwx   1 0        0           21215 Jun 29  1971 GV8AAA1.000
-rwxrwxrwx   1 0        0             276 Jun 29  1971 mount.cmd
ftp> ls dl
-rwxrwxrwx   1 0        0          997001 Jun 29  1971 GV8BAA3.253
-rwxrwxrwx   1 0        0              27 Jun 29  1971 start.cmd
ftp> ls active
-rwxrwxrwx   1 0        0          997001 Jun 29  1971 GV8BAA3.253
-rwxrwxrwx   1 0        0              27 Jun 29  1971 start.cmd
-rwxrwxrwx   1 0        0               0 Jun 29  1971 system.ini
-rwxrwxrwx   1 0        0             323 Jun 29  1971 ip.ini
-rwxrwxrwx   1 0        0             308 Jun 29  1971 phone.ini
-rwxrwxrwx   1 0        0              28 Jun 29  1971 bridge.ini
-rwxrwxrwx   1 0        0              92 Jun 29  1971 pptp.ini
-rwxrwxrwx   1 0        0              58 Jun 29  1971 dnsd.ini
-rwxrwxrwx   1 0        0             217 Jun 29  1971 dhcp.ini
Even kijken:
% cat startup.cmd
GV8AAA1.000 -t
% cat active/start.cmd
/active/GV8BAA3.253 dbg_no
% file GV8AAA1.000
GV8AAA1.000: MIPSEB COFF executable not stripped - version 0.0
% file GV8BAA3.253
GV8BAA3.253: data
Het bestand GV8BAA3.253 bevat onder andere een tar archief met daarin alle webpaginas. De beide files in dl zijn identiek aan de gelijkgenaamde in active. Kennelijk is dl het download directory, en het switch commando verwisselt active en dl. Het geheel doet wat Unix-achtig aan. Mount wordt gebruikt om de devices /dev/fda1 en /dev/fda2 (flash disk?) op de directories /active en /dl te mounten. Een foutmelding luidt: exit to shell... en er is een commando fscheck. Het systeem wordt OSBA genoemd. De machine is misschien een i960. Mijn objdump werkt alleen op i386. Een nieuwe binutils opgehaald en met ./configure --enable-targets=all geconfigureerd. Segmentation fault Hmm. Hoop hier later verder naar te kijken.

[Later: Ja, objdump kan goed gebruikt worden om de code van GV8AAA1.000 te disassembleren. Hij verwachtte alleen een andere endianness - een klein filtertje repareert dat. Op het net is ook een uitpakker beschikbaar die GV8BAA3.253 omzet in een drietal bestanden GV8BAA3.253.head, GV8BAA3.253.coff, GV8BAA3.253.tar. Dat tar-bestand was al ongecomprimeerd zichtbaar in GV8BAA3.253, maar dit levert de objectcode van de firmware op (ruim 2 MB).

% file GV8BAA3.253.coff
GV8BAA3.253.coff: MIPSEL COFF executable not stripped - version 0.0
Maar objdump herkent het formaat nog niet.

Het operating system is een versie van pSOS van WindRiver, een Unix-achtig systeem voor embedded toepassingen.]

Er blijkt een backdoor commando EXPERT te zijn, zoals Tsutomu Shimomura en Thomas Perrine ontdekten (en ook eenvoudig zichtbaar is via

% strings GV8BAA3.253.coff
...
Invalid Password...  No switch to expert Mode.
EXPERT
...
). Het password volgt via challenge-response waarbij de challenge de vorm 'model (MAC address)' heeft, en het juiste antwoord is op het net te vinden. Het algoritme blijkt heel eenvoudig, een leuk beginnerssommetje voor cryptanalyse. Een reactie van Alcatel. (Grappig detail: het aanvankelijke persbericht van Alcatel was een Word document inclusief revision history waar meer interne zorgen uit bleken dan uit de uiteindelijke versie.)

Sessie:

=>software version
Active : GV8BAA3.253            Passive : GV8BAA3.253
=>EXPERT
'SpeedTouch (00-90-D0-31-61-88)'
Password : 


Switch to expert mode.

Return to Normal mode by typing <NORMAL>

>help

Built-in shell commands :
cd           cleandisk    copy         df           dev          
dir          download     dump         echo         fdisk        
format       fscheck      link         load         mkdir        
move         mount        protect      pwd          remove       
rmdir        sync         unmount      upload       version      
short        

Following topics are available :

dbg         err         xapi        guard       rip         
ni          etha        atm         atm         eth         
llc         atmf        iwu         sock        ipoa        
ipoa        tcp         pptp        tftp        config      
system      softwa      phoneb      bridge      dns         
dhcp        dhcpc       sachem      eoc         aoc         
hs          mlit        msit        golden      tdsl        

>df
Filesystem          512-blocks  Used Available Capacity Mounted on
/dev/fda0                251      78      173    31%    /
/dev/fda1               2292    2019      273    88%    /active
/dev/fda2               2292    2004      288    87%    /dl
>pwd
/
>dir
  Inode dev uid gid  link   size    mode
      1 256   0   0     3    112    40777 [.]
      1 256   0   0     3    112    40777 [..]
      1 257   0   0     1    176    40777 [active]
      1 258   0   0     1     64    40777 [dl]
     15 256   0   0     1     16   100777 startup.cmd
      9 256   0   0     1  21215   100777 GV8AAA1.000
     17 256   0   0     1    276   100777 mount.cmd
BLOCK:  78 allocated, 173 free,   0 recoverable, 251 total
INODE:   7 allocated,  13 free,   0 recoverable,  20 total
>fdisk
Using /dev/fda0 as default device

Command (m for help) : 
l - List partitions
n - Add new partition
d - Delete partition
w - Write partition table and exit
q - Quit
m - Print help
Command (m for help) : 
part.     noSectors  startSector  endSector  BlockSize  noInodes
--------------------------------------------------------------
/dev/fda0     3          0            2         512        20
/dev/fda1    19          3           21         512       100
/dev/fda2    19         22           40         512       100
Command (m for help) : 
>help softwa
version : Displays active and passive software versions 


setpassive : Installs a file as passive software version 

   file= 

deletepassive : Deletes passive software 


cleanup : Deletes all unused files on passive software partition 


switch : Switches active & passive software versions & reboots 


> NORMAL

Ingelogd als EXPERT kun je een Speed Touch Home omzetten in een Speed Touch Pro, zoals Stefano Chiccarelli ontdekte. (Italiaanse en Engelse instructies.) De reactie van Alcatel suggereert dat dit vermoedelijk echt werkt (maar natuurlijk geheel voor eigen risico is). Zie ook Planet Multimedia en bruring.

Foute commandos veroorzaken vaak een reboot. Bijvoorbeeld:

>rip
rip>drv_read 0 20 b
the data in hex is :  2d2d24d8860445333143363834304342434135302020202020203130323037523733203720202020
rip>drv_read 0 20 c
Connection closed by foreign host.

Etappe 5: De software kant bij Linux (2)

Zoals gezegd, ppp was al geinstalleerd, en pptp (om precies te zijn, pptp-linux-1.0.3) had ik geinstalleerd. Ook ifconfig en route geven de goede uitvoer zodat ik met het modem kan praten. (Zie boven: http, telnet, ftp, ping werken alle.)

Nu nog twee configuratiefiles. In /etc/ppp/pap-secrets username en password:

# Authenticatie via PAP
# login - server - pass - IP
NAAM@xs4all-basic-adsl * PASSWORD *   
In /etc/ppp/options.adsl:
idle 0
debug
noauth
user NAAM@xs4all-basic-adsl
defaultroute
usepeerdns
nodetach
lcp-echo-interval 10
lcp-echo-failure 3
met voor NAAM en PASSWORD loginnaam en password by Xs4all.

Het commando /usr/sbin/pptp 10.0.0.138 file /etc/ppp/options.adsl levert nu als uitvoer: Couldn't set tty to PPP discipline: Invalid argument. Hij probeert vast een modem over een seriŽle lijn te benaderen. Niet ter zake doende dingen, zoals een oud /etc/ppp/options file opgeruimd, en alle PPP kernel config options aangezet. Ditzelfde pptp commando levert nu als uitvoer: Terminated, en /var/log/messages zegt:

pptp[31940]: log[pptp_dispatch_ctrl_packet:pptp_ctrl.c:548]: Client connection established.
pptp[31940]: log[pptp_dispatch_ctrl_packet:pptp_ctrl.c:643]: Error opening call. [callid 0]
pptp[31940]: log[call_callback:pptp_callmgr.c:88]: Closing connection
pptp[31940]: log[pptp_conn_close:pptp_ctrl.c:285]: Closing PPTP connection
Hmm. Is het modem na het spelen nog steeds goed geconfigureerd? Nee, alle instellingen zijn weg, en zelfs de menus om ze te wijzigen zijn weg. Ach. Ga met de browser naar System Setup, click Defaults, OK, Save All. Volg nu weer de door KPN beschreven procedure voor de Macintosh. Probeer bovenstaand commando opnieuw. Alles werkt. Verwijder de debug regel. Alles werkt nog steeds.

Snelheid

Uploaden van een 1361445-byte file gaat met ongeveer 7 kB/s. Downloaden van hetzelfde file met ongeveer 50 kB/s. Zie ook de Xs4all pagina over het testen van de snelheid. De test op www.mordax.nl meet uploadsnelheid 6 kB/s en downloadsnelheid 52 kB/s. Ter vergelijking: via UPC meet mordax nu 14-20 kB/s (up) en 120-173 kB/s (down). Zelf vind ik ongeveer dezelfde waarden. Conclusie: als de kabel het doet kan hij drie keer zo snel zijn als een ADSL verbinding. Helaas gebeurt het ook dat de snelheid van de kabel tot vrijwel nul terugloopt, of dat de kabel het gewoon een of twee uur lang helemaal niet meer doet. Afwachten hoe dat bij ADSL is.

Veiligheid

Merk op dat deze verbinding met de buitenwereld een ppp verbinding is die via eth gaat. Een aanval van buiten zal dus waarschijnlijk via ppp komen - tot eth hebben als het goed is alleen mijn machine, het modem en de KPN toegang. Een recent SuSE systeem heeft in /etc/rc.config.d/security.rc.config een variabele REJECT_ALL_INCOMING_CONNECTIONS (voor de "personal firewall"). Met deze gezet op "eth0 ppp0" (als dit de betrokken interfaces zijn) wordt alle binnenkomend UDP verkeer anders dan antwoorden van nameservers en alle TCP verbindingen die elders geinitieerd worden geweigerd. Een test op open poorten is bijvoorbeeld te vinden op Steve Gibson's site (en op de nessus site, en ook hier en hier en hier).

Zoals boven al bleek is het makkelijk om in te breken op het modem, en bijvoorbeeld de firmware te vervangen door een programma naar keuze. Dat betekent dat dit modem beschermd moet worden. Om een echo aanval te vermijden moet de echo service in /etc/inetd.conf uitgeschakeld zijn. Als het locale net niet vertrouwd kan worden dan is eenvoudige masquerading met ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0 niet goed genoeg: iedereen kan 10.0.0.138 benaderen. Een regel met iets als ipchains -I forward -j REJECT -d 10.0.0.0/24 is een goed idee.

Het CERT advisory.

Uit Italie wordt gemeld dat de modem firmware vervangen wordt zonder medeweten van de eigenaar. (Onbevestigd.)

Postscript: Een ISA kaart

Na de geslaagde tests de ADSL verbinding verhuisd naar een andere Linux machine. Een oude 3C509 ISA ethernetkaart gemonteerd naast de twee andere ethernetkaarten die er al waren. Hmm. Het commando ifconfig eth0 up faalt met SIOCSIFFLAGS: Device or resource busy. Een IRQ conflict. In het BIOS IRQ 10 gereserveerd voor ISA gebruik. Nu werkt alles. De snelheid is dezelfde gebleven - dit oude kaartje is goed genoeg.