Portál AbcLinuxu, 30. dubna 2025 11:22
Právě jsem dumal, jak přeložit shellový skript do člověkem nečitelné podoby tj binární.
Důvodem bylo, aby přihlašovací údaje na ftp server nebyla čitelná a tím pádem zcizitelná.
Po krátkém hledání jsem narazil na utilitku "shc" což je hotová binárka od Francisca Javiera Rosalesa García
Stačí po rozbalení soubor shc umístit nekam do PATH.
Po spuštění:
shc -f script.sh
Jsem dostal binární soubor script.sh.x
Pro špekulanty nabízím soubor script.sh a script.sh.x , které nejsou funkčně stejné. Shelový skript obsahuje namísto názvu spustitelné aplikace tři hvězdičky a než z něj vznikl soubor script.sh.x tak tam byly jiné znaky (nic jako rm -rf ...... apod, zcela bezpečné).
Copak na to ale reversní inženýři ..... Dokáží nejak zjistit co to bylo za znaky ?
Tiskni
Sdílej:
Jako ochrana proti FBU. Ti budou tezko poslouchat komunikaci.
Samozrejme je lepe pouzit ssh. Server se kterym komunikuju vsak ssh nenabizi. Tak jsem to vyresil aspon takto.
root@Odyssey:/# ./script.sh.x ./script.sh.x: +Yp�?s~X)K=?��!?7?F��DJ?��~���sS�쁑?D��s�??d��4exec '%s' "$@"WTF?
Zajimave....
Dle Vaseho vykladu hadam ze jsem pred FBU ten ftp login a heslo dostatecne ukryl.
Odchyceni ftp user a pass bude pro BFU podstane jednodusi nez rozbit tu binarku.
Pres tcpdump je to otazka okamziku...
#tcpdump src 192.168.1.100 and dst 192.168.1.2 and port ftp ... apod...
20:53:26.402046 IP test.local.40205 > 192.168.1.2.ftp: P 0:10(10) ack 43 win 183
....g.I@......`$.....
...=..ENUSER teddybear
20:53:26.403802 IP test.local.40205 > 192.168.1.2.ftp: . ack 76 win 183
....h.I@.............
...>..E^
20:53:29.169036 IP test.local.40205 > 192.168.1.2.ftp: P 10:25(15) ack 76 win 183
....h.I@......#c.....
......E^PASS wakeup
A hotovo ...
Tak toto FBU delat urco nebude.
#if !defined(PTRACE_ATTACH) && defined(PT_ATTACH) # define PTRACE_ATTACH PT_ATTACH #endif void untraceable(char * argv0) { char proc[80]; int pid, mine; switch(pid = fork()) { case 0: pid = getppid(); /* For problematic SunOS ptrace */ #if defined(__FreeBSD__) sprintf(proc, "/proc/%d/mem", (int)pid); #else sprintf(proc, "/proc/%d/as", (int)pid); #endif close(0); mine = !open(proc, O_RDWR|O_EXCL); if (!mine && errno != EBUSY) mine = !ptrace(PTRACE_ATTACH, pid, 0, 0); if (mine) { kill(pid, SIGCONT); } else { perror(argv0); kill(pid, SIGKILL); } _exit(mine); case -1: break; default: if (pid == waitpid(pid, 0, 0)) return; } perror(argv0); _exit(1); } #endif /* !TRACEABLE */Jsem pro to, aby se do BASHe zavedl nový kompilační přepínač – obdoba přepínače -x.
shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
>>>shc's main purpose is to protect your shell scripts from modification or inspection. You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.
Presne z tohoto duvodu jsem to pouzil.
Taky by mohlo být zajímavé ten soubor zkomprimovat pod nějakým heslem nebo zašifrovat.Je zašifrovaný pomocí RC4.
-rwx--x--x
franta@dell:/tmp$ ll pwd -rwxrwx--x 1 root root 39472 2009-12-13 12:10 pwd franta@dell:/tmp$ cat pwd cat: pwd: Permission denied franta@dell:/tmp$ ./pwd /tmpMyslel jsem, že je potřeba mít právo i na čtení, ale to platí jen pro skripty.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.