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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12
1  Foros Generales / Sugerencias y dudas sobre el Foro / [URGENTE] elhacker.net vulnerable en: 8 Abril 2014, 10:48 am
http://filippo.io/Heartbleed/#foro.elhacker.net

 :-\ :-\
2  Programación / Programación Visual Basic / [SNIPPET][VB6] WhereAmI, thisexe, GetMyPath... en: 10 Marzo 2014, 00:22 am
Código
  1. 'OLEAUT32
  2. Private Declare Function SysAllocString Lib "OLEAUT32" (ByVal pOlechar As Long) As String
  3. 'KERNEL32
  4. Private Declare Function GetModuleHandleA Lib "KERNEL32" (ByVal ModuleName As String) As Long
  5.  
  6. Public Static Function WhereAmI() As String
  7.    WhereAmI = SysAllocString(GetModuleHandleA("MSVBVM60") + &H10C528)
  8. End Function

Código
  1. MsgBox WhereAmI()

 ;)
3  Programación / Programación Visual Basic / NanoInvoke en: 13 Septiembre 2013, 04:05 am
Código
  1. 'USER32
  2. Private Declare Function CallWindowProcW Lib "USER32" (ByRef first_asm As Currency, ByRef params() As Variant, ByVal lib As String, ByVal fnc As String, Optional ByVal null0 As Long = 0) As Long
  3. '---------------------------------------------------------------------------------------
  4. ' Author : Karcrack
  5. ' Date   : 12092013
  6. ' Credits: sonykuccio (http://hackhound.org/forums/topic/2790-vb6asm-%C2%B5callapi/)
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Public Function NanoInvoke(ByRef sLib As String, ByRef sFnc As String, ParamArray params() As Variant) As Long
  10.    Dim asm(11)     As Currency
  11.    Dim p()         As Variant
  12.  
  13.    If UBound(params) >= 0 Then p = params
  14.  
  15.    asm(0) = -881438862054780.1504@: asm(1) = -140193315782017.312@: asm(2) = 93112413858165.2867@: asm(3) = 593189448021741.0902@
  16.    asm(4) = 843045704464075.3748@: asm(5) = -4834317066834.7356@: asm(6) = 260429944098681.7488@: asm(7) = 537140947255014.6699@
  17.    asm(8) = 7683543183094.8624@: asm(9) = 598313605633923.5838@: asm(10) = -200740417519275.4208@: asm(11) = 109.8337@
  18.  
  19.    NanoInvoke = CallWindowProcW(asm(0), p, sLib, sFnc)
  20. End Function
  21. ' ASM Code: pastebin.com/5gnLv7xn

Un pequeño reto que surgió en HackHound :P

Ejemplo de uso:
Código
  1.    Call NanoInvoke("user32", "MessageBoxW", 0, StrPtr("test"), StrPtr("karcrack"), 0)
  2.    Call NanoInvoke("kernel32", "ExitProcess", 0)
4  Seguridad Informática / Análisis y Diseño de Malware / [SRC][FILTRACIÓN] Carberp Bootkit - Precio 50.000$ en: 25 Junio 2013, 17:44 pm
Se ha filtrado el código fuente del Carberp. Con una búsqueda en Google podéis ver el nivel de este malware.







(Imágenes de http://touchmymalware.blogspot.com.es/2013/06/carberp-source-code-now-leaked.html)

Descarga:
https://mega.co.nz/#!0YsXWBRD!CMqd9nrm1d0XABKlifI9vmxprpQ6RnfsdhBHeKrDXao
(https://twitter.com/Ivanlef0u/status/349315255312195584)

Es bastante complicado obtener el password correcto, pero aquí os lo dejo (los espacios son importantes):
Código:
Kj1#w2*LadiOQpw3oi029)K   Oa(28)uspeh

Disfrutad de esta maravilla :-*
5  Programación / Programación C/C++ / [PoC] kPreprocessor - Capa extra de preprocesado Python en Visual Studio en: 12 Mayo 2013, 21:12 pm
Se trata de una capa extra de preprocesado que se ejecuta antes que la propia del lenguaje. La utilidad principal es generar constantes complejas en tiempo de compilación. Yo lo uso, entre otras cosas, para el cifrado de cadenas en mis proyectos malignos 8) Es mucho más flexible que los templates de C++


Necesitarás Python.

Para instalarla en tu proyecto debes de editar el fichero de proyecto (.vcxproj en el caso de VC) añadiendo este código XML:
Código
  1.  <Import Project="C:\Users\Karcrack\Desktop\kPreprocessor\kPreprocessor.targets" />
Obviamente la ruta hay que cambiarla para que apunte al fichero .targets que aquí adjunto:
Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" TreatAsLocalProperty="OutDir">
  3.    <Target Name="kPreprocessor" BeforeTargets="CLCompile">
  4.        <Exec Command='python "C:\Users\Karcrack\Desktop\kPreprocessor\kPreprocessor.py" %(CLInclude.FullPath) %(CLCompile.FullPath)' />
  5.    </Target>
  6.    <Target Name="kCleanPreProc" AfterTargets="Link">
  7.        <Exec Command='python "C:\Users\Karcrack\Desktop\kPreprocessor\kPreprocessor.py" -clean' />
  8.    </Target>
  9. </Project>
En este fichero hay que cambiar las rutas para que apunten a este fichero .py:
Código
  1. # -*- coding: utf8 -*-
  2. from sys import argv
  3. from shutil import copyfile
  4. import os, re
  5.  
  6. def save2dump(s):
  7.    f = open("./dump","a")
  8.    f.write(s)
  9.    f.close()
  10.  
  11. if __name__ == "__main__":
  12.    if argv[1] == "-clean":
  13.        print "[kP] Limpiando y restaurando ficheros."
  14.  
  15.        for file_name in os.listdir("./"):
  16.            root, ext = os.path.splitext(file_name)
  17.            if ext == ".kbak":
  18.                os.remove(os.path.join("./", root))
  19.                os.rename(os.path.join("./", file_name), os.path.join("./", root))
  20.  
  21.        os.remove("./dump")
  22.    else:
  23.        file_path = argv[1]
  24.        print "[kP] Trabajando sobre el fichero '%s'" % (file_path)
  25.        #Backup
  26.        copyfile(file_path, file_path+".kbak")
  27.        #Read SRC
  28.        with open(file_path, "r") as r:
  29.            raw = r.read()
  30.        #INCLUDE_PYSRC()
  31.        for i in re.findall("(?<=INCLUDE_PYSRC\()(.*?)(?=\)\n)", raw, re.DOTALL):
  32.            with open(os.path.abspath(i), 'r') as fi:
  33.                save2dump(fi.read()+"\n")
  34.        #DEFINE_PYSRC()
  35.        r = re.findall("(?<=DEFINE_PYSRC\(\n)(.*?)(?=\)DEFINE_END\(\))", raw, re.DOTALL)
  36.        if len(r)>0:
  37.            save2dump(''.join(r) + "\n")
  38.        #Load src
  39.        try:
  40.            exec open("./dump", "r")
  41.        except IOError as e:
  42.            pass
  43.        #Resolve macros
  44.        for fu in re.findall("(?<=#define)(.*?)(?=\(\.\.\.\) *PYTHON_FUNCTION\(\))", raw, re.DOTALL):
  45.            raw = re.sub("("+fu+"\([^\.?].*?\)(?=[^\:]))", lambda m:str(eval(m.group(1))), raw)
  46.        #Save file
  47.        with open(file_path, "w+") as f:
  48.            f.write(raw)
  49.  



Después de la instalación podéis hacer cosas como ésta:
Header.h:
Código
  1. #ifndef PRETEST
  2. #define PRETEST
  3. #include <Windows.h>
  4. #include "../../kPreprocessor/kPreprocessor.h"
  5.  
  6. INCLUDE_PYSRC(.\test.py)
  7. DEFINE_PYSRC(
  8.  
  9. def TEST():
  10.    return 12
  11.  
  12. )DEFINE_END()
  13. #endif
Main.cpp:
Código
  1. #pragma comment(linker, "/ENTRY:main")
  2. #include "Header.h"
  3.  
  4. #define XOR_STR(...) PYTHON_FUNCTION()
  5. #define MD5(...) PYTHON_FUNCTION()
  6. #define TEST(...) PYTHON_FUNCTION()
  7.  
  8. void main(){
  9.    MessageBoxA(0, XOR_STR("karcrack", 0xFF), MD5("karcrack"), TEST( ));
  10. }
test.py:
Código:
#Glenn Maynard
def string_to_c(s, max_length = 140, unicode=False):
    ret = []

    # Try to split on whitespace, not in the middle of a word.
    split_at_space_pos = max_length - 10
    if split_at_space_pos < 10:
        split_at_space_pos = None

    position = 0
    if unicode:
        position += 1
        ret.append('L')

    ret.append('"')
    position += 1
    for c in s:
        newline = False
        if c == "\n":
            to_add = "\\\n"
            newline = True
        elif ord(c) < 32 or 0x80 <= ord(c) <= 0xff:
            to_add = "\\x%02x" % ord(c)
        elif ord(c) > 0xff:
            if not unicode:
                raise ValueError, "string contains unicode character but unicode=False"
            to_add = "\\u%04x" % ord(c)
        elif "\\\"".find(c) != -1:
            to_add = "\\%c" % c
        else:
            to_add = c

        ret.append(to_add)
        position += len(to_add)
        if newline:
            position = 0

        if split_at_space_pos is not None and position >= split_at_space_pos and " \t".find(c) != -1:
            ret.append("\\\n")
            position = 0
        elif position >= max_length:
            ret.append("\\\n")
            position = 0

    ret.append('"')

    return "".join(ret)

def XOR_STR(str, c):
    s = ""
    for x in str:
        s+= chr(ord(x)^c)

    return string_to_c(s)

def MD5(s):
    import md5
    return string_to_c(md5.new(s).hexdigest())

 ;D ;D ;D ;D ;D

Hay errores en la detección de tokens ya que se hace con expresiones regulares algo chapuzas :-X

Todavía sigo trabajando en esto, así que seguid atentos para mejoras y arreglo de errores... y una explicación más elaborada en cuanto tenga tiempo xD

Nota: No se expandirán macros originales (C/C++ es en ejemplo) en la llamada a funciones. [Debido al diseño, no será reparado]

Saludos :-*
6  Media / Juegos y Consolas / [Windows 8][Fix] Instalar expansiones LosSims2 en: 23 Abril 2013, 23:36 pm
Tras intentar instalarle a mi novia en Windows 8 Los Sims 2 con varias expansiones y ver que los instaladores de las expansiones eran incapaces de actualizar la base del videojuego decidí ver que pasaba.

Después de investigar vi que el problema lo tenía casi todo el mundo y lo que se recomendaba era instalarlo desde el modo seguro. Esto no me funcionó ya que el instalador entraba en bucle durante el asistente.

Finalmente encontré la solución que todo el mundo usaba: instalarlo en Windows 7 y transferir la instalación al ordenador de Windows 8 copiando/pegando.
Eso a mí no me hacía ninguna gracia así que decidí debuggear a ver que hacía crashear al actualizador.

Resulta que hay un stack overflow. El actualizador intenta gastar más espacio de la pila del que tiene. ¿Forma simple de repararlo? Aumentándolo.

Reparando el instalador de expansiones de Los Sims 2 en Windows 8:
  • Copiamos el contenido del CD (O de la imagen de CD :silbar:) en una nueva carpeta del disco duro.
  • Vamos a la subcarpeta TSBin que estará en esa nueva carpeta creada.
  • Abrimos el ejecutable problemático (TS2UPD.exe, TS2UPD0.exe, TS2UPD*.exe... dependerá de la expansión) con nuestro editor PE favorito. (Recomiendo usar CFF Explorer)
  • Navegamos hasta OptionalHeader->SizeOfStackCommit y multiplicamos su valor por 16 (O lo que es lo mismo, quitamos un 0 del lado izquierdo y lo metemos en el derecho) para dar espacio más que de sobra.

Esa solución me funcionó. Windows 8 64 bits.

Tal vez me quedo algo soso el post sin imágenes, pero bueno, a aquel que consiga encontrarlo le resultará muy útil.

Saludos
7  Seguridad Informática / Análisis y Diseño de Malware / [C++ Template] Hasheado de APIs en compile-time - Invoke en: 24 Enero 2013, 18:28 pm
Código
  1. #ifndef CRYPTAPI
  2. #define CRYPTAPI
  3.  
  4. struct FNV1a{
  5.    template <size_t N>
  6.    __forceinline static DWORD hash(const char (&str)[N]){
  7.        return (hash<N-1>((const char(&)[N-1])str)^str[N-1]) * 16777619u;
  8.    };
  9.  
  10.    template <>
  11.    __forceinline static DWORD hash<1>(const char (&str)[1]){
  12.        return (2166136261u^str[0]) * 16777619u;
  13.    };
  14.  
  15.    __forceinline static DWORD hash(char* str){
  16.        DWORD r = 2166136261u;
  17.  
  18.        do{
  19.            r ^= *str;
  20.            r *= 16777619u;
  21.        }while(*str++);
  22.  
  23.        return r;
  24.    };
  25. };
  26.  
  27. struct CUSTOM{
  28.    template <size_t N>
  29.    __forceinline static DWORD hash(const char (&str)[N]){
  30.        return ((hash<N-1>((const char(&)[N-1])str) ^ (str[N-1] << 24)) >> 2);
  31.    };
  32.  
  33.    template <>
  34.    __forceinline static DWORD hash<1>(const char (&str)[1]){
  35.        return (str[0]<<24)>>2;
  36.    };
  37.  
  38.    __forceinline static DWORD hash(char* str){
  39.        DWORD r = 0;
  40.  
  41.        do{
  42.            r ^= (*str << 24);
  43.            r >>= 2;
  44.        }while(*str++);
  45.  
  46.        return r;
  47.    };
  48. };
  49.  
  50. template <class ret, class hashFnc = FNV1a> class invoke{
  51. private:
  52.    char*   base;
  53.    DWORD   FuncHash;
  54. public:
  55.    template <size_t N, size_t M>
  56.    invoke(const char (&DLL)[N], const char (&Func)[M]){
  57.        base = (char*)LoadLibraryA(DLL);
  58.        FuncHash = hashFnc::hash<M>(Func);
  59.    };
  60.  
  61.    ret operator()(int numArgs, ...){
  62.        BYTE*                       dirApi;
  63.        IMAGE_DOS_HEADER*           IDH         = (IMAGE_DOS_HEADER*)base;
  64.        IMAGE_NT_HEADERS*           INH         = (IMAGE_NT_HEADERS*)(base + IDH->e_lfanew);
  65.        IMAGE_OPTIONAL_HEADER*      IOH         = &INH->OptionalHeader;
  66.        IMAGE_DATA_DIRECTORY*       IDE         = (IMAGE_DATA_DIRECTORY*)(&IOH->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]);
  67.        IMAGE_EXPORT_DIRECTORY*     IED         = (IMAGE_EXPORT_DIRECTORY *)(base + IDE->VirtualAddress);
  68.  
  69.        void**                      FTABLE      = (void **)(base + IED->AddressOfFunctions);
  70.        WORD*                       OTABLE      = (WORD *)(base + IED->AddressOfNameOrdinals);
  71.        char**                      NTABLE      = (char **)(base + IED->AddressOfNames);
  72.  
  73.        for (DWORD i = 0; i <= IED->NumberOfNames; i++){
  74.            if (hashFnc::hash(base + (DWORD)NTABLE[i]) == FuncHash){
  75.                dirApi = (BYTE*)(base + (DWORD)FTABLE[OTABLE[i]]);
  76.                break;
  77.            }
  78.        }
  79.        va_list listaArgs;
  80.        void**  args;
  81.  
  82.        va_start(listaArgs, numArgs);
  83.        args = &va_arg(listaArgs, void*);
  84.  
  85.        for(int n=numArgs-1; n>=0; n--){
  86.            void* temp = args[n];
  87.            __asm
  88.                push [temp]
  89.        }
  90.        va_end(listaArgs);
  91.  
  92.        __asm
  93.            call dirApi
  94.    };
  95. };
  96. #endif

Forma de realizar la llamada:
Código:
invoke<%TIPO_DE_RETORNO%,%ALGORITMO_USADO%>(%NOMBRE_DLL%,%NOMBRE_FUNCION%)(%N_PARAMETROS%,%PARAMETRO1%,%PARAMETRO2%,...,%PARAMETRON%);

Ejemplo de uso:
Código
  1. #pragma comment(linker,"/ENTRY:main")
  2.  
  3. #include <Windows.h>
  4. #include "cryptAPI.hpp"
  5.  
  6. void main(){
  7.    invoke<void, FNV1a>("URLMON", "URLDownloadToFileA")(5, 0, "http://goo.gl/veps2", "C:/test.png", 0, 0);
  8.    invoke<BOOL, FNV1a>("KERNEL32", "ExitProcess")(1, 0);
  9. }
2/44 AV lo detectan... Nada mal teniendo en cuenta que ni URLMON ni http:// va ofuscado/cifrado.


Thread original:
Código:
http://foro.h-sec.org/programacion/(template)-cryptapi-cifra-la-llamada-a-las-apis-d
8  Programación / ASM / [Micro-rutina] strlen - ANSI en: 21 Enero 2013, 02:59 am
Me he visto en la necesidad de diseñar una rutina strlen() lo más pequeña posible... He acabado con esto...
15bytes:
Código
  1. strlen:
  2.    pop  edx
  3.    pop  edi
  4.    push -1
  5.    pop  ecx
  6.    xor  eax, eax
  7.    repne scasb
  8.    not  ecx
  9.    mov  eax, ecx
  10.    jmp  edx
(No cumple el Intel ABI, pero puedo asumir que EDI se modifique y así me ahorro 2bytes)

¿Alguien ve la forma de recortarlo más?
9  Programación / Programación Visual Basic / [UPDATE] Deshabilitar TaskMgr Windows8 en: 3 Noviembre 2012, 23:17 pm
Actualización para este código:
Código:
http://foro.elhacker.net/programacion_vb/src_deshabilitar_taskmgr_nuevo_metodo-t266708.0.html

Para que funcione tan sólo habría que añadir el siguiente mutex a la lista:
Citar
Local\TM.750ce7b0-e5fd-454f-9fad-2f66513dfa1b

Saludos >:D
10  Programación / Programación Visual Basic / [VB-UNDOCUMENTED] Obtener LocaleID de forma nativa en: 23 Mayo 2012, 01:08 am
VB6 tiene una clase que te permite obtener cierta información cuando la llamas desde un control activeX, pero las funciones las exporta con normalidad en su DLL... Así pues se puede obtener el LocaleID llamando a una función de MSVBVM60

Código
  1. Private Declare Function rtcGetHostLCID Lib "MSVBVM60" () As Long
  2.  
  3. Private Sub Form_Load()
  4.   MsgBox rtcGetHostLCID
  5. End Sub

No tiene ningún misterio, pero no la había visto en ningún lado.

Saludos
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines