VIRTUOSISMI TECNICI: PARTE 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supponiamo
di aver finalmente hackerato un server e di avere username e
password di un
utente. E ora cosa facciamo? Ci limitiamo a leggere la sua
posta, a collegarci via Telnet dal suo account e cose del genere?
Certamente no...
I passi principali nell'hackerare un server consistono nel fare quanto segue:
- prendere tutte le precauzioni prima di collegarsi: preferibilmente
usare
l'account di qualcun altro (un utente di cui abbiamo
crackato la password)
e/o usare un account Telnet su una BBS,
utilizzare il "bounce" e cosi` via
- scegliere un server (di tipo Unix, in questo caso) e crackarne le
password
individuando la locazione del file, se le password
sono shadow o meno, ecc
- collegarsi con l'account crackato di uno degli utenti di quel server
- utilizzare i comandi "who" e "ps -u vostro_user_name" per vedere chi
e` on-line e cosa sta facendo (se il SysAdmin e` in giro, sara`
meglio
lasciar perdere e collegarsi piu` tardi, meglio se di
notte o la mattina
molto presto)
- digitare "unset HISTFILE" per far si` che il file "history" (dove
vengono
annotate tutte le operazioni che svolgiamo!) venga
eliminato non appena
lasceremo il sistema
- inviare, compilare e usare un programma per nasconderci dal log di utmp
- controllare con il comando "who" se "si vede" che siamo in linea
- se non si e` riusciti a crackare la password di root, usare un
exploit
per ottenere accesso root, in modo da poter eseguire
comandi nella shell
- OPZIONALE: crearsi un nuovo account su quel server, utilizzando un
nome
poco vistoso (dare un'occhiata al file delle password per
uniformarvi
agli altri in modo da non far saltare all'occhio il
vostro nuovo account)
- installare una backdoor (se si e` in grado di farlo), oppure copiare
la
shell root /bin/sh in qualche directory "sperduta" sotto
falso nome e
cambiarne il livello d'accesso con chmod, in modo
da poter usare la shell
di root anche quando si accede al
sistema con l'account di un utente
qualsiasi (e quindi senza
privilegi); se si e` creato un nuovo account
(vedi sopra)
potremo mettere la shell "segreta" nella nostra directory
utente, in modo che nessun altro la noti e possa usarla all'infuori di
noi (un buon posto e` la directory .term nella directory /users
oppure
/home/users o comunque dove si trovano le directory
degli utenti).
Si puo` anche aggiungere un account al file
delle password, in modo da
utilizzare la shell root quando ci
servira`, utilizzando semplicemente
Telnet: usando PHF con il
comando "echo stringa >> /etc/passwd" oppure
editando
direttamente il file delle password si aggiunga...
nomequalsiasi::numeroutente:numerogruppo:/:/bin/sh
oppure
qualcosa di meno vistoso, come un finto "account di sistema" del
tipo...
spoolsys::13:12:system:/var/spool/:/bin/sh
(ovviamente si
potra` anche utilizzare una password tra i due :: se non
si
vuole consentire a qualcun altro di accedere a questo account)
- IMPORTANTISSIMO: cancellare tutte le tracce prima di lasciare il
server
e in particolare...
- tutto quello che viene registrato riguardo al vostro
server (host name,
IP Address, date e orari)
nei files di log in /var/log e /var/adm
- eliminare sempre il file di history del vostro account
(.bash_history),
e per evitare che venga
creato di nuovo lo si setti a null con il
comando "ln -s /dev/null .bash_history"
- eliminare il file xferlog contenente il log dei
trasferimenti di file
(se ne sono fatti)
Ora, quando vorremo collegarci di nuovo per utilizzare la shell root, non
dovremo fare che collegarci con l'account di un utente qualsiasi e poi, in
base a quello che abbiamo fatto prima, utilizzare la backdoor per accedere a
root, oppure usare la shell "segreta" che abbiamo installato.
Tutto questo andra` fatto solo la prima volta, cioe` quando hackeriamo il
server. Cio` ci consentira` di non far notare un'attivita` hacker su
quel
server, cosicche` il nostro account (e soprattutto la shell root ;)
durera`
piu` a lungo... anche per moltissimo tempo, se il SysAdmin non sta
attento a
quel che accade nel suo sistema.
NOTA IMPORTANTE: se non siete ancora in grado di nascondere le vostre tracce
come descritto sopra, avrete bisogno di tempo per imparare, percio` NON
tentate di hackerare un server. Usate Linux (che spero vi sarete
finalmente
installati ;) e provate, usando il comando "man nome_comando"
ogniqualvolta
non capite il funzionamento di un particolare comando.
Sperimentate sempre prima in modalita` locale (sul vostro computer), se ne
avete la possibilita`.
Quando dovete analizzare il contenuto di un file di log alla ricerca di
informazioni da cancellare (come il vostro IP Address o l'host name del
vostro provider) potete utilizzare "grep" (un comando Unix per cercare una
stringa di testo in un file) come in questo esempio:
cd /var/log
grep hackers.com *
in questo caso cercheremo l'host name "hackers.com" in tutti (*) i file della
directory /var/log (ma anche /var/adm).
Se l'output (i risultati della
ricerca) e` troppo lungo per essere contenuto
in una pagina, bastera`
aggiungere il piping al comando "more", cosi`:
grep hackers.com * | more
e potremo comodamente scorrere in alto e in basso la nostra lista.
Se ad esempio troverete qualcosa del genere:
nome_file_log data orario nome_software_server nome_del_vostro_provider.com
altro_file_log data orario nome_software_server nome_del_vostro_provider.com
....
saprete che i file nome_file_log e altro_file_log stanno "registrando" cose
che non vorreste proprio far sapere al SysAdmin!
Come fregarli? E` presto detto... :)
Esiste un file, chiamato syslog.conf (configurazione log di sistema) che si
trova nella directory /etc
Il suo compito e` "dire" al sistema cosa
loggare (registrare in file di log)
e dove mettere i log (un altro file
interessante e` /etc/login.defs dove
e` possibile abilitare/disabilitare il
logging delle operazioni effettuate
con file ad accesso root).
Ci bastera` quindi editare il file /etc/syslog.conf e cancellare i file
"scomodi"... ma non solo. Affinche` i cambiamenti apportati abbiano
effetto,
dovremo riavviare il programma syslogd, o piu` precisamente il suo
processo
(le operazioni che svolge in background).
Ma prima di riavviare il processo dovremo disattivalo. Per farlo,
useremo
il comando "kill" (uccidi), in questo modo: digitiamo "ps -x" per
vedere a
quale numero di processo e` associato syslogd. Il primo
numero sulla
sinistra sara` quello che ci interessa: in pratica, e` come un
numero di
indentificazione che varia da processo a processo.
Digitiamo ora "kill -HUP numero_di_processo" e syslogd verra` disattivato e
subito riavviato. Abbiamo ora ottenuto quello che volevamo: niente
piu`
"spie" che possano aiutare il SysAdmin ad identificarci.
NOTA: in Unix le maiuscole e le minuscole sono fondamentali. Attenetevi
sempre alle mie istruzioni e tenete presente che i comandi sono quasi sempre
in minuscolo, mentre le opzioni cambiano effetto a seconda che siano
maiuscole o minuscole.
(continua nel prossimo volume)
Copyright (C) 1997 by
:: LoRD SHiNVA ::
-Digital Alliance Confederation-