Def Con 22: Millionen DSL-Router durch TR-069-Fernwartung kompromittierbar

Ein IT-Sicherheitsexperte hat schwerwiegende Lücken in den Servern gefunden, über die Internetprovider die DSL-Router ihrer Kunden fernwarten. Angreifer könnten so massenhaft Router kapern und etwa manipulierte Firmware in die Geräte einspielen.
...
Providerseitig setzen unter anderem Platzhirsch Deutsche Telekom sowie Unitymedia oder Kabel Deutschland auf die Technik. Welche Server-Software diese Anbieter auf ihren ACS-Systemen einsetzen...
Quelle siehe Link #1.

Bei der Fritzbox abschalten unter http://fritz.box/internet/providerservices.lua dort dann den Haken "Automatische Einrichtung durch den Dienstanbieter zulassen" entfernen.

Bei 1&1 Kunden ist die Option Standard aktiv, und kann deaktiviert werden nach der ersten Einrichtung.
 
wie es geht steht hier

Bei der Fritzbox abschalten unter http://fritz.box/internet/providerservices.lua
Bei 1&1 Kunden ist die Option Standard aktiv...

7. Februar 2014 23:54
TR-069 manuell deaktivieren! (Editiert vom Verfasser am 08.02.14 um 00:23)
realmic (1 Beitrag seit 07.02.14)

Hallo,

man kann auf der FB TR-069 manuell deaktivieren, auch wenn es per
Web-GUI nicht geht! BITTE EIN BACKUP VORHER MACHEN!!!

Port-Scan via nmap
# vor der cfg-Änderung
PORT STATE SERVICE
5060/tcp open sip
8089/tcp open unknown

# nach der cfg-Änderung:
PORT STATE SERVICE
5060/tcp open sip

Jetzt die cfg-Änderung die bei mir auf einer FB 7270/7390/7490 trotz
1&1 Anbindung funktioniert! ACHTUNG DIE ZEILEN SIND JE NACH MODELL
ANDERS!!!

- TR-069 deaktivieren! Ansonsten ist der TCP Port 8089 offen!
Internet > Zugansdaten > Anbeiter-Dienste
[] Automatische Einrichtung durch den Dienstanbieter zulassen
[] Automatische Updates zulassen

# um TR-069 in der FRITZ!Box vollstaendig zu blockieren (entfernen
geht wie gesagt nur per eigenem Freetz-Image), bitte die aktuelle
Konfiguration abspeichern (kein Kennwort setzen) und per Editor
bearbeiten:
#hinzufuegen Zeile 8 oder 9:
NoChecks=yes
**** CFGFILE:ar7.cfg

#hinzufuegen Zeile 267 oder 288 oder 289 "lowinput" / Wichtig ist das
Leerzeichen nach dem Komma , <KOMMA! NICHT VERGESSEN!!!!
#und Anstatt TAB sollten Leerzeichen verwendet werden!
"deny tcp any any eq 8089";

lowinput {
policy = "permit";
accesslist =
"deny ip any 242.0.0.0 255.0.0.0",
"deny ip any host 255.255.255.255",
"deny tcp any any eq 8089";
}

#hinzufuegen Zeile 281 oder 301 oder 302 "highinput" / Wichtig ist
das Leerzeichen nach dem Komma , <KOMMA! NICHT VERGESSEN!!!!
#und Anstatt TAB sollten Leerzeichen verwendet werden!
"deny tcp any any eq 8089";

highoutput {
policy = "permit";
accesslist =
"reject ip any 242.0.0.0 255.0.0.0",
"deny ip any host 255.255.255.255",
"reject ip any 169.254.0.0 255.255.0.0",
"deny tcp any any eq 8089";
}

#speichern und wieder einspielen! Danach sollte der TCP Port 8089 zu
sein!...

Viele Grüße
Mic



-------
Quelle:
www.heise.de/netze/news/foren/S-TR-069-manuell-deaktivieren/forum-274464/msg-24755280/read/
 
Bei der 7490 ist in der 6.20er FW der Port wirklich geschlossen, wenn der tr-069 abgeschaltet ist...
 
Hallo,
Meine (ui) gebrandete 7390 mit FW 84.06.10-28559 zeigt keinen offenen Port (8089 oder sonstige TR-069-Einträge). Wurde über WebIF deaktiviert.
Was allerdings im Hintergrund läuft und nicht angezeigt wird ... :noidea: ....
 
Moin

Ich hab eine debrandete 1&1 Box (Signatur) mit im Webinterface abgeschalteter Anbieter Fernwartungsoption.
Ein Scan auf meine DynDNS ergibt aber weiterhin....
Code:
pscan -p8089 -P8089 xxxxxxxxxx.spdns.org
Scanning xxxxxxxxxx.spdns.org ports 8089 to 8089
 Port   Proto   State   Service
 8089   tcp     open    unknown
0 closed, 1 open, 0 timed out (or blocked) ports
...also muss ich auch in der ar7.cfg den Port sperren.

Das bedeutet zugleich, dass der Dienst weiterläuft, zwar nur noch lokal, aber...
Code:
tcp        0      0 :::8089                 :::*                    LISTEN      1106/ctlmgr
...erreichbar durch eine CROSS SITE ATTACKE, oder?
 
Zuletzt bearbeitet:
Schau mal in die changelogs, ist vor ein paar Labors geändert worden.

Guckst du Labor 28194:
•TR-069-Connection Request Port schließen, wenn die "Automatische Einrichtung durch den Dienstanbieter" vom Benutzer abgeschaltet wurde
 
Zuletzt bearbeitet von einem Moderator:
Das mit dem Port schliessen sperren ist kein Problem.
Was ist mit dem Dienst?
Gib mal auf der Box ein: netstat -tlep

Ich meine: Mit Bordmitteln bist du nur im Gastnetz sicher, vor Cross Site Attacken auf lokale Geräte/Ports
 
Zuletzt bearbeitet:
#hinzufuegen Zeile 8 oder 9:
NoChecks=yes
**** CFGFILE:ar7.cfg
Das funktioniert nur noch mit Firmware < 06.10.

Ab dann wird "NoChecks=yes" nicht mehr unterstützt und man muß die Änderung entweder auf der Telnet-Konsole vornehmen (und die Eigenarten des TFFS sowie das Management der Einstellungsdateien durch den ctlmgr dabei berücksichtigen) oder die in der export-Datei in der letzten Zeile gespeicherte CRC32-Prüfsumme nach der Änderung entsprechend korrigieren.

Aber nur aktuelle Versionen des FBEditor können die Prüfsumme korrigieren und somit gültige Dateien für den Import erstellen, damit wird dieses Verfahren dann massentauglich. Frühere Versionen berechnen entweder keine oder eine falsche Prüfsumme, hier muß man also auf die richtige Version achten. Informationen dazu gibt es auch irgendwo hier im IPPF.

Spätestens dann, wenn man nach dem Import irgendetwas an den Provider-Einstellungen wieder über das GUI ändert (und sei es nur das versehentliche Verlassen der "Zugangsdaten"-Seite mit "Übernehmen"), werden die Einstellungen ohnehin wieder überschrieben. Die effektivste Abhilfe ist und bleibt also die Konfiguration ohne ACS-Server, was über "anderer Anbieter" auch problemlos möglich sein sollte. Bei Provider-eigenen Boxen sieht das sicherlich etwas anders aus ...

In neuer Firmware ist auch das Forwarding für den TR-069-Port, der seitens des ACS-Servers den Verbindungswunsch ermöglicht (TCP 8089), nicht mehr statisch in der ar7.cfg hinterlegt, selbst wenn der Eintrag dort vorhanden oder nicht vorhanden sein sollte. Es wird dynamisch eingerichtet, in Abhängigkeit vom aktuellen TR-069-Status ... steht auch irgendwo in den Release-Notes zu den Laborversionen und der 06.20.

Dieser offene Port ist auch nur ein kleiner Teil des Problems. Er dient nur dazu, daß der ACS-Server der Box sagen kann: "Hey Du, ruf mich mal unter der ACS-Nummer zurück.". Anschließend baut die Box dann wieder selbst die Verbindung zum ACS auf, genauso wie sie es beim Fehlen von gültigen Zugangsdaten beim Start und in regelmäßigen Abständen (PeriodicInformInterval) auch tut. Insofern sollte der offene Port auch nur von der Einstellung "ACSInitiationEnable = yes;" abhängig sein (das scheint aber auch nicht immer der Fall zu sein) und ein geschlossener Port, der sich bei einem Portscan also nicht zeigt, ist noch kein Zeichen für eine abgeschaltete TR-069-Funktion. Lediglich der Zeitpunkt der Kontaktaufnahme der Box mit dem ACS kann dann nicht mehr beeinflußt werden.

Da der Kommunikationsteil der TR-069-Funktionalität der Box komplett im ctlmgr enthalten ist, kann man den auch nicht gesondert "abschalten". Ob der ctlmgr auf dem Port 8089 (intern) lauscht, hängt auch vom Vorhandensein der Einstellungen zum Management-Server ab. Ohne ACS-Adresse und ohne Zugangsdaten für diesen wird der Port vom ctlmgr auch nicht bedient, egal was bei "enabled" und "litemode" eingetragen ist.

Bei vorkonfigurierten Providern wie 1&1 erfolgt die Kommunikation wenigstens noch mit TLS-Verschlüsselung, was bei einem kompromittierten ACS (Ausgangpunkt des Threads) natürlich auch nicht hilft. Spätestens wenn aber mal ein Provider von der Möglichkeit der Konfiguration eines ACS-Servers über DHCP (das ist neu in aktueller Firmware) Gebrauch macht, dürfte das als zusätzliche Sicherheit auch wegfallen, da dann das Root-Zertifikat zur Prüfung des ACS-Serverzertifikats nicht mehr in der Firmware vorliegt (wie es bei den vorkonfigurierten Providern mit TR-069 der Fall ist) und dann natürlich die Box einen MITM-Angriff nicht mehr erkennen kann. Dann reicht es also für einen neuen Angriffsvector auch aus, wenn man (Aktivierung dieser Einstellung vorausgesetzt) irgendwie das DHCP-OFFER komplett fälschen oder als MITM modifizieren kann.

Zur Wirkung bzw. zur vorgeblichen Wirkung der Einstellungen unter providerservices.lua gibt es schon genug Beiträge, wer dazu etwas nachlesen will, kann nach "litemode" und "enabled" i.V.m. TR-069 suchen.
Leider kriegt man (als Kunde) von AVM offenbar keine Informationen dazu, was sich bei "litemode=yes" (Providerzugriff per GUI abgeschaltet) im Vergleich zu "litemode=no" (Providerzugriff möglich) wirklich ändert ... auch die Entwicklerdokumentationen bei AVM geben dazu keine Auskunft.
 
Gib mal auf der Box ein: netstat -tlep

-tlep?
p geht bei mir nicht.

Code:
netstat: invalid option -- p
BusyBox v1.8.2 (2010-06-22 13:16:24 CEST) multi-call bina

Usage: netstat [-laentuwxr]

Display networking information

Options:
        -l      Display listening server sockets
        -a      Display all sockets (default: connected)
        -e      Display other/more information
        -n      Don't resolve names
        -t      Tcp sockets
        -u      Udp sockets
        -w      Raw sockets
        -x      Unix sockets
        -r      Display routing table
Code:
# netstat -tle
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:51111           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:51112           0.0.0.0:*               LISTEN
tcp        0      0 localhost:1011          0.0.0.0:*               LISTEN
tcp        0      0 localhost:8888          0.0.0.0:*               LISTEN
tcp        0      0 :::5060                 :::*                    LISTEN
tcp        0      0 :::5031                 :::*                    LISTEN
tcp        0      0 :::49000                :::*                    LISTEN
tcp        0      0 :::9100                 :::*                    LISTEN
tcp        0      0 :::9101                 :::*                    LISTEN
tcp        0      0 :::8080                 :::*                    LISTEN
tcp        0      0 :::80                   :::*                    LISTEN
tcp        0      0 :::23                   :::*                    LISTEN
#
 
BusyBox v1.8.2 (2010-06-22 13:16:24 CEST)
Die ist ja auch uralt.
Code:
BusyBox v1.19.3 (2012-08-07 18:33:02 CEST) multi-call binary.

Usage: netstat [-ral] [-tuwx] [-enWp]

Display networking information

        -r      Routing table
        -a      All sockets
        -l      Listening sockets
                Else: connected sockets
        -t      TCP sockets
        -u      UDP sockets
        -w      Raw sockets
        -x      Unix sockets
                Else: all socket types
        -e      Other/more information
        -n      Don't resolve names
        -W      Wide display
        -p      Show PID/program name for sockets

EDIT: Bitteschön....
Code:
/bin/busybox netstat -tlep
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:51111           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:51112           0.0.0.0:*               LISTEN      -
tcp        0      0 proxy1.fritz.box:22222  0.0.0.0:*               LISTEN      2268/dropbear
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      910/dsl_control
tcp        0      0 0.0.0.0:2002            0.0.0.0:*               LISTEN      1502/aha
tcp        0      0 localhost:1011          0.0.0.0:*               LISTEN      1297/telefon
tcp        0      0 localhost:8888          0.0.0.0:*               LISTEN      1297/telefon
tcp        0      0 :::38240                :::*                    LISTEN      1502/aha
tcp        0      0 :::5060                 :::*                    LISTEN      1323/voipd
tcp        0      0 :::49000                :::*                    LISTEN      1199/upnpd
tcp        0      0 :::139                  :::*                    LISTEN      1332/inetd
tcp        0      0 :::49773                :::*                    LISTEN      1194/ctlmgr
tcp        0      0 :::49200                :::*                    LISTEN      1199/upnpd
tcp        0      0 :::54321                :::*                    LISTEN      1194/ctlmgr
tcp        0      0 :::1012                 :::*                    LISTEN      1297/telefon
tcp        0      0 :::8181                 :::*                    LISTEN      2083/contfiltd
tcp        0      0 :::21                   :::*                    LISTEN      1332/inetd
tcp        0      0 :::53                   :::*                    LISTEN      1225/multid
tcp        0      0 :::8182                 :::*                    LISTEN      1194/ctlmgr
tcp        0      0 :::23                   :::*                    LISTEN      1299/telnetd
tcp        0      0 :::8089                 :::*                    LISTEN      1194/ctlmgr
tcp        0      0 :::445                  :::*                    LISTEN      1332/inetd
 
Zuletzt bearbeitet:
Wenn ich die Seite http://fritz.box/internet/providerservices.lua aufrufe, kommt bei mir eine quasi leere Seite. Kann es sein, dass die Funktion nicht bei allen Fritz!Boxen implementiert ist? (Port 8089 ist bei mir auch geschlossen)

Screenshot - 15.08.2014 , 12_11_25_ver001.jpg
 
Zuletzt bearbeitet:
Hallo,
Kann sein, dass die Seite bei der Box einen anderen Platz hat? Unter Freigaben, System oder was auch immer?
 
..., kommt bei mir eine quasi leere Seite. Kann es sein, dass die Funktion nicht bei allen Fritz!Boxen implementiert ist? (Port 8089 ist bei mir auch geschlossen)
Deine FB ist modifiziert (Freetz). Kann es evtl. sein, dass Du den remove_tr069-Patch benutzt hast?
 
Gerade geschaut... ist nicht ausgewählt.

Screenshot - 15.08.2014 , 12_35_27_ver001.jpg
 
kommt bei mir eine quasi leere Seite. Kann es sein, dass die Funktion nicht bei allen Fritz!Boxen implementiert ist?
Neuere Firmware (irgendwann ab 06.xx, wenn ich mich nicht irre):

Wenn der eingestellte Provider kein TR-069 verwendet, wird auch die providerservices.lua nicht mehr mit Inhalt angezeigt. Solange ein
Code:
# ctlmgr_ctl r tr069 settings/gui_mode
0
eine 0 ausgibt, enthält die Seite einfach keinen sichtbaren HTML-Inhalt an der Stelle, wo ansonsten die HTML-Elemente angezeigt werden. Vorhanden ist die Seite providerservices.lua aber i.d.R. schon, deshalb gibt es auch keine Fehlermeldung mit anschließendem Redirect.

Es müssen auch einige Bedingungen (s.o.) zusammenkommen, damit in "gui_mode" ein anderer Wert erscheint, ein ctlmgr_ctl w funktioniert nicht.
 
Zuletzt bearbeitet:
Ausgegeben wird in der Tat 0. Hat die Telekom TR-069 in Verwendung?
 
Laut dem Artikel bei Heise ja, ob es nur mit Speedport klappt und bei der FB nicht, kann ich dir nicht sagen.
 
In dem Artikel wird Port 7545 genannt. Die FB verwendet aber Port 8089.
Ist das nicht einheitlich?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.