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


 


Tema destacado: Java [Guía] Patrones de diseño - Parte 1


  Mostrar Temas
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1  Programación / .NET / Ayuda con este pequeño crypter en c# en: Hoy a las 01:31
Hola estoy modificando un facilito crypter en c# obviamente todos sabemos que c# para crypters no es lo suyo pero haciendolo el codigo es:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. using System.IO;
  8.  
  9. namespace Crypter
  10. {
  11.    class Program
  12.    {
  13. [STAThread]
  14.        static void Main(string[] args)
  15.        {
  16.            //No Arguments -> Exit
  17.            if (args.Length < 2)
  18.            {
  19.                Console.WriteLine("Syntax: crypter.exe <Exe/Dll to get Encrypted> <Password> (Optional: output file name)");
  20.                Environment.Exit(0);
  21.            }
  22.  
  23.            String file = args[0];
  24.            String pass = args[1];
  25.            String outFile = "Crypted.exe";
  26.  
  27.            //If Output Name is specified -> Set it
  28.            if (args.Length == 3)
  29.            {
  30.                outFile = args[2];
  31.            }
  32.  
  33.            //File doesn't exist -> Exit
  34.            if (!File.Exists(file))
  35.            {
  36.                Console.WriteLine("[!] The selected File doesn't exist!");
  37.                Environment.Exit(0);
  38.            }
  39.  
  40.            //Everything seems fine -> Reading bytes
  41.            Console.WriteLine("[*] Reading Data...");
  42.            byte[] plainBytes = File.ReadAllBytes(file);
  43.  
  44.            //Yep, got bytes -> Encoding
  45.            Console.WriteLine("[*] Encoding Data...");
  46.            byte[] encodedBytes = encodeBytes(plainBytes, pass);
  47.  
  48.            Console.Write("[*] Save to Output File... ");
  49.            File.WriteAllBytes(outFile, encodedBytes);
  50.            Console.WriteLine("Done!");
  51.  
  52.            Console.WriteLine("\n[*] File successfully encoded!");
  53.        }
  54. private static byte[] encodeBytes(byte[] bytes, String pass)
  55. {
  56. byte[] XorBytes = Encoding.Unicode.GetBytes(pass);
  57.  
  58. for (int i = 0; i < bytes.Length; i++)
  59. {
  60. bytes[i] ^= XorBytes[i % XorBytes.Length];
  61. }
  62.  
  63. return bytes;
  64. }
  65. }
  66. }

El stub:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Windows.Forms;
  6.  
  7. using System.IO;
  8. using System.Text;
  9. using System.Reflection;
  10. using System.Diagnostics;
  11.  
  12. namespace Stub
  13. {
  14.    static class Program
  15.    {
  16.        /// <summary>
  17.        /// MAIN
  18.        /// </summary>
  19.        [STAThread]
  20.        static void Main()
  21.        {
  22.            Application.EnableVisualStyles();
  23.            Application.SetCompatibleTextRenderingDefault(false);
  24.            //Application.Run(new Form1());
  25.  
  26.            //Set Payload File and Password HERE
  27.            RunInternalExe("C:/Users/Androide/Desktop/test/o.txt", "1234");
  28.        }
  29.  
  30.        private static void RunInternalExe(string exeName, String pass)
  31.        {
  32.            //Verify the Payload exists
  33.            if (!File.Exists(exeName))
  34.                return;
  35.  
  36.            //Read the raw bytes of the file
  37.            byte[] resourcesBuffer = File.ReadAllBytes(exeName);
  38.  
  39.            //Decrypt bytes from payload
  40.            byte[] decryptedBuffer = null;
  41.            decryptedBuffer = decryptBytes(resourcesBuffer, pass);
  42.  
  43.            //If .NET executable -> Run
  44.            if(Encoding.Unicode.GetString(decryptedBuffer).Contains("</assembly>"))
  45.            {
  46.                //Load the bytes as an assembly
  47.                Assembly exeAssembly = Assembly.Load(decryptedBuffer);
  48.  
  49.                //Execute the assembly
  50.                object[] parameters = new object[1];                //Don't know why but fixes TargetParameterCountException
  51.                exeAssembly.EntryPoint.Invoke(null, parameters);
  52.            }
  53.        }
  54.  
  55.        /// <summary>
  56.        /// Decrypt the Loaded Assembly Bytes
  57.        /// </summary>
  58.        /// <param name="payload"></param>
  59.        /// <returns>Decrypted Bytes</returns>
  60.        private static byte[] decryptBytes(byte[] bytes, String pass)
  61.        {
  62.            byte[] XorBytes = Encoding.Unicode.GetBytes(pass);
  63.  
  64.            for (int i = 0; i < bytes.Length; i++)
  65.            {
  66.                bytes[i] ^= XorBytes[i % XorBytes.Length];
  67.            }
  68.  
  69.            return bytes;
  70.        }
  71.    }
  72. }
  73.  
Pero cuando pongo abro el stub se me cierra y no me abre mi fichero y lo encripte correctamente y todo que estoy haciendo mal?
2  Foros Generales / Foro Libre / Pequeño grupo en telegram para entusisastas de la programacion en: 28 Marzo 2017, 20:06
Hola he creado un pequeño grupo en telegram para poner en practica más la programación y poder hacer aportes más a menudo al foro.
El grupo es:
https://t.me/joinchat/AAAAAAuGJ94-9LBIJM3lPQ
Sino es buena idea o el post incumple algo me lo decis para la proxima tener mas cuidado. Es solamente para aquellos que empiezan puedan aprender lo básico y hacer aportes.
3  Seguridad Informática / Bugs y Exploits / Inyeccion de código y persistencia - Zero Day en: 26 Marzo 2017, 14:28
Este técnica permite al atacante inyectar cualquier dll a cualquier proceso.. la inyeccion ocurre durante el arranque del sistema de la victima, dando al atacante poder para controlar los procesos y no hay manera de protegerse del mismo.
Esta técnica puede persistir incluso despues del reinicio.

Para mas info:
https://cybellum.com/doubleagentzero-day-code-injection-and-persistence-technique/
4  Programación / .NET / Renombrar una clave de registro usando c# en: 25 Marzo 2017, 21:28
Hola hago esto:
Código
  1. using Microsoft.Win32.SafeHandles;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace ConsoleApplication7
  10. {
  11.    class Program
  12.    {
  13.        private static readonly IntPtr HKEY_LOCAL_MACHINE = new IntPtr(-2147483646);
  14.        [DllImport("advapi32")]
  15.        public static extern int RegRenameKey(SafeRegistryHandle hKey, [MarshalAs(UnmanagedType.LPWStr)] string oldname,
  16.        [MarshalAs(UnmanagedType.LPWStr)] string newname);
  17.        static void Main(string[] args)
  18.        {
  19.  
  20.            SafeRegistryHandle hKey = null;
  21.            hKey = new SafeRegistryHandle(HKEY_LOCAL_MACHINE,true);
  22.            RegRenameKey(hKey, "\\SOFTWARE\\Company", "\\SOFTWARE\\Compa");
  23.            Console.ReadLine();
  24.  
  25.        }
  26.    }
  27. }

Pero no lo renombra no se porque.
5  Programación / Programación C/C++ / Es posible renombrar una clave de registro? en: 25 Marzo 2017, 18:29
Se puede renombrar una clave de registro? No digo crear o borrar sino cambiarla de nombre? Tiene que ser en algun lenguaje de programacion.
6  Programación / Programación C/C++ / Pasar argumentos a WinMain en: 25 Marzo 2017, 00:10
Estaba intentando convertir una consola a formulario. Para ello lo hice añadiendo una configuración equivocada ya que eso era para Qt.
La manera correcta de convertir una consola a un formulario y luego pasar los argumentos de linea de comandos a la aplicación es usando GetCommandLine
7  Programación / Programación C/C++ / Como mostrar la version de windows 32 o 64 bits usando c++ en: 24 Marzo 2017, 17:13
Como puedo mostrar que versión utilizo en un programa intente esto:
Código:
#if_WIN64
 isWow64=true;

#elif_WIN32
 isWow64=false;

if(isWow64==true){
 windows="Windows64bits";
}else{
 windows="Windows32bits";
}
Sería correcto o debería hacer alguna otra cosa.
8  Programación / Programación General / Que es user32 y kernel32¿? que diferencias existen? en: 23 Marzo 2017, 20:26
Se que son  bibliotecas de enlace dinámico que implementa la biblioteca de windows pero mi pregunta es cuando uno esta usando la librería kernel32 o user32 cuando uno es administrador usa kernel32 o cuando uno usa user32 esta en modo usuario¿? Soy un total ingnorante al respecto por lo que cualquier explicacion me vendría bastante bien. Gracias.
9  Programación / Programación C/C++ / Tutorial como poner tus procesos en PWNED en: 20 Marzo 2017, 12:25
Hola en este tutorial os enseñare a como poner tus procesos en PWNED con la siguiente apariencia:


El inyector:
Código:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <wchar.h>
#include <iostream>
using namespace std;

void error(char *err);

HANDLE myProc = NULL;

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

HANDLE Startpausedprocess( char* cmd, PHANDLE ptr_thread ) // cleaned up a bit, but no RAII
{
    if( ptr_thread == nullptr ) return nullptr ;

    PROCESS_INFORMATION pi;
    STARTUPINFOA si {} ; // initialize with zeroes.
    si.cb = sizeof(STARTUPINFOA);

    if( !CreateProcessA( nullptr, cmd, nullptr, nullptr, false, CREATE_SUSPENDED,
                         nullptr, nullptr, std::addressof(si), std::addressof(pi) ) )
    {
        std::cerr << "CreateProcess failed, " << GetLastError() << '\n' ;
        *ptr_thread = nullptr ;
        return nullptr;
    }

    *ptr_thread = pi.hThread;
    return pi.hProcess;
}


int main(int argc, char *argv[])
{
char cmd[] = "taskmgr.exe" ; // note: non-const (writeable array)
    HANDLE thread = nullptr ;
    auto myProc=Startpausedprocess( cmd, std::addressof(thread) ) ;
if(myProc)
    {
        std::cout << "press enter to resume process... " && std::cin.get() ;
        ResumeThread(thread) ;

        //CloseHandle(thread) ;
        //CloseHandle(myProc) ;
    }

// Reservar memoria para el argumento (ruta de la DLL)
char thData[] = "dllmain.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
//Load the DLL
//Load the DLL
HANDLE rThread = CreateRemoteThread(myProc, NULL, NULL, (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary(L"Kernel32.dll"), "LoadLibraryA"), dirToArg, NULL, NULL);
if (rThread == NULL)
error("[-] Error creando el hilo.\n");
else
printf("[+] Hilo creado.\n");
CloseHandle(rThread);
}

El código, simplemente compilas en gcc y inyectais.
Código:
#include "stdafx.h"
#include "cabecera minhook"//MHook header
#include <iostream>
#include <windows.h>
#include <Commctrl.h>
#include <conio.h>

using namespace std;

typedef void (*SENDMESSAGEW)();//Typedef for the hooked function
static SENDMESSAGEW Basewritefoobar;//Backup of the originak fonction

static wchar_t pwned[]=L"PWNED";

LRESULT WINAPI BSSSendMessageW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    if ( msg == LVM_INSERTITEMW || msg == LVM_SETITEMW)//Intercepts LVM_INSERTITEM and LVM_SETITEM messages
    {
        ((LVITEMW*)lparam)->pszText=pwned;//Replace the item text with our text.
    }
    return SendMessage(hwnd, msg, wparam, lparam);//Calls the real SendMessage function.
}

static bool Hook();

template <typename T>
inline MH_STATUS MH_CreateHookEx(void* target, void* const base, T** original)
{
    return MH_CreateHook(target, base, reinterpret_cast<void**>(original));
}


extern "C" __declspec (dllexport) void __cdecl SendWrite()
{

}

BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
//Different behaviors depending on the reason why DllMain is called
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
if (!Hook())//Hook "Writefoobar"
{
cout << "Hook failed" << endl;
return 1;
}
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}

return TRUE;
}

bool Hook()
{
    if (MH_Initialize() != MH_OK)
    {
        return false;
    }

    if (MH_CreateHookEx((void*)&SendMessageW, (void*)&BSSSendMessageW, &Basewritefoobar) != MH_OK)
    {
        return FALSE;
    }
    return MH_EnableHook((void*)&SendMessageW) == MH_OK;
}

Funcionara como filtro y cambiara la apariencia de vuestro administrador de tareas.
10  Programación / Programación C/C++ / mi dll hace lo contrario de lo que debería hacer en: 20 Marzo 2017, 02:03
Este es el injector:
Código
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5. #include <Tlhelp32.h>
  6. #include <wchar.h>
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. void error(char *err);
  11.  
  12. HANDLE myProc = NULL;
  13.  
  14. void error(char *err)
  15. {
  16. if (myProc != NULL) CloseHandle(myProc);
  17. printf("%s", err);
  18. exit(0);
  19. }
  20.  
  21. int main(int argc, char *argv[])
  22. {
  23. HANDLE processList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  24. PROCESSENTRY32 pInfo;
  25. BOOL st = TRUE;
  26. pInfo.dwSize = sizeof(PROCESSENTRY32);
  27. Process32First(processList, &pInfo);
  28. int myPid = 0;
  29. do
  30. {
  31. std::wstring name(L"taskmgr.exe");
  32. const wchar_t* szName = name.c_str();
  33. if (wcscmp(pInfo.szExeFile, szName) == 0)
  34. {
  35. myPid = pInfo.th32ProcessID;
  36. cout << myPid << endl;
  37. break;
  38. }
  39. Process32Next(processList, &pInfo);
  40. } while (st != FALSE);
  41.  
  42. // Abrir el proceso
  43. printf("[+] Opening process %i\n", myPid);
  44. myProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, myPid);
  45. if (myProc == NULL) error("[-] Error abriendo proceso.\n");
  46. else printf("[+] Proceso abierto.\n");
  47.  
  48. // Reservar memoria para el argumento (ruta de la DLL)
  49. char thData[] = "dllmain.dll";
  50. LPVOID dirToArg = VirtualAllocEx(myProc, NULL, strlen(thData), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  51. if (dirToArg == NULL)
  52. error("[-] Error reservando memoria para argumento.\n");
  53. else
  54. printf("[+] Memoria reservada para argumento (%i bytes).\n", strlen(thData));
  55.  
  56.  
  57. // Escribir la ruta de la DLL en la memoria reservada
  58. SIZE_T written = 0;
  59. if (WriteProcessMemory(myProc, dirToArg, (LPVOID)&thData, strlen(thData), &written) == 0)
  60. error("[-] Error escribiendo memoria.\n");
  61. else
  62. printf("[+] Memoria escrita (arg %i bytes).\n", written);
  63. //Lanzar un hilo con LoadLibrary
  64. //Load the DLL
  65. //Load the DLL
  66. HANDLE rThread = CreateRemoteThread(myProc, NULL, NULL, (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary(L"Kernel32.dll"), "LoadLibraryA"), dirToArg, NULL, NULL);
  67. if (rThread == NULL)
  68. error("[-] Error creando el hilo.\n");
  69. else
  70. printf("[+] Hilo creado.\n");
  71. CloseHandle(rThread);
  72.  
  73. }

Este es la .dll:
Código
  1. // dllmain.cpp : Defines the entry point for the DLL application.
  2. #include "stdafx.h"
  3. #include "C:\Users\Androide\Desktop\minhook\Dynamic\MinHook_133_src\include\MinHook.h"//MHook header
  4. #include <iostream>
  5. #include <windows.h>
  6. #include <Commctrl.h>
  7. #include <conio.h>
  8.  
  9. using namespace std;
  10.  
  11. typedef void (*SENDMESSAGEW)();//Typedef for the hooked function
  12. static SENDMESSAGEW Basewritefoobar;//Backup of the originak fonction
  13.  
  14. static const wchar_t *pwned=L"PWNED";//PWNED
  15. LRESULT WINAPI BSSSendMessageW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
  16. {
  17.    if ( msg == LVM_INSERTITEMW || msg == LVM_SETITEMW)//Intercepts LVM_INSERTITEM and LVM_SETITEM messages
  18.    {
  19.        ((LVITEMW*)lparam)->pszText=pwned;//Replace the item text with our text.
  20.    }
  21.    return baseSendMessage(hwnd, msg, wparam, lparam);//Calls the real SendMessage function.
  22. }
  23. static bool Hook();
  24.  
  25. template <typename T>
  26. inline MH_STATUS MH_CreateHookEx(void* target, void* const base, T** original)
  27. {
  28.    return MH_CreateHook(target, base, reinterpret_cast<void**>(original));
  29. }
  30.  
  31.  
  32. extern "C" __declspec (dllexport) void __cdecl SendWrite()
  33. {
  34.  
  35. }
  36.  
  37. BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
  38. {
  39. //Different behaviors depending on the reason why DllMain is called
  40. switch (ul_reason_for_call) {
  41. case DLL_PROCESS_ATTACH:
  42. if (!Hook())//Hook "Writefoobar"
  43. {
  44. cout << "Hook failed" << endl;
  45. return 1;
  46. }
  47. break;
  48. case DLL_PROCESS_DETACH:
  49. break;
  50. case DLL_THREAD_ATTACH:
  51. break;
  52. case DLL_THREAD_DETACH:
  53. break;
  54. }
  55.  
  56. return TRUE;
  57. }
  58.  
  59. bool Hook()
  60. {
  61.    if (MH_Initialize() != MH_OK)
  62.    {
  63.        return false;
  64.    }
  65.  
  66.    if (MH_CreateHookEx((void*)&SendMessageW, (void*)&BSSSendMessageW, &Basewritefoobar) != MH_OK)
  67.    {
  68.        return FALSE;
  69.    }
  70.    return MH_EnableHook((void*)&SendMessageW) == MH_OK;
  71. }

Cuando lo hago me muestra un hola mundo el cual ni lo incluí en mi codigo:


Que no deberia..
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines