Com ofuscar o amagar codi dels nostres scripts Bash

De vegades programem un script en xoc i desitgem que el codi d'aquest NO estigui visible, és a dir, que no sigui text pla. Quan parlem d'ocultar codi el terme correcte és ofuscar, En el meu cas desitjava ofuscar el codi de un script que vaig fer fa algun temps, La utilitat que vaig trobar per això es diu: shc

shc ens permet ofuscar codi, aquí els deixo els passos per poder usar-la:

1. Primer hem de descarregar-la

Descàrrega SHC v3.8.9

2. Un cop l'haguem descarregat fem clic dret sobre l'arxiu comprimit i seleccionem l'opció que digui «extreure aquí»O alguna cosa semblant. Això farà que ens aparegui una carpeta anomenada shc-3.8.9, Aquí els muesto un screenshot del seu contingut

3. Bé, suposem que la carpeta es troba en /home/usuari/Descàrregues/shc-3.8.9 doncs obrim una terminal i anem a aquesta ruta (cd «/home/usuari/Descàrregues/shc-3.8.9»), I aquí comença la instal·lació.

 4. A la terminal estant ubicats (com ja els vaig dir) a la carpeta shc-3.8.9, Per poder instal·lar aquesta aplicació necessitem fer un enllaç simbòlic de l'arxiu shc-3.8.9.c a shc.c per la qual cosa executem el següent:

ln -s shc-3.8.9.c shc.c

 4. Un cop fet l'enllaç executem make install amb permisos de root (farem servir sudo):

 sudo make install

 4. Ens demanarà el password nostre i es quedarà esperant un moment, estarà esperant que nosaltres pressionem la tecla [I] i pressionem [Entrar], És a dir, que li confirmem que sí desitgem instal·lar el programari. En aquest punt s'instal·larà sense problemes. Els deixo un screenshot de tot el procés de preparació i instal·lació:

 


Com poden veure a la fin m'apareix un error, l'error és referent al fet que no hi ha una determinada carpeta en el meu sistema, si veuen això simplement no li donin importància ... tot i així SHC es va instal·lar satisfactòriament 😉
Perquè puguin executar sudo make install es CAL tenir instal·lats els paquets: gcc y fer

5. A punt, això és tot per a la instal·lació 😀

Quan ja ho tinguem instal·lat només falta aprendre a usar-lo. Suposem que tenim un script al nostre home anomenat guió.sh i que el seu contingut és el següent:

#!/bin/bash
echo "Script de prueba para DesdeLinux.net"
exit

A l'executar aquest script òbviament ens mostrarà a la terminal el missatge: «Script de prova per DesdeLinux.net»O no? ... però, ara anem a ofuscar aquest codi.

En una terminal posem el següent i pressionem [Entrar]:

shc -v -f $HOME/script.sh

I bingo !! llest 😀

Això ens va crear dos nous arxius al costat del nostre script, ara tenim script.sh.x y script.sh.xc

script.sh.x - » Aquest és el nostre script en bash ofuscat, aquest quan ho executem farà exactament el mateix que el primer que vam crear, la diferència entre aquests és que el primer si ho obríem amb algun editor de text (nano, kate, gedit, etc) podíem veure clarament el seu contingut, mentre que si obrim a script.sh.x veurem clarament que no veiem res ... LOL !!!, és a dir, el codi està 'xifrat' 🙂

script.sh.xc - » Aquest és el nostre script però en llenguatge C ... podem esborrar aquest sense preocupació doncs no ho necessitem en realitat, bé, al menys jo no ho necessitaria per a res 🙂

No hi ha molt més que afegir en realitat en l'aspecte tècnic, només aclarir que fins on sé amb això (amagar o ofuscar codi de scripts bash) no s'està violant llicències o alguna cosa així. Aclareixo això perquè fa alguns mesos a Facebook quan vaig esmentar que havia après a ofuscar codi bash, alguns usuaris em alertaven que això era violar llicències o alguna cosa així ... en fi, que fins on tinc entès, no es viola llicències amb això 😉

Moltes gràcies a Matias Gastón per haver-me esmentat aquesta utilitat temps enrere

Res més que afegir, qualsevol dubte o pregunta, queixa o suggeriment em deixen saber.

Salutacions 😀


44 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Xykyz va dir

    No és que es violin llicències, és que deixa de ser programari lliure ...

    1.    KZKG ^ Gaara va dir

      Sí obvi. L'assumpte és que hi ha certs scripts personals meus que no vull que altres puguin veure, per exemple perquè un script d'aquests té un password en text pla de la meva MySQL local, o alguna cosa semblant.

        1.    KZKG ^ Gaara va dir

          En realitat els meus passwords jo els mantinc 'ocults' mitjançant SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), Després en l'script mantinc el hash de la contrasenya i el que faig és comparar el password que introdueixi l'usuari (el guardo amb read), li trec la suma SHA i comparo les dues a la fin 🙂

          Igual moltíssimes gràcies pel link, ja ho vaig revisant 😀

          Salutacions

        2.    Fem servir Linux va dir

          Exacte! Un shell prompt preguntant la contrasenya és una bona alternativa.
          Salutacions! Pau.

          1.    MSX va dir

            Però no proveeix una execució automàtica i desatesa com sí ho fa de l'altra forma. 🙂

      1.    Willians Vivanco va dir

        Posar les contrasennas i altres dades d'accés o comprometedors en l'script és un error dels grans. Aquesta informació s'ha de guardar en un altre fitxer, amb els seus deguts permisos, i així no hauràs de obfuscar teu bash script. Fàcil eh?

        1.    KZKG ^ Gaara va dir

          El problema de tenir les dades (variables de connexió, confs, etc) en un altre arxiu és que llavors el 'sistema' o 'aplicació' necessita per funcionar 2 arxius, mentre que si emmagatzemo de forma el més 'segura' possible tot en un sol arxiu, ja que només necessitaria això ... un sol arxiu.

          1.    morfeu va dir

            És bona pràctica separar l'aplicació de les dades.
            O millor dit és una pèssima practica hardcodear les dades!
            http://es.wikipedia.org/wiki/Hard_code
            No té res a veure amb la seguretat posar el codi i les dades en un mateix arxiu. I més encara, tot el contrari si tens els teus passwords ahi !!

          2.    Willians Vivanco va dir

            El cost de llegir la informació delicada d'un altre arxiu és menyspreable a la banda de el cost de processador necessari per «desobfuscar» la teva codi.

            D'altra banda, aquestes tirant per terra tot un paradigma de desenvolupament modular, apostant a un model monolític que, mes que provat, són mes els problemes que les solucions que porta.

          3.    MSX va dir

            I a més que si fas servir permisos que forçosament van a involucrar altres grups / usuaris igualment necessitaràs un password inicial per executar el primer script.

          4.    MSX va dir

            @KZKG el comentari de dalt és en resposta al teu comentari
            @morfeo: és absolutament relatiu a la necessitat particular.

    2.    morfeu va dir

      Però si hi ha programari lliure compilat en binari (que és més que ofuscar). Que sigui lliure implica que es disposi a més de l'font, però res té a veure amb ofuscar (o compilar, que és imprescindible si vull executar un programa en C, per exemple)

      1.    Willians Vivanco va dir

        En el cas del programari lliure compilat, es una questió d'exigència de l'llenguatge que s'utilitza (si programes en C, has de compilar perquè el teu aplicació funcioni). I igual, sempre, si de debò és Programari Lliure, el codi font estarà disponible.

  2.   Hyuuga_Neji va dir

    humm va denotar un cert grau d'apatia a compartir codi jejeje a veure quants acaben per començar a «ofuscar seus codis» per fer-nos més dependents de les seves solucions ...

    1.    KZKG ^ Gaara va dir

      No dic que s'hagi de ofuscar codi o no ... jo dono les eines, cadascú que les faci servir segons les seves necessitats.

      1.    comentarista va dir

        ¿Ofusca codi en aquesta pàgina?

        Crec que és un bona idea per allunyar lectors, ja que considero que moltes de les persones que vam visitar aquest bloc, som seguidors del programari lliure, i per tant no compartim la pràctica de ofuscar codi.

        1.    MSX va dir

          Òbviament no vas llegir la raó que argumenta KZKG i per la qual explica la seva necessitat de ofuscar la seva script.

          Gràcies KZKG per compartir el teu troballa!

  3.   Gabriel va dir

    I així comencen a circular virus en Linux ...

    Personalment MAI faria servir cap script ofuscat. No només pels riscos de seguretat que implica, sinó perquè si el teu script t'és massa preciós per compartir-llavors millor fica-t'ho al * ULO; segurament puc trobar alguin que sí vulgui compartir el seu coneixement.

    1.    KZKG ^ Gaara va dir

      ¿Mai faries servir un script ofuscat ?, doncs MOLT bé per tu, jo igual MAI faria servir un script ofuscat ... el detall està en què, jo MAI he compartit un script ofuscat ni de bon tros, i aquí estimat amic és on hi ha la equivocació present 😉

      Sempre que faig alguna cosa en Bash ho comparteixo sense que em pesi ni molesti, cosa que ja he fet en molts articles aquí 😀

      Benvingut a el blog, un plaer llegir-te 😉

  4.   Percaff_TI99 va dir

    Gabriel, KZKG ^ Gaara ja està compartint coneixement, no està creant cap paquet linux amb scripts ofuscats la qual cosa si podria ser una violació de llicències, només posa de manifest aplicacions que a un li pot servir o no per al seu propi ús, no cal ser groller, pel que fa als virus en linux no és tan senzill, aquí hi ha un bon article a l'respecte https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara m'agradaria que escrivissis un post sobre encfs i criptografia utilitzant imatges, és un tema que m'agrada molt.
    Salutacions !!!

    1.    KZKG ^ Gaara va dir

      gràcies
      En realitat no és que tingui prou coneixement sobre encfs i criptografia, al menys no em sento amb prou seguretat com per fer un post i assumir els dubtes que puguin tenir els usuaris 😀
      En aquest tema no és que sigui jo un usuari avançat ...
      El màxim que he fet és usant GPG xifrar arxius, i pel que fa a imatges el més que he fet és 'ficar' o amagar un arxiu dins d'una imatge, aconseguint que òbviament quan s'obri la imatge amb un visor d'imatges es mostri tot correctament, a això vols dir?

      Un cop més moltes gràcies pel teu comentari 🙂

  5.   ratakruel va dir

    Si no recordo malament, hi ha campionats de C ofuscat, però no val fer servir un «ofuscador» sinó que han de ofuscar les seves fonts a pèl.

    Pel que fa a shc i els teus script s amb passwords ... molt mala manera de treballar!

    Interessant l'article, com sempre.

    1.    KZKG ^ Gaara va dir

      Sí, ia més d'un m'ho han dit LOL !!
      Gràcies pel teu comentari 🙂

  6.   ever va dir

    Bàsicament, si compartiu l'aplicació sense compartir l'script visible estaries violant la GPL, la qual exigeix ​​que qualsevol cosa generada amb una aplicació GPL sigui GPL. Per això SHC genera el C, per que aquest és el codi que podeu compartir.

    Salutacions

  7.   Fem servir Linux va dir

    Coincideixo amb els comentaris d'altres lectors: no només no és una bona pràctica emmagatzemar dades i script tot junt sinó que tampoc afavoreix el desenvolupament de programari lliure.
    Una forta abraçada! Pau.

    1.    KZKG ^ Gaara va dir

      Hola Pau 🙂
      Jo tinc algun que un altre script ofuscat que funciona internament en el meu portàtil, el va ofuscar perquè simplement no desitjo que si algú per algun motiu aconseguís copiar el meu script cap a un altre ordinador, simplement no vull que pugui veure el que conté, és una mesura de 'seguretat 'que prenc.

      No obstant això, aquí a DesdeLinux faig públic tot o gairebé tot el que programo a Bash que pugui resultar interessant.

      En fi, no és que jo ara per ofuscar un script personal, per fer això per a propòsits personals jo sigui un detractor de l'SWL ni de bon tros 😀

      Salutacions amic

  8.   codelab va dir

    Bona informació. A l'marge de les polèmiques que s'estan generant en els comentaris em sembla una informació per seguir indagant una mica més.

    Crec que l'autor en cap moment de l'article ens diu si està bé o mal fet o si hem o no hem de fer-ho, simplement ens dóna a conèixer l'eina amb la qual es pot realitzar en cas que a algú li sigui de profit.

    Una salutació.

    codelab

    1.    F3niX va dir

      En els blocs linuxeros tot és una polèmica, jaja sempre ha estat així.

      1.    MSX va dir

        @ F3niX vaig a retallar una captura de pantalla amb el teu comentari per posar-la cada vegada que algú faci alguna menció estúpida a el tema.

        Nota: a veure quan et trobo pel irc i fòrums de Chakra 😉

    2.    KZKG ^ Gaara va dir

      EXACTE !!
      Jo simplement els mostro / ensenyo / explico una cosa nova que vaig aprendre, és decisió de vostès utilitzar aquests coneixements o no, jo no els obligo ni molt menys.

      Fins on sé, compartir coneixement és una cosa positiva no? 0_oU

      Gràcies pel teu comentari, és bo saber que són més d'un o dos els que entenen el veritable propòsit d'aquest article.

  9.   Percaff_TI99 va dir

    Hi ha em vas posar en un premi xD, fa unes setmanes vinc preparant un post que s'anava a titular «Instal·lació i prova de Crux» i tot i que la instal·lació la vaig realitzar amb èxit sóc un usuari normal i tampoc sé si podré fer front a les dubtes de tercers, la intenció és que serveixi com a instrument de discussió sobre les virtuts i defectes d'aquesta distro i les possibles solucions a problemes que poden sorgir ajudant-nos entre tots els usuaris i lectors. Quan ho acabi i ho mani a revisió vostès (Administradors) decidiran. Pel que fa a el tema criptografia en imatges era això mateix, gràcies KZKG ^ Gaara per contestar.

    Salutacions!

    1.    KZKG ^ Gaara va dir

      Val amb gust, faré un post sobre això 😉

  10.   MakubeX Uchiha va dir

    excel·lent tut bre em va resultar molt útil: 3
    per als que vulguin instal·lar-lo en manjaro linux i derivats de ArchLinux el paquet està en aur amb el nom: shc

    Salutacions

  11.   marcs va dir

    disculpa amic tenia un petit script que convertia les MAJÚSCULES A minúscules que es tenia en el portapales (xclip)

    l'script funciona normal quan no aquesta ofuscat

    #! / Bin / bash
    xclip -o> R1.txt
    cat R1.txt | tr [: upper:] [: lower:]
    fet «»
    rm R1.txt

    però quan vull córrer l'script ofuscat
    em diu

    ./M2m.sh: Operation not permitted
    Acabat (killed)

    Ajuda per favore

    1.    KZKG ^ Gaara va dir

      Tens instal·lat xclip?

  12.   SynFlag va dir

    Cal aclarir que en realitat és un compilador de bash, com hi .bat compiler o .php.
    No se si el codi que produeix aquesta encriptat i ofuscat i no resisteix una Decompile, hauria de provar, com no és el meu camp no dic que si ni que no, però el que veig que fa és compilar un bash, al .c es pot veure el codi, que, en la mesura del ofuscat veig que aquesta en línies que s'assemblen a shell d'un exploit no sé si realment estan ofuscades, atès que, no es demana contrasenya o un no es, master.config on es defineixi una paraula clau prèvia.

  13.   juan david va dir

    amics passa que quan va ofuscar el meu script el em crea el nou script amb terminacion ex, l'executo i fins hi perfecte. Però quan ho porto a un altre equip amb linuz no s'executa, ja té tots els permisos, va crear un llançador i li dic que és una aplicació en terminal, però no funciona, per fa espere ràpida resposta

    1.    KZKG ^ Gaara va dir

      Ho compilaste i ho estàs executant en un sistema amb la mateixa arquitectura? O sigui, et donarà error si ho compilaste per ofuscarlo en un sistem 32bits, i després intentes executar en un 64bits, o viceversa. ¿Entens?

      1.    juan david va dir

        No però ja prove formatant el mateix equip, amb el mateix sistema operatiu i no s'executa, ni tan sols mana un error.
        el cridi per consola d'aquesta manera: sudo /home/operaciones/script.xy em surt aquest error

        /home/operaciones/script.x: e} 8-q, K

        tot un cas

        1.    KZKG ^ Gaara va dir

          Intenta executar SENSE compilar a veure si és algun error en l'code

    2.    Osca va dir

      Perquè puguis executar l'script ofuscat en altres equips has de compilar amb l'opció «-r Relax security. Make a Redistributable binary », en cas contrari, només s'executarà en l'equip on es va ofuscar l'script amb SHC.
      Exemple:

      shc -r -f script.sh

  14.   william va dir

    Hola, tinc una consulta, l'shc es pot instal·lar en qualsevol tipus de distribució Linux ?, per exemple xarxa hat, com seria la instal·lació per aquest?
    Gràcies!

  15.   ruyzz va dir

    Hola a tots m'ha servit bastant vostres comentaris, però tinc el següent problema, a l'realitzar l'ofuscació no em funciona en un mateix sistema però de diferent arquitectura, o sigui si ho faig en 32 bits no pot córrer en 64 bits. Algú sap si realment es pot córrer en diferents arquitectures (32 i 64 bits)?