LAU-G150-C optik ağ terminaline bir kabuk almak


Optik ağ terminalleri (ONTS), fiber optik sinyalleri tipik yönlendiriciler tarafından işlenebilen Ethernet sinyallerine dönüştüren cihazlardır. Ev ve iş ağları arasındaki internet hizmet sağlayıcılarının (ISS) fiber optik ağlarına bağlantı olarak, genellikle ISS’ye özgü yapılandırmalar ve şifreler içeren özel ürün yazılımı yüklenir.

Hack GPon ve Hacking RTL960X gibi siteler çok sayıda ONT modeline nasıl erişileceğini belgeliyor. Telnet veya Web Konsolu üzerinden Singtel’in ZTE ZXA10 F620G’ye nasıl erişileceğine dair bir blog yazısı bile var.

Son zamanlarda, İnternet aboneliklerini değiştirdim ve artık Link-All-All-G150-C Ont’ime ihtiyaç duymadım. Model hiçbir yerde belgelenmediğinden, bunun bazı donanım hacklemelerini uygulamak için harika bir fırsat olduğunu düşündüm.

LAU-G150-C, bir pasif optik ağ (PON) giriş bağlantı noktası, bir Ethernet çıkış bağlantı noktası ve basit bir güç düğmesine sahip Huawei HG8010H’ye son derece benziyor.

Bununla birlikte, Hack GPON’da belgelenen modellerin çoğunun aksine, LAU-G150-C’nin makul derecede sertleştiği görülmüştür. İlk olarak doğrudan Ethernet üzerinden bağlandım ve tipik sert kodlu statik IP’leri denedim 192.168.100.1 Ve 192.168.10.1 (ONTS genellikle DHCP’ye hizmet etmez), ancak açıkta olan herhangi bir bağlantı noktası bulamadı veya cihazı ping atamadı.

Bu nedenle, bir donanım arayüzü aramaya karar verdim. Kapağı çıkarmak için önemli çaba sarf etti ve gecikmiş bir şekilde, tüm bu soruna neden olan bir etiketin altında gizli bir vida olduğunu fark ettim.

Donanım Hacking Sıcak İpucu #1: Çıkartmaların altındaki gizli vidaları kontrol edin!

Bir çubuk altında gizli vida

Tüm bu zor işten sonra, sulu bir yıkımla ödüllendirildim!

En iyi görünüm

Alt Görünüm

Bileşenlerin çoğunu tanımlayabilmemde, işlemci (üst görünümün sol alt kısmındaki ısı lavabosunun altında gizli) etiketlenmemişti. Bu, hedefleyebileceğim herhangi bir hata ayıklama arayüzü olup olmadığını anlamayı zorlaştırdı.

Neyse ki, tahtaya daha yakından bakmak, bazı ilgili limanları ortaya çıkardı…

Hata Ayıklama Bağlantı Noktaları

Etiketli bağlantı noktaları GNDRXVe TX potansiyel bir UART arayüzünü önerdi, ancak SCL Ve SDA potansiyel bir I2C arayüzü belirtti.

Multimetre ile çalıştım ve yer bağlantı noktalarını doğruladım, ancak RX bağlantı noktası için okumalar görünüyordu. Daha da kötüsü, bağlantı noktalarını bir mantık analizörü ile test ettiğimde, tam anlamlı oldum! 115200 Hz gibi diğer ONT’ler için tipik baud oranları hiçbir şey açığa vuramadı.

Bir gün sonra hatamı fark ettim: Sinyalleri her seferinde bir bağlantı noktası analiz etmeye çalışıyordum. Sadece zemini ve RX bağlantı noktalarını aynı anda bağladığımda 115200 Hz’de tanınabilir veriler aldım. Büyük başarı!

Donanım Hacking Sıcak İpucu #2: Seri arabirim bağlantı noktalarını tek başına analiz etmeyin!

Cihazı açarken, önce önyükleyiciyi ortaya çıkarır:

9601D
PRELOADER Bismarck 3.5
II: LPLR:1012, PLR:9aa5a8d9, Build_date:21080422, Toolkit:rsdk-1.5.6-5281-EB-2.6.30-0.9.30.3-131105
II: Disable OCP Timeout Monitor
II: Disable LX Timeout Monitor
II: TLB initial done:
    .ro section works!
    .text and .ro sections work!
EE: REG32(0xbb000044)[3:2]:0x2 !=0
II: Enable Triple Synchronizer
II:cg_cpu_clk_init done
II: CPU 300MHz (600/2/0), MEM 325MHz, LX 200MHz, SPIF 25MHz
AK: DRAM AUTO CALIBRATION(20210202)
AK: ZQ Calibration Passed
AK: ZQ Calibration Passed
AK: ZQ Calibration Passed
AK: ZQ Calibration Passed
AK: MR0: 0x00100952
AK: MR1: 0x00110040
AK: MR2: 0x00120000
AK: MR3: 0x00130000
AK: clear dwdqor

AK: Bit/max_r_s/max_r_l/max_w_s/max_w_l    Bit/max_r_s/max_r_l/max_w_s/max_w_l(Hex)
   [ 0]       0      1f       0      17   [16]       0      1f       0      17
   [ 1]       0      1f       0      17   [17]       0      1f       0      17
   [ 2]       0      1f       0      15   [18]       0      1f       0      15
   [ 3]       0      1f       0      15   [19]       0      1f       0      15
   [ 4]       0      1f       0      17   [20]       0      1f       0      17
   [ 5]       0      1f       0      15   [21]       0      1f       0      17
   [ 6]       0      1f       0      17   [22]       0      1f       0      17
   [ 7]       0      1f       0      17   [23]       0      1f       0      17
   [ 8]       0      1f       0      17   [24]       0      1f       0      17
   [ 9]       0      1f       0      19   [25]       0      1f       0      19
   [10]       0      1f       0      17   [26]       0      1f       0      19
   [11]       0      1f       0      19   [27]       0      1f       0      19
   [12]       0      1f       0      19   [28]       0      1f       0      19
   [13]       0      1f       0      19   [29]       0      1f       0      19
   [14]       0      1d       0      1b   [30]       0      1f       0      1b
   [15]       0      1f       0      17   [31]       0      1f       0      17
AK: DQ enable delay sync with DQ delay tap.
    0xb80015D0=0x07070707, 0xb80015D4=0x07070707, 0xb80015D8=0x08070807, 0xb80015DC=0x07090808

AK: DRAM size = 0x2000000
AK: Disable read after write function

AK: Support tREFI divided by 4

AK: dram auto calibrtaion is done
II: MEM_PROBE_OK
II: MEM_XLAT_OK
II: MEM_TO_REG_OK
II: MEM_CAL_OK
II: Change Stack from 0x9f00375c to 0x806fffe0
II: U-boot Magic Number is 0x27051956
II: Inflating U-Boot (0x80700040 -> 0x81c00000)… OK
II: Starting U-boot… 


U-Boot 2011.12.NA-svn35647 (Aug 04 2021 - 22:50:21)

Board: RTL9601D, CPU:300MHz, LX:200MHx, MEM:325MHz, Type:DDR2
DRAM: 32 MB
SPI-NAND Flash: 2C14/Mode0 1x128MB
Create bbt: 
Loading 16384B env. variables from offset 0xc0000
Loading 16384B env. variables from offset 0xe0000
Loaded 16384B env. variables from offset 0xc0000
Net:   LUNA GMAC 
Warning: eth device name has a space!

Hit any key to stop autoboot:  1

Bu, kart (RTL9601D) ve SPI-nand flaş depolama gibi önemli bilgileri ortaya çıkardı.

Autoboot kesintiye uğramadıysa, gerçek Linux işletim sistemine geçti:

## Booting kernel from Legacy Image at 81000000 …
   Image Name:   Linux Kernel Image
   Created:      2024-10-16   8:49:19 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    909109 Bytes = 887.8 KB
   Load Address: 80000000
   Entry Point:  80000000
   Verifying Checksum … OK
   Uncompressing Kernel Image … OK

Starting kernel …

...

BusyBox v1.12.4 (2024-10-16 16:46:28 CST) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.

# 

Kabuk kilidi açıldı!

Bir UART kabuğu çok fazla görünürlük kazandırırken, hala cihazı neden doğrudan ağ bağlantısına ping yapamayacağımı anlamak istedim.

Maruz kalan ağ arayüzlerini kontrol ettim:

# ip addr
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:80:05 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether > brd ff:ff:ff:ff:ff:ff
3: eth0.2:  mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:00:00:01:00:02 brd ff:ff:ff:ff:ff:ff
4: eth0.3:  mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:00:00:01:00:02 brd ff:ff:ff:ff:ff:ff
5: nas0:  mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:00:00:01:00:02 brd ff:ff:ff:ff:ff:ff
6: pon0:  mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether  brd ff:ff:ff:ff:ff:ff
7: br0:  mtu 1500 qdisc noop state DOWN 
    link/ether  brd ff:ff:ff:ff:ff:ff
8: nas0_0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 10
    link/ether  brd ff:ff:ff:ff:ff:ff

İlginç bir şekilde, Ethernet arayüzü eth0 Bir IP adresi seti yoktu, ancak bunu manuel olarak yapmak ip addr add 192.168.100.1/24 dev eth0 hala ulaşılabilir hale getiremedi.

Bağlantıyı bağlı dizüstü bilgisayarımda Wireshark kullanarak izlediğimde, ont’tan dizüstü bilgisayarıma ping atmanın çalıştığını fark ettim – ancak dizüstü bilgisayarım ping’e cevap verse de, ONT paketi almamış gibi görünüyor.

Bir sonraki içgüdüm, güvenlik duvarı kurallarını kontrol etmekti. iptables:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  —  anywhere             anywhere           tcp dpt:http 
DROP       udp  —  anywhere             anywhere           udp dpt:http 
DROP       tcp  —  anywhere             anywhere           tcp dpt:telnet 
DROP       udp  —  anywhere             anywhere           udp dpt:telnet 
ACCEPT     udp  —  anywhere             anywhere           udp dpt:router 
DROP       all  —  anywhere             239.255.255.250    
ACCEPT     all  —  anywhere             224.0.0.0/4        
dhcp_port_filter  all  —  anywhere             anywhere           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
TCPMSS     tcp  —  anywhere             anywhere           tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
TCPMSS     tcp  —  anywhere             anywhere           tcp flags:SYN,RST/SYN tcpmss match 1452:1536TCPMSS set 1452 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain dhcp_port_filter (1 references)
target     prot opt source               destination         

Bu ilginç olsa da (iptables Kurallar Telnet ve HTTP) düşürdü, ICMP’nin (ping için kullanılan) neden başarısız olduğu sorusunu cevaplamadı.

Biraz chatgpt konsültasyonundan sonra (lol) kontrol etmem istendi ebtables (Katman 2 filtrelemesini kontrol eden) bunun yerine:

# ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 1, policy: ACCEPT
-j br_wan

Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-j portmapping

Bridge chain: OUTPUT, entries: 1, policy: ACCEPT
-j br_wan_out

Bridge chain: br_wan, entries: 1, policy: RETURN
-i nas0_0 -j DROP 

Bridge chain: br_wan_out, entries: 1, policy: RETURN
-o nas0_0 -j DROP 

Bridge chain: portmapping, entries: 9, policy: ACCEPT
-i nas0_0 -o eth0.2 -j RETURN 
-i eth0.2 -o nas0_0 -j RETURN 
-i eth+ -o eth+ -j RETURN 
-i eth+ -o wlan+ -j RETURN 
-i wlan+ -o eth+ -j RETURN 
-i wlan+ -o wlan+ -j RETURN 
-i eth0+ -j DROP 
-i wlan+ -j DROP 
-i nas0_0 -j DROP

Cevap buydu – -i eth0+ -j DROP Ethernet arayüzünde alınan tüm yönlendirme trafiğini düşürüyordu! Bu, yönlendiriciler ve diğer cihazlar Ethernet arayüzü aracılığıyla fiber optik arayüze iletişim kurabilse de, bunu doğrudan ONT ile iletişim kurmak için kullanamayacakları anlamına geliyordu. Bu engeli basit bir şekilde temizleyebilirim ebtables -F Ve iptables -F Tüm filtreleme kurallarını temizlemek için.

Donanım Hacking Sıcak İpucu #3: Potansiyel sertleştirme için tüm ağ filtreleme kurallarını inceleyin!

Başka bir gotcha, ip addr çıktı, br0 Ve eth0 aynı MAC adresini paylaşıyordu. Kısacası, ağ trafiği köprülendi ve IP katmanı trafiği br0. Böylece statik IP adresini ayarlamam gerekiyordu br0 yerine eth0 Ve onu büyüt:

ip addr add 192.168.100.1/24 dev br0
ip link set br0 up

Bu yapıldıktan sonra, şimdi Ethernet bağlantısı üzerindeki ONT ile başka bir ağ iletişimi yapabilirim.

Sonra, koşuyu anlamak için biraz geri kazanım yaptım.

# ps
  PID USER       VSZ STAT COMMAND
    1 admin      892 S    init       
    2 admin        0 SW<  [kthreadd]
    3 admin        0 SWN  [ksoftirqd/0]
    4 admin        0 SW<  [events/0]
    5 admin        0 SW<  [khelper]
    8 admin        0 SW<  [async/mgr]
   51 admin        0 SW<  [kblockd/0]
   64 admin        0 SW   [netlog]
   69 admin        0 SW   [pdflush]
   70 admin        0 SW   [pdflush]
   71 admin        0 SW<  [kswapd0]
   89 admin        0 SW<  [mtdblockd]
  158 admin        0 SW<  [yaffs-bg-1]
  171 admin     2064 S    configd 
  354 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  363 admin     1696 S    /bin/pondetect 
  562 admin      900 R    -/bin/sh 
  563 admin      592 S    /bin/inetd 
  572 admin     2848 S    /bin/hiproc 
  574 admin        0 DW<  [led_swBlink]
  610 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  611 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  612 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  708 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  709 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  710 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  711 admin    24292 S    omci_app -s  -f off 0 -m disable -d err -
  820 admin      892 R    ps 

İkili dosyaların dizelerinin kontrol edilmesi, hiproc Web konsolundan (HTML ile ilgili dizeler) sorumluydu, ancak meşgul kutusunda bulunan sınırlı ikili dosyalar nedeniyle manuel olarak kontrol etmek zorunda kaldım /proc Hangi bağlantı noktasında olduğunu görmek için:

# cat /proc/572/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:9CC3 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 835 1 80f36880 300 0 0 2 -1                               
   1: 00000000:0017 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 840 1 80f36040 300 0 0 2 -1                               

Bu durumda, 9CC3 ondalık olmaya dönüştürülmüş 40131! Bir tarayıcıda portuna heyecanla eriştim ve…

Yasaklı

Yanıt hala sunucu sürümü gibi önemli bilgileri ortaya çıkardı:

HTTP/1.0 403 Forbidden
Date: Thu, 01 Jan 1970 00:17:14 GMT
Server: Boa/0.93.15
Connection: close
Content-Type: text/html

<HTML><HEAD><TITLE>403 ForbiddenTITLE>HEAD>
<BODY><H1>403 ForbiddenH1>
Your client does not have permission to get URL / from this server.
BODY>HTML>

İtme, aktardım hiproc Futher analizi için netcat kullanarak ikili çıkış. Ben başladım Your client does not have permission to get URL String, sonra Ghidra’daki referansları izledi.

Yasaklı

Biraz Spelunking’den sonra, web konsolu hemen hemen devre dışı bırakılırken (herhangi bir yapılandırma dosyasına başvurmadığı), kullandığını fark ettim. /etc sunucu kökü olarak, /etc/passwd doğrudan ona göz atarak. Yine de, bu çok ilginç değildi çünkü zaten kabuk erişimim vardı.

Tüm yapılandırma dosyalarını ve ikili dosyaları çıkardıktan sonra, tersine mühendislik yapmak ve analiz etmek için çok daha fazlası var, ancak şimdilik daha önce açıklanmış bir ONT cihazına erişmekten oldukça memnun hissediyorum. Bu araştırma alanına girmeyi kolaylaştırmak için pratik ipuçları ile blog yazılarını hackleyen birkaç mini donanım yayınlamayı umuyorum.



Source link