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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11
1  Programación / Programación C/C++ / Re: Problemas con un shellcode y CreateThread. en: 7 Agosto 2012, 19:49 pm
Código:
void SpawnShell(void *dummy)
{
    void *vPayload = VirtualAlloc(0, sizeof(szShellPayload)-2, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    memcpy(vPayload, szShellPayload, sizeof(szShellPayload)-2);
    HANDLE hThread = (void*) _beginthread((void (*) (void*)) vPayload, 0, 0);
    do
    {
        Sleep(2000);
        DWORD dwExit = 0;
        cout << (DWORD) hThread << endl << GetExitCodeThread(hThread, &dwExit) << endl << dwExit << endl;
        if(GetThreadPriority(hThread) == THREAD_PRIORITY_ERROR_RETURN) hThread = (void*) _beginthread((void (*) (void*)) vPayload, 0, 0);
    }while(true);
}



Nono, la shellcode se ejecuta en un thread aparte, de esta manera puedo seguir la ejecución del programa mientras está abierto el puerto. El problema es que no cierra el thread cuando se cierra la conexión.

cuando "cerrás la conexión" como vos decís, queda dentro del do-while pero nunca hace un return,
de esa forma no se estaría cerrando el Thread. necesitarías saber con un flag o de otra forma, cuando
"cerrás la conexión" y terminar el Thread, para volverlo a crear


esto parecería hacer lo que te digo, pero vos dijiste que nunca pasa por acá
Código:
if(GetThreadPriority(hThread) == THREAD_PRIORITY_ERROR_RETURN) hThread = (void*) _beginthread((void (*) (void*)) vPayload, 0, 0);

Citar
....
Necesito que una vez que se cerró la shell, esta se spawnee devuelta. Cómo puedo hacer esto?? qué estoy haciendo mal?
......

ya que eso es lo que entiendo que querés hacer..

Espero haberte ayudado, aunque no entiendo mucho el tema de la shellcode XD

es decir no se que código tenés realmente en esa shellcode, pero suponete que fuera esta función:

DWORD Thread(LPVOID args)
{
    return 0;
}

con eso debería retornar

ExitProcess no tendría sentido en este caso particular porque te cerraría el programa completo.
Aunque lo podés usar justamente al final de todo como te lo mostraron anteriormente.
2  Programación / Programación C/C++ / Re: Pasar de Static Linking a Dynamic Linking. en: 7 Agosto 2012, 19:21 pm
La idea de obfuscar las llamadas a las API es para que no se pueda rápidamente saber qué APIs están siendo cargadas. Es para evitar heurística y firmas.


esta idea es para considerar APOKLIPTICO, resolvería el tema de los imports
Si es posible... hay varios metodos de obtener la direccion base del Kernel, luego de esto obtener GetProcAddress y LoadLibrary; despues de eso simplemente es obtener las APIs que necesitas.


Si en vez de cargarlas en tiempo de diseño las APIs, lo cual se puede ver con depends o algún otro programa que vea las funciones que importa el programa, se cargan dinámicamente en tiempo de ejecución, estos ya no aparecen. Si uno abre con un editor hexadecimal el ejecutable, va a haber en la parte de los strings las apis. Si uno lo cifra y luego lo descifra en tiempo de ejecución, sólo se va a poder saber esto si se debuggea el programa, si uno evita que el programa se pueda debuggear o emular, no hay manera de saber qué APIs se cargan.

sobre eso que te dijeron de usar apis modificadas, podés usar tu propia GetProcAddress y tu propia LoadLibrary.

y recordá que programas que actuén en modo ring 0 pueden igualmente detectar o determinar si creás un hilo remoto o si cargás una dll, no necesitan solamente spoofear tus llamadas a apis a nivel usuario

3  Programación / Programación C/C++ / Re: Pasar de Static Linking a Dynamic Linking. en: 6 Agosto 2012, 03:14 am
Hola APOKLIPTICO, no se si usás Visual Studio, pero te muestro una imagen del Visual C++ 6.0 que lo tengo para algunas cosas, en verdad uso el 2010 por supuesto. pero te muestro algo, más la explicación de la msdn



http://msdn.microsoft.com/en-us/library/abx4dbyh(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/aa278396(v=vs.60).aspx

en mi caso usé ese modo obviamente para el tamaño del ejecutable en cuestión, pero vos sabrás usar ese modo para tu conveniencia..
espero haberte ayudado
4  Programación / Programación C/C++ / Re: Aportación. Programas en C básicos. en: 27 Julio 2012, 01:55 am
muy bueno tu aporte, le debe servir a muchos
agrego algo fácil que había hecho
http://www.etalking.com.ar/showthread.php?1439-remover-decimales

Código:
#include<iostream.h>
#include<stdio.h>


double RemDecimals(double dNum, unsigned int iCant){


    int inum = (int)dNum;
    unsigned int unidades =1;
    double resnum=dNum;
    if(inum>9){
        unidades++;//porque es de dos cifras ya
        while((inum/10)>9){//si es mayor a 99
            unidades++;
            inum/=10;
        }
        for(unsigned int i=0;i< iCant;i++) dNum*=10;
        //int cifras = unidades+iCant;
        int inum2 = (int)dNum;
        double newnum = (float)inum2;
        for(unsigned int j=0;j< iCant;j++) newnum/=10;
        resnum = (float)newnum;
    }


    return resnum;
}


int main(){


    double num = 93.161599;


    printf("num before: %f\n",num);


    num = RemDecimals(num,2);


    printf("num after: %f\n",num);


    cin.get();
    return 0;


}
5  Programación / Programación C/C++ / Re: Soy yo o este programa siempre explota? en: 27 Julio 2012, 01:48 am
llamala de otra forma que no sea por su símbolo. onda un bypass, para ver si es porque tiene alguna protección del olly (algún plugin).
6  Programación / Programación C/C++ / Re: [?]Que IDE me recomiendan para Multiplataforma. en: 27 Julio 2012, 01:44 am
http://usemossoftwarelibre.wordpress.com/cc/tutorial-wxwidgets-en-espanol/capitulo-1-entornos-de-desarrollo-ides-y-disenadores-graficos-multiplataforma-para-wxwidgetsgnulinux-windows-mac-y-libres/


Citar
Entornos de desarrollo (Multiplataforma (gnu/linux, windows, mac) y libres)

codeblocks (gnu/linux, windows, mac) :

http://blog.unlugarenelmundo.es/2009/11/19/codelite-un-ide-multiplataforma-para-c-y-c/

http://www.foro-cualquiera.com/software/62694-code-blocks-ide-multiplataforma.html

http://www.puerto-digital.net/viewtopic.php?t=20795

http://elrincondelc.blogspot.com.ar/2008/11/el-nuevo-ide-de-qt-multiplataforma-qt.html

http://www.psicofxp.com/forums/programacion.313/56056-ide-c-y-c-tipo-visual.html

http://www.psicofxp.com/forums/programacion.313/56056-ide-c-y-c-tipo-visual.html

y más, en google puse IDE's multiplataforma, c++

usá codeblocks


7  Programación / Programación C/C++ / Re: Variables Extern en: 25 Julio 2012, 01:24 am
si no estamos hablando de ser fino a la hora de programar, te diría que los externs pueden ir ya sea en archivos de fuente o archivos de cabecera, ya que funciona lo mismo. se trata de usar extern por ejemplo para variables globales que están en un archivo fuente y las necesitas en otro.

archivo1.cpp

Código:
char asd[128]="";


archivo2.cpp

Código:
extern asd[128];


nótese la diferencia entre la declaración que al mismo tiempo hace asignación, y en la referencia extern en la cual no se pone la asignación obviamente.
8  Programación / Programación C/C++ / Re: Ayuda con ARREGLOS MULTIDIMENCIONALES (matrices) en: 25 Julio 2012, 01:18 am
Hola, fijate algunos de mis posts pueden serte de utilidad
http://foro.elhacker.net/programacion_cc/processar_matrices-t356497.0.html
http://foro.elhacker.net/programacion_cc/manipulacion_de_un_objeto_multidimensional-t358231.0.html
http://foro.elhacker.net/programacion_cc/manipulacion_de_punteros_ejemplo_con_float-t358223.0.html

9  Programación / Programación C/C++ / Re: Algun Documentos para Punteros y arrays? en: 25 Julio 2012, 01:17 am
hola RHL, te ofrezco algunos de mis temas sobre punteros. yo también investigué sobre esto hace un tiempo y siempre me resultaron de utilidad.

http://foro.elhacker.net/programacion_cc/processar_matrices-t356497.0.html
http://foro.elhacker.net/programacion_cc/manipulacion_de_un_objeto_multidimensional-t358231.0.html
http://foro.elhacker.net/programacion_cc/manipulacion_de_punteros_ejemplo_con_float-t358223.0.html

pero por lo visto estás trabajando con estructuras de más de dos dimensiones

10  Programación / Programación C/C++ / Re: dll inject by c3r0x.. en: 2 Julio 2012, 01:30 am
Gran pregunta, esperamos respuestas.

vieron lo que es un proceso?, ustedes saben que los procesos cargan DLL's de las cuales dependen para realizar algunas cosas. pueden ser DLL's del sistema o particulares. inyectar una DLL es cargar una DLL en un proceso, pero el tema es que hay muchas formas de cargarla. si les interesa busquen por el foro acerca de "métodos de inyección de DLL" o algo así. esto se hace porque desde una dll se tiene acceso a toda la memoria del proceso, ya que la dll misma pasa a ser parte del proceso (un módulo)
Páginas: [1] 2 3 4 5 6 7 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines