elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19
161  Programación / Programación General / inyeccion dll c++ ayuda en: 26 Noviembre 2016, 19:28 pm
Hola estoy intentando hacer un programita básico para inyectar en dll pero me da algunos errores el código es el siguiente:
Código:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>

void error(char *err);

HANDLE myProc = NULL;

int main(int argc, char *argv[])
{
HANDLE processList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pInfo;
BOOL st = TRUE;
pInfo.dwSize = sizeof(PROCESSENTRY32);
Process32First(processList, &pInfo);
int myPid = 0;
do
{
if (strcmp(pInfo.szExeFile, "test.exe") == 0)
{
myPid = pInfo.th32ProcessID;
break;
}
Process32Next(processList, &pInfo);
} while (st != FALSE);

// Abrir el proceso
printf("[+] Opening process %i\n", myPid);
myProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, myPid);
if (myProc == NULL) error("[-] Error abriendo proceso.\n");
else printf("[+] Proceso abierto.\n");

// Reservar memoria para el argumento (ruta de la DLL)
char thData[] = "dll.dll";
LPVOID dirToArg = VirtualAllocEx(myProc, NULL, strlen(thData), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (dirToArg == NULL)
error("[-] Error reservando memoria para argumento.\n");
else
printf("[+] Memoria reservada para argumento (%i bytes).\n", strlen(thData));
// Escribir la ruta de la DLL en la memoria reservada
SIZE_T written = 0;
if (WriteProcessMemory(myProc, dirToArg, (LPVOID)&thData, strlen(thData), &written) == 0)
error("[-] Error escribiendo memoria.\n");
else
printf("[+] Memoria escrita (arg %i bytes).\n", written);

// Lanzar un hilo con LoadLibrary
HANDLE rThread = CreateRemoteThread(myProc, NULL, 0,
(LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.dll"), "LoadLibraryA"),
dirToArg, 0, NULL);
if (rThread == NULL)
error("[-] Error creando el hilo.\n");
else printf("[+] Hilo creado.\n");

CloseHandle(myProc);
}

void error(char *err)
{
if (myProc != NULL) CloseHandle(myProc);
printf("%s", err);
exit(0);
}

Lo que estoy intentando es hacer un inyector que inyecte una dll y aqui donde esta la chica que busque por el proceso dado su nombre. Si alguien tiene un ejemplo mejor. En este caso lo extraí de otro sitio y por lo que parece el que lo hizo no sabía ni lo que hacia. Entonces si tienen un ejemplo sencillito para entenderlo en python es facil pero en c++ no consigo hacer ninguno en condiciones.

Fuente: https://blog.ka0labs.net/post/8/
162  Seguridad Informática / Análisis y Diseño de Malware / Sistemas de ocultación en: 26 Noviembre 2016, 12:52 pm
Ocultación de malware a traves del Registro de windows

Últimamente se ha vuelto común ver ocultar el malware en el registro de Windows ¿Por qué el registro de Windows? El registro de Windows es bastante grande, lo que significa que hay muchos lugares en los que el malware puede insertarse para lograr la persistencia. Un buen ejemplo de este comportamiento es Poweliks.
Poweliks establece una entrada nula de uno de las API de Windows, ZwSetValueKey, lo que le permite crear una clave de registro con datos codificados. La API de Windows permite una entrada nula. Esta es una de las muchas maneras en que el malware puede utilizar el registro de Windows para esconderse, arranque automático, y mantener la persistencia en muchos sistemas.


Proceso de inyección

El Proceso de inyección es exactamente lo que suena. Se está inyectando algunos trozos de código en un proceso en ejecución. El malware aprovecha las técnicas de inyección de proceso para ocultar la ejecución de código y evitar ser detectados mediante la utilización de procedimientos conocidos como svchost.exe o explorer.exe. Al inyectar en los procesos buenos conocidos. Uno es el establecimiento de depuración. Cuando un proceso de depuración establece, gana acceso a muchas de las llamadas a la API de depuración, tales como la instalación en otros procesos e instruir a ese proceso para asignar memoria adicional.
Después del proceso se asigna más memoria, el proceso malicioso puede inyectar cualquier código que se desea en ese proceso.
Un ejemplo de malware que utiliza el Proceso de inyección es Poison Ivy. El proceso de inyección de Poison Ivy es muy conocido, pero también como se utiliza en muchas campañas, y lo hace de forma ligeramente diferente a la norma. Cuando el malware asigna un trozo de memoria, normalmente la cantidad de memoria es "contiguo", por lo que al final de un bloque de memoria, se asignará otro bloque de memoria e inyectar código allí. Poison Ivy hace lo que llamamos "sharding." Así que en lugar de tener un bloque de memoria gigante, que tiene un montón de pequeños bloques de memoria divide todo el proceso y, a veces en varios procesos. Esto hace que el análisis de Poison Ivy sea más dificl y revertir la ingeniería es mas complicado y más largo. Los creadores de malware prestan atención a las técnicas que utilizan los investigadores de seguridad y están tratando de reducir la velocidad.

 
Proceso Hollowing

Otra técnica relacionada con el proceso de inyección es Proceso Hollowing. "Vaciamiento" de un proceso es cuando se toma un buen proceso conocido y lo inicia en un estado suspendido. Cuando se carga el código e ir a ejecutar, de modo que hay un espacio disponible donde los malos pueden colocar cualquier código que les gusta su interior y tal vez cambiar algunas cabeceras de la parte superior e inferior para hacer que todo parezca bien y luego reiniciar el proceso. Así que, que este proceso se ve como un proceso normal del sistema iniciado por Windows. Por lo tanto, es más difícil para los ingenieros detectar y realizar el análisis forense de memoria.
Dridex es un muy buen ejemplo de una familia de malware que utiliza a menudo el proceso Hollowing.

Desvinculación lista de procesos

Desvinculación lista de procesos es otro concepto clave. Un proceso es algo que se está ejecutando en el equipo, ya sea en el espacio de usuario o el espacio del núcleo. Lista Desvinculación proceso consiste en una lista doblemente enlazada que contiene todos los procesos "activos". Es importante porque la desvinculación resultará en el proceso que se oculta a todas las herramientas de "activos". Esto se puede hacer usando ZwSystemDebugControl() o por mapeo \Device\PhysicalMemory. Dentro de la lista de procesos es una lista en que cada proceso que se está ejecutando dentro del objeto de proceso es un delantero y un revés en el proceso frente a ella o el proceso detrás de lo que una lista de doble enlace.

Desvinculación Lista DLL

El malware también puede ocultar en la lista de DLL. Una lista de DLL es una biblioteca cargada dinámicamente, y el malware a menudo se disfraza como un archivo DLL. Al igual que un proceso, un DLL tiene una lista de doble vinculado que apunta a la DLL delante y detrás, y al igual que la lista de procesos son las API que pueden ser llamados para volver a escribir la lista de DLL, eliminar esa DLL y acabar con ese poco de memoria para ayudar a ocultar el malware de medicina forense de memoria o desde las herramientas de copia de seguridad. Esto se utiliza mucho en la actividad de rootkit.

Desvinculación Kernel lista de módulos

Los módulos del kernel son el siguiente nivel inferior. Un módulo del núcleo es cualquiera de los módulos que se cargan en el núcleo. Al igual que la lista de DLL y el proceso, los módulos del núcleo tienen su propia lista que se puede consultar con las API y volver cada módulo del kernel que se carga. También hay APIs de depuración que pueden eliminar un módulo de DLL de la lista y vaciarla. Esto es especialmente importante porque a nivel del kernel cuando algo se pone a cero que hace que sea mucho más difícil de encontrar este acceso es como el acceso anillo de cero, sin duda asociado con la actividad de rootkit.
En general, una pieza de malware se ejecutará en el espacio de usuario y luego probar un nivel de kernel exploit kernel para obtener acceso administrativo y luego dejar caer el rootkit principal, que haría a continuación cero a sí misma dentro de la lista de procesos lista de módulos del kernel. En este punto, el malware está muy bien escondido y que será muy difícil de encontrar.

Fuente: http://www.clasesordenador.com/sistemas-ocultacion-malware/index.html

163  Seguridad Informática / Análisis y Diseño de Malware / Ocultar un proceso del taskmanager en: 23 Noviembre 2016, 17:23 pm
Bueno de momento conozco estas técnicas:

1. cargar un driver con técnicas de rootkit para ocultar el proceso

usar hooks  Ejemplo:
hookear la API encargada de obtener la información del vizor de procesos

Pero no se si para estas cosas uno necesita permisos de administrador etc.

La ultima manera que no sé si sería posible sin ser administrador es:
inyectar en otro proceso, está es buena pero la mayoría de veces uno requiere de permisos de administrador para inyectar un proceso de sistema iniciado por el sistema y de esa manera siempre sea arrancado. Desventaja de la inyección que tienes que indicar si es de 64 o 32... no sé si habra algo para esto pero creo no sé.

Estas técnicas son antiguas y conocidas aunque yo nunca las he probado y no sé si habra otras. Mi pregunta es conocen algun tutorial para ponerlas en práctica¿? Y otra pregunta si conocen alguna técnica nueva gracias.
164  Programación / Programación General / Shellexecute pedir permisos administrador en: 16 Noviembre 2016, 18:37 pm
Hola estuve probando con shellexecute pero no me sale la alerta. Alguien que sepa correctamente como se escribe con shellexecute para arrancar como administrador mi aplicacion? En otras palabras intente esto:
ShellExecute(hwnd, "runas", "C:\\Windows\\Notepad.exe", 0, 0, SW_SHOWNORMAL);

Pero no me muestra el mensaje aún así
165  Seguridad Informática / Análisis y Diseño de Malware / Maneras de autoinicio menos visibles? en: 15 Noviembre 2016, 15:56 pm
Hola he estado documentandome para descubrir todas las maneras posibles de autoinicio y ya hay información al respecto en el foro:
http://foro.elhacker.net/analisis_y_diseno_de_malware/aporte_9_metodos_de_autoinicio_en_un_solo_script-t413898.0.html

Pero mi cuestión es todas estas formas son visibles en el administrador de tareas en inicio. Entonces siguen siendo visibles¿?
166  Programación / Programación C/C++ / Crear una regla en regedit con c++ en: 15 Noviembre 2016, 12:56 pm
Hola estoy intentando crear una regla con c++ en mi registro pero el problema es que que cuando lo hago me muestra el regedit ha dejado de funcionar. codigo:
Código:
#include <iostream>
#include <windows.h>

using namespace std;

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

 HKEY * key;
 LPCTSTR ruta = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\");
 long status = RegOpenKey(HKEY_LOCAL_MACHINE, ruta, key);
 if (status != 0)
 {
  cout << "No se puede abrir la clave" << endl;
 }
 else
 {
  cout << "Nombre de la subclave: ";
  string subclave;
  getline(cin, subclave);
  cout << "Valor de la subclave: ";
  string valor;
  getline(cin, valor);
  LPCTSTR _subclave = TEXT(subclave.c_str());
  LPCTSTR _valor = TEXT(valor.c_str());
  long crear = RegSetValueEx(*key, _subclave, 0, REG_SZ, (LPBYTE)_valor, strlen(_valor)*sizeof(char));
  if (crear != 0)
  {
     cout << "Ha ocurrido un error al crear la subclave" << endl;
  }
  else
  {
    cout << "Subclave creada correctamente" << endl;
  }
 }

 RegCloseKey(*key);

 system("PAUSE");
 return 0;
}
167  Seguridad Informática / Análisis y Diseño de Malware / Porque ultimamente se utiliza una dll envede que un ejecutable? en: 15 Noviembre 2016, 02:46 am
Hola ultimamente veo que en seguridad ya apenas se hacen ejemplos con .exe sino más bien con .dll ya que pasan mas desapercibidas. Aunque también existe maneras de inyectar un .exe a un proceso no necesariamente una .dll . Además que para arrancar un ejecutable existen muchas rutas y maneras mientras que dll todavía se está experimentando. Conclusión porque ultimamente es más invisible una .dll que un ejecutable ya que no necesariamente tiene que hacer ya que tanto ambos utilizan pueden pasar desapercibidos. Es más bien escuchar vuestra opinion o experiencia en este tema bastante importante en seguridad. gracias. :huh: :huh:
168  Seguridad Informática / Análisis y Diseño de Malware / Algun crypter runtime para .Net en: 14 Noviembre 2016, 18:25 pm
Hola alguien conoce algun crypter que soporte .Net y funcione en runtime para ir poco a poco aprendiendo poco a poco hacer uno propio. Es simplemente alguno open-source o algún proyecto para .Net y que funcione en tiempo de ejecucion.
169  Seguridad Informática / Análisis y Diseño de Malware / Cargar dll desde memoria o disco - fuente en: 13 Noviembre 2016, 22:32 pm
Bueno como el contenido es muy largo y se me subía a medias. Os pongo el enlace y la guía. Es simplemente una aplicación que permite cargar una dll desde memoria o disco y en principio desde el programa principal que arranca la dll se llama a las funciones de la misma. En principio esta incompleto ya que podría incluirse mejoras al programa principal para pasar inadvertida en tiempo de ejecucion.
Fuente:
http://www.mpgh.net/forum/showthread.php?t=1101356
170  Seguridad Informática / Análisis y Diseño de Malware / Una dll se puede cifrar con un crypter? en: 12 Noviembre 2016, 19:55 pm
Hola hay componentes de una dll que son detectados pero no se sí se podría cifrar una .dll ya que nunca lo he escuchado un salu2  :huh:
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines